IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

[DataTable] Editor : Opération dans un tableau


Sujet :

Bibliothèques & Frameworks

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 190
    Points : 34
    Points
    34
    Par défaut [DataTable] Editor : Opération dans un tableau
    Bonjour,

    J'ai le tableau ci-dessous dont je n'ai mis qu'une petite partie :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    var dataSet = [
    	{
    		"DT_RowId": "row_1",
    		"Étage": "RDC",
    		"Type - numéro": " T1 - 01",
    		"Superficie": "32.50",
    		"Terrasse": "28.00",
    		"Mezzanine": "",
    		"Loyer": "875",
    		"Prix au m²": ""
    	},
    	{
    		"DT_RowId": "row_2",
    		"Étage": "RDC",
    		"Type - numéro": " T1 - 02",
    		"Superficie": "28.50",
    		"Terrasse": "25.00",
    		"Mezzanine": "",
    		"Loyer": "795",
    		"Prix au m²": ""
    	}	
    ]
    Le prix au m² s'affiche aujourd'hui grâce à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     dataSet.forEach(elt => {
        			elt['Prix au m²'] = (elt.Loyer / elt.Superficie).toFixed(2)
    				});
    Je souhaiterais enlever cette boucle et que le prix au m² soit calculé dans le tableau.
    Que dois-je inscrire à la place des "" vide pour que cela fonctionne ?

    Ce souhait est dicté par le fait que ce tableau est affiché avec DataTables Editor et qu'actuellement lorsque je modifie une valeur du tableau, le prix au m² n'est pas mis à jour.

    J'espère avoir été clair.

    Merci pour votre aide.

  2. #2
    Expert confirmé
    Avatar de javatwister
    Homme Profil pro
    danseur
    Inscrit en
    Août 2003
    Messages
    3 681
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : danseur

    Informations forums :
    Inscription : Août 2003
    Messages : 3 681
    Points : 5 221
    Points
    5 221
    Par défaut
    je te propose une idée "gag", mais je n'ai pas idée de ce que ça donne dans ton système:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    ...
    "Prix au m²": function(){return(this.Loyer / this.Superficie).toFixed(2)}
    ...

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 190
    Points : 34
    Points
    34
    Par défaut
    L'idée "gag" fonctionne très bien, merci !

    Cependant, j'ai perdu au passage la mise en forme de la cellule du tableau.
    À savoir, la virgule au lieu du point qui sépare le nombre décimal et le signe euro après le montant.
    Voici la fin du tableau et le code qui suit, la ligne 66 du code n'est plus appliquée ;-(

    Une idée ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    {
    		"DT_RowId": "row_15",
    		"Étage": "2",
    		"Type - numéro": " T1 - 13",
    		"Superficie": "15.75",
    		"Terrasse": "",
    		"Mezzanine": "",
    		"Loyer": "475",
    		"Prix au m²": function(){return(this.Loyer / this.Superficie).toFixed(2)}
    	}
    ]
    	var editor; // use a global for the submit and return data rendering in the examples
     
    $(document).ready(function() {
        editor = new $.fn.dataTable.Editor( {
            data: dataSet,
            table: "#loyers",
    		fields: [   {
                    label: "Superficie :",
                    name: "Superficie"
                }, {
                    label: "Terrasse :",
                    name: "Terrasse"
                }, {
                    label: "Mezzanine :",
                    name: "Mezzanine",
                }, {
                    label: "Loyer :",
                    name: "Loyer",
                },  
            ]
        } );
     
    	$('#loyers').on( 'click', 'tbody td', function (e) {
            var index = $(this).index();
     
            if ( index === 2 || index === 3 || index === 4) {
                editor.bubble( this, {
                    message: 'Entrez un nombre décimal séparé par un point.',
    				submit: 'allIfChanged'
                } );
     
            }
    		else if ( index === 5 ) {
                editor.bubble( this ), {
    				submit: 'allIfChanged'
    			}
            }
        } );
     
     
     
        $('#loyers').DataTable( {
            dom: '"Brt"',
            data: dataSet,
    		searching: false,
    		paging: false,
    		info: false,
            columns: [
                { data: "Étage" },
                { data: "Type - numéro" },
                { data: "Superficie",render: $.fn.dataTable.render.number(' ', ',', 2, '', ' m²') },
                { data: "Terrasse",render: $.fn.dataTable.render.number(' ', ',', 2, '', ' m²')},
                { data: "Mezzanine",render: $.fn.dataTable.render.number(' ', ',', 2, '', ' m²')},
    			{ data: "Loyer",render: $.fn.dataTable.render.number(' ', ',', 0, '', ' €')},
    			{ data: "Prix au m²",render: $.fn.dataTable.render.number(' ', ',', 2, '', ' €')},
            ],

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 644
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 644
    Points : 66 671
    Points
    66 671
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Prix au m²": function(){regnum=/\d+(\.\d+)?/; return(this.Loyer.match(regnum)[0] / this.Superficie.match(regnum)[0].toFixed(2)}
    ça te permet de conserver les unités
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    "Superficie": "15.75 m²",
    "Loyer": "475.50€",

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 42
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 190
    Points : 34
    Points
    34
    Par défaut
    Merci mais ça me retourne une erreur :
    Uncaught SyntaxError: Unexpected token '}'
    Je vais me rapprocher du forum du plugin Datatable Editor pour qui ça sera certainement plus simple car vous êtes à l'aveugle ^^

    Mille mercis pour votre réactivité et vos réponses.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Opération sur des entiers codés dans un tableau
    Par Nurza dans le forum Langage
    Réponses: 7
    Dernier message: 28/09/2012, 13h57
  2. Opérations dans un tableau à deux dimensions
    Par stanfillirenfro dans le forum Langage
    Réponses: 23
    Dernier message: 07/08/2012, 11h44
  3. Réponses: 23
    Dernier message: 06/10/2011, 14h16
  4. Réponses: 1
    Dernier message: 11/05/2009, 18h15
  5. [tableau] Opérations dans tableau (%)
    Par gilles94rp1 dans le forum Word
    Réponses: 1
    Dernier message: 04/06/2007, 16h18

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo