[+] Persistent timer

This commit is contained in:
2024-12-19 15:46:42 -05:00
parent be54c34450
commit f2c2a9ebb6
2 changed files with 14 additions and 4 deletions
+6 -3
View File
@@ -42,15 +42,18 @@
let [editMode, dragging, colorfulCross] = [params.has('edit'), false, false]
const modes = ['line', 'mask', 'color']
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)
// Checkpoints
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()
const savePt = (fn: () => any) => () => { fn()
localStorage.setItem(`${pid}-checkpoints`, JsonTy.stringify(ckpts))
JsonTy.lsWrite(`${pid}-checkpoints`, ckpts)
ckpts = loadPt()
}
const restorePt = (pt: Checkpoint) => {
+8 -1
View File
@@ -57,7 +57,14 @@ export const JsonTy = {
a.download = name
a.click()
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 = {