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; }