Nouvelle compilation en JS.
This commit is contained in:
parent
9b1b869096
commit
bfc69ed280
291
src/build/FreeDatas2HTML.js
Normal file
291
src/build/FreeDatas2HTML.js
Normal file
@ -0,0 +1,291 @@
|
|||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
|
function step(op) {
|
||||||
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
while (_) try {
|
||||||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||||
|
switch (op[0]) {
|
||||||
|
case 0: case 1: t = op; break;
|
||||||
|
case 4: _.label++; return { value: op[1], done: false };
|
||||||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||||
|
default:
|
||||||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||||
|
if (t[2]) _.ops.pop();
|
||||||
|
_.trys.pop(); continue;
|
||||||
|
}
|
||||||
|
op = body.call(thisArg, _);
|
||||||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var compare = require("natural-orderby").compare;
|
||||||
|
var errors = require("./errors.js");
|
||||||
|
import { ParserForCSV } from "./ParserForCSV";
|
||||||
|
import { ParserForHTML } from "./ParserForHTML";
|
||||||
|
import { ParserForJSON } from "./ParserForJSON";
|
||||||
|
import { Render } from "./Render";
|
||||||
|
var FreeDatas2HTML = (function () {
|
||||||
|
function FreeDatas2HTML(datasFormat, datas2Parse, datasRemoteSource) {
|
||||||
|
if (datas2Parse === void 0) { datas2Parse = ""; }
|
||||||
|
this._datasViewElt = undefined;
|
||||||
|
this.stopIfParseErrors = false;
|
||||||
|
this._datasCounterElt = undefined;
|
||||||
|
this._datasSortingFunctions = [];
|
||||||
|
this._fields2Rend = [];
|
||||||
|
this.datasFilters = [];
|
||||||
|
this.datasSortingFields = [];
|
||||||
|
this._fields = [];
|
||||||
|
this._datas = [];
|
||||||
|
this._datas2Rend = [];
|
||||||
|
this._nbDatasValid = 0;
|
||||||
|
this.datasRender = new Render();
|
||||||
|
switch (datasFormat) {
|
||||||
|
case "CSV":
|
||||||
|
this.parser = new ParserForCSV();
|
||||||
|
break;
|
||||||
|
case "HTML":
|
||||||
|
this.parser = new ParserForHTML();
|
||||||
|
break;
|
||||||
|
case "JSON":
|
||||||
|
this.parser = new ParserForJSON();
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if (datas2Parse.trim() !== "")
|
||||||
|
this.parser.datas2Parse = datas2Parse.trim();
|
||||||
|
else if (datasRemoteSource !== undefined)
|
||||||
|
this.parser.setRemoteSource(datasRemoteSource);
|
||||||
|
}
|
||||||
|
FreeDatas2HTML.checkInDOMById = function (checkedElt) {
|
||||||
|
var searchEltInDOM = document.getElementById(checkedElt.id);
|
||||||
|
if (searchEltInDOM === null)
|
||||||
|
throw new Error(errors.converterElementNotFound + checkedElt.id);
|
||||||
|
else {
|
||||||
|
checkedElt.eltDOM = searchEltInDOM;
|
||||||
|
return checkedElt;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Object.defineProperty(FreeDatas2HTML.prototype, "datasViewElt", {
|
||||||
|
set: function (elt) {
|
||||||
|
this._datasViewElt = FreeDatas2HTML.checkInDOMById(elt);
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(FreeDatas2HTML.prototype, "datasCounterElt", {
|
||||||
|
set: function (counterDisplayElement) {
|
||||||
|
this._datasCounterElt = FreeDatas2HTML.checkInDOMById(counterDisplayElement);
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(FreeDatas2HTML.prototype, "datas", {
|
||||||
|
get: function () {
|
||||||
|
return this._datas;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(FreeDatas2HTML.prototype, "fields", {
|
||||||
|
get: function () {
|
||||||
|
return this._fields;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(FreeDatas2HTML.prototype, "datas2Rend", {
|
||||||
|
get: function () {
|
||||||
|
return this._datas2Rend;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(FreeDatas2HTML.prototype, "nbDatasValid", {
|
||||||
|
get: function () {
|
||||||
|
return this._nbDatasValid;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(FreeDatas2HTML.prototype, "fields2Rend", {
|
||||||
|
get: function () {
|
||||||
|
return this._fields2Rend;
|
||||||
|
},
|
||||||
|
set: function (fields) {
|
||||||
|
if (fields.length === 0)
|
||||||
|
this._fields2Rend = fields;
|
||||||
|
else {
|
||||||
|
for (var _i = 0, fields_1 = fields; _i < fields_1.length; _i++) {
|
||||||
|
var field = fields_1[_i];
|
||||||
|
if (!this.checkFieldExist(field))
|
||||||
|
throw new Error(errors.converterFieldNotFound);
|
||||||
|
else
|
||||||
|
this._fields2Rend.push(field);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
FreeDatas2HTML.prototype.checkFieldExist = function (nb) {
|
||||||
|
if (this.parser.parseResults === undefined || this.parser.parseResults.fields[nb] === undefined)
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
FreeDatas2HTML.prototype.realFields2Rend = function () {
|
||||||
|
if (this._fields2Rend.length === 0)
|
||||||
|
return this._fields;
|
||||||
|
else {
|
||||||
|
var realFields = [];
|
||||||
|
for (var i = 0; i < this._fields.length; i++) {
|
||||||
|
if (this._fields2Rend.indexOf(i) !== -1)
|
||||||
|
realFields.push(this._fields[i]);
|
||||||
|
}
|
||||||
|
return realFields;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
FreeDatas2HTML.prototype.checkField2Rend = function (nb) {
|
||||||
|
if (this.realFields2Rend()[nb] === undefined)
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
};
|
||||||
|
Object.defineProperty(FreeDatas2HTML.prototype, "datasSortingFunctions", {
|
||||||
|
set: function (SortingFunctions) {
|
||||||
|
this._datasSortingFunctions = [];
|
||||||
|
for (var _i = 0, SortingFunctions_1 = SortingFunctions; _i < SortingFunctions_1.length; _i++) {
|
||||||
|
var checkedFunction = SortingFunctions_1[_i];
|
||||||
|
if (!this.checkFieldExist(checkedFunction.datasFieldNb))
|
||||||
|
throw new Error(errors.converterFieldNotFound);
|
||||||
|
else
|
||||||
|
this._datasSortingFunctions.push(checkedFunction);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
FreeDatas2HTML.prototype.getSortingFunctionForField = function (datasFieldNb) {
|
||||||
|
for (var _i = 0, _a = this._datasSortingFunctions; _i < _a.length; _i++) {
|
||||||
|
var checkedFunction = _a[_i];
|
||||||
|
if (checkedFunction.datasFieldNb === datasFieldNb)
|
||||||
|
return checkedFunction;
|
||||||
|
}
|
||||||
|
return undefined;
|
||||||
|
};
|
||||||
|
FreeDatas2HTML.prototype.run = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0: return [4, this.parser.parse()];
|
||||||
|
case 1:
|
||||||
|
_a.sent();
|
||||||
|
if (this.parser.parseResults === undefined)
|
||||||
|
throw new Error(errors.parserFail);
|
||||||
|
else {
|
||||||
|
if (this.stopIfParseErrors && this.parser.parseResults.errors !== undefined)
|
||||||
|
throw new Error(errors.parserMeetErrors);
|
||||||
|
else {
|
||||||
|
this._fields = this.parser.parseResults.fields;
|
||||||
|
this._datas = this.parser.parseResults.datas;
|
||||||
|
if (this._fields2Rend.length === 0)
|
||||||
|
this.datasRender.fields = this._fields;
|
||||||
|
else
|
||||||
|
this.datasRender.fields = this.realFields2Rend();
|
||||||
|
if (this._datasViewElt !== undefined)
|
||||||
|
this.refreshView();
|
||||||
|
return [2, true];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return [2];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
FreeDatas2HTML.prototype.refreshView = function () {
|
||||||
|
if (this._fields.length === 0 || this._datasViewElt === undefined)
|
||||||
|
throw new Error(errors.converterRefreshFail);
|
||||||
|
else {
|
||||||
|
this._datas2Rend = this.datas2HTML();
|
||||||
|
this.datasRender.datas = this._datas2Rend;
|
||||||
|
this._datasViewElt.eltDOM.innerHTML = this.datasRender.rend2HTML();
|
||||||
|
if (this._datasCounterElt !== undefined)
|
||||||
|
this._datasCounterElt.eltDOM.innerHTML = "" + this._nbDatasValid;
|
||||||
|
for (var _i = 0, _a = this.datasSortingFields; _i < _a.length; _i++) {
|
||||||
|
var field = _a[_i];
|
||||||
|
field.field2HTML();
|
||||||
|
}
|
||||||
|
if (this.pagination !== undefined)
|
||||||
|
this.pagination.pages2HTML();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
FreeDatas2HTML.prototype.datas2HTML = function () {
|
||||||
|
if (this.datasSortedField !== undefined) {
|
||||||
|
var field_1 = this._fields[this.datasSortedField.datasFieldNb];
|
||||||
|
var fieldOrder_1 = this.datasSortedField.order;
|
||||||
|
if (this.getSortingFunctionForField(this.datasSortedField.datasFieldNb) !== undefined) {
|
||||||
|
var myFunction_1 = this.getSortingFunctionForField(this.datasSortedField.datasFieldNb);
|
||||||
|
this._datas.sort(function (a, b) { return myFunction_1.sort(a[field_1], b[field_1], fieldOrder_1); });
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this._datas.sort(function (a, b) { return compare({ order: fieldOrder_1 })(a[field_1], b[field_1]); });
|
||||||
|
}
|
||||||
|
var firstData = 0;
|
||||||
|
if (this.pagination !== undefined && this.pagination.selectedValue !== undefined && this.pagination.pages !== undefined && this.pagination.pages.selectedValue !== undefined)
|
||||||
|
firstData = this.pagination.selectedValue * (this.pagination.pages.selectedValue - 1);
|
||||||
|
var maxData = (this.pagination !== undefined && this.pagination.selectedValue !== undefined) ? this.pagination.selectedValue : this._datas.length;
|
||||||
|
var datas2Display = [];
|
||||||
|
var nbVisible = 0, nbTotal = 0;
|
||||||
|
for (var row in this._datas) {
|
||||||
|
var valid = true, i = 0;
|
||||||
|
while (this.datasFilters[i] !== undefined && valid === true) {
|
||||||
|
valid = this.datasFilters[i].dataIsOk(this._datas[row]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
if (valid && nbTotal >= firstData && nbVisible < maxData) {
|
||||||
|
datas2Display.push(this._datas[row]);
|
||||||
|
nbVisible++;
|
||||||
|
nbTotal++;
|
||||||
|
}
|
||||||
|
else if (valid)
|
||||||
|
nbTotal++;
|
||||||
|
}
|
||||||
|
this._nbDatasValid = nbTotal;
|
||||||
|
if (this._fields2Rend.length !== 0) {
|
||||||
|
var newDatas2Display = [];
|
||||||
|
for (var row in datas2Display) {
|
||||||
|
var i = 0, newData = {};
|
||||||
|
for (var field in datas2Display[row]) {
|
||||||
|
if (this._fields2Rend.indexOf(i) !== -1)
|
||||||
|
newData[field] = datas2Display[row][field];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
newDatas2Display.push(newData);
|
||||||
|
}
|
||||||
|
datas2Display = newDatas2Display;
|
||||||
|
}
|
||||||
|
return datas2Display;
|
||||||
|
};
|
||||||
|
return FreeDatas2HTML;
|
||||||
|
}());
|
||||||
|
export { FreeDatas2HTML };
|
||||||
|
export { Pagination } from "./Pagination";
|
||||||
|
export { Render } from "./Render";
|
||||||
|
export { SearchEngine } from "./SearchEngine";
|
||||||
|
export { Selector } from "./Selector";
|
||||||
|
export { SortingField } from "./SortingField";
|
114
src/build/Pagination.js
Normal file
114
src/build/Pagination.js
Normal file
@ -0,0 +1,114 @@
|
|||||||
|
var errors = require("./errors.js");
|
||||||
|
import { FreeDatas2HTML } from "./FreeDatas2HTML";
|
||||||
|
var Pagination = (function () {
|
||||||
|
function Pagination(converter, pagesElt, pagesName) {
|
||||||
|
if (pagesName === void 0) { pagesName = "Pages"; }
|
||||||
|
if (converter.fields.length === 0)
|
||||||
|
throw new Error(errors.paginationNeedDatas);
|
||||||
|
else {
|
||||||
|
this._pages = { displayElement: FreeDatas2HTML.checkInDOMById(pagesElt), name: pagesName };
|
||||||
|
this._converter = converter;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Pagination.isPositiveInteger = function (nb) {
|
||||||
|
return (Number.isInteger(nb) === false || nb <= 0) ? false : true;
|
||||||
|
};
|
||||||
|
Object.defineProperty(Pagination.prototype, "selectedValue", {
|
||||||
|
get: function () {
|
||||||
|
return this._selectedValue;
|
||||||
|
},
|
||||||
|
set: function (value) {
|
||||||
|
if (value !== undefined) {
|
||||||
|
if (!Pagination.isPositiveInteger(value))
|
||||||
|
throw new Error(errors.needPositiveInteger);
|
||||||
|
if (this.options !== undefined && this.options.values.indexOf(value) === -1)
|
||||||
|
throw new Error(errors.paginationNeedByfaultValueBeInOptions);
|
||||||
|
}
|
||||||
|
this._selectedValue = value;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(Pagination.prototype, "options", {
|
||||||
|
get: function () {
|
||||||
|
return this._options;
|
||||||
|
},
|
||||||
|
set: function (options) {
|
||||||
|
if (options !== undefined) {
|
||||||
|
options.displayElement = FreeDatas2HTML.checkInDOMById(options.displayElement);
|
||||||
|
var realValues = [];
|
||||||
|
for (var _i = 0, _a = options.values; _i < _a.length; _i++) {
|
||||||
|
var option = _a[_i];
|
||||||
|
if (!Pagination.isPositiveInteger(option))
|
||||||
|
throw new Error(errors.needPositiveInteger);
|
||||||
|
if (realValues.indexOf(option) === -1)
|
||||||
|
realValues.push(option);
|
||||||
|
else
|
||||||
|
console.log(errors.paginationOptionsDuplicatedValues);
|
||||||
|
}
|
||||||
|
if (realValues.length < 2)
|
||||||
|
throw new Error(errors.paginationNeedOptionsValues);
|
||||||
|
options.values = realValues;
|
||||||
|
if (this.selectedValue !== undefined && options.values.indexOf(this.selectedValue) === -1)
|
||||||
|
throw new Error(errors.paginationNeedByfaultValueBeInOptions);
|
||||||
|
options.name = (options.name === undefined) ? "Pagination" : options.name;
|
||||||
|
}
|
||||||
|
this._options = options;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(Pagination.prototype, "pages", {
|
||||||
|
get: function () {
|
||||||
|
return this._pages;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Pagination.prototype.options2HTML = function () {
|
||||||
|
if (this._options === undefined)
|
||||||
|
throw new Error(errors.pagination2HTMLFail);
|
||||||
|
else {
|
||||||
|
var selectorsHTML = "<label for='freeDatas2HTMLPaginationSelector'>" + this._options.name + " </label><select name='freeDatas2HTMLPaginationSelector' id='freeDatas2HTMLPaginationSelector'><option value='0'>----</option>";
|
||||||
|
for (var i = 0; i < this._options.values.length; i++)
|
||||||
|
selectorsHTML += "<option value='" + (i + 1) + "'>" + this._options.values[i] + "</option>";
|
||||||
|
selectorsHTML += "</select>";
|
||||||
|
this._options.displayElement.eltDOM.innerHTML = selectorsHTML;
|
||||||
|
var selectElement_1 = document.getElementById("freeDatas2HTMLPaginationSelector");
|
||||||
|
if (this._selectedValue !== undefined)
|
||||||
|
selectElement_1.value = "" + (this._options.values.indexOf(this._selectedValue) + 1);
|
||||||
|
var pagination_1 = this;
|
||||||
|
selectElement_1.addEventListener("change", function (e) {
|
||||||
|
if (selectElement_1.value === "0")
|
||||||
|
pagination_1._selectedValue = undefined;
|
||||||
|
else
|
||||||
|
pagination_1._selectedValue = pagination_1._options.values[Number(selectElement_1.value) - 1];
|
||||||
|
pagination_1._converter.refreshView();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Pagination.prototype.pages2HTML = function () {
|
||||||
|
if (this._selectedValue === undefined || this._converter.nbDatasValid <= this._selectedValue)
|
||||||
|
this.pages.displayElement.eltDOM.innerHTML = "";
|
||||||
|
else {
|
||||||
|
var nbPages = Math.ceil(this._converter.nbDatasValid / this._selectedValue);
|
||||||
|
var selectorsHTML = "<label for='freeDatas2HTMLPagesSelector'>" + this.pages.name + "</label><select name='freeDatas2HTMLPagesSelector' id='freeDatas2HTMLPagesSelector'>";
|
||||||
|
this.pages.values = [];
|
||||||
|
for (var j = 1; j <= nbPages; j++) {
|
||||||
|
selectorsHTML += "<option value='" + j + "'>" + j + "</option>";
|
||||||
|
this.pages.values.push(j);
|
||||||
|
}
|
||||||
|
selectorsHTML += "</select>";
|
||||||
|
this.pages.displayElement.eltDOM.innerHTML = selectorsHTML;
|
||||||
|
var selectElement_2 = document.getElementById("freeDatas2HTMLPagesSelector");
|
||||||
|
this.pages.selectedValue = 1;
|
||||||
|
var pagination_2 = this;
|
||||||
|
selectElement_2.addEventListener("change", function (e) {
|
||||||
|
pagination_2.pages.selectedValue = Number(selectElement_2.value);
|
||||||
|
pagination_2._converter.refreshView();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return Pagination;
|
||||||
|
}());
|
||||||
|
export { Pagination };
|
172
src/build/ParserForCSV.js
Normal file
172
src/build/ParserForCSV.js
Normal file
@ -0,0 +1,172 @@
|
|||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
|
function step(op) {
|
||||||
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
while (_) try {
|
||||||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||||
|
switch (op[0]) {
|
||||||
|
case 0: case 1: t = op; break;
|
||||||
|
case 4: _.label++; return { value: op[1], done: false };
|
||||||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||||
|
default:
|
||||||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||||
|
if (t[2]) _.ops.pop();
|
||||||
|
_.trys.pop(); continue;
|
||||||
|
}
|
||||||
|
op = body.call(thisArg, _);
|
||||||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var Papa = require("papaparse");
|
||||||
|
var errors = require("./errors.js");
|
||||||
|
import { RemoteSource } from "./RemoteSource";
|
||||||
|
var ParserForCSV = (function () {
|
||||||
|
function ParserForCSV(datasRemoteSource) {
|
||||||
|
this._datas2Parse = "";
|
||||||
|
this._parseResults = undefined;
|
||||||
|
this.options = {
|
||||||
|
delimiter: "",
|
||||||
|
newline: "",
|
||||||
|
quoteChar: '"',
|
||||||
|
escapeChar: '"',
|
||||||
|
transformHeader: function (field, index) { return field.trim(); },
|
||||||
|
preview: 0,
|
||||||
|
comments: "",
|
||||||
|
fastMode: undefined,
|
||||||
|
transform: undefined
|
||||||
|
};
|
||||||
|
this._privateOptions = {
|
||||||
|
header: true,
|
||||||
|
download: false,
|
||||||
|
downloadRequestHeaders: undefined,
|
||||||
|
skipEmptyLines: "greedy",
|
||||||
|
withCredentials: undefined
|
||||||
|
};
|
||||||
|
if (datasRemoteSource !== undefined)
|
||||||
|
this._datasRemoteSource = datasRemoteSource;
|
||||||
|
else
|
||||||
|
this._datasRemoteSource = new RemoteSource({ url: "" });
|
||||||
|
}
|
||||||
|
ParserForCSV.prototype.setRemoteSource = function (source) {
|
||||||
|
this._datasRemoteSource = new RemoteSource(source);
|
||||||
|
};
|
||||||
|
Object.defineProperty(ParserForCSV.prototype, "datasRemoteSource", {
|
||||||
|
get: function () {
|
||||||
|
return this._datasRemoteSource;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(ParserForCSV.prototype, "datas2Parse", {
|
||||||
|
get: function () {
|
||||||
|
return this._datas2Parse;
|
||||||
|
},
|
||||||
|
set: function (datas) {
|
||||||
|
if (datas.trim().length === 0)
|
||||||
|
throw new Error(errors.parserNeedDatas);
|
||||||
|
else
|
||||||
|
this._datas2Parse = datas.trim();
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(ParserForCSV.prototype, "parseResults", {
|
||||||
|
get: function () {
|
||||||
|
return this._parseResults;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(ParserForCSV.prototype, "privateOptions", {
|
||||||
|
get: function () {
|
||||||
|
return this._privateOptions;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
ParserForCSV.prototype.parse = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var parser, parseContent, _i, _a, header;
|
||||||
|
var _this = this;
|
||||||
|
return __generator(this, function (_b) {
|
||||||
|
parser = this;
|
||||||
|
parseContent = "";
|
||||||
|
if (parser._datasRemoteSource.url !== "") {
|
||||||
|
parseContent = parser._datasRemoteSource.url;
|
||||||
|
this._privateOptions.download = true;
|
||||||
|
this._privateOptions.withCredentials = parser._datasRemoteSource.withCredentials;
|
||||||
|
if (parser._datasRemoteSource.headers !== undefined) {
|
||||||
|
this._privateOptions.downloadRequestHeaders = {};
|
||||||
|
for (_i = 0, _a = parser._datasRemoteSource.headers; _i < _a.length; _i++) {
|
||||||
|
header = _a[_i];
|
||||||
|
this._privateOptions.downloadRequestHeaders[header.key] = header.value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (parser._datas2Parse !== "")
|
||||||
|
parseContent = parser._datas2Parse;
|
||||||
|
else
|
||||||
|
throw new Error(errors.parserNeedSource);
|
||||||
|
return [2, new Promise(function (resolve, reject) {
|
||||||
|
Papa.parse(parseContent, {
|
||||||
|
delimiter: _this.options.delimiter,
|
||||||
|
newline: _this.options.newline,
|
||||||
|
quoteChar: _this.options.quoteChar,
|
||||||
|
escapeChar: _this.options.escapeChar,
|
||||||
|
header: true,
|
||||||
|
transformHeader: _this.options.transformHeader,
|
||||||
|
preview: _this.options.preview,
|
||||||
|
comments: _this.options.comments,
|
||||||
|
complete: function (results) {
|
||||||
|
var realFields = [], parseErrors = [];
|
||||||
|
for (var _i = 0, _a = results.meta.fields; _i < _a.length; _i++) {
|
||||||
|
var field = _a[_i];
|
||||||
|
var checkField = field.trim();
|
||||||
|
if (checkField !== "" && realFields.indexOf(checkField) === -1)
|
||||||
|
realFields.push(checkField);
|
||||||
|
else
|
||||||
|
parseErrors.push({ row: -1, message: errors.parserFieldNameFail });
|
||||||
|
}
|
||||||
|
if (realFields.length === 0)
|
||||||
|
reject(new Error(errors.parserFieldsNotFound));
|
||||||
|
else {
|
||||||
|
parser._parseResults =
|
||||||
|
{
|
||||||
|
datas: results.data,
|
||||||
|
errors: parseErrors.concat(results.errors),
|
||||||
|
fields: realFields,
|
||||||
|
};
|
||||||
|
resolve(true);
|
||||||
|
}
|
||||||
|
},
|
||||||
|
download: _this._privateOptions.download,
|
||||||
|
downloadRequestHeaders: _this._privateOptions.downloadRequestHeaders,
|
||||||
|
skipEmptyLines: "greedy",
|
||||||
|
fastMode: _this.options.fastMode,
|
||||||
|
withCredentials: _this._privateOptions.withCredentials,
|
||||||
|
transform: _this.options.transform
|
||||||
|
});
|
||||||
|
})];
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return ParserForCSV;
|
||||||
|
}());
|
||||||
|
export { ParserForCSV };
|
173
src/build/ParserForHTML.js
Normal file
173
src/build/ParserForHTML.js
Normal file
@ -0,0 +1,173 @@
|
|||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
|
function step(op) {
|
||||||
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
while (_) try {
|
||||||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||||
|
switch (op[0]) {
|
||||||
|
case 0: case 1: t = op; break;
|
||||||
|
case 4: _.label++; return { value: op[1], done: false };
|
||||||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||||
|
default:
|
||||||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||||
|
if (t[2]) _.ops.pop();
|
||||||
|
_.trys.pop(); continue;
|
||||||
|
}
|
||||||
|
op = body.call(thisArg, _);
|
||||||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var errors = require("./errors.js");
|
||||||
|
import { RemoteSource } from "./RemoteSource";
|
||||||
|
var ParserForHTML = (function () {
|
||||||
|
function ParserForHTML(datasRemoteSource) {
|
||||||
|
this._document2Parse = document;
|
||||||
|
this._parseResults = undefined;
|
||||||
|
this._fieldsSelector = "table > thead > tr > th";
|
||||||
|
this._rowsSelector = "table > tbody > tr";
|
||||||
|
this._datasSelector = "tr > td";
|
||||||
|
if (datasRemoteSource !== undefined)
|
||||||
|
this._datasRemoteSource = datasRemoteSource;
|
||||||
|
else
|
||||||
|
this._datasRemoteSource = new RemoteSource({ url: "" });
|
||||||
|
}
|
||||||
|
ParserForHTML.prototype.setRemoteSource = function (source) {
|
||||||
|
this._datasRemoteSource = new RemoteSource(source);
|
||||||
|
};
|
||||||
|
Object.defineProperty(ParserForHTML.prototype, "datasRemoteSource", {
|
||||||
|
get: function () {
|
||||||
|
return this._datasRemoteSource;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(ParserForHTML.prototype, "document2Parse", {
|
||||||
|
get: function () {
|
||||||
|
return this._document2Parse;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(ParserForHTML.prototype, "fieldsSelector", {
|
||||||
|
get: function () {
|
||||||
|
return this._fieldsSelector;
|
||||||
|
},
|
||||||
|
set: function (selector) {
|
||||||
|
if (selector.trim() === "")
|
||||||
|
throw new Error(errors.parserSelectorsIsEmpty);
|
||||||
|
else
|
||||||
|
this._fieldsSelector = selector.trim();
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(ParserForHTML.prototype, "rowsSelector", {
|
||||||
|
get: function () {
|
||||||
|
return this._rowsSelector;
|
||||||
|
},
|
||||||
|
set: function (selector) {
|
||||||
|
if (selector.trim() === "")
|
||||||
|
throw new Error(errors.parserSelectorsIsEmpty);
|
||||||
|
else
|
||||||
|
this._rowsSelector = selector.trim();
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(ParserForHTML.prototype, "datasSelector", {
|
||||||
|
get: function () {
|
||||||
|
return this._datasSelector;
|
||||||
|
},
|
||||||
|
set: function (selector) {
|
||||||
|
if (selector.trim() === "")
|
||||||
|
throw new Error(errors.parserSelectorsIsEmpty);
|
||||||
|
else
|
||||||
|
this._datasSelector = selector.trim();
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(ParserForHTML.prototype, "parseResults", {
|
||||||
|
get: function () {
|
||||||
|
return this._parseResults;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
ParserForHTML.prototype.parse = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var realFields, datas, parseErrors, settings, response, responseHTML, parserDOM, fields, i, checkField, rows, datasElts, i, dataObject, j;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0:
|
||||||
|
realFields = [], datas = [], parseErrors = [];
|
||||||
|
if (!(this._datasRemoteSource.url !== "")) return [3, 3];
|
||||||
|
settings = this._datasRemoteSource.getFetchSettings();
|
||||||
|
return [4, fetch(this._datasRemoteSource.url, settings)];
|
||||||
|
case 1:
|
||||||
|
response = _a.sent();
|
||||||
|
if (!response.ok)
|
||||||
|
throw new Error(errors.parserRemoteFail);
|
||||||
|
return [4, response.text()];
|
||||||
|
case 2:
|
||||||
|
responseHTML = _a.sent();
|
||||||
|
parserDOM = new DOMParser();
|
||||||
|
this._document2Parse = parserDOM.parseFromString(responseHTML, "text/html");
|
||||||
|
_a.label = 3;
|
||||||
|
case 3:
|
||||||
|
fields = this._document2Parse.querySelectorAll(this._fieldsSelector);
|
||||||
|
if (fields.length === 0)
|
||||||
|
throw new Error(errors.parserElementsNotFound + this._fieldsSelector);
|
||||||
|
for (i = 0; i < fields.length; i++) {
|
||||||
|
checkField = (fields[i].textContent + "").trim();
|
||||||
|
if (checkField !== "" && realFields.indexOf(checkField) === -1)
|
||||||
|
realFields.push(checkField);
|
||||||
|
else
|
||||||
|
parseErrors.push({ row: -1, message: errors.parserFieldNameFail });
|
||||||
|
}
|
||||||
|
if (realFields.length === 0)
|
||||||
|
throw new Error(errors.parserFieldsNotFound);
|
||||||
|
rows = this._document2Parse.querySelectorAll(this._rowsSelector);
|
||||||
|
for (i = 0; i < rows.length; i++) {
|
||||||
|
datasElts = rows[i].querySelectorAll(this._datasSelector);
|
||||||
|
if (datasElts.length !== realFields.length)
|
||||||
|
parseErrors.push({ row: i, message: errors.parserNumberOfFieldsFail });
|
||||||
|
dataObject = {};
|
||||||
|
for (j = 0; j < datasElts.length && j < realFields.length; j++)
|
||||||
|
dataObject[realFields[j]] = datasElts[j].textContent + "";
|
||||||
|
if (Object.keys(dataObject).length !== 0)
|
||||||
|
datas.push(dataObject);
|
||||||
|
else
|
||||||
|
parseErrors.push({ row: i, message: errors.parserLineWithoutDatas });
|
||||||
|
}
|
||||||
|
this._parseResults =
|
||||||
|
{
|
||||||
|
datas: datas,
|
||||||
|
errors: parseErrors,
|
||||||
|
fields: realFields,
|
||||||
|
};
|
||||||
|
return [2];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return ParserForHTML;
|
||||||
|
}());
|
||||||
|
export { ParserForHTML };
|
185
src/build/ParserForJSON.js
Normal file
185
src/build/ParserForJSON.js
Normal file
@ -0,0 +1,185 @@
|
|||||||
|
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
||||||
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
||||||
|
return new (P || (P = Promise))(function (resolve, reject) {
|
||||||
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
||||||
|
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
||||||
|
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
||||||
|
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
||||||
|
});
|
||||||
|
};
|
||||||
|
var __generator = (this && this.__generator) || function (thisArg, body) {
|
||||||
|
var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
|
||||||
|
return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
|
||||||
|
function verb(n) { return function (v) { return step([n, v]); }; }
|
||||||
|
function step(op) {
|
||||||
|
if (f) throw new TypeError("Generator is already executing.");
|
||||||
|
while (_) try {
|
||||||
|
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
|
||||||
|
if (y = 0, t) op = [op[0] & 2, t.value];
|
||||||
|
switch (op[0]) {
|
||||||
|
case 0: case 1: t = op; break;
|
||||||
|
case 4: _.label++; return { value: op[1], done: false };
|
||||||
|
case 5: _.label++; y = op[1]; op = [0]; continue;
|
||||||
|
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
||||||
|
default:
|
||||||
|
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
||||||
|
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
||||||
|
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
||||||
|
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
||||||
|
if (t[2]) _.ops.pop();
|
||||||
|
_.trys.pop(); continue;
|
||||||
|
}
|
||||||
|
op = body.call(thisArg, _);
|
||||||
|
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
||||||
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
|
}
|
||||||
|
};
|
||||||
|
var errors = require("./errors.js");
|
||||||
|
import { RemoteSource } from "./RemoteSource";
|
||||||
|
var ParserForJSON = (function () {
|
||||||
|
function ParserForJSON(datasRemoteSource) {
|
||||||
|
this._datas2Parse = "";
|
||||||
|
this._parseResults = undefined;
|
||||||
|
if (datasRemoteSource !== undefined)
|
||||||
|
this._datasRemoteSource = datasRemoteSource;
|
||||||
|
else
|
||||||
|
this._datasRemoteSource = new RemoteSource({ url: "" });
|
||||||
|
}
|
||||||
|
ParserForJSON.prototype.setRemoteSource = function (source) {
|
||||||
|
this._datasRemoteSource = new RemoteSource(source);
|
||||||
|
};
|
||||||
|
Object.defineProperty(ParserForJSON.prototype, "datasRemoteSource", {
|
||||||
|
get: function () {
|
||||||
|
return this._datasRemoteSource;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(ParserForJSON.prototype, "datas2Parse", {
|
||||||
|
get: function () {
|
||||||
|
return this._datas2Parse;
|
||||||
|
},
|
||||||
|
set: function (datas) {
|
||||||
|
if (datas.trim().length === 0)
|
||||||
|
throw new Error(errors.parserNeedDatas);
|
||||||
|
else
|
||||||
|
this._datas2Parse = datas.trim();
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(ParserForJSON.prototype, "parseResults", {
|
||||||
|
get: function () {
|
||||||
|
return this._parseResults;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
ParserForJSON.prototype.parse = function () {
|
||||||
|
return __awaiter(this, void 0, void 0, function () {
|
||||||
|
var parser, parseContent, settings, response, datasParsed, typesOkForValue, fields, datas, parseErrors, nbFields, nbDatas, goodFields, i, i, dataObject, nbObjFields, j, i, _i, datasParsed_1, data, dataObject, field;
|
||||||
|
return __generator(this, function (_a) {
|
||||||
|
switch (_a.label) {
|
||||||
|
case 0:
|
||||||
|
parser = this;
|
||||||
|
parseContent = "";
|
||||||
|
if (!(parser._datasRemoteSource.url !== "")) return [3, 3];
|
||||||
|
settings = parser._datasRemoteSource.getFetchSettings();
|
||||||
|
return [4, fetch(parser._datasRemoteSource.url, settings)];
|
||||||
|
case 1:
|
||||||
|
response = _a.sent();
|
||||||
|
if (!response.ok)
|
||||||
|
throw new Error(errors.parserRemoteFail);
|
||||||
|
return [4, response.text()];
|
||||||
|
case 2:
|
||||||
|
parseContent = _a.sent();
|
||||||
|
return [3, 4];
|
||||||
|
case 3:
|
||||||
|
if (parser._datas2Parse !== "")
|
||||||
|
parseContent = parser._datas2Parse;
|
||||||
|
else
|
||||||
|
throw new Error(errors.parserNeedSource);
|
||||||
|
_a.label = 4;
|
||||||
|
case 4:
|
||||||
|
datasParsed = JSON.parse(parseContent);
|
||||||
|
typesOkForValue = ["boolean", "number", "string"];
|
||||||
|
fields = [], datas = [], parseErrors = [];
|
||||||
|
if (Array.isArray(datasParsed.fields) && Array.isArray(datasParsed.datas)) {
|
||||||
|
nbFields = datasParsed.fields.length, nbDatas = datasParsed.datas.length;
|
||||||
|
goodFields = [];
|
||||||
|
fields = datasParsed.fields;
|
||||||
|
for (i = 0; i < nbFields; i++) {
|
||||||
|
if (typeof fields[i] !== "string")
|
||||||
|
parseErrors.push({ row: -1, message: errors.parserTypeError + typeof fields[i] });
|
||||||
|
else {
|
||||||
|
fields[i] = fields[i].trim();
|
||||||
|
if (fields[i] !== "" && goodFields.indexOf(fields[i]) === -1)
|
||||||
|
goodFields.push(fields[i]);
|
||||||
|
else
|
||||||
|
parseErrors.push({ row: -1, message: errors.parserFieldNameFail });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
fields = goodFields;
|
||||||
|
console.log(datasParsed.fields);
|
||||||
|
console.log(goodFields);
|
||||||
|
if (fields.length === 0)
|
||||||
|
throw new Error(errors.parserFail);
|
||||||
|
for (i = 0; i < nbDatas; i++) {
|
||||||
|
dataObject = {}, nbObjFields = datasParsed.datas[i].length;
|
||||||
|
if (nbObjFields !== nbFields)
|
||||||
|
parseErrors.push({ row: i, message: errors.parserNumberOfFieldsFail });
|
||||||
|
for (j = 0; j < nbObjFields && j < nbFields; j++) {
|
||||||
|
if (typesOkForValue.indexOf(typeof datasParsed.datas[i][j]) === -1)
|
||||||
|
parseErrors.push({ row: i, message: errors.parserTypeError + typeof datasParsed.datas[i][j] });
|
||||||
|
else
|
||||||
|
dataObject[fields[j]] = datasParsed.datas[i][j] + "";
|
||||||
|
}
|
||||||
|
if (Object.keys(dataObject).length !== 0)
|
||||||
|
datas.push(dataObject);
|
||||||
|
else
|
||||||
|
parseErrors.push({ row: i, message: errors.parserLineWithoutDatas });
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
i = 0;
|
||||||
|
for (_i = 0, datasParsed_1 = datasParsed; _i < datasParsed_1.length; _i++) {
|
||||||
|
data = datasParsed_1[_i];
|
||||||
|
dataObject = {};
|
||||||
|
for (field in data) {
|
||||||
|
field = field.trim();
|
||||||
|
if (field === "")
|
||||||
|
parseErrors.push({ row: -1, message: errors.parserFieldNameFail });
|
||||||
|
else if (typesOkForValue.indexOf(typeof data[field]) === -1)
|
||||||
|
parseErrors.push({ row: i, message: errors.parserTypeError + typeof data[field] });
|
||||||
|
else {
|
||||||
|
if (fields.indexOf(field) === -1)
|
||||||
|
fields.push(field);
|
||||||
|
if (dataObject[field] !== undefined)
|
||||||
|
parseErrors.push({ row: i, message: errors.parserFieldNameFail });
|
||||||
|
else
|
||||||
|
dataObject[field] = data[field] + "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (Object.keys(dataObject).length !== 0)
|
||||||
|
datas.push(dataObject);
|
||||||
|
else
|
||||||
|
parseErrors.push({ row: i, message: errors.parserLineWithoutDatas });
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
if (fields.length === 0)
|
||||||
|
throw new Error(errors.parserFail);
|
||||||
|
}
|
||||||
|
parser._parseResults =
|
||||||
|
{
|
||||||
|
datas: datas,
|
||||||
|
errors: parseErrors,
|
||||||
|
fields: fields,
|
||||||
|
};
|
||||||
|
return [2];
|
||||||
|
}
|
||||||
|
});
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return ParserForJSON;
|
||||||
|
}());
|
||||||
|
export { ParserForJSON };
|
79
src/build/RemoteSource.js
Normal file
79
src/build/RemoteSource.js
Normal file
@ -0,0 +1,79 @@
|
|||||||
|
var errors = require("./errors.js");
|
||||||
|
var RemoteSource = (function () {
|
||||||
|
function RemoteSource(RemoteSettings) {
|
||||||
|
this.allowedUrlProtocol = ["https:", "http:"];
|
||||||
|
this._url = "";
|
||||||
|
this._headers = [];
|
||||||
|
this._withCredentials = false;
|
||||||
|
if (RemoteSettings.url !== "")
|
||||||
|
this.url = RemoteSettings.url;
|
||||||
|
if (RemoteSettings.headers !== undefined)
|
||||||
|
this.headers = RemoteSettings.headers;
|
||||||
|
if (RemoteSettings.withCredentials !== undefined)
|
||||||
|
this.withCredentials = RemoteSettings.withCredentials;
|
||||||
|
}
|
||||||
|
Object.defineProperty(RemoteSource.prototype, "url", {
|
||||||
|
get: function () {
|
||||||
|
return this._url;
|
||||||
|
},
|
||||||
|
set: function (url) {
|
||||||
|
if (url.trim().length === 0)
|
||||||
|
throw new Error(errors.remoteSourceNeedUrl);
|
||||||
|
else {
|
||||||
|
try {
|
||||||
|
var checkUrl = new URL(url);
|
||||||
|
if (this.allowedUrlProtocol.indexOf(checkUrl.protocol) === -1)
|
||||||
|
throw new Error();
|
||||||
|
}
|
||||||
|
catch (e) {
|
||||||
|
console.error(e);
|
||||||
|
throw new Error(errors.remoteSourceUrlFail);
|
||||||
|
}
|
||||||
|
this._url = url.trim();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(RemoteSource.prototype, "headers", {
|
||||||
|
get: function () {
|
||||||
|
return this._headers;
|
||||||
|
},
|
||||||
|
set: function (headers) {
|
||||||
|
var forbiddenHeadersNames = ["Accept-Charset", "Accept-Encoding", "Access-Control-Request-Headers", "Access-Control-Request-Method", "Connection", "Content-Length", "Cookie", "Cookie2", "Date", "DNT", "Expect", "Host", "Keep-Alive", "Origin", "Referer", "TE", "Trailer", "Transfer-Encoding", "Upgrade", "Via"];
|
||||||
|
for (var _i = 0, headers_1 = headers; _i < headers_1.length; _i++) {
|
||||||
|
var header = headers_1[_i];
|
||||||
|
header.key = header.key.trim();
|
||||||
|
if (header.key.startsWith("Sec-") || header.key.startsWith("Proxy-") || forbiddenHeadersNames.indexOf(header.key) !== -1)
|
||||||
|
console.error(errors.remoteSourceHeaderIsUnallowed);
|
||||||
|
else
|
||||||
|
this._headers.push({ key: header.key, value: header.value.trim() });
|
||||||
|
}
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(RemoteSource.prototype, "withCredentials", {
|
||||||
|
get: function () {
|
||||||
|
return this._withCredentials;
|
||||||
|
},
|
||||||
|
set: function (credentials) {
|
||||||
|
this._withCredentials = credentials;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
RemoteSource.prototype.getFetchSettings = function () {
|
||||||
|
var headers = new Headers();
|
||||||
|
if (this._headers !== undefined) {
|
||||||
|
for (var _i = 0, _a = this._headers; _i < _a.length; _i++) {
|
||||||
|
var header = _a[_i];
|
||||||
|
headers.append(header.key, header.value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var credentials = (this._withCredentials) ? "include" : "omit";
|
||||||
|
return { method: "GET", headers: headers, credentials: credentials };
|
||||||
|
};
|
||||||
|
return RemoteSource;
|
||||||
|
}());
|
||||||
|
export { RemoteSource };
|
66
src/build/Render.js
Normal file
66
src/build/Render.js
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
var errors = require("./errors.js");
|
||||||
|
var Render = (function () {
|
||||||
|
function Render(settings) {
|
||||||
|
if (settings === void 0) { settings = Render.defaultSettings; }
|
||||||
|
this._fields = [];
|
||||||
|
this.datas = [];
|
||||||
|
this.settings = settings;
|
||||||
|
}
|
||||||
|
Object.defineProperty(Render.prototype, "fields", {
|
||||||
|
get: function () {
|
||||||
|
return this._fields;
|
||||||
|
},
|
||||||
|
set: function (fields) {
|
||||||
|
if (fields.length === 0)
|
||||||
|
throw new Error(errors.renderNeedFields);
|
||||||
|
else
|
||||||
|
this._fields = fields;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Render.prototype.rend2HTML = function () {
|
||||||
|
if (this._fields.length === 0)
|
||||||
|
throw new Error(errors.renderNeedFields);
|
||||||
|
else {
|
||||||
|
var datasHTML = this.settings.allBegining;
|
||||||
|
if (this.settings.fieldsBegining !== undefined && this.settings.fieldDisplaying !== undefined && this.settings.fieldsEnding !== undefined) {
|
||||||
|
datasHTML += this.settings.fieldsBegining;
|
||||||
|
for (var _i = 0, _a = this._fields; _i < _a.length; _i++) {
|
||||||
|
var field = _a[_i];
|
||||||
|
datasHTML += this.settings.fieldDisplaying.replace("#FIELDNAME", field);
|
||||||
|
}
|
||||||
|
datasHTML += this.settings.fieldsEnding;
|
||||||
|
}
|
||||||
|
datasHTML += this.settings.linesBegining;
|
||||||
|
for (var _b = 0, _c = this.datas; _b < _c.length; _b++) {
|
||||||
|
var row = _c[_b];
|
||||||
|
datasHTML += this.settings.lineBegining;
|
||||||
|
for (var _d = 0, _e = this._fields; _d < _e.length; _d++) {
|
||||||
|
var field = _e[_d];
|
||||||
|
if (row[field] !== undefined)
|
||||||
|
datasHTML += this.settings.dataDisplaying.replace("#VALUE", row[field]).replace("#FIELDNAME", field);
|
||||||
|
else
|
||||||
|
datasHTML += this.settings.dataDisplaying.replace("#VALUE", "").replace("#FIELDNAME", field);
|
||||||
|
}
|
||||||
|
datasHTML += this.settings.lineEnding;
|
||||||
|
}
|
||||||
|
datasHTML += this.settings.linesEnding + this.settings.allEnding;
|
||||||
|
return datasHTML;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Render.defaultSettings = {
|
||||||
|
allBegining: "<table>",
|
||||||
|
allEnding: "</table>",
|
||||||
|
fieldsBegining: "<thead><tr>",
|
||||||
|
fieldsEnding: "</tr></thead>",
|
||||||
|
fieldDisplaying: "<th>#FIELDNAME</th>",
|
||||||
|
linesBegining: "<tbody>",
|
||||||
|
linesEnding: "</tbody>",
|
||||||
|
lineBegining: "<tr>",
|
||||||
|
lineEnding: "</tr>",
|
||||||
|
dataDisplaying: "<td>#VALUE</td>"
|
||||||
|
};
|
||||||
|
return Render;
|
||||||
|
}());
|
||||||
|
export { Render };
|
112
src/build/SearchEngine.js
Normal file
112
src/build/SearchEngine.js
Normal file
@ -0,0 +1,112 @@
|
|||||||
|
var errors = require("./errors.js");
|
||||||
|
import { FreeDatas2HTML } from "./FreeDatas2HTML";
|
||||||
|
var SearchEngine = (function () {
|
||||||
|
function SearchEngine(converter, elt, fields) {
|
||||||
|
this._datasViewElt = { id: "", eltDOM: undefined };
|
||||||
|
this._btnTxt = "Search";
|
||||||
|
this._fields2Search = [];
|
||||||
|
this.label = "";
|
||||||
|
this.nbCharsForSearch = 0;
|
||||||
|
this.placeholder = "";
|
||||||
|
this.automaticSearch = false;
|
||||||
|
this._inputValue = "";
|
||||||
|
if (converter.fields.length === 0 || converter.datas.length === 0)
|
||||||
|
throw new Error(errors.filterNeedDatas);
|
||||||
|
else {
|
||||||
|
this._datasViewElt = FreeDatas2HTML.checkInDOMById(elt);
|
||||||
|
this._converter = converter;
|
||||||
|
if (fields !== undefined && fields.length !== 0) {
|
||||||
|
for (var _i = 0, fields_1 = fields; _i < fields_1.length; _i++) {
|
||||||
|
var field = fields_1[_i];
|
||||||
|
if (!this._converter.checkFieldExist(field))
|
||||||
|
throw new Error(errors.searchFieldNotFound);
|
||||||
|
else
|
||||||
|
this._fields2Search.push(this.converter.fields[field]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
this._fields2Search = this._converter.fields;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Object.defineProperty(SearchEngine.prototype, "converter", {
|
||||||
|
get: function () {
|
||||||
|
return this._converter;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(SearchEngine.prototype, "datasViewElt", {
|
||||||
|
get: function () {
|
||||||
|
return this._datasViewElt;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(SearchEngine.prototype, "btnTxt", {
|
||||||
|
get: function () {
|
||||||
|
return this._btnTxt;
|
||||||
|
},
|
||||||
|
set: function (txt) {
|
||||||
|
if (txt.trim() !== "" && txt.length <= 30)
|
||||||
|
this._btnTxt = txt;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(SearchEngine.prototype, "inputValue", {
|
||||||
|
get: function () {
|
||||||
|
return this._inputValue;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(SearchEngine.prototype, "fields2Search", {
|
||||||
|
get: function () {
|
||||||
|
return this._fields2Search;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
SearchEngine.prototype.filter2HTML = function () {
|
||||||
|
if (this.nbCharsForSearch > 0 && this.placeholder === "")
|
||||||
|
this.placeholder = "Please enter at least NB characters.";
|
||||||
|
var html = "<form id=\"freeDatas2HTMLSearch\">";
|
||||||
|
if (this.label !== "")
|
||||||
|
html += "<label for=\"freeDatas2HTMLSearchTxt\">" + this.label + "</label>";
|
||||||
|
html += "<input type=\"search\" id=\"freeDatas2HTMLSearchTxt\" name=\"freeDatas2HTMLSearchTxt\"";
|
||||||
|
if (this.nbCharsForSearch > 0)
|
||||||
|
html += " placeholder=\"" + this.placeholder.replace("NB", "" + this.nbCharsForSearch) + "\"";
|
||||||
|
else if (this.placeholder !== "")
|
||||||
|
html += " placeholder=\"" + this.placeholder + "\"";
|
||||||
|
html += "> <input type=\"submit\" id=\"freeDatas2HTMLSearchBtn\" value=\"" + this._btnTxt + "\"></form>";
|
||||||
|
this._datasViewElt.eltDOM.innerHTML = html;
|
||||||
|
var searchInput = document.getElementById("freeDatas2HTMLSearchTxt"), mySearch = this;
|
||||||
|
searchInput.addEventListener("input", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
mySearch._inputValue = searchInput.value;
|
||||||
|
var searchLength = searchInput.value.length;
|
||||||
|
if (mySearch.automaticSearch && (mySearch.nbCharsForSearch === 0 || (searchLength === 0) || (searchLength >= mySearch.nbCharsForSearch)))
|
||||||
|
mySearch._converter.refreshView();
|
||||||
|
});
|
||||||
|
var searchBtn = document.getElementById("freeDatas2HTMLSearchBtn");
|
||||||
|
searchBtn.addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var searchLength = searchInput.value.length;
|
||||||
|
if ((mySearch.nbCharsForSearch === 0 || (searchLength === 0) || (searchLength >= mySearch.nbCharsForSearch)))
|
||||||
|
mySearch._converter.refreshView();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
SearchEngine.prototype.dataIsOk = function (data) {
|
||||||
|
if (this._inputValue.length === 0)
|
||||||
|
return true;
|
||||||
|
for (var field in data) {
|
||||||
|
if (this._fields2Search.indexOf(field) !== -1) {
|
||||||
|
if (data[field].toLowerCase().indexOf(this._inputValue.toLowerCase()) !== -1)
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
return SearchEngine;
|
||||||
|
}());
|
||||||
|
export { SearchEngine };
|
146
src/build/Selector.js
Normal file
146
src/build/Selector.js
Normal file
@ -0,0 +1,146 @@
|
|||||||
|
var compare = require('natural-orderby').compare;
|
||||||
|
var errors = require("./errors.js");
|
||||||
|
import { FreeDatas2HTML } from "./FreeDatas2HTML";
|
||||||
|
var Selector = (function () {
|
||||||
|
function Selector(converter, datasFieldNb, elt, separator) {
|
||||||
|
this._datasViewElt = { id: "", eltDOM: undefined };
|
||||||
|
this._selectedValue = undefined;
|
||||||
|
this._values = [];
|
||||||
|
this._name = "";
|
||||||
|
if (converter.fields.length === 0 || converter.datas.length === 0)
|
||||||
|
throw new Error(errors.filterNeedDatas);
|
||||||
|
else if (!converter.checkFieldExist(Number(datasFieldNb)))
|
||||||
|
throw new Error(errors.selectorFieldNotFound);
|
||||||
|
else {
|
||||||
|
this._datasViewElt = FreeDatas2HTML.checkInDOMById(elt);
|
||||||
|
this._converter = converter;
|
||||||
|
this._datasFieldNb = datasFieldNb;
|
||||||
|
if (separator !== undefined && separator !== "")
|
||||||
|
this._separator = separator;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Object.defineProperty(Selector.prototype, "converter", {
|
||||||
|
get: function () {
|
||||||
|
return this._converter;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(Selector.prototype, "datasViewElt", {
|
||||||
|
get: function () {
|
||||||
|
return this._datasViewElt;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(Selector.prototype, "datasFieldNb", {
|
||||||
|
get: function () {
|
||||||
|
return this._datasFieldNb;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(Selector.prototype, "name", {
|
||||||
|
get: function () {
|
||||||
|
return this._name;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(Selector.prototype, "selectedValue", {
|
||||||
|
get: function () {
|
||||||
|
return this._selectedValue;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(Selector.prototype, "separator", {
|
||||||
|
get: function () {
|
||||||
|
return this._separator;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(Selector.prototype, "values", {
|
||||||
|
get: function () {
|
||||||
|
return this._values;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Selector.prototype.filter2HTML = function (label) {
|
||||||
|
if (label === void 0) { label = ""; }
|
||||||
|
this._name = this._converter.fields[this._datasFieldNb];
|
||||||
|
for (var _i = 0, _a = this._converter.datas; _i < _a.length; _i++) {
|
||||||
|
var row = _a[_i];
|
||||||
|
var checkedValue = void 0;
|
||||||
|
if (this._separator === undefined) {
|
||||||
|
checkedValue = row[this._name].trim();
|
||||||
|
if (checkedValue !== "" && this._values.indexOf(checkedValue) === -1)
|
||||||
|
this._values.push(checkedValue);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var checkedValues = row[this._name].split(this._separator);
|
||||||
|
for (var _b = 0, checkedValues_1 = checkedValues; _b < checkedValues_1.length; _b++) {
|
||||||
|
var value = checkedValues_1[_b];
|
||||||
|
checkedValue = value.trim();
|
||||||
|
if (checkedValue !== "" && this._values.indexOf(checkedValue) === -1)
|
||||||
|
this._values.push(checkedValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this._values.length === 0)
|
||||||
|
throw new Error(errors.selectorFieldIsEmpty);
|
||||||
|
else {
|
||||||
|
if (this._converter.getSortingFunctionForField(this._datasFieldNb) !== undefined)
|
||||||
|
this._values.sort(this._converter.getSortingFunctionForField(this._datasFieldNb).sort);
|
||||||
|
else
|
||||||
|
this._values.sort(compare());
|
||||||
|
label = (label === "") ? this._name : label;
|
||||||
|
var selectorsHTML = "<label for='freeDatas2HTML_" + this._datasViewElt.id + "'>" + label + " :</label><select name='freeDatas2HTML_" + this._datasViewElt.id + "' id='freeDatas2HTML_" + this._datasViewElt.id + "'><option value='0'>----</option>";
|
||||||
|
for (var i = 0; i < this._values.length; i++)
|
||||||
|
selectorsHTML += "<option value='" + (i + 1) + "'>" + this._values[i] + "</option>";
|
||||||
|
selectorsHTML += "</select>";
|
||||||
|
this._datasViewElt.eltDOM.innerHTML = selectorsHTML;
|
||||||
|
var selectElement_1 = document.getElementById("freeDatas2HTML_" + this._datasViewElt.id), mySelector_1 = this;
|
||||||
|
selectElement_1.addEventListener("change", function (e) {
|
||||||
|
if (selectElement_1.value === "0")
|
||||||
|
mySelector_1._selectedValue = undefined;
|
||||||
|
else
|
||||||
|
mySelector_1._selectedValue = parseInt(selectElement_1.value, 10) - 1;
|
||||||
|
mySelector_1._converter.refreshView();
|
||||||
|
});
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Selector.prototype.dataIsOk = function (data) {
|
||||||
|
if (this._name === "")
|
||||||
|
throw new Error(errors.filterCheckIsOkFail);
|
||||||
|
if (this._selectedValue === undefined)
|
||||||
|
return true;
|
||||||
|
if (this._values[this._selectedValue] === undefined)
|
||||||
|
throw new Error(errors.selectorSelectedIndexNotFound);
|
||||||
|
if (data[this._name] === undefined)
|
||||||
|
return false;
|
||||||
|
var selectedValueTxt = this._values[this._selectedValue];
|
||||||
|
if (this._separator === undefined) {
|
||||||
|
if (data[this._name].trim() !== selectedValueTxt)
|
||||||
|
return false;
|
||||||
|
else
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var find = false;
|
||||||
|
var checkedValues = data[this._name].split(this._separator);
|
||||||
|
for (var _i = 0, checkedValues_2 = checkedValues; _i < checkedValues_2.length; _i++) {
|
||||||
|
var value = checkedValues_2[_i];
|
||||||
|
if (value.trim() === selectedValueTxt) {
|
||||||
|
find = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return find;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
return Selector;
|
||||||
|
}());
|
||||||
|
export { Selector };
|
71
src/build/SortingField.js
Normal file
71
src/build/SortingField.js
Normal file
@ -0,0 +1,71 @@
|
|||||||
|
var compare = require('natural-orderby').compare;
|
||||||
|
var errors = require("./errors.js");
|
||||||
|
var SortingField = (function () {
|
||||||
|
function SortingField(converter, datasFieldNb, fieldsDOMSelector) {
|
||||||
|
if (fieldsDOMSelector === void 0) { fieldsDOMSelector = "th"; }
|
||||||
|
this._order = undefined;
|
||||||
|
if (converter.fields.length === 0)
|
||||||
|
throw new Error(errors.sortingFieldNeedDatas);
|
||||||
|
else if (!converter.checkField2Rend(datasFieldNb))
|
||||||
|
throw new Error(errors.sortingFieldNotFound);
|
||||||
|
else {
|
||||||
|
var fields = document.querySelectorAll(fieldsDOMSelector);
|
||||||
|
if (fields === undefined)
|
||||||
|
throw new Error(errors.sortingFieldsNotInHTML);
|
||||||
|
else if (fields.length !== converter.realFields2Rend().length)
|
||||||
|
throw new Error(errors.sortingFieldsNbFail);
|
||||||
|
else {
|
||||||
|
this._converter = converter;
|
||||||
|
this._datasFieldNb = datasFieldNb;
|
||||||
|
this._fieldsDOMSelector = fieldsDOMSelector;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Object.defineProperty(SortingField.prototype, "converter", {
|
||||||
|
get: function () {
|
||||||
|
return this._converter;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(SortingField.prototype, "fieldsDOMSelector", {
|
||||||
|
get: function () {
|
||||||
|
return this._fieldsDOMSelector;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(SortingField.prototype, "datasFieldNb", {
|
||||||
|
get: function () {
|
||||||
|
return this._datasFieldNb;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
Object.defineProperty(SortingField.prototype, "order", {
|
||||||
|
get: function () {
|
||||||
|
return this._order;
|
||||||
|
},
|
||||||
|
enumerable: true,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
SortingField.prototype.field2HTML = function () {
|
||||||
|
var fields = document.querySelectorAll(this._fieldsDOMSelector);
|
||||||
|
var htmlContent = fields[this._datasFieldNb].innerHTML;
|
||||||
|
htmlContent = "<a href='#freeDatas2HTMLSorting" + this._datasFieldNb + "' id='freeDatas2HTMLSorting" + this._datasFieldNb + "'>" + htmlContent + "</a>";
|
||||||
|
fields[this._datasFieldNb].innerHTML = htmlContent;
|
||||||
|
var sortingElement = document.getElementById("freeDatas2HTMLSorting" + this._datasFieldNb), field = this;
|
||||||
|
sortingElement.addEventListener("click", function (e) {
|
||||||
|
e.preventDefault();
|
||||||
|
var order = field._order;
|
||||||
|
if (order === undefined || order === "desc")
|
||||||
|
field._order = "asc";
|
||||||
|
else
|
||||||
|
field._order = "desc";
|
||||||
|
field._converter.datasSortedField = field;
|
||||||
|
field._converter.refreshView();
|
||||||
|
});
|
||||||
|
};
|
||||||
|
return SortingField;
|
||||||
|
}());
|
||||||
|
export { SortingField };
|
@ -34,9 +34,9 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|||||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
import { FreeDatas2HTML, Pagination, Render, Selector, SortingField } from "./freeDatas2HTML";
|
import { FreeDatas2HTML, Pagination, Render, SearchEngine, Selector, SortingField } from "./FreeDatas2HTML";
|
||||||
var initialise = function () { return __awaiter(void 0, void 0, void 0, function () {
|
var initialise = function () { return __awaiter(void 0, void 0, void 0, function () {
|
||||||
var mySort, converter, myRender, pagination, filtre1, filtre2, filtre3, sortingField1, sortingField2, sortingField3, sortingField4, e_1;
|
var mySort, converter, myRender, pagination, filtre1, filtre2, filtre3, mySearch, sortingField1, sortingField2, sortingField3, sortingField4, e_1;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
switch (_a.label) {
|
switch (_a.label) {
|
||||||
case 0:
|
case 0:
|
||||||
@ -59,7 +59,7 @@ var initialise = function () { return __awaiter(void 0, void 0, void 0, function
|
|||||||
return [4, converter.run()];
|
return [4, converter.run()];
|
||||||
case 1:
|
case 1:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
myRender = new Render(converter);
|
myRender = new Render();
|
||||||
if (window.innerWidth < 800) {
|
if (window.innerWidth < 800) {
|
||||||
myRender.settings =
|
myRender.settings =
|
||||||
{
|
{
|
||||||
@ -82,19 +82,26 @@ var initialise = function () { return __awaiter(void 0, void 0, void 0, function
|
|||||||
pagination.options = { displayElement: { id: "paginationOptions" }, values: [10, 20, 50, 500], name: "Choix de pagination :" };
|
pagination.options = { displayElement: { id: "paginationOptions" }, values: [10, 20, 50, 500], name: "Choix de pagination :" };
|
||||||
pagination.selectedValue = 10;
|
pagination.selectedValue = 10;
|
||||||
converter.pagination = pagination;
|
converter.pagination = pagination;
|
||||||
pagination.rend2HTML();
|
pagination.options2HTML();
|
||||||
converter.datasCounter = { id: "compteur" };
|
converter.datasCounterElt = { id: "compteur" };
|
||||||
return [4, converter.run()];
|
return [4, converter.run()];
|
||||||
case 2:
|
case 2:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
filtre1 = new Selector(converter, 3, { id: "filtre1" });
|
filtre1 = new Selector(converter, 3, { id: "filtre1" });
|
||||||
filtre1.selector2HTML();
|
filtre1.filter2HTML();
|
||||||
filtre2 = new Selector(converter, 4, { id: "filtre2" });
|
filtre2 = new Selector(converter, 4, { id: "filtre2" });
|
||||||
filtre2.selector2HTML();
|
filtre2.filter2HTML();
|
||||||
filtre3 = new Selector(converter, 5, { id: "filtre3" });
|
filtre3 = new Selector(converter, 5, { id: "filtre3" }, ",");
|
||||||
filtre3.separator = ",";
|
filtre3.filter2HTML();
|
||||||
filtre3.selector2HTML();
|
mySearch = new SearchEngine(converter, { id: "search" }, [1, 3, 5]);
|
||||||
converter.datasSelectors = [filtre1, filtre2, filtre3];
|
mySearch.btnTxt = "Chercher";
|
||||||
|
mySearch.label = "Qui cherche trouve ?";
|
||||||
|
mySearch.btnTxt = "Va chercher !";
|
||||||
|
mySearch.automaticSearch = true;
|
||||||
|
mySearch.nbCharsForSearch = 2;
|
||||||
|
mySearch.placeholder = "Tapes en NB, chef !";
|
||||||
|
mySearch.filter2HTML();
|
||||||
|
converter.datasFilters = [filtre1, filtre2, filtre3, mySearch];
|
||||||
if (window.innerWidth >= 800) {
|
if (window.innerWidth >= 800) {
|
||||||
sortingField1 = new SortingField(converter, 0);
|
sortingField1 = new SortingField(converter, 0);
|
||||||
sortingField1.field2HTML();
|
sortingField1.field2HTML();
|
||||||
|
@ -34,7 +34,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|||||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
import { FreeDatas2HTML, Pagination, Render, Selector, SortingField } from "./freeDatas2HTML";
|
import { FreeDatas2HTML, Pagination, Render, Selector, SortingField } from "./FreeDatas2HTML";
|
||||||
var initialise = function () { return __awaiter(void 0, void 0, void 0, function () {
|
var initialise = function () { return __awaiter(void 0, void 0, void 0, function () {
|
||||||
var converter, myRender, pagination, filtre1, sortingField1, sortingField2, e_1;
|
var converter, myRender, pagination, filtre1, sortingField1, sortingField2, e_1;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
@ -46,7 +46,7 @@ var initialise = function () { return __awaiter(void 0, void 0, void 0, function
|
|||||||
return [4, converter.run()];
|
return [4, converter.run()];
|
||||||
case 1:
|
case 1:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
myRender = new Render(converter);
|
myRender = new Render();
|
||||||
if (window.innerWidth < 800) {
|
if (window.innerWidth < 800) {
|
||||||
myRender.settings =
|
myRender.settings =
|
||||||
{
|
{
|
||||||
@ -65,17 +65,17 @@ var initialise = function () { return __awaiter(void 0, void 0, void 0, function
|
|||||||
converter.datasRender = myRender;
|
converter.datasRender = myRender;
|
||||||
}
|
}
|
||||||
pagination = new Pagination(converter, { id: "pages" }, "Page à afficher :");
|
pagination = new Pagination(converter, { id: "pages" }, "Page à afficher :");
|
||||||
pagination.options = { displayElement: { id: "paginationOptions" }, values: [15, 30, 50, 100], name: "Nombre de lignes par page :" };
|
pagination.options = { displayElement: { id: "paginationOptions" }, values: [15, 30, 50], name: "Nombre de lignes par page :" };
|
||||||
pagination.selectedValue = 15;
|
pagination.selectedValue = 30;
|
||||||
converter.pagination = pagination;
|
converter.pagination = pagination;
|
||||||
pagination.rend2HTML();
|
pagination.options2HTML();
|
||||||
converter.datasCounter = { id: "compteur" };
|
converter.datasCounterElt = { id: "compteur" };
|
||||||
return [4, converter.run()];
|
return [4, converter.run()];
|
||||||
case 2:
|
case 2:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
filtre1 = new Selector(converter, 3, { id: "filtre1" });
|
filtre1 = new Selector(converter, 3, { id: "filtre1" });
|
||||||
filtre1.selector2HTML();
|
filtre1.filter2HTML();
|
||||||
converter.datasSelectors = [filtre1];
|
converter.datasFilters = [filtre1];
|
||||||
if (window.innerWidth >= 800) {
|
if (window.innerWidth >= 800) {
|
||||||
sortingField1 = new SortingField(converter, 2);
|
sortingField1 = new SortingField(converter, 2);
|
||||||
sortingField1.field2HTML();
|
sortingField1.field2HTML();
|
||||||
|
@ -34,7 +34,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
|
|||||||
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
import { FreeDatas2HTML, Pagination, Render, Selector, SortingField } from "./freeDatas2HTML";
|
import { FreeDatas2HTML, Pagination, Render, Selector, SortingField } from "./FreeDatas2HTML";
|
||||||
var initialise = function () { return __awaiter(void 0, void 0, void 0, function () {
|
var initialise = function () { return __awaiter(void 0, void 0, void 0, function () {
|
||||||
var converter, myRender, pagination, filtre1, sortingField1, sortingField2, sortingField3, e_1;
|
var converter, myRender, pagination, filtre1, sortingField1, sortingField2, sortingField3, e_1;
|
||||||
return __generator(this, function (_a) {
|
return __generator(this, function (_a) {
|
||||||
@ -47,7 +47,7 @@ var initialise = function () { return __awaiter(void 0, void 0, void 0, function
|
|||||||
return [4, converter.run()];
|
return [4, converter.run()];
|
||||||
case 1:
|
case 1:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
myRender = new Render(converter);
|
myRender = new Render();
|
||||||
if (window.innerWidth < 800) {
|
if (window.innerWidth < 800) {
|
||||||
myRender.settings =
|
myRender.settings =
|
||||||
{
|
{
|
||||||
@ -69,14 +69,14 @@ var initialise = function () { return __awaiter(void 0, void 0, void 0, function
|
|||||||
pagination.options = { displayElement: { id: "paginationOptions" }, values: [15, 30, 50, 100], name: "Nombre de lignes par page :" };
|
pagination.options = { displayElement: { id: "paginationOptions" }, values: [15, 30, 50, 100], name: "Nombre de lignes par page :" };
|
||||||
pagination.selectedValue = 15;
|
pagination.selectedValue = 15;
|
||||||
converter.pagination = pagination;
|
converter.pagination = pagination;
|
||||||
pagination.rend2HTML();
|
pagination.options2HTML();
|
||||||
converter.datasCounter = { id: "compteur" };
|
converter.datasCounterElt = { id: "compteur" };
|
||||||
return [4, converter.run()];
|
return [4, converter.run()];
|
||||||
case 2:
|
case 2:
|
||||||
_a.sent();
|
_a.sent();
|
||||||
filtre1 = new Selector(converter, 0, { id: "filtre1" });
|
filtre1 = new Selector(converter, 0, { id: "filtre1" });
|
||||||
filtre1.selector2HTML();
|
filtre1.filter2HTML();
|
||||||
converter.datasSelectors = [filtre1];
|
converter.datasFilters = [filtre1];
|
||||||
if (window.innerWidth >= 800) {
|
if (window.innerWidth >= 800) {
|
||||||
sortingField1 = new SortingField(converter, 0);
|
sortingField1 = new SortingField(converter, 0);
|
||||||
sortingField1.field2HTML();
|
sortingField1.field2HTML();
|
||||||
|
1
src/build/interfaces.js
Normal file
1
src/build/interfaces.js
Normal file
@ -0,0 +1 @@
|
|||||||
|
;
|
0
src/build/interfacesPapaParse.js
Normal file
0
src/build/interfacesPapaParse.js
Normal file
Loading…
Reference in New Issue
Block a user