From 9851712bbe9c8a7ab1482893ae4a66c2993dd8f0 Mon Sep 17 00:00:00 2001 From: tofulm Date: Fri, 8 May 2020 21:37:43 +0200 Subject: [PATCH] =?UTF-8?q?Utilisation=20du=20localStorage,=20test=20avec?= =?UTF-8?q?=201000=20lignes.=20Vitesse=20=C3=A9criture=20/=20lecture=20:?= =?UTF-8?q?=20TOP=20le=20facteur=20limitant=20:=20transfert=20du=20gros=20?= =?UTF-8?q?json=20:=201.9Mo=20en=203.2s=20c'est=20la=20que=20le=20localSto?= =?UTF-8?q?rage=20est=20TOP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/gamutable.es6.js | 26 +++++++++++++++++++++++++- js/gamutable.js | 23 +++++++++++++++++++++-- 2 files changed, 46 insertions(+), 3 deletions(-) diff --git a/js/gamutable.es6.js b/js/gamutable.es6.js index 0495776..73fb223 100644 --- a/js/gamutable.es6.js +++ b/js/gamutable.es6.js @@ -106,6 +106,7 @@ let monTableau = { triProps: [], selectTr: [], champ_search: 'html', + chargement: true, }; }, mounted() { @@ -145,10 +146,24 @@ let monTableau = { let url = this.apiuri; if (parseInt(id) > 0) { url += '&id=' + id; + } else { + let data = localStorage.getItem('gamuTable'); + data = recupJson(data); + if (data) { + let config = data.shift(); + this.header = config.header; + this.crayons = config.crayons; + this.table = data; + if (data[0].search) { + this.champ_search = 'search'; + } + console.log('fin chargement localStorage'); + } } fetch(url) .then((response) => response.json()) .then((data) => { + localStorage.setItem('gamuTable', JSON.stringify(data)); let config = data.shift(); this.header = config.header; this.crayons = config.crayons; @@ -161,7 +176,8 @@ let monTableau = { this.champ_search = 'search'; } } - Vue.nextTick(function () { + Vue.nextTick(() => { + this.chargement = false; console.timeEnd('Chargement de VueJs APRES Ajax'); }); }) @@ -228,6 +244,14 @@ let monTableau = { + + + Mise à jour de la base de donnée + + + + Base de données synchronisée + diff --git a/js/gamutable.js b/js/gamutable.js index 77e38d1..4a44f22 100644 --- a/js/gamutable.js +++ b/js/gamutable.js @@ -121,7 +121,8 @@ var monTableau = { triOrders: [], triProps: [], selectTr: [], - champ_search: 'html' + champ_search: 'html', + chargement: true }; }, mounted: function mounted() { @@ -160,11 +161,28 @@ var monTableau = { if (parseInt(id) > 0) { url += '&id=' + id; + } else { + var data = localStorage.getItem('gamuTable'); + data = recupJson(data); + + if (data) { + var config = data.shift(); + this.header = config.header; + this.crayons = config.crayons; + this.table = data; + + if (data[0].search) { + this.champ_search = 'search'; + } + + console.log('fin chargement localStorage'); + } } fetch(url).then(function (response) { return response.json(); }).then(function (data) { + localStorage.setItem('gamuTable', JSON.stringify(data)); var config = data.shift(); _this2.header = config.header; _this2.crayons = config.crayons; @@ -184,6 +202,7 @@ var monTableau = { } Vue.nextTick(function () { + _this2.chargement = false; console.timeEnd('Chargement de VueJs APRES Ajax'); }); }).catch(function (error) { @@ -248,7 +267,7 @@ var monTableau = { } } }, - template: "\n\t
\n\t\t
\n\t\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
{{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\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\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
{{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 app = new Vue({ el: '#app',