[READ-ONLY] a fast, modern browser for the npm registry
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

fix: rtl issues on large downloads chart (#424)

Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
Co-authored-by: Daniel Roe <daniel@roe.dev>

authored by

Alec Lloyd Probert
autofix-ci[bot]
Daniel Roe
and committed by
GitHub
ed73a8b1 f01da045

+35 -8
+16 -8
app/components/PackageDownloadAnalytics.vue
··· 138 138 color: accent.value, 139 139 }, 140 140 ], 141 - dates: dataset.map(d => `${d.weekStart}\nto ${d.weekEnd}`), 141 + dates: dataset.map(d => 142 + $t('package.downloads.date_range_multiline', { 143 + start: d.weekStart, 144 + end: d.weekEnd, 145 + }), 146 + ), 142 147 } 143 148 } 144 149 if (selectedGranularity === 'daily' && isDailyDataset(dataset)) { ··· 199 204 return a.localeCompare(b) >= 0 ? a : b 200 205 } 201 206 202 - function extractDates(dateLabel: string) { 203 - if (typeof dateLabel !== 'string') return [] 207 + function extractDates(dateLabel: string): [string, string] | null { 208 + const matches = dateLabel.match(/\b(\d{4}(?:-\d{2}-\d{2})?)\b/g) // either yyyy or yyyy-mm-dd 209 + if (!matches) return null 204 210 205 - const parts = dateLabel.trim().split(/\s+/).filter(Boolean) 211 + const first = matches.at(0) 212 + const last = matches.at(-1) 206 213 207 - if (parts.length < 2) return [] 214 + if (!first || !last || first === last) return null 208 215 209 - return [parts[0], parts[parts.length - 1]] 216 + return [first, last] 210 217 } 211 218 212 219 /** ··· 553 560 ? undefined 554 561 : ({ absoluteIndex, side }: { absoluteIndex: number; side: 'left' | 'right' }) => { 555 562 const parts = extractDates(chartData.value.dates[absoluteIndex] ?? '') 556 - return side === 'left' ? parts[0] : parts.at(-1) 563 + if (!parts) return '' 564 + return side === 'left' ? parts[0] : parts[1] 557 565 }, 558 566 highlightColor: colors.value.bgElevated, 559 567 minimap: { ··· 670 678 </div> 671 679 672 680 <ClientOnly v-if="inModal && chartData.dataset"> 673 - <VueUiXy :dataset="chartData.dataset" :config="config"> 681 + <VueUiXy :dataset="chartData.dataset" :config="config" class="[direction:ltr]"> 674 682 <template #menuIcon="{ isOpen }"> 675 683 <span v-if="isOpen" class="i-carbon:close w-6 h-6" aria-hidden="true" /> 676 684 <span v-else class="i-carbon:overflow-menu-vertical w-6 h-6" aria-hidden="true" />
+1
i18n/locales/ar.json
··· 213 213 "downloads": { 214 214 "title": "التنزيلات الأسبوعية", 215 215 "date_range": "من {start} إلى {end}", 216 + "date_range_multiline": "من {start}\nإلى {end}", 216 217 "analyze": "تحليل التنزيلات", 217 218 "modal_title": "التنزيلات", 218 219 "granularity": "مستوى التفصيل",
+1
i18n/locales/de-DE.json
··· 226 226 "downloads": { 227 227 "title": "Wöchentliche Downloads", 228 228 "date_range": "{start} bis {end}", 229 + "date_range_multiline": "{start}\nbis {end}", 229 230 "analyze": "Downloads analysieren", 230 231 "modal_title": "Downloads", 231 232 "granularity": "Granularität",
+1
i18n/locales/en.json
··· 226 226 "downloads": { 227 227 "title": "Weekly Downloads", 228 228 "date_range": "{start} to {end}", 229 + "date_range_multiline": "{start}\nto {end}", 229 230 "analyze": "Analyze downloads", 230 231 "modal_title": "Downloads", 231 232 "granularity": "Granularity",
+1
i18n/locales/es.json
··· 213 213 "downloads": { 214 214 "title": "Descargas Semanales", 215 215 "date_range": "{start} a {end}", 216 + "date_range_multiline": "{start}\na {end}", 216 217 "analyze": "Analizar descargas", 217 218 "modal_title": "Descargas", 218 219 "granularity": "Granularidad",
+1
i18n/locales/fr-FR.json
··· 213 213 "downloads": { 214 214 "title": "Téléchargements hebdomadaires", 215 215 "date_range": "{start} au {end}", 216 + "date_range_multiline": "{start}\nau {end}", 216 217 "analyze": "Analyser les téléchargements", 217 218 "modal_title": "Téléchargements", 218 219 "granularity": "Granularité",
+1
i18n/locales/it-IT.json
··· 213 213 "downloads": { 214 214 "title": "Downloads settimanali", 215 215 "date_range": "{start} a {end}", 216 + "date_range_multiline": "{start}\na {end}", 216 217 "analyze": "Analizza downloads", 217 218 "modal_title": "Downloads", 218 219 "granularity": "Granularità",
+1
i18n/locales/ja-JP.json
··· 213 213 "downloads": { 214 214 "title": "週間ダウンロード数", 215 215 "date_range": "{start} から {end}", 216 + "date_range_multiline": "{start}\nから {end}", 216 217 "analyze": "ダウンロード数を分析", 217 218 "modal_title": "ダウンロード数", 218 219 "granularity": "粒度",
+1
i18n/locales/ru-RU.json
··· 222 222 "downloads": { 223 223 "title": "Загрузки за неделю", 224 224 "date_range": "С {start} по {end}", 225 + "date_range_multiline": "С {start}\nпо {end}", 225 226 "analyze": "Анализировать загрузки", 226 227 "modal_title": "Загрузки", 227 228 "granularity": "Детализация",
+1
i18n/locales/zh-CN.json
··· 226 226 "downloads": { 227 227 "title": "每周下载量", 228 228 "date_range": "{start} 到 {end}", 229 + "date_range_multiline": "{start}\n到 {end}", 229 230 "analyze": "分析下载量", 230 231 "modal_title": "下载量", 231 232 "granularity": "周期",
+1
lunaria/files/ar.json
··· 213 213 "downloads": { 214 214 "title": "التنزيلات الأسبوعية", 215 215 "date_range": "من {start} إلى {end}", 216 + "date_range_multiline": "من {start}\nإلى {end}", 216 217 "analyze": "تحليل التنزيلات", 217 218 "modal_title": "التنزيلات", 218 219 "granularity": "مستوى التفصيل",
+1
lunaria/files/de-DE.json
··· 226 226 "downloads": { 227 227 "title": "Wöchentliche Downloads", 228 228 "date_range": "{start} bis {end}", 229 + "date_range_multiline": "{start}\nbis {end}", 229 230 "analyze": "Downloads analysieren", 230 231 "modal_title": "Downloads", 231 232 "granularity": "Granularität",
+1
lunaria/files/en-US.json
··· 226 226 "downloads": { 227 227 "title": "Weekly Downloads", 228 228 "date_range": "{start} to {end}", 229 + "date_range_multiline": "{start}\nto {end}", 229 230 "analyze": "Analyze downloads", 230 231 "modal_title": "Downloads", 231 232 "granularity": "Granularity",
+1
lunaria/files/es-419.json
··· 213 213 "downloads": { 214 214 "title": "Descargas Semanales", 215 215 "date_range": "{start} a {end}", 216 + "date_range_multiline": "{start}\na {end}", 216 217 "analyze": "Analizar descargas", 217 218 "modal_title": "Descargas", 218 219 "granularity": "Granularidad",
+1
lunaria/files/es-ES.json
··· 213 213 "downloads": { 214 214 "title": "Descargas Semanales", 215 215 "date_range": "{start} a {end}", 216 + "date_range_multiline": "{start}\na {end}", 216 217 "analyze": "Analizar descargas", 217 218 "modal_title": "Descargas", 218 219 "granularity": "Granularidad",
+1
lunaria/files/fr-FR.json
··· 213 213 "downloads": { 214 214 "title": "Téléchargements hebdomadaires", 215 215 "date_range": "{start} au {end}", 216 + "date_range_multiline": "{start}\nau {end}", 216 217 "analyze": "Analyser les téléchargements", 217 218 "modal_title": "Téléchargements", 218 219 "granularity": "Granularité",
+1
lunaria/files/it-IT.json
··· 213 213 "downloads": { 214 214 "title": "Downloads settimanali", 215 215 "date_range": "{start} a {end}", 216 + "date_range_multiline": "{start}\na {end}", 216 217 "analyze": "Analizza downloads", 217 218 "modal_title": "Downloads", 218 219 "granularity": "Granularità",
+1
lunaria/files/ja-JP.json
··· 213 213 "downloads": { 214 214 "title": "週間ダウンロード数", 215 215 "date_range": "{start} から {end}", 216 + "date_range_multiline": "{start}\nから {end}", 216 217 "analyze": "ダウンロード数を分析", 217 218 "modal_title": "ダウンロード数", 218 219 "granularity": "粒度",
+1
lunaria/files/ru-RU.json
··· 222 222 "downloads": { 223 223 "title": "Загрузки за неделю", 224 224 "date_range": "С {start} по {end}", 225 + "date_range_multiline": "С {start}\nпо {end}", 225 226 "analyze": "Анализировать загрузки", 226 227 "modal_title": "Загрузки", 227 228 "granularity": "Детализация",
+1
lunaria/files/zh-CN.json
··· 226 226 "downloads": { 227 227 "title": "每周下载量", 228 228 "date_range": "{start} 到 {end}", 229 + "date_range_multiline": "{start}\n到 {end}", 229 230 "analyze": "分析下载量", 230 231 "modal_title": "下载量", 231 232 "granularity": "周期",