|
83 | 83 | import Plotly from 'plotly.js/lib/core' |
84 | 84 | import heatmap from 'plotly.js/lib/heatmap' |
85 | 85 | import scatter from 'plotly.js/lib/scatter' |
86 | | - import { getTrialDataCached } from '@/plugins/datastore' |
| 86 | + import { getTrialDataCached, trialTraitStats } from '@/plugins/datastore' |
87 | 87 | import { coreStore } from '@/stores/app' |
88 | 88 | import { CellCategory, TraitDataType, type Measurement } from '@/plugins/types/gridscore' |
89 | 89 | import { categoricalColors, invertHex, toCssNamedColors } from '@/plugins/color' |
|
92 | 92 | import TraitSelect from '@/components/trait/TraitSelect.vue' |
93 | 93 | import { mdiAlert, mdiInformation, mdiLandFields } from '@mdi/js' |
94 | 94 | import { getDateTSIndependent, getI18nParams } from '@/plugins/formatting' |
95 | | - import { calculateTraitStatsIndividual, createDynamicQuantiles, isSuspicious } from '@/plugins/stats' |
| 95 | + import { isSuspicious } from '@/plugins/stats' |
96 | 96 |
|
97 | 97 | // Only register the chart types we're actually using to reduce the final bundle size |
98 | 98 | Plotly.register([ |
|
286 | 286 | } |
287 | 287 | } |
288 | 288 |
|
289 | | - if (isNumericOrDate.value && store.storeSuspiciousDataPointHighlight) { |
290 | | - if (highlightSus.value) { |
291 | | - trait.suspiciousChecker = createDynamicQuantiles() |
292 | | - const timepoint = (timepoints.value.length > 0 && trait.allowRepeats) ? timepoints.value[currentTimepoint.value] : undefined |
293 | | - calculateTraitStatsIndividual(trait, trialData, timepoint, v => { |
294 | | - if (trait.dataType === TraitDataType.date) { |
295 | | - return (new Date(v).getTime() - minDate.getTime()) / (1000 * 60 * 60 * 24) |
296 | | - } else { |
297 | | - return +v |
298 | | - } |
299 | | - }) |
300 | | - } else { |
301 | | - delete trait.suspiciousChecker |
302 | | - } |
303 | | - } |
304 | | -
|
305 | 289 | const catColors = ((trait.dataType === TraitDataType.categorical && restrictions) ? restrictions.categories : []) || [] |
306 | 290 | const colorMap = toCssNamedColors(catColors) |
307 | 291 | const allValidNamedColors = Object.keys(colorMap).length === catColors.length |
|
341 | 325 | : `${t('tooltipChartHeatmapRow', i18nParams.value)}: %{y}<br>${t('tooltipChartHeatmapColumn', i18nParams.value)}: %{x}<br>${t('tooltipChartHeatmapValue')}: %{z}<extra>%{text}</extra>`, |
342 | 326 | }] |
343 | 327 |
|
344 | | - if (store.storeSuspiciousDataPointHighlight && trait.suspiciousChecker && trait.suspiciousChecker.validRangeInfo?.isReady) { |
| 328 | + const traitStats = trialTraitStats.value[trait.id || ''] |
| 329 | +
|
| 330 | + if (traitStats && store.storeSuspiciousDataPointHighlight && traitStats.suspiciousChecker && traitStats.suspiciousChecker.validRangeInfo?.isReady) { |
| 331 | + console.log(traitStats) |
345 | 332 | const susDots = { |
346 | 333 | x: [] as number[], |
347 | 334 | y: [] as number[], |
|
356 | 343 | for (let column = 0; column < compProps.trial.layout.columns; column++) { |
357 | 344 | const v = z[row]?.[column] |
358 | 345 |
|
359 | | - if (v !== undefined && v !== null && isSuspicious(trait.suspiciousChecker, +v)) { |
| 346 | + if (v !== undefined && v !== null && isSuspicious(traitStats.suspiciousChecker, trait.dataType === TraitDataType.date ? (+v * (1000 * 60 * 60 * 24)) : +v)) { |
360 | 347 | susDots.x.push(column + 1) |
361 | 348 | susDots.y.push(row + 1) |
362 | 349 | } |
|
0 commit comments