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
    Membre confirmé
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 190
    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 684
    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 684
    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
    Membre confirmé
    Femme Profil pro
    Ressources humaines
    Inscrit en
    Janvier 2016
    Messages
    190
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 190
    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 659
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 659
    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€",
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

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

    Informations professionnelles :
    Activité : Ressources humaines

    Informations forums :
    Inscription : Janvier 2016
    Messages : 190
    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, 12h57
  2. Opérations dans un tableau à deux dimensions
    Par stanfillirenfro dans le forum Langage
    Réponses: 23
    Dernier message: 07/08/2012, 10h44
  3. Réponses: 23
    Dernier message: 06/10/2011, 13h16
  4. Réponses: 1
    Dernier message: 11/05/2009, 17h15
  5. [tableau] Opérations dans tableau (%)
    Par gilles94rp1 dans le forum Word
    Réponses: 1
    Dernier message: 04/06/2007, 15h18

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