From 0e88f34ea11432f16f65f85edbf76f66b0de5d33 Mon Sep 17 00:00:00 2001 From: guillainbisimwa Date: Mon, 8 Jul 2019 15:13:34 +0200 Subject: [PATCH] CRUD Service --- assets/DisplayFrench.js | 18 ++++ assets/values/String.json | 10 +++ data/.db/entrees.db | 1 + data/.db/services.db | 7 ++ data/Service.js | 9 ++ renderer-scripts/config.js | 173 +++++++++++++++++++++++++++++++++++- sections/config/config.html | 80 +++++++++++++++++ 7 files changed, 294 insertions(+), 4 deletions(-) create mode 100644 data/.db/services.db create mode 100644 data/Service.js diff --git a/assets/DisplayFrench.js b/assets/DisplayFrench.js index 808dab3..dfeadd0 100644 --- a/assets/DisplayFrench.js +++ b/assets/DisplayFrench.js @@ -39,6 +39,7 @@ $(".nav-link-med").text((json.med.plurial).toUpperCase()); $(".nav-link-forme").text((json.forme.plurial).toUpperCase()); $(".nav-link-cat").text((json.cat.plurial).toUpperCase()); $(".nav-link-frnssr").text((json.fournisseur.plurial).toUpperCase()); +$(".nav-link-service").text((json.service.plurial).toUpperCase()); //Tab med //Header of Table @@ -62,6 +63,10 @@ $(".tab_frnssr thead tr .2").text(json.fournisseur.designation); $(".tab_frnssr thead tr .3").text(json.fournisseur.phone); $(".tab_frnssr thead tr .4").text(json.fournisseur.adress); +//Tab service +$(".tab_service thead tr .1").text(json.nbr); +$(".tab_service thead tr .2").text(json.service.designation); + //Modals Med $(".med-modal-title").text(json.med.add); $("label.design_med").text(json.med.designation); @@ -92,6 +97,12 @@ $("label.design_frnssr").text(json.fournisseur.designation); $("#SuppFrnssrModal").find("h3 span").text(json.fournisseur.del_confirm_msg); $("#SuppFrnssrModal").find("h4").text(json.fournisseur.del); +//Modals service +$(".service-modal-title").text(json.service.add); +$("label.design_service").text(json.service.designation); +$("#SuppServiceModal").find("h3 span").text(json.service.del_confirm_msg); +$("#SuppServiceModal").find("h4").text(json.service.del); + //Med $("#save_med span").text(json.buttons.add.name); $("#save_med").find("i").addClass(json.buttons.add.icon); @@ -124,6 +135,13 @@ $("#update_frnssr").find("i").addClass(json.buttons.edit.icon); $("#supp_frnssr span").text(json.buttons.del.name); $("#supp_frnssr").find("i").addClass(json.buttons.del.icon); +//service +$("#save_service span").text(json.buttons.add.name); +$("#save_service").find("i").addClass(json.buttons.add.icon); +$("#update_service span").text(json.buttons.edit.name); +$("#update_service").find("i").addClass(json.buttons.edit.icon); +$("#supp_service span").text(json.buttons.del.name); +$("#supp_service").find("i").addClass(json.buttons.del.icon); /** * ENTREES */ diff --git a/assets/values/String.json b/assets/values/String.json index b3ee635..2a7bfc3 100644 --- a/assets/values/String.json +++ b/assets/values/String.json @@ -116,6 +116,16 @@ "adress":"Adresse", "phone":"Contact" }, + "service": { + "name": "Service", + "plurial": "Services", + "add": "Ajouter un service", + "del": "Supprimer un service", + "edit": "Modifier un service", + "file_name":"Liste de services", + "del_confirm_msg":"Voulez-vous vraiment supprimer le service : ", + "designation":"Nom du service" + }, "entree": { "name": "Entrée", "plurial": "Entrées", diff --git a/data/.db/entrees.db b/data/.db/entrees.db index 645acfd..39bd1ba 100644 --- a/data/.db/entrees.db +++ b/data/.db/entrees.db @@ -59,6 +59,7 @@ {"id_medicament":"iJXu4E0gJivdWFCD","qt":750,"date_":{"$$date":1562238848806},"_id":"cnbHDVi3iYDqNThh"} {"id_medicament":"ZWmRgB27w2No7Uej","qt":510,"date_":{"$$date":1562238847923},"_id":"dGE0ni4QUgGGRP31"} {"id_medicament":"ABIUPFG1r6QOosGb","qt":630,"date_":{"$$date":1562238848367},"_id":"eQ2HqCx9xlpb2tSy"} +{"id_medicament":"iQHvMHsjMJSdsyxz","qt":8888,"date_":{"$$date":1562586676531},"_id":"fIjt80GZm9LeRKsW"} {"id_medicament":"iQHvMHsjMJSdsyxz","qt":90,"date_":{"$$date":1562238846357},"_id":"fNjsFj9hUL9WXohS"} {"id_medicament":"IBwJbYlOeQRmJ2OI","qt":20,"date_":{"$$date":1562238846138},"_id":"gmOs6NNZQNq6ehhO"} {"id_medicament":"BX2CfCVyTqeEK1cQ","qt":740,"date_":{"$$date":1562238848774},"_id":"hLf3qegGizaQ3yk4"} diff --git a/data/.db/services.db b/data/.db/services.db new file mode 100644 index 0000000..826f029 --- /dev/null +++ b/data/.db/services.db @@ -0,0 +1,7 @@ +{"nom_service":"ORL","_id":"EJIQs6vAkTKGlhIB"} +{"nom_service":"STOMATOL","_id":"PQkG6aXop8dcoSk3"} +{"nom_service":"STOMATOLOGIE","_id":"Tx7QP2Krak6azqak"} +{"nom_service":"STOMATO","_id":"yOI2wtGGxOTqGG4O"} +{"$$deleted":true,"_id":"yOI2wtGGxOTqGG4O"} +{"$$deleted":true,"_id":"PQkG6aXop8dcoSk3"} +{"nom_service":"STOMATO","_id":"Tx7QP2Krak6azqak"} diff --git a/data/Service.js b/data/Service.js new file mode 100644 index 0000000..a55e427 --- /dev/null +++ b/data/Service.js @@ -0,0 +1,9 @@ +var Document = require('camo').Document; + +class Service extends Document { + constructor() { + super(); + this.nom_service = String; + } +} +module.exports = Service \ No newline at end of file diff --git a/renderer-scripts/config.js b/renderer-scripts/config.js index 93cae18..7c8536d 100644 --- a/renderer-scripts/config.js +++ b/renderer-scripts/config.js @@ -51,12 +51,14 @@ $(document).ready(function() { const Entree = require('../data/Entree'); const Sortie = require('../data/Sortie'); const Fournisseur = require('../data/Fournisseur'); + const Service = require('../data/Service'); //Init tables var _tab_forme = $("#tab_forme").DataTable(); var _tab_cat = $("#tab_cat").DataTable(); var _tab_med = $("#tab_med").DataTable(); var _tab_fournisseur = $("#tab_frnssr").DataTable(); + var _tab_service = $("#tab_service").DataTable(); var tab_uploaded_med = $("#tab_uploaded_med").DataTable( { @@ -106,6 +108,11 @@ $(document).ready(function() { populateTabFournisseur(); }); + // Populate tab service + $(".nav-link-service").click(function(){ + populateTabService(); + }); + //Save forme $("#save_forme").click(function(){ var _forme = $("#design_forme").val(); @@ -193,6 +200,24 @@ $(document).ready(function() { $("#adress_fnssr").val(""); }); + //save service + $("#save_service").click(function(){ + var _nom_service = $("#nom_service").val(); + + var service = Service.create({ + nom_service: _nom_service + }); + + service.save().then(function(addedService) { + console.log(addedService._id); + //Close programmaticaly the modal + $("#AddServiceModal .close").click(); + $("#nom_service").val(""); + populateTabService(); + }); + $("#nom_service").val(""); + }); + //Update forme /** * https://github.com/scottwrobinson/camo#creating-and-saving @@ -249,6 +274,18 @@ $(document).ready(function() { }); }); + //Update fournisseur + $("#update_service").click(function(){ + var _id_service = $("#_id_service").val(); + var _nom_service = $("#nom_service").val(); + + Service.findOneAndUpdate({_id:_id_service},{nom_service: _nom_service},{upsert: true}).then(function(updatedService) { + populateTabService(); + console.log("_id = ", updatedService._id) + $("#AddServiceModal .close").click(); + }); + }); + //Supprimer une forme $("#supp_forme").click(function(){ var _id_del_design_forme = $("#_id_del_design_forme").val(); @@ -303,7 +340,18 @@ $(document).ready(function() { result_del(deletedFrnssr,del_nom_frnssr,"SuppFrnssrModal"); populateTabFournisseur(); }); - }); + }); + + //Supprimer un service + $("#supp_service").click(function(){ + var _id_del_service = $("#_id_del_service").val(); + var del_nom_service = $("#del_nom_service").text(); + Service.deleteOne({_id:_id_del_service}).then(function(deletedService) { + console.log('Deleted ', deletedService, ' service from the database.'); + result_del(deletedService,del_nom_service,"SuppServiceModal"); + populateTabService(); + }); + }); //Function, update values before adding forme function updateValueModalForme(forme,_id){ @@ -396,6 +444,29 @@ $(document).ready(function() { $("#adress_fnssr").val(""); } + //Function, update values before adding fournisseur + function updateValueModalService(service,_id){ + $("#update_service").css("display","block"); + $("#save_service").css("display","none"); + $(".service-modal-title").text(json.service.edit); + $(".service-modal-title").css("color","#a11"); + + $("#nom_service").val(service); + $("#_id_service").val(_id); + + //Find is-filled is-focused + $("#AddServiceModal").find(".form-group").addClass("has-danger is-filled is-focused"); + } + function addValueModalService(){ + $("#update_service").css("display","none"); + $("#save_service").css("display","block"); + $(".service-modal-title").text(json.service.add); + $(".service-modal-title").css("color","#000"); + $("#AddServiceModal").find(".form-group").removeClass("has-danger is-filled is-focused"); + $("#nom_service").val(""); + $("#_id_service").val(""); + } + function addValueModalMed(){ $("#update_med").css("display","none"); $("#save_med").css("display","block"); @@ -425,12 +496,18 @@ $(document).ready(function() { $("#_id_del_design_med").val(_id); } - //Function, update values before adding fournisseur - function delValueModalFrnssr(frnssr,_id){ + //Function, update values before adding fournisseur + function delValueModalFrnssr(frnssr,_id){ $("#del_nom_frnssr").text(frnssr); $("#_id_del_frnssr").val(_id); } + //Function, update values before adding service + function delValueModalService(service,_id){ + $("#del_nom_service").text(service); + $("#_id_del_service").val(_id); + } + //Function populate tab Forme function populateTabForme(){ var tab_forme = []; @@ -727,7 +804,7 @@ $(document).ready(function() { } //Function populate tab fournisseur - function populateTabFournisseur(){ + function populateTabFournisseur(){ var tab_fournisseur = []; _tab_fournisseur.destroy(); //$("#tab_fournisseur").empty(); @@ -816,6 +893,94 @@ $(document).ready(function() { }); } + function populateTabService(){ + var tab_service = []; + _tab_service.destroy(); + //$("#tab_service").empty(); + Service.find({},{sort:'nom_service'}).then(function(foundService) { + i = 0; + foundService.forEach(function(foundSingleService) { + i++; + var localSingleService = [i, foundSingleService.nom_service,foundSingleService._id]; + tab_service.push(Array.from(localSingleService)) + }); + + console.log(Array.from(tab_service)) + //_tab_service.DataTable({ + _tab_service = $('#tab_service').DataTable({ + + dom: 'Blfrtip', + select: true, + buttons: [ + { + text: '
  • '+json.buttons.new.name, + action: function ( e, dt, node, config ) { + addValueModalService(); + $("#AddServiceModal").modal(); + } + }, + { + text: '
  • '+json.buttons.edit.name, + action: function ( e, dt, node, config ) { + console.log( + 'Row data: '+ + JSON.stringify( dt.row( { selected: true } ).data() ) + ); + updateValueModalService(dt.row( { selected: true } ).data()[1], dt.row( { selected: true } ).data()[2]); + $("#AddServiceModal").modal(); + }, + enabled: false + }, + { + text: '
  • '+json.buttons.del.name, + action: function ( e, dt, node, config ) { + console.log( + 'Row data: '+ + JSON.stringify( dt.row( { selected: true } ).data() ) + ); + delValueModalService(dt.row( { selected: true } ).data()[1], dt.row( { selected: true } ).data()[2]); + $("#SuppServiceModal").modal(); + }, + enabled: false + }, + //'copy', 'csv', 'excel', 'pdf', 'print', "colvis" + { + extend: 'csv', + text: ' '+json.buttons.export.name, + titleAttr: 'CSV', + filename: json.service.file_name, + exportOptions: { + columns: [0, 1] + }, + } + ], + // ICI on choisi la langue des details du tableau + language:{ + url:'./assets/values/French.json' + }, + "order": [[ 0, "asc" ]], + // Les donnees sont affichees dans le tableau HTML + data:tab_service, + // On affiche pas la troisieme colonne, elle reprend les _id + "columnDefs": [ + { + "targets": [ 2 ], + "visible": false, + "searchable": false + }, + ], + destroy:true + }); + + _tab_service.on( 'select deselect', function () { + var selectedRows = _tab_service.rows( { selected: true } ).count(); + console.log("ok: "+selectedRows) + _tab_service.button( 1 ).enable( selectedRows === 1 ); + _tab_service.button( 2 ).enable( selectedRows === 1 ); + }); + }); + } + //Populate forme SELECTPICKERS function populateSelectForme(){ diff --git a/sections/config/config.html b/sections/config/config.html index e8ac6da..ad8ed2a 100644 --- a/sections/config/config.html +++ b/sections/config/config.html @@ -50,6 +50,11 @@ frnssr + @@ -114,6 +119,18 @@ +
    + + + + + + + + +
    _id
    +
    + @@ -452,6 +469,7 @@ + + + + + + + + + \ No newline at end of file