[+] Persistent timer
This commit is contained in:
+6
-3
@@ -42,15 +42,18 @@
|
|||||||
let [editMode, dragging, colorfulCross] = [params.has('edit'), false, false]
|
let [editMode, dragging, colorfulCross] = [params.has('edit'), false, false]
|
||||||
const modes = ['line', 'mask', 'color']
|
const modes = ['line', 'mask', 'color']
|
||||||
let mode = 'line'
|
let mode = 'line'
|
||||||
let [startTime, elapsed, complete, completedOverlay, statusMsg] = [Date.now(), 0, false, false, '']
|
|
||||||
|
// Solve Timer
|
||||||
|
let startTime = JsonTy.lsDefault(`${pid}-start-time`, Date.now())
|
||||||
|
let [elapsed, complete, completedOverlay, statusMsg] = [0, false, false, '']
|
||||||
setInterval(() => !complete && (elapsed = Date.now() - startTime), 100)
|
setInterval(() => !complete && (elapsed = Date.now() - startTime), 100)
|
||||||
|
|
||||||
// Checkpoints
|
// Checkpoints
|
||||||
const ckpt = () => ({rows, cols, hStates, vStates, numbers, nMask, hColors, vColors, colors})
|
const ckpt = () => ({rows, cols, hStates, vStates, numbers, nMask, hColors, vColors, colors})
|
||||||
const loadPt = () => JsonTy.parse(localStorage.getItem(`${pid}-checkpoints`) ?? "[]")
|
const loadPt = () => JsonTy.lsDefault(`${pid}-checkpoints`, [])
|
||||||
let ckpts: Checkpoint[] = loadPt()
|
let ckpts: Checkpoint[] = loadPt()
|
||||||
const savePt = (fn: () => any) => () => { fn()
|
const savePt = (fn: () => any) => () => { fn()
|
||||||
localStorage.setItem(`${pid}-checkpoints`, JsonTy.stringify(ckpts))
|
JsonTy.lsWrite(`${pid}-checkpoints`, ckpts)
|
||||||
ckpts = loadPt()
|
ckpts = loadPt()
|
||||||
}
|
}
|
||||||
const restorePt = (pt: Checkpoint) => {
|
const restorePt = (pt: Checkpoint) => {
|
||||||
|
|||||||
+8
-1
@@ -57,7 +57,14 @@ export const JsonTy = {
|
|||||||
a.download = name
|
a.download = name
|
||||||
a.click()
|
a.click()
|
||||||
URL.revokeObjectURL(a.href)
|
URL.revokeObjectURL(a.href)
|
||||||
}
|
},
|
||||||
|
|
||||||
|
lsWrite: (key: string, obj: any) => localStorage.setItem(key, JsonTy.stringify(obj)),
|
||||||
|
lsDefault: (key: string, def: any) => {
|
||||||
|
let v = localStorage.getItem(key)
|
||||||
|
if (!v) localStorage.setItem(key, JsonTy.stringify(v = def))
|
||||||
|
return JsonTy.parse(v!)
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
export const Fmt = {
|
export const Fmt = {
|
||||||
|
|||||||
Reference in New Issue
Block a user