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.parseMeta.fields[i] + " | ";
- this.datasHTML += "";
- for (row in this.parseDatas) {
- this.datasHTML += "";
- for (field in this.parseDatas[row]) {
- if (this.parseMeta.fields.indexOf(field) !== -1)
- this.datasHTML += "" + this.parseDatas[row][field] + " | ";
+ _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._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 += "" + fields[i] + " | ";
+ 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 += "" + datas[row][field] + " | ";
+ }
+ datasHTML += "
";
+ }
+ }
+ datasHTML += "
";
+ return datasHTML;
+ };
return freeCSV2HTML;
}());
export { freeCSV2HTML };