aboutsummaryrefslogtreecommitdiff
path: root/src/App.vue
diff options
context:
space:
mode:
authorTerry Truong <terry06890@gmail.com>2023-01-04 01:45:14 +1100
committerTerry Truong <terry06890@gmail.com>2023-01-04 01:45:14 +1100
commit79a4c7385b0330a6e332726d6ba7bc4ebb27ddf5 (patch)
treee6e8504a297749adcf6f7855e63917b7818ded56 /src/App.vue
parent07e53140ef1138635d20d61097eb5f4b9a769c3d (diff)
Fix linear-time search of unit-count map
Diffstat (limited to 'src/App.vue')
-rw-r--r--src/App.vue23
1 files changed, 6 insertions, 17 deletions
diff --git a/src/App.vue b/src/App.vue
index b65e0dc..11fb7cc 100644
--- a/src/App.vue
+++ b/src/App.vue
@@ -39,7 +39,7 @@ import PlusIcon from './components/icon/PlusIcon.vue';
import SettingsIcon from './components/icon/SettingsIcon.vue';
import HelpIcon from './components/icon/HelpIcon.vue';
// Other
-import {timeout, HistDate, HistEvent, queryServer, EventResponseJson, jsonToHistEvent,
+import {HistDate, HistEvent, queryServer, EventResponseJson, jsonToHistEvent,
SCALES, stepDate, TimelineState, cmpHistEvent, dateToUnit, DateRangeTree} from './lib';
import {useStore} from './store';
import {RBTree, rbtree_shallow_copy} from './rbtree';
@@ -147,9 +147,8 @@ const EVENT_REQ_LIMIT = 300;
const MAX_EVENTS_PER_UNIT = 4; // Should equal MAX_DISPLAYED_PER_UNIT in backend gen_disp_data.py
let queriedRanges: DateRangeTree[] = SCALES.map(() => new DateRangeTree());
// For each scale, holds date ranges for which data has already been queried fromm the server
-const SERVER_QUERY_TIMEOUT = 1000 // Used to throttle server queries
-let lastEvtDispHdlrTime = 0;
-let afterEvtDispHdlr = 0; // Used to trigger handler after ending a run of event-display events
+const SERVER_QUERY_TIMEOUT = 200 // Used to throttle server queries
+let eventDisplayHdlr = 0;
let lastQueriedRange: [HistDate, HistDate] | null = null;
async function onEventDisplay(
timelineId: number, eventIds: number[], firstDate: HistDate, lastDate: HistDate, scaleIdx: number){
@@ -246,20 +245,10 @@ async function onEventDisplay(
queriedRanges.forEach((t: DateRangeTree) => t.clear());
}
}
- clearTimeout(afterEvtDispHdlr);
- let currentTime = new Date().getTime();
- if (currentTime - lastEvtDispHdlrTime > SERVER_QUERY_TIMEOUT){
- lastEvtDispHdlrTime = currentTime;
+ clearTimeout(eventDisplayHdlr);
+ eventDisplayHdlr = window.setTimeout(async () => {
await handleEvent(timelineId, eventIds, firstDate, lastDate, scaleIdx);
- lastEvtDispHdlrTime = new Date().getTime();
- } else {
- // Set up handler to execute after ending a run of event-display events
- afterEvtDispHdlr = window.setTimeout(async () => {
- afterEvtDispHdlr = 0;
- await handleEvent(timelineId, eventIds, firstDate, lastDate, scaleIdx);
- lastEvtDispHdlrTime = new Date().getTime();
- }, SERVER_QUERY_TIMEOUT);
- }
+ }, SERVER_QUERY_TIMEOUT);
}
// For resize handling