From eb062779dd253d2523b912d78299fb5af6bd3612 Mon Sep 17 00:00:00 2001 From: Miodec Date: Mon, 12 Jul 2021 13:46:34 +0100 Subject: [PATCH] saving burst heatmap state. closes #1614 --- src/js/config.js | 11 +++ src/js/test/test-logic.js | 2 +- src/js/test/test-ui.js | 140 ++++++++++++++++++-------------------- 3 files changed, 79 insertions(+), 74 deletions(-) diff --git a/src/js/config.js b/src/js/config.js index 9b821053f..8b62b5592 100644 --- a/src/js/config.js +++ b/src/js/config.js @@ -125,6 +125,7 @@ let defaultConfig = { monkeyPowerLevel: "off", minBurst: "off", minBurstCustomSpeed: 100, + burstHeatmap: false, }; function isConfigKeyValid(name) { @@ -1548,6 +1549,15 @@ export function setMonkeyPowerLevel(level, nosave) { if (!nosave) saveToLocalStorage(); } +export function setBurstHeatmap(value, nosave) { + if (!value) { + value = false; + } + config.burstHeatmap = value; + TestUI.applyBurstHeatmap(); + if (!nosave) saveToLocalStorage(); +} + export function apply(configObj) { if (configObj == null || configObj == undefined) { Notifications.add("Could not apply config", -1, 3); @@ -1636,6 +1646,7 @@ export function apply(configObj) { setMonkey(configObj.monkey, true); setRepeatQuotes(configObj.repeatQuotes, true); setMonkeyPowerLevel(configObj.monkeyPowerLevel, true); + setBurstHeatmap(configObj.burstHeatmap, true); LanguagePicker.setActiveGroup(); diff --git a/src/js/test/test-logic.js b/src/js/test/test-logic.js index d57958e80..5ba485e5a 100644 --- a/src/js/test/test-logic.js +++ b/src/js/test/test-logic.js @@ -2010,7 +2010,7 @@ export function finish(difficultyFailed = false) { $("#words").empty(); ChartController.result.resize(); - if (TestUI.heatmapEnabled) { + if (Config.burstHeatmap) { TestUI.applyBurstHeatmap(); } $("#testModesNotice").addClass("hidden"); diff --git a/src/js/test/test-ui.js b/src/js/test/test-ui.js index 4b67ded80..8c72ee4de 100644 --- a/src/js/test/test-ui.js +++ b/src/js/test/test-ui.js @@ -790,12 +790,73 @@ export function toggleResultWords() { } } } -export let heatmapEnabled = false; -function toggleBurstHeatmap() { - if (!heatmapEnabled) { - applyBurstHeatmap(); + +export function applyBurstHeatmap() { + if (Config.burstHeatmap) { + $("#resultWordsHistory .heatmapLegend").removeClass("hidden"); + let min = Math.min(...TestStats.burstHistory); + let max = Math.max(...TestStats.burstHistory); + // let step = (max - min) / 5; + // let steps = [ + // { + // val: min, + // class: 'heatmap-0' + // }, + // { + // val: min + (step * 1), + // class: 'heatmap-1' + // }, + // { + // val: min + (step * 2), + // class: 'heatmap-2' + // }, + // { + // val: min + (step * 3), + // class: 'heatmap-3' + // }, + // { + // val: min + (step * 4), + // class: 'heatmap-4' + // }, + // ]; + let median = Misc.median(TestStats.burstHistory); + let adatm = []; + TestStats.burstHistory.forEach((burst) => { + adatm.push(Math.abs(median - burst)); + }); + let step = Misc.mean(adatm); + // let step = Misc.stdDev(TestStats.burstHistory)/2; + let steps = [ + { + val: 0, + class: "heatmap-0", + }, + { + val: median - step * 1.5, + class: "heatmap-1", + }, + { + val: median - step * 0.5, + class: "heatmap-2", + }, + { + val: median + step * 0.5, + class: "heatmap-3", + }, + { + val: median + step * 1.5, + class: "heatmap-4", + }, + ]; + $("#resultWordsHistory .words .word").each((index, word) => { + let wordBurstVal = parseInt($(word).attr("burst")); + let cls = ""; + steps.forEach((step) => { + if (wordBurstVal > step.val) cls = step.class; + }); + $(word).addClass(cls); + }); } else { - //clear all classes $("#resultWordsHistory .heatmapLegend").addClass("hidden"); $("#resultWordsHistory .words .word").removeClass("heatmap-0"); $("#resultWordsHistory .words .word").removeClass("heatmap-1"); @@ -803,73 +864,6 @@ function toggleBurstHeatmap() { $("#resultWordsHistory .words .word").removeClass("heatmap-3"); $("#resultWordsHistory .words .word").removeClass("heatmap-4"); } - heatmapEnabled = !heatmapEnabled; -} - -export function applyBurstHeatmap() { - $("#resultWordsHistory .heatmapLegend").removeClass("hidden"); - let min = Math.min(...TestStats.burstHistory); - let max = Math.max(...TestStats.burstHistory); - // let step = (max - min) / 5; - // let steps = [ - // { - // val: min, - // class: 'heatmap-0' - // }, - // { - // val: min + (step * 1), - // class: 'heatmap-1' - // }, - // { - // val: min + (step * 2), - // class: 'heatmap-2' - // }, - // { - // val: min + (step * 3), - // class: 'heatmap-3' - // }, - // { - // val: min + (step * 4), - // class: 'heatmap-4' - // }, - // ]; - let median = Misc.median(TestStats.burstHistory); - let adatm = []; - TestStats.burstHistory.forEach((burst) => { - adatm.push(Math.abs(median - burst)); - }); - let step = Misc.mean(adatm); - // let step = Misc.stdDev(TestStats.burstHistory)/2; - let steps = [ - { - val: 0, - class: "heatmap-0", - }, - { - val: median - step * 1.5, - class: "heatmap-1", - }, - { - val: median - step * 0.5, - class: "heatmap-2", - }, - { - val: median + step * 0.5, - class: "heatmap-3", - }, - { - val: median + step * 1.5, - class: "heatmap-4", - }, - ]; - $("#resultWordsHistory .words .word").each((index, word) => { - let wordBurstVal = parseInt($(word).attr("burst")); - let cls = ""; - steps.forEach((step) => { - if (wordBurstVal > step.val) cls = step.class; - }); - $(word).addClass(cls); - }); } export function highlightBadWord(index, showError) { @@ -908,7 +902,7 @@ $(".pageTest #copyWordsListButton").click(async (event) => { }); $(".pageTest #toggleBurstHeatmap").click(async (event) => { - toggleBurstHeatmap(); + UpdateConfig.setBurstHeatmap(!Config.burstHeatmap); }); $(document).on("mouseleave", "#resultWordsHistory .words .word", (e) => {