diff --git a/app/front.js b/app/front.js
index d205077..e4d2fda 100644
--- a/app/front.js
+++ b/app/front.js
@@ -213,12 +213,16 @@ let activateSearch = (value="") => {
* separator: parameters.cfn (end of record separator) */
const operations = {
display: async (records) => { //parses and displays the required fields of each record
- query.classList.add("hidden");
+ //query.classList.add("hidden");
results.classList.remove("hidden");
records.split(JSON.parse('"'+parameters.cfn+'"'))
.filter(e => ["","\n"].indexOf(e) < 0)
.map(async (e,i) => {
- e = await parse(e,{toParse:parameters.toDisplay});
+ e = await parse(e,{
+ toParse: parameters.toDisplay,
+ fields: JSON.parse('"'+parameters.cfz+'"'),
+ subfields: JSON.parse('"'+parameters.ssz+'"')
+ });
if (parameters.helper != "disabled") {
e = await helper(e,parameters.helper);
}
@@ -238,10 +242,15 @@ let activateSearch = (value="") => {
}
records = records.split(JSON.parse('"'+parameters.cfn+'"'))
.filter(e => ["","\n"].indexOf(e) < 0);
+ progress.querySelector("progress").setAttribute("value",0);
progress.querySelector("progress").setAttribute("max",records.length);
records = await Promise.all(
records.map(async (e,i) => {
- e = await parse(e,{toParse});
+ e = await parse(e,{
+ toParse,
+ fields: JSON.parse('"'+parameters.cfz+'"'),
+ subfields: JSON.parse('"'+parameters.ssz+'"')
+ });
e = (await filter(e,toParse,filterValues))
? e.rawRecord
: false;
@@ -261,9 +270,41 @@ let activateSearch = (value="") => {
progress.classList.remove("hidden");
let output = {
html: (data) => {
-
+ results.setAttribute("style","display: flex");
+ let template = document.querySelector("#summaryView");
+ Object.keys(data).map((field,i) => {
+ let table = document
+ .importNode(template.content, true)
+ .querySelector("table");
+ results.append(table);
+ let header = table.querySelector("thead tr th");
+ header.innerHTML = field;
+ if (parameters.cumul_values) { //create two columns: values & occurencies
+ header.setAttribute("colspan",2);
+ Object.keys(data[field]).map(entry => {
+ let line = document.createElement("tr");
+ let value = document.createElement("td");
+ let count = document.createElement("td");
+ value.innerHTML = entry;
+ count.innerHTML = data[field][entry];
+ line.append(value);
+ line.append(count);
+ table.querySelector("tbody").append(line);
+ });
+ } else { //simple case, create one column & fill w/ values
+ table.querySelector(".cumulValues").remove();
+ data[field].map(entry => {
+ let line = document.createElement("tr");
+ let cell = document.createElement("td");
+ cell.innerHTML = entry;
+ line.append(cell);
+ table.querySelector("tbody").append(line);
+ });
+ }
+ });
},
json: (data) => {
+ data = JSON.stringify(data);
data = makeDownload(data,"application/json","summary.json",true);
window.location.href = data;
}
@@ -274,11 +315,16 @@ let activateSearch = (value="") => {
}
let summary = {};
records = records.split(JSON.parse('"'+parameters.cfn+'"'));
+ progress.querySelector("progress").setAttribute("value",0);
progress.querySelector("progress").setAttribute("max",records.length);
await Promise.all(records
.filter(e => ["","\n"].indexOf(e) < 0)
.map(async (e,i) => {
- e = await parse(e,{toParse});
+ e = await parse(e,{
+ toParse,
+ fields: JSON.parse('"'+parameters.cfz+'"'),
+ subfields: JSON.parse('"'+parameters.ssz+'"')
+ });
progress.querySelector("progress").value++;
e = await e.fields.map(e => {
if (typeof e.value !== "undefined") {
@@ -290,17 +336,21 @@ let activateSearch = (value="") => {
}
}).flat().map(field => {
if (typeof summary[field.code] === "undefined") {
- summary[field.code] = [];
+ summary[field.code] = (parameters.cumul_values) ? {} : [];
}
if (parameters.cumul_values) {
- //special duplicates reduce
+ if (typeof summary[field.code][field.value] !== "undefined") {
+ summary[field.code][field.value]++;
+ } else {
+ summary[field.code][field.value] = 1;
+ }
} else {
summary[field.code].push(field.value);
}
});
})
);
- output[parameters.output](JSON.stringify(summary));
+ output[parameters.output](summary);
progress.classList.add("hidden");
}
}
@@ -314,6 +364,7 @@ let activateSearch = (value="") => {
e.remove();
}
});
+ results.setAttribute("style","");
try {
operations[mode](records);
} catch (e) {
diff --git a/app/index.html b/app/index.html
index 553fa72..00ac8e2 100644
--- a/app/index.html
+++ b/app/index.html
@@ -93,6 +93,16 @@
+
+
+