From e6baa95f745123e801de25d312fb305a781fc13f Mon Sep 17 00:00:00 2001 From: Christian Georgi Date: Mon, 31 Jan 2022 19:03:06 +0100 Subject: [PATCH 1/3] Data browser: keep data row selection across refresh --- data-viewer/app/viewer/app.js | 27 ++++++++++++++++++++++++--- data-viewer/app/viewer/index.html | 10 +++++----- 2 files changed, 29 insertions(+), 8 deletions(-) diff --git a/data-viewer/app/viewer/app.js b/data-viewer/app/viewer/app.js index e326ece6..be6970bf 100644 --- a/data-viewer/app/viewer/app.js +++ b/data-viewer/app/viewer/app.js @@ -15,7 +15,8 @@ const viewer = new Vue ({ entities: [], columns: [], data: [], - rowDetails: undefined, + rowDetails: {}, + rowKey: storageGet('rowKey') }, watch: { @@ -55,17 +56,37 @@ const viewer = new Vue ({ if (viewer.dataSource === 'db') url += `&dataSource=db` const {data} = await GET(url) viewer.data = data.value.map(d => d.record.map(r => r.data)) - viewer.rowDetails = undefined + const row = viewer.data.find(data => viewer._makeRowKey(data) === viewer.rowKey) + if (row) viewer._setRowDetails(row) + else viewer.rowDetails = {} }, inspectRow (eve) { viewer.rowDetails = {} const selectedRow = eve.currentTarget.rowIndex-1 - viewer.data[selectedRow].forEach((line, colIndex) => { + viewer.rowKey = viewer._makeRowKey(viewer.data[selectedRow]) + storageSet('rowKey', viewer.rowKey) + viewer._setRowDetails(viewer.data[selectedRow]) + }, + + _setRowDetails(row) { + viewer.rowDetails = {} + row.forEach((line, colIndex) => { viewer.rowDetails[viewer.columns[colIndex].name] = line }) }, + _makeRowKey(row) { + // to identify a row, build a key string out of all key columns' values + return row + .filter((_, colIndex) => viewer.columns[colIndex] && viewer.columns[colIndex].isKey) + .reduce(((prev, next) => prev += next), '') + }, + + isActiveRow(row) { + return viewer._makeRowKey(row) === viewer.rowKey + } + } }) diff --git a/data-viewer/app/viewer/index.html b/data-viewer/app/viewer/index.html index 121c4d4d..b5a80635 100644 --- a/data-viewer/app/viewer/index.html +++ b/data-viewer/app/viewer/index.html @@ -8,7 +8,7 @@ + Data Browser + + + +
-

{{ document.title }}{{ entity ? ' – ' + entity.name : '' }}

+

{{ document.title }}{{ entity ? ' – ' + entity.name : '' }}

-
- - -
-
- - - - -
-
- - - - - - - -
{{ col.name }}
{{ d }}
-
- -
- - - - - -
{{ value }}{{ key }}
-
-
+
+ +
+
+ + + + +
+
+ + + + + + + +
{{ col.name }}
{{ d }}
+
+ +
+ + + + + +
{{ value }}{{ key }}
+
+
+
+
From f8c23f4c54b0b266a837046732c9bf3d6d753032 Mon Sep 17 00:00:00 2001 From: Christian Georgi Date: Mon, 31 Jan 2022 19:53:35 +0100 Subject: [PATCH 3/3] Better layout; --- data-viewer/app/viewer/index.html | 34 ++++++++++++++++++------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/data-viewer/app/viewer/index.html b/data-viewer/app/viewer/index.html index de4940b5..3e91bb4a 100644 --- a/data-viewer/app/viewer/index.html +++ b/data-viewer/app/viewer/index.html @@ -7,6 +7,7 @@ - -
+ +

{{ document.title }}{{ entity ? ' – ' + entity.name : '' }}

@@ -37,14 +41,16 @@
- - - - - - - -
Entity Name
{{ e.name }}
+
@@ -54,7 +60,7 @@
-
+
@@ -64,8 +70,8 @@
{{ col.name }}
- -
+

+
{{ value }}