From 1f3026c1d579e52f3badf7c11d04fd15f00209f2 Mon Sep 17 00:00:00 2001 From: tofulm Date: Mon, 19 Oct 2020 18:31:10 +0200 Subject: [PATCH 01/28] debug pour les crayons --- js/gamutable.es6.js | 10 ++++++++-- js/gamutable.js | 11 ++++++++--- 2 files changed, 16 insertions(+), 5 deletions(-) diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index a6e4b45..0211966 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -234,6 +234,7 @@ let monTableau = { return this.apiuri.match(/.*page=(.*)/)[1]; }, chargerJson(id) { + console.log('chargerJson'); let url = this.apiuri; if (parseInt(id) > 0) { url += '&id=' + id; @@ -270,7 +271,10 @@ let monTableau = { if (parseInt(id) > 0) { if (data.length > 0) { let i = this.table.findIndex((ligne) => ligne.html.id === parseInt(id)); - Vue.set(this.table, i, data[0]); + //Vue.set(this.table, i, data[0]); + //console.log(this.table[245]); + this.table[i] = data[0]; + //console.log(this.table[245]); } else { let i = this.table.findIndex((ligne) => ligne.html.id === parseInt(id)); Vue.delete(this.table, i); @@ -443,9 +447,11 @@ const gamuTable = { components: { monTableau }, methods: { rechargerJson(id) { + console.log('coucou'); + console.log(id); this.$refs.montableau.chargerJson(id); }, }, }; -Vue.createApp(gamuTable).mount('#app'); +let app = Vue.createApp(gamuTable).mount('#app'); diff --git a/js/gamutable.js b/js/gamutable.js index c469180..3a42779 100644 --- a/js/gamutable.js +++ b/js/gamutable.js @@ -277,6 +277,7 @@ var monTableau = { chargerJson: function chargerJson(id) { var _this2 = this; + console.log('chargerJson'); var url = this.apiuri; if (parseInt(id) > 0) { @@ -325,9 +326,11 @@ var monTableau = { if (data.length > 0) { var i = _this2.table.findIndex(function (ligne) { return ligne.html.id === parseInt(id); - }); + }); //Vue.set(this.table, i, data[0]); + //console.log(this.table[245]); - Vue.set(_this2.table, i, data[0]); + + _this2.table[i] = data[0]; //console.log(this.table[245]); } else { var _i2 = _this2.table.findIndex(function (ligne) { return ligne.html.id === parseInt(id); @@ -459,8 +462,10 @@ var gamuTable = { }, methods: { rechargerJson: function rechargerJson(id) { + console.log('coucou'); + console.log(id); this.$refs.montableau.chargerJson(id); } } }; -Vue.createApp(gamuTable).mount('#app'); \ No newline at end of file +var app = Vue.createApp(gamuTable).mount('#app'); \ No newline at end of file From 33f1e32a8c7def40f17f1a7c15fd2ee9e898b4c1 Mon Sep 17 00:00:00 2001 From: tofulm Date: Mon, 19 Oct 2020 19:01:03 +0200 Subject: [PATCH 02/28] debug en moins --- js/gamutable.es6.js | 6 ------ js/gamutable.js | 9 ++------- 2 files changed, 2 insertions(+), 13 deletions(-) diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index 0211966..2f352c7 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -234,7 +234,6 @@ let monTableau = { return this.apiuri.match(/.*page=(.*)/)[1]; }, chargerJson(id) { - console.log('chargerJson'); let url = this.apiuri; if (parseInt(id) > 0) { url += '&id=' + id; @@ -271,10 +270,7 @@ let monTableau = { if (parseInt(id) > 0) { if (data.length > 0) { let i = this.table.findIndex((ligne) => ligne.html.id === parseInt(id)); - //Vue.set(this.table, i, data[0]); - //console.log(this.table[245]); this.table[i] = data[0]; - //console.log(this.table[245]); } else { let i = this.table.findIndex((ligne) => ligne.html.id === parseInt(id)); Vue.delete(this.table, i); @@ -447,8 +443,6 @@ const gamuTable = { components: { monTableau }, methods: { rechargerJson(id) { - console.log('coucou'); - console.log(id); this.$refs.montableau.chargerJson(id); }, }, diff --git a/js/gamutable.js b/js/gamutable.js index 3a42779..a72c99a 100644 --- a/js/gamutable.js +++ b/js/gamutable.js @@ -277,7 +277,6 @@ var monTableau = { chargerJson: function chargerJson(id) { var _this2 = this; - console.log('chargerJson'); var url = this.apiuri; if (parseInt(id) > 0) { @@ -326,11 +325,9 @@ var monTableau = { if (data.length > 0) { var i = _this2.table.findIndex(function (ligne) { return ligne.html.id === parseInt(id); - }); //Vue.set(this.table, i, data[0]); - //console.log(this.table[245]); + }); - - _this2.table[i] = data[0]; //console.log(this.table[245]); + _this2.table[i] = data[0]; } else { var _i2 = _this2.table.findIndex(function (ligne) { return ligne.html.id === parseInt(id); @@ -462,8 +459,6 @@ var gamuTable = { }, methods: { rechargerJson: function rechargerJson(id) { - console.log('coucou'); - console.log(id); this.$refs.montableau.chargerJson(id); } } From 34671bcf409a997ac9b53bef3627cc1c0c64dad8 Mon Sep 17 00:00:00 2001 From: tofulm Date: Mon, 19 Oct 2020 21:05:00 +0200 Subject: [PATCH 03/28] on supprime les 2 methodes Vue.set et Vue.delete, car vue3 les mutations des array sont reactives. Par contre, la methode findIndex semble ne pas fonctionner dans tous les cas, pour palier j'ai creer une methode trouver_index. a tester --- js/gamutable.es6.js | 17 ++++++++++++++--- js/gamutable.js | 23 +++++++++++++++-------- 2 files changed, 29 insertions(+), 11 deletions(-) diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index 2f352c7..f516db2 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -137,6 +137,16 @@ function exporterCSV(json, delimitercsv, name) { document.body.removeChild(link); } +function trouver_index(table, id) { + let i = -1; + table.forEach((ligne, index) => { + if (ligne.html.id === parseInt(id)) { + i = index; + } + }); + return i; +} + let monTableau = { props: { tparpage: { @@ -269,11 +279,12 @@ let monTableau = { } if (parseInt(id) > 0) { if (data.length > 0) { - let i = this.table.findIndex((ligne) => ligne.html.id === parseInt(id)); + let i = trouver_index(this.table, id); this.table[i] = data[0]; } else { - let i = this.table.findIndex((ligne) => ligne.html.id === parseInt(id)); - Vue.delete(this.table, i); + let i = trouver_index(this.table, id); + console.log('index ', i); + this.table.splice(i, 1); } } else { this.table = data; diff --git a/js/gamutable.js b/js/gamutable.js index a72c99a..7ae8ec2 100644 --- a/js/gamutable.js +++ b/js/gamutable.js @@ -185,6 +185,16 @@ function exporterCSV(json, delimitercsv, name) { document.body.removeChild(link); } +function trouver_index(table, id) { + var i = -1; + table.forEach(function (ligne, index) { + if (ligne.html.id === parseInt(id)) { + i = index; + } + }); + return i; +} + var monTableau = { props: { tparpage: { @@ -323,17 +333,14 @@ var monTableau = { if (parseInt(id) > 0) { if (data.length > 0) { - var i = _this2.table.findIndex(function (ligne) { - return ligne.html.id === parseInt(id); - }); - + var i = trouver_index(_this2.table, id); _this2.table[i] = data[0]; } else { - var _i2 = _this2.table.findIndex(function (ligne) { - return ligne.html.id === parseInt(id); - }); + var _i2 = trouver_index(_this2.table, id); - Vue.delete(_this2.table, _i2); + console.log('index ', _i2); + + _this2.table.splice(_i2, 1); } } else { _this2.table = data; From 09db4409631c4ecb096a7f77acf7ba3d4bc91853 Mon Sep 17 00:00:00 2001 From: tofulm Date: Tue, 20 Oct 2020 20:57:40 +0200 Subject: [PATCH 04/28] recup de la partie bloc de la vue en bloc --- inclure/gamutable.html | 1 + js/gamutable.es6.js | 80 ++++++++++++++++++++++++++++++------------ js/gamutable.js | 20 +++++++++-- 3 files changed, 76 insertions(+), 25 deletions(-) diff --git a/inclure/gamutable.html b/inclure/gamutable.html index 1b69e00..27a5450 100644 --- a/inclure/gamutable.html +++ b/inclure/gamutable.html @@ -9,6 +9,7 @@ champcsv="#ENV{champcsv,html}" delimitercsv="#ENV{delimitercsv,','}" namecsv="#ENV{namecsv,export.csv}" + vuebloc="#ENV{vuebloc}" url_sort_asc="#ENV{sort_asc,#GET{sort_asc}}" url_sort_desc="#ENV{sort_desc,#GET{sort_desc}}" ref="montableau" diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index f516db2..c449692 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -174,6 +174,10 @@ let monTableau = { url_sort_desc: { type: String, }, + vueblocdefaut: { + type: String, + default: 'tableau', + }, }, data: function () { return { @@ -192,6 +196,7 @@ let monTableau = { champ_search: 'html', chargement: true, nameLocalStorage: this.calculer_nameLocalStorage(), + quelleVue: this.vueblocdefaut, }; }, mounted() { @@ -380,6 +385,17 @@ let monTableau = { $csv = [[...$header], ...$tableau]; exporterCSV($csv, this.delimitercsv, this.namecsv); }, + replaceBloc(ligne) { + let html = this.vuebloc; + console.log(ligne); + Object.keys(ligne).forEach((key) => { + html = html.replace(`@@${key}@@`, ligne[key]); + }); + return html; + }, + changerVue(vue) { + this.quelleVue = vue; + }, }, template: `
@@ -388,7 +404,23 @@ let monTableau = { - + + + + + + - Mise à jour de la base de donnée + + Mise à jour de la base de donnée + - - - Base de données synchronisée + +
- +
+
+
+
+
- - +
-
-
-
- - - - - - - - - -
-
+ + + + +
+
-
{{tableau.length}} / {{table.length}} éléments
+
{{tableau.length}} éléments
diff --git a/js/gamutable.js b/js/gamutable.js index 7ae8ec2..14ae3a4 100644 --- a/js/gamutable.js +++ b/js/gamutable.js @@ -221,6 +221,10 @@ var monTableau = { }, url_sort_desc: { type: String + }, + vueblocdefaut: { + type: String, + default: 'tableau' } }, data: function data() { @@ -239,7 +243,8 @@ var monTableau = { selectTr: [], champ_search: 'html', chargement: true, - nameLocalStorage: this.calculer_nameLocalStorage() + nameLocalStorage: this.calculer_nameLocalStorage(), + quelleVue: this.vueblocdefaut }; }, mounted: function mounted() { @@ -456,9 +461,20 @@ var monTableau = { }, []); $csv = [[].concat($header)].concat(_toConsumableArray($tableau)); exporterCSV($csv, this.delimitercsv, this.namecsv); + }, + replaceBloc: function replaceBloc(ligne) { + var html = this.vuebloc; + console.log(ligne); + Object.keys(ligne).forEach(function (key) { + html = html.replace("@@".concat(key, "@@"), ligne[key]); + }); + return html; + }, + changerVue: function changerVue(vue) { + this.quelleVue = vue; } }, - template: "\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\tMise \xE0 jour de la base de donn\xE9e\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\tBase de donn\xE9es synchronis\xE9e\n\t\t\t\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t
\n\t\t\t
{{tableau.length}} / {{table.length}} \xE9l\xE9ments
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
" + template: "\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tMise \xE0 jour de la base de donn\xE9e\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t
\n\t\t\t
{{tableau.length}} \xE9l\xE9ments
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
" }; var gamuTable = { components: { From 443e6754bdcedf9051c4ab345ee9cc682b4389d0 Mon Sep 17 00:00:00 2001 From: clem Date: Wed, 21 Oct 2020 11:48:20 +0200 Subject: [PATCH 05/28] css automagique pour les boutons --- css/gamutable.css | 12 ++++++++++++ css/gamutable.css.map | 2 +- css/gamutable.scss | 11 +++++++++++ js/gamutable.js | 18 +++++++----------- 4 files changed, 31 insertions(+), 12 deletions(-) diff --git a/css/gamutable.css b/css/gamutable.css index 90ed81e..795f7cf 100644 --- a/css/gamutable.css +++ b/css/gamutable.css @@ -62,6 +62,18 @@ td.icone > * { text-align: center; } +div.gamutable .url_action { + padding: 0.2rem; + display: inline-block; + background-color: #f5f5f5; + border: 1px solid #cecece; + border-radius: 5px; +} + +div.gamutable .url_action:hover { + background-color: #cecece; +} + td.icone i { font-size: 1.8rem; } diff --git a/css/gamutable.css.map b/css/gamutable.css.map index b57b998..3900c9b 100644 --- a/css/gamutable.css.map +++ b/css/gamutable.css.map @@ -1 +1 @@ -{"version":3,"sources":["gamutable.scss","gamutable.css"],"names":[],"mappings":"AAAA;EACC,oBAAa;EAAb,aAAa;EACb,sBAA8B;MAA9B,8BAA8B;ACC/B;;ADCA;EACC,oBAAa;EAAb,aAAa;ACEd;;ADCA;EACC,eAAe;ACEhB;;ADHA;EAGE,oBAAa;EAAb,aAAa;ACIf;;ADPA;EAME,oBAAY;MAAZ,YAAY;ACKd;;ADXA;EASE,YAAY;EACZ,WAAW;ACMb;;ADhBA;EAcE,eAAe;EACf,aAAa;ACMf;;ADrBA;EAkBE,UAAU;ACOZ;;ADJA;EACC,0CAA0C;ACO3C;;ADJA;EACC,eAAe;ACOhB;;ADJA;EACC,WAAW;EACX,kBAAkB;ACOnB;;ADLA;EACC,cAAA;ACQD;;ADLA;EACC,WAAW;EACX,cAAc;EACd,eAAe;EACf,kBAAkB;ACQnB;;ADNA;EACC,iBAAiB;ACSlB","file":"gamutable.css","sourcesContent":[".gamutable--sousTable {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n.gamutable--pagination {\n\tdisplay: flex;\n}\n\n.gamutable table {\n\tfont-size: 1rem;\n\tth > div {\n\t\tdisplay: flex;\n\t}\n\t.label_tete_colonne {\n\t\tflex-grow: 1;\n\t}\n\t.iconeTri {\n\t\tfloat: right;\n\t\twidth: 1rem;\n\t\t//position: relative;\n\t}\n\t.tri_col {\n\t\tcursor: pointer;\n\t\tfill: #cecece;\n\t}\n\t.iconeTri > .active {\n\t\tfill: #000;\n\t}\n}\n#app .select {\n\tbackground-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n\tcursor: pointer;\n}\n\nth.icone {\n\twidth: 30px;\n\ttext-align: center;\n}\ntd.icone {\n\t/*padding: 0;*/\n}\n\ntd.icone > * {\n\twidth: 100%;\n\tdisplay: block;\n\tpadding: 0.5rem;\n\ttext-align: center;\n}\ntd.icone i {\n\tfont-size: 1.8rem;\n}\n",".gamutable--sousTable {\n display: flex;\n justify-content: space-between;\n}\n\n.gamutable--pagination {\n display: flex;\n}\n\n.gamutable table {\n font-size: 1rem;\n}\n\n.gamutable table th > div {\n display: flex;\n}\n\n.gamutable table .label_tete_colonne {\n flex-grow: 1;\n}\n\n.gamutable table .iconeTri {\n float: right;\n width: 1rem;\n}\n\n.gamutable table .tri_col {\n cursor: pointer;\n fill: #cecece;\n}\n\n.gamutable table .iconeTri > .active {\n fill: #000;\n}\n\n#app .select {\n background-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n cursor: pointer;\n}\n\nth.icone {\n width: 30px;\n text-align: center;\n}\n\ntd.icone {\n /*padding: 0;*/\n}\n\ntd.icone > * {\n width: 100%;\n display: block;\n padding: 0.5rem;\n text-align: center;\n}\n\ntd.icone i {\n font-size: 1.8rem;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["gamutable.scss","gamutable.css"],"names":[],"mappings":"AAAA;EACC,oBAAa;EAAb,aAAa;EACb,sBAA8B;MAA9B,8BAA8B;ACC/B;;ADCA;EACC,oBAAa;EAAb,aAAa;ACEd;;ADCA;EACC,eAAe;ACEhB;;ADHA;EAGE,oBAAa;EAAb,aAAa;ACIf;;ADPA;EAME,oBAAY;MAAZ,YAAY;ACKd;;ADXA;EASE,YAAY;EACZ,WAAW;ACMb;;ADhBA;EAcE,eAAe;EACf,aAAa;ACMf;;ADrBA;EAkBE,UAAU;ACOZ;;ADJA;EACC,0CAA0C;ACO3C;;ADJA;EACC,eAAe;ACOhB;;ADJA;EACC,WAAW;EACX,kBAAkB;ACOnB;;ADLA;EACC,cAAA;ACQD;;ADLA;EACC,WAAW;EACX,cAAc;EACd,eAAe;EACf,kBAAkB;ACQnB;;ADNA;EACC,eAAe;EACf,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,kBAAkB;ACSnB;;ADdA;EAOE,yBAAyB;ACW3B;;ADPA;EACC,iBAAiB;ACUlB","file":"gamutable.css","sourcesContent":[".gamutable--sousTable {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n.gamutable--pagination {\n\tdisplay: flex;\n}\n\n.gamutable table {\n\tfont-size: 1rem;\n\tth > div {\n\t\tdisplay: flex;\n\t}\n\t.label_tete_colonne {\n\t\tflex-grow: 1;\n\t}\n\t.iconeTri {\n\t\tfloat: right;\n\t\twidth: 1rem;\n\t\t//position: relative;\n\t}\n\t.tri_col {\n\t\tcursor: pointer;\n\t\tfill: #cecece;\n\t}\n\t.iconeTri > .active {\n\t\tfill: #000;\n\t}\n}\n#app .select {\n\tbackground-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n\tcursor: pointer;\n}\n\nth.icone {\n\twidth: 30px;\n\ttext-align: center;\n}\ntd.icone {\n\t/*padding: 0;*/\n}\n\ntd.icone > * {\n\twidth: 100%;\n\tdisplay: block;\n\tpadding: 0.5rem;\n\ttext-align: center;\n}\ndiv.gamutable .url_action {\n\tpadding: 0.2rem;\n\tdisplay: inline-block;\n\tbackground-color: #f5f5f5;\n\tborder: 1px solid #cecece;\n\tborder-radius: 5px;\n\t&:hover {\n\t\tbackground-color: #cecece;\n\t}\n}\n\ntd.icone i {\n\tfont-size: 1.8rem;\n}\n",".gamutable--sousTable {\n display: flex;\n justify-content: space-between;\n}\n\n.gamutable--pagination {\n display: flex;\n}\n\n.gamutable table {\n font-size: 1rem;\n}\n\n.gamutable table th > div {\n display: flex;\n}\n\n.gamutable table .label_tete_colonne {\n flex-grow: 1;\n}\n\n.gamutable table .iconeTri {\n float: right;\n width: 1rem;\n}\n\n.gamutable table .tri_col {\n cursor: pointer;\n fill: #cecece;\n}\n\n.gamutable table .iconeTri > .active {\n fill: #000;\n}\n\n#app .select {\n background-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n cursor: pointer;\n}\n\nth.icone {\n width: 30px;\n text-align: center;\n}\n\ntd.icone {\n /*padding: 0;*/\n}\n\ntd.icone > * {\n width: 100%;\n display: block;\n padding: 0.5rem;\n text-align: center;\n}\n\ndiv.gamutable .url_action {\n padding: 0.2rem;\n display: inline-block;\n background-color: #f5f5f5;\n border: 1px solid #cecece;\n border-radius: 5px;\n}\n\ndiv.gamutable .url_action:hover {\n background-color: #cecece;\n}\n\ntd.icone i {\n font-size: 1.8rem;\n}\n"]} \ No newline at end of file diff --git a/css/gamutable.scss b/css/gamutable.scss index bea9f23..9d8282d 100644 --- a/css/gamutable.scss +++ b/css/gamutable.scss @@ -49,6 +49,17 @@ td.icone > * { padding: 0.5rem; text-align: center; } +div.gamutable .url_action { + padding: 0.2rem; + display: inline-block; + background-color: #f5f5f5; + border: 1px solid #cecece; + border-radius: 5px; + &:hover { + background-color: #cecece; + } +} + td.icone i { font-size: 1.8rem; } diff --git a/js/gamutable.js b/js/gamutable.js index 7ae8ec2..8418bd6 100644 --- a/js/gamutable.js +++ b/js/gamutable.js @@ -1,22 +1,18 @@ "use strict"; -function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); } +function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _nonIterableSpread(); } -function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } -function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && Symbol.iterator in Object(iter)) return Array.from(iter); } +function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } -function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); } +function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } -function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); } +function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); } -function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } +function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } -function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); } - -function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; } - -function _iterableToArrayLimit(arr, i) { if (typeof Symbol === "undefined" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } +function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } From 3f98e272d935a23797fe086ede2d021d3c529c55 Mon Sep 17 00:00:00 2001 From: tofulm Date: Wed, 21 Oct 2020 16:06:29 +0200 Subject: [PATCH 06/28] vue bloc OK, chargement ajax du bloc texte html --- css/gamutable.css | 14 ++++++++++ css/gamutable.css.map | 2 +- css/gamutable.scss | 11 ++++++++ inclure/gamutable.html | 2 +- js/gamutable.es6.js | 23 ++++++++++++++--- js/gamutable.js | 58 ++++++++++++++++++++++++++++-------------- 6 files changed, 86 insertions(+), 24 deletions(-) diff --git a/css/gamutable.css b/css/gamutable.css index 90ed81e..1423dbf 100644 --- a/css/gamutable.css +++ b/css/gamutable.css @@ -66,4 +66,18 @@ td.icone i { font-size: 1.8rem; } +.vueBlocs { + display: -ms-flexbox; + display: flex; + -ms-flex-wrap: wrap; + flex-wrap: wrap; +} + +.vueBlocs-unbloc { + width: 23%; + border: 1px solid #cecece; + margin-bottom: 1rem; + margin-right: 1rem; +} + /*# sourceMappingURL=gamutable.css.map */ diff --git a/css/gamutable.css.map b/css/gamutable.css.map index b57b998..a25e7ea 100644 --- a/css/gamutable.css.map +++ b/css/gamutable.css.map @@ -1 +1 @@ -{"version":3,"sources":["gamutable.scss","gamutable.css"],"names":[],"mappings":"AAAA;EACC,oBAAa;EAAb,aAAa;EACb,sBAA8B;MAA9B,8BAA8B;ACC/B;;ADCA;EACC,oBAAa;EAAb,aAAa;ACEd;;ADCA;EACC,eAAe;ACEhB;;ADHA;EAGE,oBAAa;EAAb,aAAa;ACIf;;ADPA;EAME,oBAAY;MAAZ,YAAY;ACKd;;ADXA;EASE,YAAY;EACZ,WAAW;ACMb;;ADhBA;EAcE,eAAe;EACf,aAAa;ACMf;;ADrBA;EAkBE,UAAU;ACOZ;;ADJA;EACC,0CAA0C;ACO3C;;ADJA;EACC,eAAe;ACOhB;;ADJA;EACC,WAAW;EACX,kBAAkB;ACOnB;;ADLA;EACC,cAAA;ACQD;;ADLA;EACC,WAAW;EACX,cAAc;EACd,eAAe;EACf,kBAAkB;ACQnB;;ADNA;EACC,iBAAiB;ACSlB","file":"gamutable.css","sourcesContent":[".gamutable--sousTable {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n.gamutable--pagination {\n\tdisplay: flex;\n}\n\n.gamutable table {\n\tfont-size: 1rem;\n\tth > div {\n\t\tdisplay: flex;\n\t}\n\t.label_tete_colonne {\n\t\tflex-grow: 1;\n\t}\n\t.iconeTri {\n\t\tfloat: right;\n\t\twidth: 1rem;\n\t\t//position: relative;\n\t}\n\t.tri_col {\n\t\tcursor: pointer;\n\t\tfill: #cecece;\n\t}\n\t.iconeTri > .active {\n\t\tfill: #000;\n\t}\n}\n#app .select {\n\tbackground-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n\tcursor: pointer;\n}\n\nth.icone {\n\twidth: 30px;\n\ttext-align: center;\n}\ntd.icone {\n\t/*padding: 0;*/\n}\n\ntd.icone > * {\n\twidth: 100%;\n\tdisplay: block;\n\tpadding: 0.5rem;\n\ttext-align: center;\n}\ntd.icone i {\n\tfont-size: 1.8rem;\n}\n",".gamutable--sousTable {\n display: flex;\n justify-content: space-between;\n}\n\n.gamutable--pagination {\n display: flex;\n}\n\n.gamutable table {\n font-size: 1rem;\n}\n\n.gamutable table th > div {\n display: flex;\n}\n\n.gamutable table .label_tete_colonne {\n flex-grow: 1;\n}\n\n.gamutable table .iconeTri {\n float: right;\n width: 1rem;\n}\n\n.gamutable table .tri_col {\n cursor: pointer;\n fill: #cecece;\n}\n\n.gamutable table .iconeTri > .active {\n fill: #000;\n}\n\n#app .select {\n background-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n cursor: pointer;\n}\n\nth.icone {\n width: 30px;\n text-align: center;\n}\n\ntd.icone {\n /*padding: 0;*/\n}\n\ntd.icone > * {\n width: 100%;\n display: block;\n padding: 0.5rem;\n text-align: center;\n}\n\ntd.icone i {\n font-size: 1.8rem;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["gamutable.scss","gamutable.css"],"names":[],"mappings":"AAAA;EACC,oBAAa;EAAb,aAAa;EACb,sBAA8B;MAA9B,8BAA8B;ACC/B;;ADCA;EACC,oBAAa;EAAb,aAAa;ACEd;;ADCA;EACC,eAAe;ACEhB;;ADHA;EAGE,oBAAa;EAAb,aAAa;ACIf;;ADPA;EAME,oBAAY;MAAZ,YAAY;ACKd;;ADXA;EASE,YAAY;EACZ,WAAW;ACMb;;ADhBA;EAcE,eAAe;EACf,aAAa;ACMf;;ADrBA;EAkBE,UAAU;ACOZ;;ADJA;EACC,0CAA0C;ACO3C;;ADJA;EACC,eAAe;ACOhB;;ADJA;EACC,WAAW;EACX,kBAAkB;ACOnB;;ADLA;EACC,cAAA;ACQD;;ADLA;EACC,WAAW;EACX,cAAc;EACd,eAAe;EACf,kBAAkB;ACQnB;;ADNA;EACC,iBAAiB;ACSlB;;ADNA;EACC,oBAAa;EAAb,aAAa;EACb,mBAAe;MAAf,eAAe;ACShB;;ADPA;EACC,UAAU;EACV,yBAAyB;EACzB,mBAAmB;EACnB,kBAAkB;ACUnB","file":"gamutable.css","sourcesContent":[".gamutable--sousTable {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n.gamutable--pagination {\n\tdisplay: flex;\n}\n\n.gamutable table {\n\tfont-size: 1rem;\n\tth > div {\n\t\tdisplay: flex;\n\t}\n\t.label_tete_colonne {\n\t\tflex-grow: 1;\n\t}\n\t.iconeTri {\n\t\tfloat: right;\n\t\twidth: 1rem;\n\t\t//position: relative;\n\t}\n\t.tri_col {\n\t\tcursor: pointer;\n\t\tfill: #cecece;\n\t}\n\t.iconeTri > .active {\n\t\tfill: #000;\n\t}\n}\n#app .select {\n\tbackground-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n\tcursor: pointer;\n}\n\nth.icone {\n\twidth: 30px;\n\ttext-align: center;\n}\ntd.icone {\n\t/*padding: 0;*/\n}\n\ntd.icone > * {\n\twidth: 100%;\n\tdisplay: block;\n\tpadding: 0.5rem;\n\ttext-align: center;\n}\ntd.icone i {\n\tfont-size: 1.8rem;\n}\n\n.vueBlocs {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n.vueBlocs-unbloc {\n\twidth: 23%;\n\tborder: 1px solid #cecece;\n\tmargin-bottom: 1rem;\n\tmargin-right: 1rem;\n}\n",".gamutable--sousTable {\n display: flex;\n justify-content: space-between;\n}\n\n.gamutable--pagination {\n display: flex;\n}\n\n.gamutable table {\n font-size: 1rem;\n}\n\n.gamutable table th > div {\n display: flex;\n}\n\n.gamutable table .label_tete_colonne {\n flex-grow: 1;\n}\n\n.gamutable table .iconeTri {\n float: right;\n width: 1rem;\n}\n\n.gamutable table .tri_col {\n cursor: pointer;\n fill: #cecece;\n}\n\n.gamutable table .iconeTri > .active {\n fill: #000;\n}\n\n#app .select {\n background-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n cursor: pointer;\n}\n\nth.icone {\n width: 30px;\n text-align: center;\n}\n\ntd.icone {\n /*padding: 0;*/\n}\n\ntd.icone > * {\n width: 100%;\n display: block;\n padding: 0.5rem;\n text-align: center;\n}\n\ntd.icone i {\n font-size: 1.8rem;\n}\n\n.vueBlocs {\n display: flex;\n flex-wrap: wrap;\n}\n\n.vueBlocs-unbloc {\n width: 23%;\n border: 1px solid #cecece;\n margin-bottom: 1rem;\n margin-right: 1rem;\n}\n"]} \ No newline at end of file diff --git a/css/gamutable.scss b/css/gamutable.scss index bea9f23..44c95af 100644 --- a/css/gamutable.scss +++ b/css/gamutable.scss @@ -52,3 +52,14 @@ td.icone > * { td.icone i { font-size: 1.8rem; } + +.vueBlocs { + display: flex; + flex-wrap: wrap; +} +.vueBlocs-unbloc { + width: 23%; + border: 1px solid #cecece; + margin-bottom: 1rem; + margin-right: 1rem; +} diff --git a/inclure/gamutable.html b/inclure/gamutable.html index 27a5450..0333d7b 100644 --- a/inclure/gamutable.html +++ b/inclure/gamutable.html @@ -9,7 +9,7 @@ champcsv="#ENV{champcsv,html}" delimitercsv="#ENV{delimitercsv,','}" namecsv="#ENV{namecsv,export.csv}" - vuebloc="#ENV{vuebloc}" + urlvuebloc="[(#ENV{vuebloc})]" url_sort_asc="#ENV{sort_asc,#GET{sort_asc}}" url_sort_desc="#ENV{sort_desc,#GET{sort_desc}}" ref="montableau" diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index c449692..fd9338b 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -146,7 +146,11 @@ function trouver_index(table, id) { }); return i; } - +String.fromHtmlEntities = function (string) { + return (string + '').replace(/&#\d+;/gm, function (s) { + return String.fromCharCode(s.match(/\d+/gm)[0]); + }); +}; let monTableau = { props: { tparpage: { @@ -174,6 +178,9 @@ let monTableau = { url_sort_desc: { type: String, }, + urlvuebloc: { + type: String, + }, vueblocdefaut: { type: String, default: 'tableau', @@ -197,10 +204,19 @@ let monTableau = { chargement: true, nameLocalStorage: this.calculer_nameLocalStorage(), quelleVue: this.vueblocdefaut, + vuebloc: '', }; }, mounted() { this.chargerJson(); + if (this.urlvuebloc) { + fetch(this.urlvuebloc) + .then((response) => response.text()) + .then((data) => { + console.log(data); + this.vuebloc = data; + }); + } }, computed: { tableau: function () { @@ -387,7 +403,6 @@ let monTableau = { }, replaceBloc(ligne) { let html = this.vuebloc; - console.log(ligne); Object.keys(ligne).forEach((key) => { html = html.replace(`@@${key}@@`, ligne[key]); }); @@ -412,12 +427,14 @@ let monTableau = { @@ -439,7 +456,7 @@ let monTableau = {
-
0) { if (data.length > 0) { - var i = trouver_index(_this2.table, id); - _this2.table[i] = data[0]; + var i = trouver_index(_this3.table, id); + _this3.table[i] = data[0]; } else { - var _i2 = trouver_index(_this2.table, id); + var _i2 = trouver_index(_this3.table, id); console.log('index ', _i2); - _this2.table.splice(_i2, 1); + _this3.table.splice(_i2, 1); } } else { - _this2.table = data; + _this3.table = data; if (data[0] && data[0].search) { - _this2.champ_search = 'search'; + _this3.champ_search = 'search'; } } Vue.nextTick(function () { - _this2.chargement = false; + _this3.chargement = false; if ($_id > 0) { - _this2.selectLigne($_id, 'id'); + _this3.selectLigne($_id, 'id'); var _url = new URL(window.location); @@ -444,7 +465,7 @@ var monTableau = { } }, exportCSV: function exportCSV() { - var _this3 = this; + var _this4 = this; var $csv = []; var $header = []; @@ -454,7 +475,7 @@ var monTableau = { }); $tableau = this.tableau.reduce(function (acc, ligne) { var $uneLigne = []; - Object.values(ligne[_this3.champcsv]).forEach(function (l) { + Object.values(ligne[_this4.champcsv]).forEach(function (l) { return $uneLigne.push(l); }); return [].concat(_toConsumableArray(acc), [[].concat($uneLigne)]); @@ -464,7 +485,6 @@ var monTableau = { }, replaceBloc: function replaceBloc(ligne) { var html = this.vuebloc; - console.log(ligne); Object.keys(ligne).forEach(function (key) { html = html.replace("@@".concat(key, "@@"), ligne[key]); }); @@ -474,7 +494,7 @@ var monTableau = { this.quelleVue = vue; } }, - template: "\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tMise \xE0 jour de la base de donn\xE9e\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t
\n\t\t\t
{{tableau.length}} \xE9l\xE9ments
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
" + template: "\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tMise \xE0 jour de la base de donn\xE9e\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t
\n\t\t\t
{{tableau.length}} \xE9l\xE9ments
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
" }; var gamuTable = { components: { From 964e5e579923a87a4416a43406c5370338bae399 Mon Sep 17 00:00:00 2001 From: tofulm Date: Wed, 21 Oct 2020 16:09:47 +0200 Subject: [PATCH 07/28] recup de la css des boutons actions --- css/gamutable.css | 16 ++++++++++++---- css/gamutable.css.map | 2 +- css/gamutable.scss | 14 +++++++++++--- 3 files changed, 24 insertions(+), 8 deletions(-) diff --git a/css/gamutable.css b/css/gamutable.css index 1423dbf..4ac6872 100644 --- a/css/gamutable.css +++ b/css/gamutable.css @@ -51,10 +51,6 @@ th.icone { text-align: center; } -td.icone { - /*padding: 0;*/ -} - td.icone > * { width: 100%; display: block; @@ -62,6 +58,18 @@ td.icone > * { text-align: center; } +div.gamutable .url_action { + padding: 0.2rem; + display: inline-block; + background-color: #f5f5f5; + border: 1px solid #cecece; + border-radius: 5px; +} + +div.gamutable .url_action:hover { + background-color: #cecece; +} + td.icone i { font-size: 1.8rem; } diff --git a/css/gamutable.css.map b/css/gamutable.css.map index a25e7ea..7fd0710 100644 --- a/css/gamutable.css.map +++ b/css/gamutable.css.map @@ -1 +1 @@ -{"version":3,"sources":["gamutable.scss","gamutable.css"],"names":[],"mappings":"AAAA;EACC,oBAAa;EAAb,aAAa;EACb,sBAA8B;MAA9B,8BAA8B;ACC/B;;ADCA;EACC,oBAAa;EAAb,aAAa;ACEd;;ADCA;EACC,eAAe;ACEhB;;ADHA;EAGE,oBAAa;EAAb,aAAa;ACIf;;ADPA;EAME,oBAAY;MAAZ,YAAY;ACKd;;ADXA;EASE,YAAY;EACZ,WAAW;ACMb;;ADhBA;EAcE,eAAe;EACf,aAAa;ACMf;;ADrBA;EAkBE,UAAU;ACOZ;;ADJA;EACC,0CAA0C;ACO3C;;ADJA;EACC,eAAe;ACOhB;;ADJA;EACC,WAAW;EACX,kBAAkB;ACOnB;;ADLA;EACC,cAAA;ACQD;;ADLA;EACC,WAAW;EACX,cAAc;EACd,eAAe;EACf,kBAAkB;ACQnB;;ADNA;EACC,iBAAiB;ACSlB;;ADNA;EACC,oBAAa;EAAb,aAAa;EACb,mBAAe;MAAf,eAAe;ACShB;;ADPA;EACC,UAAU;EACV,yBAAyB;EACzB,mBAAmB;EACnB,kBAAkB;ACUnB","file":"gamutable.css","sourcesContent":[".gamutable--sousTable {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n.gamutable--pagination {\n\tdisplay: flex;\n}\n\n.gamutable table {\n\tfont-size: 1rem;\n\tth > div {\n\t\tdisplay: flex;\n\t}\n\t.label_tete_colonne {\n\t\tflex-grow: 1;\n\t}\n\t.iconeTri {\n\t\tfloat: right;\n\t\twidth: 1rem;\n\t\t//position: relative;\n\t}\n\t.tri_col {\n\t\tcursor: pointer;\n\t\tfill: #cecece;\n\t}\n\t.iconeTri > .active {\n\t\tfill: #000;\n\t}\n}\n#app .select {\n\tbackground-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n\tcursor: pointer;\n}\n\nth.icone {\n\twidth: 30px;\n\ttext-align: center;\n}\ntd.icone {\n\t/*padding: 0;*/\n}\n\ntd.icone > * {\n\twidth: 100%;\n\tdisplay: block;\n\tpadding: 0.5rem;\n\ttext-align: center;\n}\ntd.icone i {\n\tfont-size: 1.8rem;\n}\n\n.vueBlocs {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n.vueBlocs-unbloc {\n\twidth: 23%;\n\tborder: 1px solid #cecece;\n\tmargin-bottom: 1rem;\n\tmargin-right: 1rem;\n}\n",".gamutable--sousTable {\n display: flex;\n justify-content: space-between;\n}\n\n.gamutable--pagination {\n display: flex;\n}\n\n.gamutable table {\n font-size: 1rem;\n}\n\n.gamutable table th > div {\n display: flex;\n}\n\n.gamutable table .label_tete_colonne {\n flex-grow: 1;\n}\n\n.gamutable table .iconeTri {\n float: right;\n width: 1rem;\n}\n\n.gamutable table .tri_col {\n cursor: pointer;\n fill: #cecece;\n}\n\n.gamutable table .iconeTri > .active {\n fill: #000;\n}\n\n#app .select {\n background-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n cursor: pointer;\n}\n\nth.icone {\n width: 30px;\n text-align: center;\n}\n\ntd.icone {\n /*padding: 0;*/\n}\n\ntd.icone > * {\n width: 100%;\n display: block;\n padding: 0.5rem;\n text-align: center;\n}\n\ntd.icone i {\n font-size: 1.8rem;\n}\n\n.vueBlocs {\n display: flex;\n flex-wrap: wrap;\n}\n\n.vueBlocs-unbloc {\n width: 23%;\n border: 1px solid #cecece;\n margin-bottom: 1rem;\n margin-right: 1rem;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["gamutable.scss","gamutable.css"],"names":[],"mappings":"AAAA;EACC,oBAAa;EAAb,aAAa;EACb,sBAA8B;MAA9B,8BAA8B;ACC/B;;ADCA;EACC,oBAAa;EAAb,aAAa;ACEd;;ADCA;EACC,eAAe;ACEhB;;ADHA;EAGE,oBAAa;EAAb,aAAa;ACIf;;ADPA;EAME,oBAAY;MAAZ,YAAY;ACKd;;ADXA;EASE,YAAY;EACZ,WAAW;ACMb;;ADhBA;EAcE,eAAe;EACf,aAAa;ACMf;;ADrBA;EAkBE,UAAU;ACOZ;;ADJA;EACC,0CAA0C;ACO3C;;ADJA;EACC,eAAe;ACOhB;;ADJA;EACC,WAAW;EACX,kBAAkB;ACOnB;;ADJA;EACC,WAAW;EACX,cAAc;EACd,eAAe;EACf,kBAAkB;ACOnB;;ADJA;EACC,eAAe;EACf,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,kBAAkB;ACOnB;;ADZA;EAOE,yBAAyB;ACS3B;;ADNA;EACC,iBAAiB;ACSlB;;ADNA;EACC,oBAAa;EAAb,aAAa;EACb,mBAAe;MAAf,eAAe;ACShB;;ADPA;EACC,UAAU;EACV,yBAAyB;EACzB,mBAAmB;EACnB,kBAAkB;ACUnB","file":"gamutable.css","sourcesContent":[".gamutable--sousTable {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n.gamutable--pagination {\n\tdisplay: flex;\n}\n\n.gamutable table {\n\tfont-size: 1rem;\n\tth > div {\n\t\tdisplay: flex;\n\t}\n\t.label_tete_colonne {\n\t\tflex-grow: 1;\n\t}\n\t.iconeTri {\n\t\tfloat: right;\n\t\twidth: 1rem;\n\t\t//position: relative;\n\t}\n\t.tri_col {\n\t\tcursor: pointer;\n\t\tfill: #cecece;\n\t}\n\t.iconeTri > .active {\n\t\tfill: #000;\n\t}\n}\n#app .select {\n\tbackground-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n\tcursor: pointer;\n}\n\nth.icone {\n\twidth: 30px;\n\ttext-align: center;\n}\n\ntd.icone > * {\n\twidth: 100%;\n\tdisplay: block;\n\tpadding: 0.5rem;\n\ttext-align: center;\n}\n\ndiv.gamutable .url_action {\n\tpadding: 0.2rem;\n\tdisplay: inline-block;\n\tbackground-color: #f5f5f5;\n\tborder: 1px solid #cecece;\n\tborder-radius: 5px;\n\t&:hover {\n\t\tbackground-color: #cecece;\n\t}\n}\ntd.icone i {\n\tfont-size: 1.8rem;\n}\n\n.vueBlocs {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n.vueBlocs-unbloc {\n\twidth: 23%;\n\tborder: 1px solid #cecece;\n\tmargin-bottom: 1rem;\n\tmargin-right: 1rem;\n}\n",".gamutable--sousTable {\n display: flex;\n justify-content: space-between;\n}\n\n.gamutable--pagination {\n display: flex;\n}\n\n.gamutable table {\n font-size: 1rem;\n}\n\n.gamutable table th > div {\n display: flex;\n}\n\n.gamutable table .label_tete_colonne {\n flex-grow: 1;\n}\n\n.gamutable table .iconeTri {\n float: right;\n width: 1rem;\n}\n\n.gamutable table .tri_col {\n cursor: pointer;\n fill: #cecece;\n}\n\n.gamutable table .iconeTri > .active {\n fill: #000;\n}\n\n#app .select {\n background-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n cursor: pointer;\n}\n\nth.icone {\n width: 30px;\n text-align: center;\n}\n\ntd.icone > * {\n width: 100%;\n display: block;\n padding: 0.5rem;\n text-align: center;\n}\n\ndiv.gamutable .url_action {\n padding: 0.2rem;\n display: inline-block;\n background-color: #f5f5f5;\n border: 1px solid #cecece;\n border-radius: 5px;\n}\n\ndiv.gamutable .url_action:hover {\n background-color: #cecece;\n}\n\ntd.icone i {\n font-size: 1.8rem;\n}\n\n.vueBlocs {\n display: flex;\n flex-wrap: wrap;\n}\n\n.vueBlocs-unbloc {\n width: 23%;\n border: 1px solid #cecece;\n margin-bottom: 1rem;\n margin-right: 1rem;\n}\n"]} \ No newline at end of file diff --git a/css/gamutable.scss b/css/gamutable.scss index 44c95af..bdefcc0 100644 --- a/css/gamutable.scss +++ b/css/gamutable.scss @@ -39,9 +39,6 @@ th.icone { width: 30px; text-align: center; } -td.icone { - /*padding: 0;*/ -} td.icone > * { width: 100%; @@ -49,6 +46,17 @@ td.icone > * { padding: 0.5rem; text-align: center; } + +div.gamutable .url_action { + padding: 0.2rem; + display: inline-block; + background-color: #f5f5f5; + border: 1px solid #cecece; + border-radius: 5px; + &:hover { + background-color: #cecece; + } +} td.icone i { font-size: 1.8rem; } From 6aa187ee1ed40b50084d852a801d66670aab48c3 Mon Sep 17 00:00:00 2001 From: tofulm Date: Wed, 21 Oct 2020 16:14:14 +0200 Subject: [PATCH 08/28] alignement barre menu --- css/gamutable.css | 5 +++++ css/gamutable.css.map | 2 +- css/gamutable.scss | 6 ++++++ 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/css/gamutable.css b/css/gamutable.css index 4ac6872..d3018e7 100644 --- a/css/gamutable.css +++ b/css/gamutable.css @@ -1,3 +1,8 @@ +.gamutable--surTable select, +.gamutable--surTable input { + margin-bottom: 0; +} + .gamutable--sousTable { display: -ms-flexbox; display: flex; diff --git a/css/gamutable.css.map b/css/gamutable.css.map index 7fd0710..4a74b28 100644 --- a/css/gamutable.css.map +++ b/css/gamutable.css.map @@ -1 +1 @@ -{"version":3,"sources":["gamutable.scss","gamutable.css"],"names":[],"mappings":"AAAA;EACC,oBAAa;EAAb,aAAa;EACb,sBAA8B;MAA9B,8BAA8B;ACC/B;;ADCA;EACC,oBAAa;EAAb,aAAa;ACEd;;ADCA;EACC,eAAe;ACEhB;;ADHA;EAGE,oBAAa;EAAb,aAAa;ACIf;;ADPA;EAME,oBAAY;MAAZ,YAAY;ACKd;;ADXA;EASE,YAAY;EACZ,WAAW;ACMb;;ADhBA;EAcE,eAAe;EACf,aAAa;ACMf;;ADrBA;EAkBE,UAAU;ACOZ;;ADJA;EACC,0CAA0C;ACO3C;;ADJA;EACC,eAAe;ACOhB;;ADJA;EACC,WAAW;EACX,kBAAkB;ACOnB;;ADJA;EACC,WAAW;EACX,cAAc;EACd,eAAe;EACf,kBAAkB;ACOnB;;ADJA;EACC,eAAe;EACf,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,kBAAkB;ACOnB;;ADZA;EAOE,yBAAyB;ACS3B;;ADNA;EACC,iBAAiB;ACSlB;;ADNA;EACC,oBAAa;EAAb,aAAa;EACb,mBAAe;MAAf,eAAe;ACShB;;ADPA;EACC,UAAU;EACV,yBAAyB;EACzB,mBAAmB;EACnB,kBAAkB;ACUnB","file":"gamutable.css","sourcesContent":[".gamutable--sousTable {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n.gamutable--pagination {\n\tdisplay: flex;\n}\n\n.gamutable table {\n\tfont-size: 1rem;\n\tth > div {\n\t\tdisplay: flex;\n\t}\n\t.label_tete_colonne {\n\t\tflex-grow: 1;\n\t}\n\t.iconeTri {\n\t\tfloat: right;\n\t\twidth: 1rem;\n\t\t//position: relative;\n\t}\n\t.tri_col {\n\t\tcursor: pointer;\n\t\tfill: #cecece;\n\t}\n\t.iconeTri > .active {\n\t\tfill: #000;\n\t}\n}\n#app .select {\n\tbackground-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n\tcursor: pointer;\n}\n\nth.icone {\n\twidth: 30px;\n\ttext-align: center;\n}\n\ntd.icone > * {\n\twidth: 100%;\n\tdisplay: block;\n\tpadding: 0.5rem;\n\ttext-align: center;\n}\n\ndiv.gamutable .url_action {\n\tpadding: 0.2rem;\n\tdisplay: inline-block;\n\tbackground-color: #f5f5f5;\n\tborder: 1px solid #cecece;\n\tborder-radius: 5px;\n\t&:hover {\n\t\tbackground-color: #cecece;\n\t}\n}\ntd.icone i {\n\tfont-size: 1.8rem;\n}\n\n.vueBlocs {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n.vueBlocs-unbloc {\n\twidth: 23%;\n\tborder: 1px solid #cecece;\n\tmargin-bottom: 1rem;\n\tmargin-right: 1rem;\n}\n",".gamutable--sousTable {\n display: flex;\n justify-content: space-between;\n}\n\n.gamutable--pagination {\n display: flex;\n}\n\n.gamutable table {\n font-size: 1rem;\n}\n\n.gamutable table th > div {\n display: flex;\n}\n\n.gamutable table .label_tete_colonne {\n flex-grow: 1;\n}\n\n.gamutable table .iconeTri {\n float: right;\n width: 1rem;\n}\n\n.gamutable table .tri_col {\n cursor: pointer;\n fill: #cecece;\n}\n\n.gamutable table .iconeTri > .active {\n fill: #000;\n}\n\n#app .select {\n background-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n cursor: pointer;\n}\n\nth.icone {\n width: 30px;\n text-align: center;\n}\n\ntd.icone > * {\n width: 100%;\n display: block;\n padding: 0.5rem;\n text-align: center;\n}\n\ndiv.gamutable .url_action {\n padding: 0.2rem;\n display: inline-block;\n background-color: #f5f5f5;\n border: 1px solid #cecece;\n border-radius: 5px;\n}\n\ndiv.gamutable .url_action:hover {\n background-color: #cecece;\n}\n\ntd.icone i {\n font-size: 1.8rem;\n}\n\n.vueBlocs {\n display: flex;\n flex-wrap: wrap;\n}\n\n.vueBlocs-unbloc {\n width: 23%;\n border: 1px solid #cecece;\n margin-bottom: 1rem;\n margin-right: 1rem;\n}\n"]} \ No newline at end of file +{"version":3,"sources":["gamutable.scss","gamutable.css"],"names":[],"mappings":"AAAA;;EAGE,gBAAgB;ACAlB;;ADGA;EACC,oBAAa;EAAb,aAAa;EACb,sBAA8B;MAA9B,8BAA8B;ACA/B;;ADEA;EACC,oBAAa;EAAb,aAAa;ACCd;;ADEA;EACC,eAAe;ACChB;;ADFA;EAGE,oBAAa;EAAb,aAAa;ACGf;;ADNA;EAME,oBAAY;MAAZ,YAAY;ACId;;ADVA;EASE,YAAY;EACZ,WAAW;ACKb;;ADfA;EAcE,eAAe;EACf,aAAa;ACKf;;ADpBA;EAkBE,UAAU;ACMZ;;ADHA;EACC,0CAA0C;ACM3C;;ADHA;EACC,eAAe;ACMhB;;ADHA;EACC,WAAW;EACX,kBAAkB;ACMnB;;ADHA;EACC,WAAW;EACX,cAAc;EACd,eAAe;EACf,kBAAkB;ACMnB;;ADHA;EACC,eAAe;EACf,qBAAqB;EACrB,yBAAyB;EACzB,yBAAyB;EACzB,kBAAkB;ACMnB;;ADXA;EAOE,yBAAyB;ACQ3B;;ADLA;EACC,iBAAiB;ACQlB;;ADLA;EACC,oBAAa;EAAb,aAAa;EACb,mBAAe;MAAf,eAAe;ACQhB;;ADNA;EACC,UAAU;EACV,yBAAyB;EACzB,mBAAmB;EACnB,kBAAkB;ACSnB","file":"gamutable.css","sourcesContent":[".gamutable--surTable {\n\tselect,\n\tinput {\n\t\tmargin-bottom: 0;\n\t}\n}\n.gamutable--sousTable {\n\tdisplay: flex;\n\tjustify-content: space-between;\n}\n.gamutable--pagination {\n\tdisplay: flex;\n}\n\n.gamutable table {\n\tfont-size: 1rem;\n\tth > div {\n\t\tdisplay: flex;\n\t}\n\t.label_tete_colonne {\n\t\tflex-grow: 1;\n\t}\n\t.iconeTri {\n\t\tfloat: right;\n\t\twidth: 1rem;\n\t\t//position: relative;\n\t}\n\t.tri_col {\n\t\tcursor: pointer;\n\t\tfill: #cecece;\n\t}\n\t.iconeTri > .active {\n\t\tfill: #000;\n\t}\n}\n#app .select {\n\tbackground-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n\tcursor: pointer;\n}\n\nth.icone {\n\twidth: 30px;\n\ttext-align: center;\n}\n\ntd.icone > * {\n\twidth: 100%;\n\tdisplay: block;\n\tpadding: 0.5rem;\n\ttext-align: center;\n}\n\ndiv.gamutable .url_action {\n\tpadding: 0.2rem;\n\tdisplay: inline-block;\n\tbackground-color: #f5f5f5;\n\tborder: 1px solid #cecece;\n\tborder-radius: 5px;\n\t&:hover {\n\t\tbackground-color: #cecece;\n\t}\n}\ntd.icone i {\n\tfont-size: 1.8rem;\n}\n\n.vueBlocs {\n\tdisplay: flex;\n\tflex-wrap: wrap;\n}\n.vueBlocs-unbloc {\n\twidth: 23%;\n\tborder: 1px solid #cecece;\n\tmargin-bottom: 1rem;\n\tmargin-right: 1rem;\n}\n",".gamutable--surTable select,\n.gamutable--surTable input {\n margin-bottom: 0;\n}\n\n.gamutable--sousTable {\n display: flex;\n justify-content: space-between;\n}\n\n.gamutable--pagination {\n display: flex;\n}\n\n.gamutable table {\n font-size: 1rem;\n}\n\n.gamutable table th > div {\n display: flex;\n}\n\n.gamutable table .label_tete_colonne {\n flex-grow: 1;\n}\n\n.gamutable table .iconeTri {\n float: right;\n width: 1rem;\n}\n\n.gamutable table .tri_col {\n cursor: pointer;\n fill: #cecece;\n}\n\n.gamutable table .iconeTri > .active {\n fill: #000;\n}\n\n#app .select {\n background-color: rgba(179, 209, 67, 0.47);\n}\n\ntd.id {\n cursor: pointer;\n}\n\nth.icone {\n width: 30px;\n text-align: center;\n}\n\ntd.icone > * {\n width: 100%;\n display: block;\n padding: 0.5rem;\n text-align: center;\n}\n\ndiv.gamutable .url_action {\n padding: 0.2rem;\n display: inline-block;\n background-color: #f5f5f5;\n border: 1px solid #cecece;\n border-radius: 5px;\n}\n\ndiv.gamutable .url_action:hover {\n background-color: #cecece;\n}\n\ntd.icone i {\n font-size: 1.8rem;\n}\n\n.vueBlocs {\n display: flex;\n flex-wrap: wrap;\n}\n\n.vueBlocs-unbloc {\n width: 23%;\n border: 1px solid #cecece;\n margin-bottom: 1rem;\n margin-right: 1rem;\n}\n"]} \ No newline at end of file diff --git a/css/gamutable.scss b/css/gamutable.scss index bdefcc0..89963f4 100644 --- a/css/gamutable.scss +++ b/css/gamutable.scss @@ -1,3 +1,9 @@ +.gamutable--surTable { + select, + input { + margin-bottom: 0; + } +} .gamutable--sousTable { display: flex; justify-content: space-between; From 80fceaea0449f1a8d70728420e62be97eaba9dce Mon Sep 17 00:00:00 2001 From: tofulm Date: Wed, 21 Oct 2020 16:17:58 +0200 Subject: [PATCH 09/28] maj de la doc --- README.md | 2 ++ inclure/gamutable.html | 2 +- js/gamutable.es6.js | 1 - 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 7648ea9..5f90fc4 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,8 @@ Choisir entre la version minifiée de vuejs (sans le debug) ou la version de dev tparpage=[15,25,50,'Tous'], champcsv="search", delimitercsv=";", + urlvuebloc=spip.php?page=mon_bloc_type_html, + vueblocdefaut='bloc ou tableau', // par defaut tableau namecsv="souscripteurs.csv", url_sort_asc="#CHEMIN{...}" url_sort_desc="#CHEMIN{...}" diff --git a/inclure/gamutable.html b/inclure/gamutable.html index 0333d7b..9eb9516 100644 --- a/inclure/gamutable.html +++ b/inclure/gamutable.html @@ -9,7 +9,7 @@ champcsv="#ENV{champcsv,html}" delimitercsv="#ENV{delimitercsv,','}" namecsv="#ENV{namecsv,export.csv}" - urlvuebloc="[(#ENV{vuebloc})]" + urlvuebloc="[(#ENV{urlvuebloc})]" url_sort_asc="#ENV{sort_asc,#GET{sort_asc}}" url_sort_desc="#ENV{sort_desc,#GET{sort_desc}}" ref="montableau" diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index fd9338b..457df99 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -213,7 +213,6 @@ let monTableau = { fetch(this.urlvuebloc) .then((response) => response.text()) .then((data) => { - console.log(data); this.vuebloc = data; }); } From 017391af7c472480807a82aad24b711bdceba47f Mon Sep 17 00:00:00 2001 From: tofulm Date: Thu, 29 Oct 2020 22:04:49 +0100 Subject: [PATCH 10/28] maj de vuejs --- js/vue.js | 151 ++++++++++++++++++++++++++++++++++-------------------- 1 file changed, 95 insertions(+), 56 deletions(-) diff --git a/js/vue.js b/js/vue.js index 0bc15a4..9cab498 100644 --- a/js/vue.js +++ b/js/vue.js @@ -252,7 +252,7 @@ var Vue = (function (exports) { const EMPTY_OBJ = Object.freeze({}) ; - const EMPTY_ARR = []; + const EMPTY_ARR = Object.freeze([]) ; const NOOP = () => { }; /** * Always return false. @@ -292,7 +292,9 @@ var Vue = (function (exports) { key !== 'NaN' && key[0] !== '-' && '' + parseInt(key, 10) === key; - const isReservedProp = /*#__PURE__*/ makeMap('key,ref,' + + const isReservedProp = /*#__PURE__*/ makeMap( + // the leading comma is intentional so empty string "" is also included + ',key,ref,' + 'onVnodeBeforeMount,onVnodeMounted,' + 'onVnodeBeforeUpdate,onVnodeUpdated,' + 'onVnodeBeforeUnmount,onVnodeUnmounted'); @@ -314,15 +316,15 @@ var Vue = (function (exports) { /** * @private */ - const hyphenate = cacheStringFunction((str) => { - return str.replace(hyphenateRE, '-$1').toLowerCase(); - }); + const hyphenate = cacheStringFunction((str) => str.replace(hyphenateRE, '-$1').toLowerCase()); /** * @private */ - const capitalize = cacheStringFunction((str) => { - return str.charAt(0).toUpperCase() + str.slice(1); - }); + const capitalize = cacheStringFunction((str) => str.charAt(0).toUpperCase() + str.slice(1)); + /** + * @private + */ + const toHandlerKey = cacheStringFunction((str) => (str ? `on${capitalize(str)}` : ``)); // compare whether a value has changed, accounting for NaN. const hasChanged = (value, oldValue) => value !== oldValue && (value === value || oldValue === oldValue); const invokeArrayFns = (fns, arg) => { @@ -667,7 +669,7 @@ var Vue = (function (exports) { return result; } function ownKeys(target) { - track(target, "iterate" /* ITERATE */, ITERATE_KEY); + track(target, "iterate" /* ITERATE */, isArray(target) ? 'length' : ITERATE_KEY); return Reflect.ownKeys(target); } const mutableHandlers = { @@ -1739,21 +1741,21 @@ var Vue = (function (exports) { exports.devtools.emit("component:emit" /* COMPONENT_EMIT */, component.appContext.app, component, event, params); } - function emit(instance, event, ...args) { + function emit(instance, event, ...rawArgs) { const props = instance.vnode.props || EMPTY_OBJ; { const { emitsOptions, propsOptions: [propsOptions] } = instance; if (emitsOptions) { if (!(event in emitsOptions)) { - if (!propsOptions || !(`on` + capitalize(event) in propsOptions)) { + if (!propsOptions || !(toHandlerKey(event) in propsOptions)) { warn(`Component emitted event "${event}" but it is neither declared in ` + - `the emits option nor as an "on${capitalize(event)}" prop.`); + `the emits option nor as an "${toHandlerKey(event)}" prop.`); } } else { const validator = emitsOptions[event]; if (isFunction(validator)) { - const isValid = validator(...args); + const isValid = validator(...rawArgs); if (!isValid) { warn(`Invalid event arguments: event validation failed for event "${event}".`); } @@ -1761,12 +1763,26 @@ var Vue = (function (exports) { } } } + let args = rawArgs; + const isModelListener = event.startsWith('update:'); + // for v-model update:xxx events, apply modifiers on args + const modelArg = isModelListener && event.slice(7); + if (modelArg && modelArg in props) { + const modifiersKey = `${modelArg === 'modelValue' ? 'model' : modelArg}Modifiers`; + const { number, trim } = props[modifiersKey] || EMPTY_OBJ; + if (trim) { + args = rawArgs.map(a => a.trim()); + } + else if (number) { + args = rawArgs.map(toNumber); + } + } { devtoolsComponentEmit(instance, event, args); } { const lowerCaseEvent = event.toLowerCase(); - if (lowerCaseEvent !== event && props[`on` + capitalize(lowerCaseEvent)]) { + if (lowerCaseEvent !== event && props[toHandlerKey(lowerCaseEvent)]) { warn(`Event "${lowerCaseEvent}" is emitted in component ` + `${formatComponentName(instance, instance.type)} but the handler is registered for "${event}". ` + `Note that HTML attributes are case-insensitive and you cannot use ` + @@ -1775,25 +1791,26 @@ var Vue = (function (exports) { } } // convert handler name to camelCase. See issue #2249 - let handlerName = `on${capitalize(camelize(event))}`; + let handlerName = toHandlerKey(camelize(event)); let handler = props[handlerName]; // for v-model update:xxx events, also trigger kebab-case equivalent // for props passed via kebab-case - if (!handler && event.startsWith('update:')) { - handlerName = `on${capitalize(hyphenate(event))}`; + if (!handler && isModelListener) { + handlerName = toHandlerKey(hyphenate(event)); handler = props[handlerName]; } - if (!handler) { - handler = props[handlerName + `Once`]; + if (handler) { + callWithAsyncErrorHandling(handler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args); + } + const onceHandler = props[handlerName + `Once`]; + if (onceHandler) { if (!instance.emitted) { (instance.emitted = {})[handlerName] = true; } else if (instance.emitted[handlerName]) { return; } - } - if (handler) { - callWithAsyncErrorHandling(handler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args); + callWithAsyncErrorHandling(onceHandler, instance, 6 /* COMPONENT_EVENT_HANDLER */, args); } } function normalizeEmitsOptions(comp, appContext, asMixin = false) { @@ -2003,11 +2020,13 @@ var Vue = (function (exports) { const dynamicIndex = dynamicChildren ? dynamicChildren.indexOf(childRoot) : -1; const setRoot = (updatedRoot) => { rawChildren[index] = updatedRoot; - if (dynamicIndex > -1) { - dynamicChildren[dynamicIndex] = updatedRoot; - } - else if (dynamicChildren && updatedRoot.patchFlag > 0) { - dynamicChildren.push(updatedRoot); + if (dynamicChildren) { + if (dynamicIndex > -1) { + dynamicChildren[dynamicIndex] = updatedRoot; + } + else if (updatedRoot.patchFlag > 0) { + vnode.dynamicChildren = [...dynamicChildren, updatedRoot]; + } } }; return [normalizeVNode(childRoot), setRoot]; @@ -2145,7 +2164,7 @@ var Vue = (function (exports) { mountSuspense(n2, container, anchor, parentComponent, parentSuspense, isSVG, optimized, rendererInternals); } else { - patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, optimized, rendererInternals); + patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, rendererInternals); } }, hydrate: hydrateSuspense, @@ -2159,13 +2178,13 @@ var Vue = (function (exports) { const hiddenContainer = createElement('div'); const suspense = (vnode.suspense = createSuspenseBoundary(vnode, parentSuspense, parentComponent, container, hiddenContainer, anchor, isSVG, optimized, rendererInternals)); // start mounting the content subtree in an off-dom container - patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG, optimized); + patch(null, (suspense.pendingBranch = vnode.ssContent), hiddenContainer, null, parentComponent, suspense, isSVG); // now check if we have encountered any async deps if (suspense.deps > 0) { // has async // mount the fallback tree patch(null, vnode.ssFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, optimized); + isSVG); setActiveBranch(suspense, vnode.ssFallback); } else { @@ -2173,7 +2192,7 @@ var Vue = (function (exports) { suspense.resolve(); } } - function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, optimized, { p: patch, um: unmount, o: { createElement } }) { + function patchSuspense(n1, n2, container, anchor, parentComponent, isSVG, { p: patch, um: unmount, o: { createElement } }) { const suspense = (n2.suspense = n1.suspense); suspense.vnode = n2; n2.el = n1.el; @@ -2184,13 +2203,13 @@ var Vue = (function (exports) { suspense.pendingBranch = newBranch; if (isSameVNodeType(newBranch, pendingBranch)) { // same root type but content may have changed. - patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, optimized); + patch(pendingBranch, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG); if (suspense.deps <= 0) { suspense.resolve(); } else if (isInFallback) { patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, optimized); + isSVG); setActiveBranch(suspense, newFallback); } } @@ -2216,25 +2235,25 @@ var Vue = (function (exports) { suspense.hiddenContainer = createElement('div'); if (isInFallback) { // already in fallback state - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, optimized); + patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG); if (suspense.deps <= 0) { suspense.resolve(); } else { patch(activeBranch, newFallback, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, optimized); + isSVG); setActiveBranch(suspense, newFallback); } } else if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { // toggled "back" to current active branch - patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, optimized); + patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG); // force resolve suspense.resolve(true); } else { // switched to a 3rd branch - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, optimized); + patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG); if (suspense.deps <= 0) { suspense.resolve(); } @@ -2244,7 +2263,7 @@ var Vue = (function (exports) { else { if (activeBranch && isSameVNodeType(newBranch, activeBranch)) { // root did not change, just normal patch - patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG, optimized); + patch(activeBranch, newBranch, container, anchor, parentComponent, suspense, isSVG); setActiveBranch(suspense, newBranch); } else { @@ -2257,7 +2276,7 @@ var Vue = (function (exports) { // mount pending branch in off-dom container suspense.pendingBranch = newBranch; suspense.pendingId++; - patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG, optimized); + patch(null, newBranch, suspense.hiddenContainer, null, parentComponent, suspense, isSVG); if (suspense.deps <= 0) { // incoming branch has no async deps, resolve now. suspense.resolve(); @@ -2293,7 +2312,6 @@ var Vue = (function (exports) { parent, parentComponent, isSVG, - optimized, container, hiddenContainer, anchor, @@ -2376,7 +2394,7 @@ var Vue = (function (exports) { if (!suspense.pendingBranch) { return; } - const { vnode, activeBranch, parentComponent, container, isSVG, optimized } = suspense; + const { vnode, activeBranch, parentComponent, container, isSVG } = suspense; // invoke @fallback event const onFallback = vnode.props && vnode.props.onFallback; if (isFunction(onFallback)) { @@ -2389,7 +2407,7 @@ var Vue = (function (exports) { } // mount the fallback tree patch(null, fallbackVNode, container, anchor, parentComponent, null, // fallback tree will not have suspense context - isSVG, optimized); + isSVG); setActiveBranch(suspense, fallbackVNode); }; const delayEnter = fallbackVNode.transition && fallbackVNode.transition.mode === 'out-in'; @@ -3058,7 +3076,7 @@ var Vue = (function (exports) { return wrappedHook; } else { - const apiName = `on${capitalize(ErrorTypeStrings[type].replace(/ hook$/, ''))}`; + const apiName = toHandlerKey(ErrorTypeStrings[type].replace(/ hook$/, '')); warn(`${apiName} is called when there is no active component instance to be ` + `associated with. ` + `Lifecycle injection APIs can only be used during execution of setup().` + @@ -4984,6 +5002,7 @@ var Vue = (function (exports) { const patchProps = (el, vnode, oldProps, newProps, parentComponent, parentSuspense, isSVG) => { if (oldProps !== newProps) { for (const key in newProps) { + // empty string is not valid prop if (isReservedProp(key)) continue; const next = newProps[key]; @@ -5623,7 +5642,10 @@ var Vue = (function (exports) { // fast path for block nodes: only need to unmount dynamic children. unmountChildren(dynamicChildren, parentComponent, parentSuspense, false, true); } - else if (!optimized && shapeFlag & 16 /* ARRAY_CHILDREN */) { + else if ((type === Fragment && + (patchFlag & 128 /* KEYED_FRAGMENT */ || + patchFlag & 256 /* UNKEYED_FRAGMENT */)) || + (!optimized && shapeFlag & 16 /* ARRAY_CHILDREN */)) { unmountChildren(children, parentComponent, parentSuspense); } // an unmounted teleport should always remove its children if not disabled @@ -6518,7 +6540,7 @@ var Vue = (function (exports) { : incoming; } } - else { + else if (key !== '') { ret[key] = toMerge[key]; } } @@ -6552,8 +6574,13 @@ var Vue = (function (exports) { // a functional component const instance = currentInstance || currentRenderingInstance; if (instance) { - const provides = instance.provides; - if (key in provides) { + // #2400 + // to support `app.use` plugins, + // fallback to appContext's `provides` if the intance is at root + const provides = instance.parent == null + ? instance.vnode.appContext && instance.vnode.appContext.provides + : instance.parent.provides; + if (provides && key in provides) { // TS doesn't allow symbol as index type return provides[key]; } @@ -7317,7 +7344,7 @@ var Vue = (function (exports) { } } // 0. create render proxy property access cache - instance.accessCache = {}; + instance.accessCache = Object.create(null); // 1. create public instance / render proxy // also mark it raw so it's never observed instance.proxy = new Proxy(instance.ctx, PublicInstanceProxyHandlers); @@ -7913,7 +7940,7 @@ var Vue = (function (exports) { return ret; } for (const key in obj) { - ret[`on${capitalize(key)}`] = obj[key]; + ret[toHandlerKey(key)] = obj[key]; } return ret; } @@ -7940,7 +7967,7 @@ var Vue = (function (exports) { } // Core API ------------------------------------------------------------------ - const version = "3.0.1"; + const version = "3.0.2"; /** * SSR utils for \@vue/server-renderer. Only exposed in cjs builds. * @internal @@ -9276,6 +9303,7 @@ var Vue = (function (exports) { const TO_HANDLERS = Symbol( `toHandlers` ); const CAMELIZE = Symbol( `camelize` ); const CAPITALIZE = Symbol( `capitalize` ); + const TO_HANDLER_KEY = Symbol( `toHandlerKey` ); const SET_BLOCK_TRACKING = Symbol( `setBlockTracking` ); const PUSH_SCOPE_ID = Symbol( `pushScopeId` ); const POP_SCOPE_ID = Symbol( `popScopeId` ); @@ -9308,6 +9336,7 @@ var Vue = (function (exports) { [TO_HANDLERS]: `toHandlers`, [CAMELIZE]: `camelize`, [CAPITALIZE]: `capitalize`, + [TO_HANDLER_KEY]: `toHandlerKey`, [SET_BLOCK_TRACKING]: `setBlockTracking`, [PUSH_SCOPE_ID]: `pushScopeId`, [POP_SCOPE_ID]: `popScopeId`, @@ -9464,7 +9493,7 @@ var Vue = (function (exports) { } const nonIdentifierRE = /^\d|[^\$\w]/; const isSimpleIdentifier = (name) => !nonIdentifierRE.test(name); - const memberExpRE = /^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\[[^\]]+\])*$/; + const memberExpRE = /^[A-Za-z_$][\w$]*(?:\s*\.\s*[A-Za-z_$][\w$]*|\[[^\]]+\])*$/; const isMemberExpression = (path) => { if (!path) return false; @@ -12481,12 +12510,12 @@ var Vue = (function (exports) { if (arg.isStatic) { const rawName = arg.content; // for all event listeners, auto convert it to camelCase. See issue #2249 - const normalizedName = capitalize(camelize(rawName)); - eventName = createSimpleExpression(`on${normalizedName}`, true, arg.loc); + eventName = createSimpleExpression(toHandlerKey(camelize(rawName)), true, arg.loc); } else { + // #2388 eventName = createCompoundExpression([ - `"on" + ${context.helperString(CAPITALIZE)}(`, + `${context.helperString(TO_HANDLER_KEY)}(`, arg, `)` ]); @@ -12495,7 +12524,7 @@ var Vue = (function (exports) { else { // already a compound expression. eventName = arg; - eventName.children.unshift(`"on" + ${context.helperString(CAPITALIZE)}(`); + eventName.children.unshift(`${context.helperString(TO_HANDLER_KEY)}(`); eventName.children.push(`)`); } // handler processing @@ -12544,6 +12573,13 @@ var Vue = (function (exports) { const transformBind = (dir, node, context) => { const { exp, modifiers, loc } = dir; const arg = dir.arg; + if (arg.type !== 4 /* SIMPLE_EXPRESSION */) { + arg.children.unshift(`(`); + arg.children.push(`) || ""`); + } + else if (!arg.isStatic) { + arg.content = `${arg.content} || ""`; + } // .prop is no longer necessary due to new patch behavior // .sync is replaced by v-model:arg if (modifiers.includes('camel')) { @@ -12935,7 +12971,9 @@ var Vue = (function (exports) { } return { props: [ - createObjectProperty(createSimpleExpression(`textContent`, true, loc), exp || createSimpleExpression('', true)) + createObjectProperty(createSimpleExpression(`textContent`, true), exp + ? createCallExpression(context.helperString(TO_DISPLAY_STRING), [exp], loc) + : createSimpleExpression('', true)) ] }; }; @@ -13337,6 +13375,7 @@ var Vue = (function (exports) { exports.ssrContextKey = ssrContextKey; exports.ssrUtils = ssrUtils; exports.toDisplayString = toDisplayString; + exports.toHandlerKey = toHandlerKey; exports.toHandlers = toHandlers; exports.toRaw = toRaw; exports.toRef = toRef; From 90f96a5a0d645d3466ea929366c28519a5838948 Mon Sep 17 00:00:00 2001 From: tofulm Date: Fri, 30 Oct 2020 09:39:38 +0100 Subject: [PATCH 11/28] =?UTF-8?q?on=20passe=20en=20data-ajaxreload=20le=20?= =?UTF-8?q?nom=20du=20bloc=20=C3=A0=20recharger?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/gamutable.es6.js | 2 ++ js/gamutable.js | 3 ++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index 457df99..9a70f8c 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -12,6 +12,8 @@ jQuery(function () { } let url = $(this).attr('href'); let id = $(this).data('id'); + let nomBlocAjaxReload = $(this).data('ajaxreload'); + console.log('nom ', nomBlocAjaxReload); console.time('Chargement de VueJs APRES Ajax'); $.ajax({ url: url, diff --git a/js/gamutable.js b/js/gamutable.js index f9951dc..28ec415 100644 --- a/js/gamutable.js +++ b/js/gamutable.js @@ -36,6 +36,8 @@ jQuery(function () { var url = $(this).attr('href'); var id = $(this).data('id'); + var nomBlocAjaxReload = $(this).data('ajaxreload'); + console.log('nom ', nomBlocAjaxReload); console.time('Chargement de VueJs APRES Ajax'); $.ajax({ url: url, @@ -266,7 +268,6 @@ var monTableau = { fetch(this.urlvuebloc).then(function (response) { return response.text(); }).then(function (data) { - console.log(data); _this.vuebloc = data; }); } From ab8a895db0c195bd11cf60341071fb9886ca3896 Mon Sep 17 00:00:00 2001 From: tofulm Date: Fri, 30 Oct 2020 10:41:20 +0100 Subject: [PATCH 12/28] si pas de nom de csv, on n'affiche pas le bouton d'export --- inclure/gamutable.html | 2 +- js/gamutable.es6.js | 2 +- js/gamutable.js | 3 +-- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/inclure/gamutable.html b/inclure/gamutable.html index 9eb9516..0ed28a4 100644 --- a/inclure/gamutable.html +++ b/inclure/gamutable.html @@ -8,7 +8,7 @@ :tparpage="#ENV{tparpage, [10, 20, 50, 'Tous']}" champcsv="#ENV{champcsv,html}" delimitercsv="#ENV{delimitercsv,','}" - namecsv="#ENV{namecsv,export.csv}" + namecsv="#ENV{namecsv}" urlvuebloc="[(#ENV{urlvuebloc})]" url_sort_asc="#ENV{sort_asc,#GET{sort_asc}}" url_sort_desc="#ENV{sort_desc,#GET{sort_desc}}" diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index 9a70f8c..c06b032 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -13,7 +13,6 @@ jQuery(function () { let url = $(this).attr('href'); let id = $(this).data('id'); let nomBlocAjaxReload = $(this).data('ajaxreload'); - console.log('nom ', nomBlocAjaxReload); console.time('Chargement de VueJs APRES Ajax'); $.ajax({ url: url, @@ -440,6 +439,7 @@ let monTableau = { \n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tMise \xE0 jour de la base de donn\xE9e\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t
\n\t\t\t
{{tableau.length}} \xE9l\xE9ments
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
" + template: "\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tMise \xE0 jour de la base de donn\xE9e\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t
\n\t\t\t
{{tableau.length}} \xE9l\xE9ments
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
" }; var gamuTable = { components: { From f5c657bc79fec0cff573bededd42908e699f806b Mon Sep 17 00:00:00 2001 From: tofulm Date: Fri, 30 Oct 2020 22:46:39 +0100 Subject: [PATCH 13/28] =?UTF-8?q?on=20recupere=20le=20nbr=20max=20d'=C3=A9?= =?UTF-8?q?l=C3=A9ment?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/gamutable.es6.js | 2 +- js/gamutable.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index c06b032..8c3d8ea 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -484,7 +484,7 @@ let monTableau = {
-
{{tableau.length}} éléments
+
{{tableau.length}} / {{table.length}} éléments
diff --git a/js/gamutable.js b/js/gamutable.js index 91847ce..baba7fc 100644 --- a/js/gamutable.js +++ b/js/gamutable.js @@ -494,7 +494,7 @@ var monTableau = { this.quelleVue = vue; } }, - template: "\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tMise \xE0 jour de la base de donn\xE9e\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t
\n\t\t\t
{{tableau.length}} \xE9l\xE9ments
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
" + template: "\n\t
\n\t\t
\n\t\t\t\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\tMise \xE0 jour de la base de donn\xE9e\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t
\n\t\t\t
\n\t\t\t
\n\t\t
\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t
\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t
\n\t\t\t\t\t
\n\t\t
\n\t\t\t
{{tableau.length}} / {{table.length}} \xE9l\xE9ments
\n\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t
\n\t\t
\n\t
" }; var gamuTable = { components: { From a05c26c6ed27fc49033444003d54470eb9de9718 Mon Sep 17 00:00:00 2001 From: tofulm Date: Tue, 3 Nov 2020 17:34:56 +0100 Subject: [PATCH 14/28] permet d'avoir 2 tableaux l'un sous l'autre --- inclure/gamutable.html | 40 +++++++++++++++++++++++++++++----------- 1 file changed, 29 insertions(+), 11 deletions(-) diff --git a/inclure/gamutable.html b/inclure/gamutable.html index 0ed28a4..c1e3df6 100644 --- a/inclure/gamutable.html +++ b/inclure/gamutable.html @@ -3,17 +3,35 @@ [(#SET{sort_desc,[(#CHEMIN{img/sprite_gamutable.svg})#sort_desc]})]
- +
+ [(#ENV{titreGamutableUn})] + +
+ +
+ [(#ENV{titreGamutableDeux})] + +