// _ // (_)________ ____ // / / ___/ __ \/ __ \ // / (__ ) /_/ / / / / // __/ /____/\____/_/ /_/ // /___/ module.exports = { lang:'fr', langs:[ {'lc':'fr', 'label':'fr', 'db':'2-Appuhn-FR-ethicadb.json'}, {'lc':'bra', 'label':'bra', 'db':'ethica-bresilen.json'} ], data:[], loaded_dbs:0, data_byid:[], load: function(callback) { // load all dbs, when all loaded call main app callback function for (var i = 0; i < this.langs.length; i++) { this.loadJSON(this.langs[i].lc, 'assets/jsondb/'+this.langs[i].db, callback) } }, loadJSON: function(lc, file, callback){ var xobj = new XMLHttpRequest(); xobj.overrideMimeType("application/json"); // TODO: load and unzip gziped json // xobj.setRequestHeader('Accept-Encoding', 'gzip'); xobj.onreadystatechange = function () { // console.log('onreadystatechange', xobj.readyState); switch(xobj.readyState){ case 3: console.log('loading'); break; case 4: if (xobj.status === 200) { this.onJSONLoaded(lc, xobj.responseText, callback); } else { console.log("Status de la réponse: %d (%s)", xobj.status, xobj.statusText); } break; } }.bind(this); xobj.open('GET', file, true); xobj.send(null); }, onJSONLoaded: function(lc, json, callback){ console.log('onDBLoaded'); this.data[lc] = JSON.parse(json); this.loaded_dbs ++; // if (this.loaded_dbs == this.langs.length) { this.parseByID(callback); } }, parseByID: function(callback){ for(l in this.data){ // console.log('l', l); this.data_byid[l] = {}; for (p in this.data[l]) { // console.log(this.data[l][p]); for (e in this.data[l][p].enonces) { // console.log('e',e); this.data_byid[l][this.data[l][p].enonces[e].id] = this.data[l][p].enonces[e]; for (c in this.data[l][p].enonces[e].childs){ // console.log(_db[p][e][c]); this.data_byid[l][this.data[l][p].enonces[e].childs[c].id] = this.data[l][p].enonces[e].childs[c]; } } } } // console.log('this.data_byid', this.data_byid); callback(); } }