From 65b5e6765ce40e8b4020701b6729f3d0890a0712 Mon Sep 17 00:00:00 2001
From: peer35
Date: Wed, 24 Mar 2021 11:44:00 +0100
Subject: [PATCH] persist state for max 1 day #34
---
package.json | 2 +-
src/gpz.js | 16 ++++++++--------
src/helpers/ViewerDataHelpers.js | 1 +
src/kloosters.js | 15 +++++++++------
4 files changed, 19 insertions(+), 15 deletions(-)
diff --git a/package.json b/package.json
index a91cde5..469cd41 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "mapviewer",
- "version": "2.2.5",
+ "version": "2.2.6",
"private": true,
"scripts": {
"serve:kloosters": "vue-cli-service serve src/kloosters.js",
diff --git a/src/gpz.js b/src/gpz.js
index 20d2a0b..3a55938 100644
--- a/src/gpz.js
+++ b/src/gpz.js
@@ -12,6 +12,7 @@ import {get as getProjection} from 'ol/proj'
import proj4 from 'proj4';
import {getParam, hashCode} from './shared'
+import {saveState} from "./helpers/ViewerDataHelpers";
proj4.defs("EPSG:28992", "+title=Amersfoort / RD New +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +towgs84=565.417,50.3319,465.552,-0.398957,0.343988,-1.8774,4.0725 +no_defs");
register(proj4);
@@ -26,16 +27,15 @@ function getState(config) {
const key = hashCode(config.title);
config.hash=key; // only calculate once
if (!localStorage[key]) {
- localStorage[key] = JSON.stringify({
- 'crs': config.crs,
- 'baselayer': config.baselayer,
- 'bbox': config.bbox,
- });
+ saveState(config);
} else {
+ const delta = 1000 * 3600 * 24; // 1 day
const s = JSON.parse(localStorage[key]);
- config.crs = s.crs;
- config.baselayer = s.baselayer;
- config.bbox = s.bbox;
+ if (Date.now() - s.updated < delta) {
+ config.crs = s.crs;
+ config.baselayer = s.baselayer;
+ config.bbox = s.bbox;
+ }
}
return config;
}
diff --git a/src/helpers/ViewerDataHelpers.js b/src/helpers/ViewerDataHelpers.js
index f23177f..68e8e5a 100644
--- a/src/helpers/ViewerDataHelpers.js
+++ b/src/helpers/ViewerDataHelpers.js
@@ -13,6 +13,7 @@ export function saveState(config, olmap = null) {
'crs': config.crs,
'baselayer': config.baselayer,
'bbox': bbox,
+ 'updated': Date.now()
}
if (typeof config.klooster !== 'undefined') {
def_config.year = config.klooster.year;
diff --git a/src/kloosters.js b/src/kloosters.js
index f1757ef..592f883 100644
--- a/src/kloosters.js
+++ b/src/kloosters.js
@@ -17,13 +17,16 @@ function getState(config) {
if (!localStorage[key]) {
saveState(config);
} else {
+ const delta = 1000 * 3600 * 24; // 1 day
const s = JSON.parse(localStorage[key]);
- config.crs = s.crs;
- config.baselayer = s.baselayer;
- config.bbox = s.bbox;
- config.klooster.year = s.year
- config.klooster.language = s.language
- config.klooster.filter = s.filter
+ if (Date.now() - s.updated < delta) {
+ config.crs = s.crs;
+ config.baselayer = s.baselayer;
+ config.bbox = s.bbox;
+ config.klooster.year = s.year
+ config.klooster.language = s.language
+ config.klooster.filter = s.filter
+ }
}
return config;
}