📊 Interactive JavaScript Charts built on SVG
This report summarizes scanner evidence for apexcharts/apexcharts.js, a JavaScript project with 15,174 GitHub stars. SynthScan examined 545,170 lines of code across 3110 source files, recording 683 pattern matches distributed across 9 syntactic categories. The legacy adjusted pattern signal is 4.7 (Low pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 258 finding(s).
Are imports declared and package/API names verified? 176 finding(s).
Are wrappers, guards, and repeated structures necessary? 272 finding(s).
Which changes need focused human review? 683 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 683 distinct pattern matches across 9 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| CRITICAL | tests/unit/facet.spec.js | 53 | chart.w.dom.elWrap.classList.contains('apexcharts-theme-dark'), | CODE |
| CRITICAL | tests/unit/issue-5278-annotations-no-data.spec.js | 44 | const q = (chart, sel) => [...chart.w.globals.dom.baseEl.querySelectorAll(sel)] | CODE |
| CRITICAL | tests/unit/issue-5278-annotations-no-data.spec.js | 186 | const svg = chart.w.globals.dom.baseEl.querySelector('.apexcharts-svg') | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 71 | const line = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 94 | const line = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 118 | const baseLine = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 140 | const offsetLine = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 163 | chart.w.globals.dom.baseEl.querySelector('.custom-xaxis-line') | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 171 | const parent = chart.w.globals.dom.baseEl.querySelector('.apexcharts-svg') | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 205 | const rects = chart.w.globals.dom.baseEl.querySelectorAll( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 227 | const rect = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 250 | const rect = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 274 | chart.w.globals.dom.baseEl.querySelector('.custom-xaxis-rect') | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 297 | const label = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 318 | const topLabel = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 336 | const bottomLabel = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 369 | const label = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 397 | const label = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 419 | const label = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 441 | const group = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 460 | const lines = chart.w.globals.dom.baseEl.querySelectorAll( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 478 | const lines = chart.w.globals.dom.baseEl.querySelectorAll( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 494 | const group = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 527 | const group = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 561 | const group = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 577 | const parent = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 610 | const line = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 629 | const labels = chart.w.globals.dom.baseEl.querySelectorAll( | CODE |
| CRITICAL | tests/unit/xaxis-annotations.spec.js | 654 | const line = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/annotation-helpers.spec.js | 66 | const xAnno = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/annotation-helpers.spec.js | 109 | const annoEl = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/annotation-helpers.spec.js | 143 | const annoEl = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/canvas-bar-tooltip.spec.js | 920 | const read = c.w.globals.tooltip.intersect.getPaintedMark( | CODE |
| CRITICAL | tests/unit/legend-show-for-null-series.spec.js | 29 | ...chart.w.globals.dom.baseEl.querySelectorAll('.apexcharts-legend-series'), | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 42 | const marker = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 67 | const marker = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 87 | const markers = chart.w.globals.dom.baseEl.querySelectorAll( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 123 | const label = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 146 | const labels = chart.w.globals.dom.baseEl.querySelectorAll( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 171 | const label = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 204 | const group = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 231 | const groups = chart.w.globals.dom.baseEl.querySelectorAll( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 265 | const img = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 292 | const images = chart.w.globals.dom.baseEl.querySelectorAll( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 321 | const marker = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 336 | chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 340 | chart.w.globals.dom.baseEl.querySelector('.apexcharts-annotation-tooltip') | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 508 | const seriesTT = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 560 | const parent = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 594 | const parent = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/points-annotations.spec.js | 626 | const group = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/canvas-renderer-updates.spec.js | 179 | chart.w.dom.Paper.node.dispatchEvent( | CODE |
| CRITICAL | tests/unit/category-axis-update.spec.js | 37 | const names = (c) => [1, 2, 3].map((i) => c.w.config.xaxis.labels.formatter(i)) | CODE |
| CRITICAL | tests/unit/issue-5251-autoscale-subpixel.spec.js | 146 | brush.w.config.chart.events.selection(brush, { | CODE |
| CRITICAL | tests/unit/yaxis-annotations.spec.js | 38 | const line = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/yaxis-annotations.spec.js | 62 | const el = chart.w.globals.dom.baseEl.querySelector('.my-yaxis-line') | CODE |
| CRITICAL | tests/unit/yaxis-annotations.spec.js | 80 | const lines = chart.w.globals.dom.baseEl.querySelectorAll( | CODE |
| CRITICAL | tests/unit/yaxis-annotations.spec.js | 110 | const rect = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/yaxis-annotations.spec.js | 133 | const rect = chart.w.globals.dom.baseEl.querySelector( | CODE |
| CRITICAL | tests/unit/yaxis-annotations.spec.js | 156 | const el = chart.w.globals.dom.baseEl.querySelector('.my-yaxis-rect') | CODE |
| 90 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tsconfig.json | 3 | // ── Validation mode (no output files) ───────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tsconfig.json | 9 | // ── Strictness — full strict mode ──────────────────── | COMMENT |
| MEDIUM⚡ | tsconfig.json | 12 | // ── Module resolution ────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tsconfig.json | 17 | // ── Type resolution ──────────────────────────────────────────────────────── | COMMENT |
| MEDIUM⚡ | tsconfig.json | 23 | // ── Paths ────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 20 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 23 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 49 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 51 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 94 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 96 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 159 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 161 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 206 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 208 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 269 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-animation.spec.js | 271 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-math.spec.js | 11 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-math.spec.js | 13 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-math.spec.js | 93 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-math.spec.js | 95 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-math.spec.js | 228 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/svg-math.spec.js | 230 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 5 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 16 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 30 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 32 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 135 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 137 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 181 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 183 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 250 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 252 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 297 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 302 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 531 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/timescale.spec.js | 536 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/monotone-cubic.spec.js | 11 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/monotone-cubic.spec.js | 13 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/monotone-cubic.spec.js | 78 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/monotone-cubic.spec.js | 80 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/monotone-cubic.spec.js | 131 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/monotone-cubic.spec.js | 133 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/monotone-cubic.spec.js | 184 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/monotone-cubic.spec.js | 186 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/license-gating.spec.js | 82 | // ── predicate: "in use", not "bundled" ──────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/license-gating.spec.js | 153 | // ── watermark presence on render ────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/license-gating.spec.js | 208 | // ── key precedence + late licensing ─────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/license-gating.spec.js | 240 | // ── async verdict reaches charts without a chart.id ─────────────────────── | COMMENT |
| MEDIUM | tests/unit/license-gating.spec.js | 307 | // ── plan entitlement: premium features need a Premium-or-above license ───── | COMMENT |
| MEDIUM | tests/unit/license-gating.spec.js | 408 | // ── SSR / no-DOM + ordering ─────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/license-gating.spec.js | 427 | // ── one state across module copies ──────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/log-axis-issue-repros.spec.js | 3 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/log-axis-issue-repros.spec.js | 10 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/log-axis-issue-repros.spec.js | 64 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/logarithmic-scale.spec.js | 17 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/logarithmic-scale.spec.js | 19 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/logarithmic-scale.spec.js | 116 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/logarithmic-scale.spec.js | 122 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| MEDIUM | tests/unit/logarithmic-scale.spec.js | 253 | // ───────────────────────────────────────────────────────────────────────────── | COMMENT |
| 189 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | README.md | 181 | import 'apexcharts/line' | COMMENT |
| LOW | README.md | 201 | // import 'apexcharts/features/facet' // design tokens + OS themes | COMMENT |
| LOW | tests/unit/collapsed-series-x.spec.js | 1 | import { describe, it, expect } from 'vitest' | COMMENT |
| LOW | tests/unit/config-hidden-series-baseline.spec.js | 1 | import { describe, it, expect } from 'vitest' | COMMENT |
| LOW | tests/unit/timescale.spec.js | 1 | import TimeScale from '../../src/modules/TimeScale' | COMMENT |
| LOW | tests/unit/border-radius-assignment.spec.js | 1 | import Helpers from '../../src/charts/common/bar/Helpers.js' | COMMENT |
| LOW | tests/unit/license-gating.spec.js | 241 | // | COMMENT |
| LOW | tests/unit/axis-scale-invariants.spec.js | 1 | import { createChartWithOptions } from './utils/utils.js' | COMMENT |
| LOW | tests/unit/axis-scale-invariants.spec.js | 261 | expect(pts[i].y).toBeCloseTo(linearPixel(v, min, max, h), 1) | COMMENT |
| LOW | tests/unit/bar-datalabels-update-reveal.spec.js | 1 | import { describe, it, expect } from 'vitest' | COMMENT |
| LOW | tests/unit/yaxis-more-axes-than-series.spec.js | 1 | import { createChartWithOptions } from './utils/utils.js' | COMMENT |
| LOW | tests/unit/stacked-100-data-labels.spec.js | 1 | import ApexCharts from '../../src/entries/standard.js' | COMMENT |
| LOW | tests/types/consumer-patterns.ts | 321 | void html; void svg; void hydrated; void all; void done | COMMENT |
| LOW | tests/interaction/specs/morph-summary.spec.js | 481 | const tip = Math.min(spans[0], spans[spans.length - 1]) | COMMENT |
| LOW | tests/interaction/specs/stacked-ragged-x.spec.js | 361 | }) => { | COMMENT |
| LOW | samples/vanilla-js/misc/chart-type-morph.html | 161 | // cards and the wiring for each. Every card holds one live chart and every | COMMENT |
| LOW | samples/vanilla-js/unit/life-expectancy-swarm.html | 101 | // A beeswarm: one dot per country, placed on a real life-expectancy axis and | COMMENT |
| LOW | samples/vanilla-js/unit/brand-logo-story.html | 241 | </script> | COMMENT |
| LOW | samples/vanilla-js/unit/brand-logo-story.html | 261 | // 1. Overlapping subpaths UNION. The cup, its elliptical rim, its foot, the | COMMENT |
| LOW | samples/vanilla-js/unit/city-bubbles.html | 101 | // A 2D bubble scatter: each bubble is a city, placed by average income (x) and | COMMENT |
| LOW | samples/vanilla-js/unit/logo-forge.html | 321 | </script> | COMMENT |
| LOW | samples/vanilla-js/unit/logo-forge.html | 341 | // * every drawable SVG element is an SVGGeometryElement, so it answers | COMMENT |
| LOW | samples/vanilla-js/unit/logo-forge.html | 421 | // One `d` can hold several subpaths (the ring and its counter, a dotted | COMMENT |
| LOW | samples/vanilla-js/unit/water-silhouette.html | 81 | <script src="../../../dist/unit.js"></script> | COMMENT |
| LOW | samples/vanilla-js/waffle/urban-small-multiples.html | 101 | // Small-multiple waffles: ONE mini-waffle per country, each a 10x10 grid where | COMMENT |
| LOW | samples/vanilla-js/boxPlot/same-box-different-data.html | 121 | } | COMMENT |
| LOW | samples/vanilla-js/trellis/traffic-by-country.html | 81 | <script src="../../../dist/features/trellis.js"></script> | COMMENT |
| LOW | samples/vanilla-js/trellis/department-by-quarter.html | 61 | // Replace Math.random() with a pseudo-random number generator to get reproducible results in e2e tests | COMMENT |
| LOW | samples/vanilla-js/trellis/stock-performance-grid.html | 61 | // Replace Math.random() with a pseudo-random number generator to get reproducible results in e2e tests | COMMENT |
| LOW | samples/vanilla-js/trellis/distribution-by-cohort.html | 61 | // Replace Math.random() with a pseudo-random number generator to get reproducible results in e2e tests | COMMENT |
| LOW | samples/vue/misc/chart-type-morph.html | 161 | <script> | COMMENT |
| LOW | samples/vue/unit/life-expectancy-swarm.html | 101 | <script src="../../../dist/unit.js"></script> | COMMENT |
| LOW | samples/vue/unit/brand-logo-story.html | 241 | return (_seed - 1) / 2147483646 | COMMENT |
| LOW | samples/vue/unit/brand-logo-story.html | 261 | // like this authorable in pieces rather than as one traced contour: | COMMENT |
| LOW | samples/vue/unit/city-bubbles.html | 101 | <script src="../../../dist/unit.js"></script> | COMMENT |
| LOW | samples/vue/unit/logo-forge.html | 321 | return (_seed - 1) / 2147483646 | COMMENT |
| LOW | samples/vue/unit/logo-forge.html | 341 | // this hands the problem to the geometry engine already in the browser: | COMMENT |
| LOW | samples/vue/unit/logo-forge.html | 421 | var k2 = m ? Math.sqrt(Math.abs(m.a * m.d - m.b * m.c)) || 1 : 1 | COMMENT |
| LOW | samples/vue/waffle/urban-small-multiples.html | 101 | <script src="../../../dist/unit.js"></script> | COMMENT |
| LOW | samples/vue/boxPlot/same-box-different-data.html | 121 | _seed = (_seed * 16807) % 2147483647 | COMMENT |
| LOW | samples/vue/trellis/traffic-by-country.html | 81 | </script> | COMMENT |
| LOW | samples/vue/trellis/task-mix-by-team.html | 81 | // Eight teams, the same seven tasks in the same order in every panel, one | COMMENT |
| LOW | samples/vue/histogram/comparing-distributions.html | 81 | // Replace Math.random() with a pseudo-random number generator to get reproducible results in e2e tests | COMMENT |
| LOW | samples/source/misc/chart-type-morph.xml | 141 | // engine rather than a rebuild. | COMMENT |
| LOW | samples/source/misc/chart-type-morph.xml | 181 | } | COMMENT |
| LOW | samples/source/unit/water-silhouette.xml | 61 | // Shared by the vanilla-js, React and Vue builds. | COMMENT |
| LOW | samples/source/unit/water-silhouette.xml | 101 | // The whole extension point: objects in, positions out. No animation, no | COMMENT |
| LOW | samples/source/unit/brand-logo-story.xml | 221 | <scripts> | COMMENT |
| LOW | samples/source/unit/brand-logo-story.xml | 241 | // saucer and the handle are five separate shapes that simply overlap, and | COMMENT |
| LOW | samples/source/unit/logo-forge.xml | 301 | <script src="../../../dist/unit-shapes.js"></script> | COMMENT |
| LOW | samples/source/unit/logo-forge.xml | 321 | // come back already flattened. | COMMENT |
| LOW | samples/source/boxPlot/same-box-different-data.xml | 101 | <scripts> | COMMENT |
| LOW | samples/source/heatmap/calendar-heatmap.xml | 1 | <title>Calendar Heatmap</title> | COMMENT |
| LOW | samples/source/trellis/stock-performance-grid.xml | 41 | background: #fef3c7; | COMMENT |
| LOW | samples/source/trellis/traffic-by-country.xml | 61 | // Twenty countries, sixty days of sessions each, on ONE shared y scale, so | COMMENT |
| LOW | samples/react/misc/chart-type-morph.html | 161 | <script src="../../../dist/unit.js"></script> | COMMENT |
| LOW | samples/react/unit/brand-logo-story.html | 261 | // in a 0-100 box. | COMMENT |
| LOW | samples/react/unit/logo-forge.html | 341 | // four deep, `transform="matrix(...)"` on half of them, circles and rects | COMMENT |
| LOW | samples/react/unit/logo-forge.html | 421 | var n = Math.max(10, Math.round((g.len / totalLen) * SAMPLE_BUDGET)) | COMMENT |
| LOW | samples/react/waffle/urban-small-multiples.html | 101 | } | COMMENT |
| 159 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | types/apexcharts.d.ts | 1515 | * Missing (row, column) combinations: 'placeholder' (default) mounts a | COMMENT |
| LOW | types/apexcharts.d.ts | 1520 | emptyPanels?: 'placeholder' | 'skip' | 'hide' | CODE |
| LOW | tests/unit/trellis-2d.spec.js | 172 | it("'placeholder' (default) mounts a REAL panel for the missing combination", async () => { | CODE |
| LOW | tests/interaction/specs/trellis.spec.js | 931 | * in 'placeholder' mode (the placeholder is a real panel on the same | COMMENT |
| LOW | tests/interaction/specs/trellis.spec.js | 937 | test("missing combination stays pixel-aligned in 'placeholder' mode", async ({ | CODE |
| LOW | samples/vanilla-js/trellis/department-by-quarter.html | 78 | // `emptyPanels: 'placeholder'` keeps the slot as a REAL panel on the same | COMMENT |
| LOW | samples/vanilla-js/trellis/department-by-quarter.html | 146 | <code>emptyPanels</code>: <code>'placeholder'</code> (default) mounts a | CODE |
| LOW | …les/vanilla-js/trellis/department-by-quarter.code.json | 10 | "code": "// Four departments by four quarters: the 2-D grid IS the shape of the\n// question. Reading across a row | CODE |
| LOW | …les/vanilla-js/trellis/department-by-quarter.code.json | 15 | "code": "<!DOCTYPE html>\n<html>\n <head>\n <title>Trellis Chart - Department by Quarter (2-D Grid)</title>\n | CODE |
| LOW | samples/vue/trellis/department-by-quarter.html | 80 | // `emptyPanels: 'placeholder'` keeps the slot as a REAL panel on the same | COMMENT |
| LOW | samples/vue/trellis/department-by-quarter.html | 151 | <code>emptyPanels</code>: <code>'placeholder'</code> (default) mounts a | CODE |
| LOW | samples/vue/trellis/department-by-quarter.code.json | 10 | "code": "<template>\n <div>\n <div class=\"wrap\">\n <h1>Delivery hours, department by quarter</h1>\n | CODE |
| LOW | samples/source/trellis/department-by-quarter.xml | 56 | // `emptyPanels: 'placeholder'` keeps the slot as a REAL panel on the same | COMMENT |
| LOW | samples/source/trellis/department-by-quarter.xml | 124 | <code>emptyPanels</code>: <code>'placeholder'</code> (default) mounts a | CODE |
| LOW | samples/react/trellis/department-by-quarter.html | 83 | // `emptyPanels: 'placeholder'` keeps the slot as a REAL panel on the same | COMMENT |
| LOW | samples/react/trellis/department-by-quarter.html | 233 | <code>emptyPanels</code>: <code>'placeholder'</code> (default) mounts | CODE |
| LOW | samples/react/trellis/department-by-quarter.code.json | 10 | "code": "import React from 'react'\nimport ReactApexChart from 'react-apexcharts'\nimport './styles.css'\n\nimport | CODE |
| LOW | src/modules/settings/Options.js | 302 | // Missing (row, column) combinations: 'placeholder' mounts a real | COMMENT |
| LOW | src/modules/settings/Options.js | 306 | emptyPanels: 'placeholder', | CODE |
| LOW | src/modules/trellis/TrellisSplit.js | 295 | * data form: the 'placeholder' emptyPanels mode mounts a REAL panel with | COMMENT |
| LOW | src/modules/trellis/Trellis.js | 838 | const emptyMode = this.cfg.emptyPanels || 'placeholder' | CODE |
| LOW | src/modules/trellis/Trellis.js | 891 | // Empty combinations (P4): 'placeholder' mounts a REAL panel with an | COMMENT |
| LOW | src/modules/trellis/Trellis.js | 896 | const noMount = slice.empty && emptyMode !== 'placeholder' | CODE |
| LOW | src/modules/trellis/Trellis.js | 985 | // Empty combination under 'placeholder' (P4): a real panel carrying one | COMMENT |
| LOW | src/modules/trellis/Trellis.js | 990 | slice.empty && (this.cfg.emptyPanels || 'placeholder') === 'placeholder' | CODE |
| LOW | src/assets/apexcharts.css | 1509 | /* Empty (row, column) combinations. 'placeholder' keeps a REAL panel with a | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tests/interaction/specs/tooltip-short-plot.spec.js | 1126 | function expectTallPlotNoRoomBesideRow(t, row, label) { | CODE |
| LOW | samples/vanilla-js/scatter/scatter-datetime.code.json | 8 | "code": "/*\n// this function will generate output in this format\n// data = [\n [timestamp, 23],\n [timesta | CODE |
| LOW | samples/vanilla-js/scatter/scatter-datetime.html | 52 | function generateDayWiseTimeSeries(baseval, count, yrange) { | CODE |
| LOW | …mples/vanilla-js/dashboards/realtime/assets/scripts.js | 61 | function generateMinuteWiseTimeSeries(baseval, count, yrange) { | CODE |
| LOW | …illa-js/candlestick/candlestick-parsing-data.code.json | 8 | "code": "// Seeded PRNG so the generated candles are identical on every load (stable\n// snapshots); the point of | CODE |
| LOW | …s/vanilla-js/candlestick/candlestick-parsing-data.html | 93 | function generateSingleCandlestick( | CODE |
| LOW | samples/vue/scatter/scatter-datetime.code.json | 8 | "code": "<template>\n <div>\n <div id=\"chart\">\n <apexchart\n type=\"scatter\"\n height=\ | CODE |
| LOW | samples/vue/scatter/scatter-datetime.html | 54 | function generateDayWiseTimeSeries(baseval, count, yrange) { | CODE |
| LOW | …les/vue/candlestick/candlestick-parsing-data.code.json | 8 | "code": "<template>\n <div>\n <div id=\"chart\">\n <apexchart\n type=\"candlestick\"\n heig | CODE |
| LOW | samples/vue/candlestick/candlestick-parsing-data.html | 95 | function generateSingleCandlestick( | CODE |
| LOW | samples/source/scatter/scatter-datetime.xml | 31 | function generateDayWiseTimeSeries(baseval, count, yrange) { | CODE |
| LOW | samples/source/dashboards/realtime/assets/scripts.js | 61 | function generateMinuteWiseTimeSeries(baseval, count, yrange) { | CODE |
| LOW | samples/source/candlestick/candlestick-parsing-data.xml | 66 | function generateSingleCandlestick(date, previousClose, minPrice = 120, maxPrice = 180) { | CODE |
| LOW | samples/react/scatter/scatter-datetime.code.json | 8 | "code": "import React from 'react'\nimport ReactApexChart from 'react-apexcharts'\nimport './styles.css'\n\n/*\n// | CODE |
| LOW | samples/react/scatter/scatter-datetime.html | 57 | function generateDayWiseTimeSeries(baseval, count, yrange) { | CODE |
| LOW | …s/react/candlestick/candlestick-parsing-data.code.json | 8 | "code": "import React from 'react'\nimport ReactApexChart from 'react-apexcharts'\nimport './styles.css'\n\n// See | CODE |
| LOW | samples/react/candlestick/candlestick-parsing-data.html | 98 | function generateSingleCandlestick( | CODE |
| LOW | src/renderers/Renderer.js | 115 | export function hasCanvasUnsupportedFeature(w) { | CODE |
| LOW | src/modules/SeriesTransformRegistry.js | 73 | export function unregisterSeriesTransform(name) { | CODE |
| LOW | src/modules/Series.js | 115 | function iterateOnAllCollapsedSeries(series) { | CODE |
| LOW | src/modules/tooltip/placement.js | 532 | function establishesFixedContainingBlock(cs) { | CODE |
| LOW | src/modules/license/LicenseEnforcer.js | 93 | export function markPerspectivesTokenDecoded() { | CODE |
| LOW | src/modules/license/LicenseEnforcer.js | 407 | export function reevaluateLicenseAcrossCharts() { | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/unit/responsive.spec.js | 177 | // Step 1: Activate a breakpoint (viewport < 1024) | COMMENT |
| LOW⚡ | tests/unit/responsive.spec.js | 184 | // Step 2: Resize above the breakpoint (viewport > 1024) | COMMENT |
| LOW⚡ | tests/unit/responsive.spec.js | 322 | // Step 1: Activate breakpoint | COMMENT |
| LOW⚡ | tests/unit/responsive.spec.js | 328 | // Step 2: Simulate series update (user calls updateSeries) | COMMENT |
| LOW⚡ | tests/unit/responsive.spec.js | 331 | // Step 3: Resize above breakpoint — config resets but series should be preserved | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW⚡ | tests/unit/responsive.spec.js | 177 | // Step 1: Activate a breakpoint (viewport < 1024) | COMMENT |
| LOW⚡ | tests/unit/responsive.spec.js | 184 | // Step 2: Resize above the breakpoint (viewport > 1024) | COMMENT |
| LOW⚡ | tests/unit/responsive.spec.js | 322 | // Step 1: Activate breakpoint | COMMENT |
| LOW⚡ | tests/unit/responsive.spec.js | 328 | // Step 2: Simulate series update (user calls updateSeries) | COMMENT |
| LOW⚡ | tests/unit/responsive.spec.js | 331 | // Step 3: Resize above breakpoint — config resets but series should be preserved | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/unit/trellis-p3.spec.js | 2 | * Trellis (#22, P3) in jsdom: scoped annotations, grid-tooltip scaffolding, | COMMENT |
| MEDIUM | tests/interaction/specs/null-segment-paths.spec.js | 174 | await boot({ points: 10 }) // page scaffold + the library | CODE |
| MEDIUM | tests/interaction/specs/trellis.spec.js | 567 | // The scaffold is complete up front: every cell and header exists. | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | …es/vue/line/line-with-annotations-zoom-level.code.json | 10 | "code": "<template>\n <div>\n <div id=\"chart-zoomedchart\">\n <apexchart\n type=\"line\"\n | CODE |
| MEDIUM | src/modules/MorphTypeChange.js | 1663 | // robust to future selector changes. | COMMENT |
| MEDIUM | src/modules/tooltip/Intersect.js | 136 | // for SVG read the rendered <rect> (robust under any group transform). | COMMENT |