From d8b18124c5acdb6d188f8e05c29256a8c828a3bc Mon Sep 17 00:00:00 2001 From: Chris Mason Date: Mon, 24 Jun 2024 22:37:43 +0100 Subject: [PATCH 1/4] save selected dataset --- CHANGELOG.md | 4 ++++ jinjafx_server.py | 3 ++- www/index.html | 2 +- www/jinjafx_m.js | 44 ++++++++++++++++++++++++++++++-------------- 4 files changed, 37 insertions(+), 16 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ab33920..7598d91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,8 @@ ## CHANGELOG +### [24.6.4] - In Development +- The selected DataSet is now saved when you save the DataTemplate + ### [24.6.3] - Jun 24, 2024 - Fixed an issue with `/logs` as it didn't adhere to the default `Content-Security-Policy` - Updated instructions for deploying JinjaFx Server as a Container using Kubernetes @@ -319,6 +322,7 @@ ### 21.11.0 - Nov 29, 2021 - Initial release +[24.6.4]: https://github.com/cmason3/jinjafx_server/compare/24.6.3...24.6.4 [24.6.3]: https://github.com/cmason3/jinjafx_server/compare/24.6.2...24.6.3 [24.6.2]: https://github.com/cmason3/jinjafx_server/compare/24.6.1...24.6.2 [24.6.1]: https://github.com/cmason3/jinjafx_server/compare/24.6.0...24.6.1 diff --git a/jinjafx_server.py b/jinjafx_server.py index c5120b8..ed57601 100755 --- a/jinjafx_server.py +++ b/jinjafx_server.py @@ -28,7 +28,7 @@ import re, argparse, hashlib, traceback, glob, hmac, uuid, struct, binascii, gzip, requests, ctypes, subprocess import cmarkgfm, emoji -__version__ = '24.6.3' +__version__ = '24.6.4' llock = threading.RLock() rlock = threading.RLock() @@ -702,6 +702,7 @@ def html_escape(text): dt_yml += re.sub('^', ' ' * 4, vdt['template'], flags=re.MULTILINE) + '\n' dt_yml += '\nrevision: ' + str(dt_revision) + '\n' + dt_yml += 'dataset: "' + dt['dataset'] + '"\n' dt_hash = hashlib.sha256(dt_yml.encode('utf-8')).hexdigest() dt_yml += 'dt_hash: "' + dt_hash + '"\n' diff --git a/www/index.html b/www/index.html index fc9ed5e..68f0cf9 100644 --- a/www/index.html +++ b/www/index.html @@ -32,7 +32,7 @@ - +
diff --git a/www/jinjafx_m.js b/www/jinjafx_m.js index 568ef8b..ee519e9 100644 --- a/www/jinjafx_m.js +++ b/www/jinjafx_m.js @@ -136,6 +136,11 @@ function getStatusText(code) { window.cmVars.swapDoc(datasets[ds][1]); } if (ds != current_ds) { + window.addEventListener('beforeunload', onBeforeUnload); + if (document.getElementById('get_link').value != 'false') { + document.title = 'JinjaFx [unsaved]'; + } + dirty = true; document.getElementById('selected_ds').innerHTML = ds; current_ds = ds; onDataBlur(); @@ -198,11 +203,11 @@ function getStatusText(code) { function delete_dataset(ds) { delete datasets[ds]; - window.addEventListener('beforeunload', onBeforeUnload); - if (document.getElementById('get_link').value != 'false') { - document.title = 'JinjaFx [unsaved]'; - } - dirty = true; + //window.addEventListener('beforeunload', onBeforeUnload); + //if (document.getElementById('get_link').value != 'false') { + // document.title = 'JinjaFx [unsaved]'; + //} + //dirty = true; rebuild_datasets(); switch_dataset(Object.keys(datasets)[0], false); @@ -540,6 +545,7 @@ function getStatusText(code) { return false; } + dt.dataset = current_ds; dt.template = e(window.cmTemplate.getValue().replace(/\t/g, " ")); if ((current_ds === 'Default') && (Object.keys(datasets).length === 1)) { @@ -711,7 +717,12 @@ function getStatusText(code) { try { var dt = jsyaml.load(d(JSON.parse(this.responseText)['dt']), jsyaml_schema); - load_datatemplate(dt['dt'], qs); + if (dt.hasOwnProperty('dataset')) { + load_datatemplate(dt['dt'], qs, dt['dataset']); + } + else { + load_datatemplate(dt['dt'], qs, null); + } dt_id = qs.dt; document.getElementById('update').classList.remove('d-none'); @@ -1393,11 +1404,11 @@ function getStatusText(code) { if (!datasets.hasOwnProperty(new_ds)) { datasets[new_ds] = [CodeMirror.Doc('', 'data'), CodeMirror.Doc('', 'yaml')]; rebuild_datasets(); - window.addEventListener('beforeunload', onBeforeUnload); - if (document.getElementById('get_link').value != 'false') { - document.title = 'JinjaFx [unsaved]'; - } - dirty = true; + //window.addEventListener('beforeunload', onBeforeUnload); + //if (document.getElementById('get_link').value != 'false') { + // document.title = 'JinjaFx [unsaved]'; + //} + //dirty = true; } switch_dataset(new_ds, true); } @@ -1687,7 +1698,7 @@ function getStatusText(code) { } function apply_dt() { - load_datatemplate(pending_dt, null); + load_datatemplate(pending_dt, null, null); reset_location(''); dt_id = ''; dt_password = null; @@ -1747,7 +1758,7 @@ function getStatusText(code) { } } - function load_datatemplate(_dt, _qs) { + function load_datatemplate(_dt, _qs, _ds) { try { current_ds = 'Default'; @@ -1762,7 +1773,12 @@ function getStatusText(code) { datasets[ds] = [CodeMirror.Doc(data, 'data'), CodeMirror.Doc(vars, 'yaml')]; }); - current_ds = Object.keys(datasets)[0]; + if ((_ds == null) || !datasets.hasOwnProperty(_ds)) { + current_ds = Object.keys(datasets)[0]; + } + else { + current_ds = _ds; + } window.cmData.swapDoc(datasets[current_ds][0]); window.cmVars.swapDoc(datasets[current_ds][1]); From ee417ee742b4c0f26c2865e36526d9189d6fcdb2 Mon Sep 17 00:00:00 2001 From: Chris Mason Date: Mon, 24 Jun 2024 23:03:30 +0100 Subject: [PATCH 2/4] update pandoc to 3.2.1 --- CHANGELOG.md | 1 + kubernetes/Dockerfile | 4 ++-- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7598d91..4453c40 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ ### [24.6.4] - In Development - The selected DataSet is now saved when you save the DataTemplate +- Updated Pandoc to 3.2.1 in Dockerfile ### [24.6.3] - Jun 24, 2024 - Fixed an issue with `/logs` as it didn't adhere to the default `Content-Security-Policy` diff --git a/kubernetes/Dockerfile b/kubernetes/Dockerfile index 5fdc380..b84e765 100644 --- a/kubernetes/Dockerfile +++ b/kubernetes/Dockerfile @@ -7,8 +7,8 @@ RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends wget git build-essential; \ -wget -P /tmp https://github.com/jgm/pandoc/releases/download/3.2/pandoc-3.2-1-amd64.deb; \ -dpkg -i /tmp/pandoc-3.2-1-amd64.deb; \ +wget -P /tmp https://github.com/jgm/pandoc/releases/download/3.2.1/pandoc-3.2.1-1-amd64.deb; \ +dpkg -i /tmp/pandoc-3.2.1-1-amd64.deb; \ python3 -m venv /opt/jinjafx; \ /opt/jinjafx/bin/python3 -m pip install --upgrade git+https://github.com/cmason3/jinjafx_server.git@${BRANCH} lxml; \ From 653297f8794d7567616566f06f59b00962c57a5b Mon Sep 17 00:00:00 2001 From: Chris Mason Date: Mon, 24 Jun 2024 23:21:12 +0100 Subject: [PATCH 3/4] update dataset saving --- www/index.html | 2 +- www/jinjafx_m.js | 18 ++++++++++-------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/www/index.html b/www/index.html index 68f0cf9..9937dd4 100644 --- a/www/index.html +++ b/www/index.html @@ -32,7 +32,7 @@ - +
diff --git a/www/jinjafx_m.js b/www/jinjafx_m.js index ee519e9..f447c57 100644 --- a/www/jinjafx_m.js +++ b/www/jinjafx_m.js @@ -123,10 +123,10 @@ function getStatusText(code) { }; function select_dataset(e) { - switch_dataset(e.currentTarget.ds_name, true); + switch_dataset(e.currentTarget.ds_name, true, false); } - function switch_dataset(ds, sflag) { + function switch_dataset(ds, sflag, dflag) { if (sflag) { datasets[current_ds][0] = window.cmData.swapDoc(datasets[ds][0]); datasets[current_ds][1] = window.cmVars.swapDoc(datasets[ds][1]); @@ -136,9 +136,11 @@ function getStatusText(code) { window.cmVars.swapDoc(datasets[ds][1]); } if (ds != current_ds) { - window.addEventListener('beforeunload', onBeforeUnload); - if (document.getElementById('get_link').value != 'false') { - document.title = 'JinjaFx [unsaved]'; + if (dflag) { + window.addEventListener('beforeunload', onBeforeUnload); + if (document.getElementById('get_link').value != 'false') { + document.title = 'JinjaFx [unsaved]'; + } } dirty = true; document.getElementById('selected_ds').innerHTML = ds; @@ -210,7 +212,7 @@ function getStatusText(code) { //dirty = true; rebuild_datasets(); - switch_dataset(Object.keys(datasets)[0], false); + switch_dataset(Object.keys(datasets)[0], false, true); fe.focus(); } @@ -559,7 +561,7 @@ function getStatusText(code) { dt.global = e(window.cmgVars.getValue().replace(/\t/g, " ")); } - switch_dataset(current_ds, true); + switch_dataset(current_ds, true, false); Object.keys(datasets).forEach(function(ds) { dt.datasets[ds] = {}; dt.datasets[ds].data = e(datasets[ds][0].getValue()); @@ -1410,7 +1412,7 @@ function getStatusText(code) { //} //dirty = true; } - switch_dataset(new_ds, true); + switch_dataset(new_ds, true, true); } else { set_status("darkred", "ERROR", "Invalid Data Set Name"); From 6605c8ac37e6bfdc49e55eb1b4d19fd384a64078 Mon Sep 17 00:00:00 2001 From: Chris Mason <57402469+cmason3@users.noreply.github.com> Date: Wed, 26 Jun 2024 22:31:42 +0100 Subject: [PATCH 4/4] Update CHANGELOG.md --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4453c40..c6d59b6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,6 @@ ## CHANGELOG -### [24.6.4] - In Development +### [24.6.4] - Jun 26, 2024 - The selected DataSet is now saved when you save the DataTemplate - Updated Pandoc to 3.2.1 in Dockerfile