diff --git a/lib/importer/nunjucks/importer/macros/table_view.njk b/lib/importer/nunjucks/importer/macros/table_view.njk
index 7c076096..34aa4df7 100644
--- a/lib/importer/nunjucks/importer/macros/table_view.njk
+++ b/lib/importer/nunjucks/importer/macros/table_view.njk
@@ -4,7 +4,7 @@
{% set rows = data.rows %}
{% set moreRowsAvailable = data.extraRecordCount > 0 %}
{% set moreRowsCount = data.extraRecordCount %}
-
+
.{{data}}.
{% set tableHeaders = importerHeaderRowDisplay(session, headerMode) %}
diff --git a/lib/importer/src/debug.js b/lib/importer/src/debug.js
new file mode 100644
index 00000000..f1612e02
--- /dev/null
+++ b/lib/importer/src/debug.js
@@ -0,0 +1,34 @@
+
+const fs = require("node:fs")
+const path = require("node:path")
+
+const session_lib = require("./session.js");
+
+exports.CreateSessionWithFileFixture = (plugin_config, request, filename) => {
+ const sourceFile = path.join(path.resolve(process.cwd()), "../../fixtures/", filename);
+ const targetFile = path.join(plugin_config.uploadPath, filename);
+
+ fs.copyFileSync(sourceFile, targetFile);
+ const fstats = fs.statSync(targetFile)
+
+ let encoding = "utf8";
+ let mimetype = "text/csv"
+
+ if (!filename.toLowerCase().endsWith(".csv")) {
+ encoding = "7bit";
+ mimetype = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet";
+ }
+
+ request.file = {
+ fieldname: "file",
+ originalname: filename,
+ mimetype: mimetype,
+ encoding: encoding,
+ path: targetFile,
+ size: fstats.size,
+ destination: plugin_config.uploadPath,
+ filename: filename
+ };
+
+ return session_lib.CreateSession(plugin_config, request)
+}
diff --git a/lib/importer/src/dudk/sheets.js b/lib/importer/src/dudk/sheets.js
index 5514d5ba..3d5f2f10 100644
--- a/lib/importer/src/dudk/sheets.js
+++ b/lib/importer/src/dudk/sheets.js
@@ -269,7 +269,6 @@ exports.MapData = (sid, sheet, mapping, fields, previewLimit = DEFAULT_PREVIEW_L
// Convert source mapping (a map from column index -> attribute name) into a mapping for the backend
let rewrittenMapping = RewriteMapping(mapping, fields)
-
// Apply the mapping
const backendJid = backend.SessionPerformMappingJob(sid, rowRange, rewrittenMapping);
diff --git a/lib/importer/src/functions.js b/lib/importer/src/functions.js
index be4ec2eb..7a6ddd83 100644
--- a/lib/importer/src/functions.js
+++ b/lib/importer/src/functions.js
@@ -158,9 +158,9 @@ const importerGetHeaders = (data) => {
const importerMappedData = (data) => {
const session_data = data[IMPORTER_SESSION_KEY];
const session = new session_lib.Session(session_data)
-
const mapResults = sheets_lib.MapData(session.backendSid, session.sheet, session.mapping, session.fields);
const headers = session.fields;
+
return {
rows: mapResults.resultRecords,
headers: headers,
@@ -174,6 +174,7 @@ const importerMappedData = (data) => {
}
const importerHeaderRowDisplay = (data, mode) => {
+ console.log(data)
const session_data = data[IMPORTER_SESSION_KEY];
const session = new session_lib.Session(session_data)
diff --git a/lib/importer/src/index.js b/lib/importer/src/index.js
index ce5db786..b7152948 100644
--- a/lib/importer/src/index.js
+++ b/lib/importer/src/index.js
@@ -479,6 +479,52 @@ exports.Initialise = (config, router, prototypeKit) => {
}
}
+ //--------------------------------------------------------------------
+ // Debug routes for testing presentation
+ //--------------------------------------------------------------------
+ const debug_lib = require("./debug.js")
+ const funcs_lib = require("./functions.js")
+
+ // debug routes ...
+ router.get('/importer/debug', function (request, response) {
+ response.render("debug/index.html", {})
+ })
+
+
+ // Valid, with headers, only warnings
+ router.get('/importer/debug/valid', function (request, response) {
+
+ const sess = debug_lib.CreateSessionWithFileFixture(plugin_config, request, "validation-test.csv").session
+
+ sess.sheet = "Sheet1"
+ sess.headerRange = {
+ sheet: "Sheet1",
+ start: { row: 0, column: 0 },
+ end: { row: 0, column: 7 }
+ }
+
+ sess.mapping = {
+ 0: "Employee number",
+ 1: "Title",
+ 2: "First name",
+ 3: "Surname",
+ 4: "Employment start date",
+ 5: "Salary",
+ 6: "Contribution percentage",
+ }
+
+ const local_data = {}
+ local_data[IMPORTER_SESSION_KEY] = sess
+
+ const res = funcs_lib.importerMappedData(local_data)
+
+ // request.session.data[IMPORTER_SESSION_KEY] = sess
+
+ response.render("debug/valid.html", { debug_data: { result: res, session: sess } })
+ })
+
+
+
//--------------------------------------------------------------------
// Review the processing for the current session before continuing.
diff --git a/lib/importer/src/session.js b/lib/importer/src/session.js
index 426990ab..ea6ed34e 100644
--- a/lib/importer/src/session.js
+++ b/lib/importer/src/session.js
@@ -82,7 +82,6 @@ exports.CreateSession = (config, request) => {
createResponse.error = err;
return createResponse;
}
-
createResponse.id = getFilenameHash(file.filename);
createResponse.session = new Session({
id: createResponse.id,
diff --git a/lib/importer/views/debug/index.html b/lib/importer/views/debug/index.html
new file mode 100644
index 00000000..a9d758d5
--- /dev/null
+++ b/lib/importer/views/debug/index.html
@@ -0,0 +1,17 @@
+{% extends "../layouts/main.html" %}
+
+{% set pageName="Debug" %}
+
+{% block content %}
+
+
+
+{% endblock %}
diff --git a/lib/importer/views/debug/valid.html b/lib/importer/views/debug/valid.html
new file mode 100644
index 00000000..50a09852
--- /dev/null
+++ b/lib/importer/views/debug/valid.html
@@ -0,0 +1,24 @@
+{% extends "../layouts/main.html" %}
+
+{% from "importer/macros/table_view.njk" import importerTableView %}
+
+{% set pageName="Debug - Valid" %}
+
+{% block beforeContent %}
+ Back
+{% endblock %}
+
+{% block content %}
+
+
+
+
Valid, with headers, only warnings
+
+
+ {{ importerTableView(debug_data.session, debug_data.result, caption="test", headerMode="none") }}
+
+
+
+
+
+{% endblock %}
diff --git a/prototypes/basic/app/routes.js b/prototypes/basic/app/routes.js
index 8cf1a45b..d733561c 100644
--- a/prototypes/basic/app/routes.js
+++ b/prototypes/basic/app/routes.js
@@ -5,7 +5,6 @@
const govukPrototypeKit = require("govuk-prototype-kit");
const router = govukPrototypeKit.requests.setupRouter();
-
// Below 3 lines added by the Data Upload Design Kit plugin.
// If you uninstall the plugin, remove the 3 lines below.
const importer = require("@register-dynamics/importer");