From 11b292ee60fb412a1afe59a3695958644e11fc4a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabrice=20PENHO=C3=8BT?= Date: Wed, 11 Aug 2021 17:27:26 +0200 Subject: [PATCH] Nouvelle compilation en .js des scripts source. --- src/build/firstExample.js | 1 + src/build/freeCSV2HTML.js | 111 +++++++++++++++++++++++++++----------- 2 files changed, 80 insertions(+), 32 deletions(-) diff --git a/src/build/firstExample.js b/src/build/firstExample.js index 8e5273a..64bfcb6 100644 --- a/src/build/firstExample.js +++ b/src/build/firstExample.js @@ -43,6 +43,7 @@ var initialise = function () { return __awaiter(void 0, void 0, void 0, function _a.trys.push([0, 2, , 3]); converter = new freeCSV2HTML(); converter.datasViewElt = { id: "datas" }; + converter.datasSelectors = [{ colCSV: 3, id: "filtre1" }, { colCSV: 4, id: "filtre2" }]; converter.datasSourceUrl = "http://localhost:8080/datas/elements-chimiques.csv"; return [4, converter.run()]; case 1: diff --git a/src/build/freeCSV2HTML.js b/src/build/freeCSV2HTML.js index 477558c..e2d4fab 100644 --- a/src/build/freeCSV2HTML.js +++ b/src/build/freeCSV2HTML.js @@ -70,18 +70,18 @@ var freeCSV2HTML = (function () { configurable: true }); Object.defineProperty(freeCSV2HTML.prototype, "datasSelectors", { - set: function (selectors) { + set: function (selectionElts) { var checkContainerExist; - for (var i = 0; i < selectors.length; i++) { - checkContainerExist = document.getElementById(selectors[i].id); + for (var i = 0; i < selectionElts.length; i++) { + checkContainerExist = document.getElementById(selectionElts[i].id); if (checkContainerExist === null) - throw new Error(errors.elementNotFound + selectors[i].id); - else if (Number.isInteger(selectors[i].colCSV) === false || selectors[i].colCSV < 0) + throw new Error(errors.elementNotFound + selectionElts[i].id); + else if (Number.isInteger(selectionElts[i].colCSV) === false || selectionElts[i].colCSV < 0) throw new Error(errors.needNaturalNumber); else - selectors[i].eltDOM = checkContainerExist; + selectionElts[i].eltDOM = checkContainerExist; } - this._datasSelectors = selectors; + this._datasSelectors = selectionElts; }, enumerable: true, configurable: true @@ -89,12 +89,11 @@ var freeCSV2HTML = (function () { freeCSV2HTML.prototype.parse = function () { return __awaiter(this, void 0, void 0, function () { var converter; - var _this = this; return __generator(this, function (_a) { converter = this; return [2, new Promise(function (resolve, reject) { - if (_this._datasSourceUrl !== "") { - Papa.parse(_this._datasSourceUrl, { + if (converter._datasSourceUrl !== "") { + Papa.parse(converter._datasSourceUrl, { quoteChar: '"', header: true, complete: function (results) { @@ -111,51 +110,99 @@ var freeCSV2HTML = (function () { }); } else - resolve(new Error(errors.needUrl)); + reject(new Error(errors.needUrl)); })]; }); }); }; freeCSV2HTML.prototype.run = function () { return __awaiter(this, void 0, void 0, function () { - var i, row, field; + var converter_1, selectorsHTML, i, values, colName, row, j, selectElement; return __generator(this, function (_a) { switch (_a.label) { case 0: if (this._datasViewElt.eltDOM === undefined) throw new Error(errors.needDatasElt); - if (this._datasSourceUrl === "") + else if (this._datasSourceUrl === "") throw new Error(errors.needUrl); return [4, this.parse()]; case 1: - if ((_a.sent()) === true) { - if (this.parseDatas.length === 0 || this.parseMeta === undefined || this.parseMeta.fields === undefined) { - this._datasViewElt.eltDOM.innerHTML = errors.datasNotFound; - return [2, false]; - } - else { - this.datasHTML = ""; - for (i in this.parseMeta.fields) - this.datasHTML += ""; - this.datasHTML += ""; - for (row in this.parseDatas) { - this.datasHTML += ""; - for (field in this.parseDatas[row]) { - if (this.parseMeta.fields.indexOf(field) !== -1) - this.datasHTML += ""; + _a.sent(); + if (this.parseDatas.length === 0 || this.parseMeta === undefined || this.parseMeta.fields === undefined) { + this._datasViewElt.eltDOM.innerHTML = errors.datasNotFound; + return [2, false]; + } + else { + converter_1 = this; + this.datasHTML = this.createDatasHTML(this.parseMeta.fields, this.parseDatas); + this._datasViewElt.eltDOM.innerHTML = this.datasHTML; + if (this._datasSelectors.length > 0) { + selectorsHTML = []; + for (i in this._datasSelectors) { + if (this._datasSelectors[i].colCSV > (this.parseMeta.fields.length - 1)) + throw new Error(errors.selectorFieldNotFound); + else { + values = [], colName = this.parseMeta.fields[this._datasSelectors[i].colCSV]; + for (row in this.parseDatas) { + if (values.indexOf(this.parseDatas[row][colName]) === -1) + values.push(this.parseDatas[row][colName]); + } + if (values.length > 0) { + values.sort(); + this._datasSelectors[i].name = colName; + this._datasSelectors[i].values = values; + selectorsHTML[i] = ""; + this._datasSelectors[i].eltDOM.innerHTML = selectorsHTML[i]; + selectElement = document.getElementById("CSVDatasSelector" + i); + selectElement.addEventListener('change', function (e) { + converter_1.datasHTML = converter_1.createDatasHTML(converter_1.parseMeta.fields, converter_1.parseDatas); + converter_1._datasViewElt.eltDOM.innerHTML = converter_1.datasHTML; + }); + } } - this.datasHTML += ""; } - this.datasHTML += "
" + this.parseMeta.fields[i] + "
" + this.parseDatas[row][field] + "
"; - this._datasViewElt.eltDOM.innerHTML = this.datasHTML; - return [2, true]; } + return [2, true]; } return [2]; } }); }); }; + freeCSV2HTML.prototype.createDatasHTML = function (fields, datas) { + var checkContainerExist, filters = []; + for (var i in this._datasSelectors) { + checkContainerExist = document.querySelector("#" + this._datasSelectors[i].id + " select"); + if (checkContainerExist != null && checkContainerExist.value != "0") + filters.push({ field: this._datasSelectors[i].name, value: this._datasSelectors[i].values[checkContainerExist.selectedIndex - 1] }); + } + var datasHTML = ""; + for (var i in fields) + datasHTML += ""; + datasHTML += ""; + for (var row in datas) { + var view = true; + if (filters.length !== 0) { + for (var i in filters) { + if (datas[row][filters[i].field] != filters[i].value) + view = false; + } + } + if (view) { + datasHTML += ""; + for (var field in datas[row]) { + if (fields.indexOf(field) !== -1) + datasHTML += ""; + } + datasHTML += ""; + } + } + datasHTML += "
" + fields[i] + "
" + datas[row][field] + "
"; + return datasHTML; + }; return freeCSV2HTML; }()); export { freeCSV2HTML };