MCPcopy
hub / github.com/npmx-dev/npmx.dev / createAltTextForVersionsBarChart

Function createAltTextForVersionsBarChart

app/utils/charts.ts:577–626  ·  view source on GitHub ↗
({
  dataset,
  config,
}: AltCopyArgs<VersionsBarDataset, VersionsBarConfig>)

Source from the content-addressed store, hash-verified

575
576// Used for VersionDistribution.vue
577export function createAltTextForVersionsBarChart({
578 dataset,
579 config,
580}: AltCopyArgs<VersionsBarDataset, VersionsBarConfig>) {
581 if (!dataset) return ''
582
583 const series = dataset.bars[0]?.series ?? []
584 const versions = series.map((value, index) => ({
585 index,
586 name: config.datapointLabels[index] ?? '-',
587 rawDownloads: value ?? 0,
588 downloads: config.numberFormatter(value ?? 0),
589 }))
590
591 const versionWithMaxDownloads =
592 versions.length > 0
593 ? versions.reduce((max, current) => (current.rawDownloads > max.rawDownloads ? current : max))
594 : undefined
595
596 const per_version_analysis = versions
597 .toReversed()
598 .filter(v => v.index !== versionWithMaxDownloads?.index)
599 .map(v =>
600 config.$t(`package.versions.copy_alt.per_version_analysis`, {
601 version: v?.name ?? '-',
602 downloads: v?.downloads ?? '-',
603 }),
604 )
605 .join(', ')
606
607 const semver_grouping_mode =
608 config.semverGroupingMode === 'major'
609 ? config.$t('package.versions.grouping_major')
610 : config.$t('package.versions.grouping_minor')
611
612 const altText = `${config.$t('package.versions.copy_alt.general_description', {
613 package_name: dataset?.bars[0]?.name ?? '-',
614 versions_count: versions?.length,
615 semver_grouping_mode: semver_grouping_mode.toLocaleLowerCase(),
616 first_version: versions[0]?.name ?? '-',
617 last_version: versions.at(-1)?.name ?? '-',
618 date_range_label: config.dateRangeLabel ?? '-',
619 max_downloaded_version: versionWithMaxDownloads?.name ?? '-',
620 max_version_downloads: versionWithMaxDownloads?.downloads ?? '-',
621 per_version_analysis,
622 watermark: config.$t('package.trends.copy_alt.watermark'),
623 })}`
624
625 return altText
626}
627
628export async function copyAltTextForVersionsBarChart({
629 dataset,

Callers 2

charts.spec.tsFile · 0.90

Calls

no outgoing calls

Tested by

no test coverage detected