组件/MonoChart

MonoChart

30 种圆角单色图表与真实数据驱动的 GitHub 活动日历。

自 0.6.3BETA

当前组件文档正在开发中

该页面正在持续迁移,示例与 API 可能会继续调整。

概述

TxMonoChart 使用原生 SVG、现有图表比例尺、d3 曲线、Sankey 布局与 --tx-chart-* 主题。没有 React、Recharts 或 ECharts 运行时。所有数值由 data 提供;缺少输入时呈现空状态,不生成虚构业务数据。活动矩阵保留绿色、蓝色、紫色强调色,其余图形跟随宿主单色墨色。

悬停图形即可读取真实数值。聚焦 SVG 后,用方向键、Home、End 检查数据,Enter 或空格触发 select,Escape 清除读数。环图与径向图例也支持键盘。仓库展开使用原生按钮、aria-expanded 和收起时的 inert 列表。中心值优先显示当前悬停片段,否则显示调用方指标或数据计算值。

用法

目录变体与数据契约

演示逐个渲染原始目录 ID,切换实际传入的数据集,并提供来源已有的全部控件。筛选只改变展示的示例,不把不同类型映射为同一幅图。

完整 Mono 图表目录

30 个原始变体、仓库展开、真实来源加载、配色控件与日期筛选。

示例加载中...
原始变体 ID输入字段独立渲染与交互
mono-activity-greencontributions绿色七日列、月份标题、强度刻度与每日读数。
mono-activity-bluecontributions蓝色活动强调色,使用同一真实日历契约。
mono-activity-purplecontributions紫色活动强调色,使用同一真实日历契约。
mono-rounded-lineseries、categories?单调样条、圆端帽、节点、次级虚线;单组/双组切换。
mono-rounded-barseries、categories?分组圆角列柱或水平行条;列/行切换。
mono-rounded-areaseries、categories?渐变面积与圆角边界;单调/自然曲线切换。
mono-rounded-donutitems按数值比例分段的环、端帽间隙、图例与悬停中心值。
mono-rounded-composedseries、categories?第一组渲染圆角柱,后续组叠加曲线;曲线开关。
mono-rounded-scatterpoints独立数值 X/Y 坐标、Z 加权实心节点与悬停虚线十字。
mono-rounded-candlestickcandles真实 OHLC 范围、圆端帽最高/最低影线、上涨实心与下跌空心实体。
mono-rounded-kpiseries、metric?、metricLabel?、change?调用方指标与变化文案,内嵌渐变微曲线。
mono-rounded-pyramiditems居中圆角层级、数值比例宽度与透明度层次。
mono-rounded-radial-groupitems多层同心 180 度进度弧与圆端帽。
mono-rounded-gauge-arcitems[0]240 度仪表、剩余轨道与中心值。
mono-rounded-bulletitems实际值圆条、最大值轨道与独立目标标记。
mono-rounded-sankeynodes、linksd3 计算路由、流量加权圆角通道与节点读数。
mono-rounded-stepseries、categories?后阶梯路径、圆角连接与级别节点。
mono-rounded-stacked-barseries、categories?正负值堆叠、单色透明度分层与圆角外端。
mono-rounded-radaritems数值多边形网、各轴指标、圆角连接与节点读数。
mono-rounded-radial-gaugeitems从左侧开始的完整同心利用率环。
mono-rounded-funnelitems按输入顺序排列的水平阶段圆条,长度按值缩放。
mono-rounded-heatmapmatrix、categories?圆角矩阵单元格、真实密度着色与单元格读数。
mono-rounded-sparklineseries独立遥测行、微型曲线与每组指标文本。
mono-rounded-bubblepoints数值分布、按 Z 缩放的圆面积与空心/半透明气泡。
mono-rounded-treemaptree 或 items加权二分分配块、嵌套子节点、圆角留白与块读数。
mono-rounded-streamseries、categories?独立叠加的自然曲线渐变流波,不是柱图/折线别名。
mono-rounded-meteritems[0]180 度仪表、独立轨道与中心值。
mono-rounded-waterfallwaterfall顺序正负增量、可选显式基线/合计柱与连接水平线。
mono-rounded-polaritems从顶部开始的 360 度圆角径向带。
mono-rounded-rangeranges真实最小/最大值浮动范围带与上下曲线边界。

来源额外能力

github-activity 保留额外的 GitHubActivity 日历:按宽度适配最近列、可调单元格尺寸与月份窗口、月份标题、单色或四/五级强度色、年份信息、叠放仓库头像,以及受控/非受控仓库展开。传入 data.contributions 与 data.repos 即可使用自己的来源;显式空数组保持为空。

需要真实公开数据时传入 username。缺少的活动/仓库字段通过共享网络客户端从上游公开日历接口与 GitHub 公开事件 API 加载,沿用同一个取消信号,不嵌入凭据。activityLoader(username, signal) 可替换为代理或认证来源。失败触发 error 并显示可配置重试状态,不回退为生成数据。来源改变、离屏暂停、失活和卸载都会取消请求,旧响应不能覆盖新来源。

periods 可以选择 periodData 数据集(与 data 浅合并),也可以指定包含边界的数值/ISO 日期范围。范围筛选系列点、类别、蜡烛、范围带和贡献日期。只有标签、没有对应数据或范围的周期只发出选择事件,不会凭空创造时间窗口。演示中的日期筛选真正移除数据点,数据源切换则替换全部图表类型的实际输入值。

最佳实践

  • 按目录表提供对应字段;series 不是蜡烛、流图节点、矩阵或树分配的替代数据。
  • 类别点的 x 应与 categories 一致,或省略类别以从数据推导顺序。主动决定阶段/层级的输入顺序。points.z 控制圆面积,不直接控制半径。
  • 非百分比径向指标请设置 max,默认上限是 100。环图根据实际正值总和归一化,不固定为 100。
  • 仓库链接和名称由来源提供;使用自定义加载器,不把私有凭据暴露到浏览器。网络请求仅在日历客户端可见后开始。
  • SSR 提供显式 width 与一致的 locale。渐变与仓库面板 ID 使用 Vue useId,多个实例在 hydration 时不会冲突。
  • 本地化 title、ariaLabel、数据标签与 labels。通过主题 token 调整外观,不覆盖 SVG 几何。减少动态效果模式保留完整静态图表。

API 参考

属性

属性类型默认值说明
variantMonoChartVariant'mono-rounded-line'上述 30 个 ID 或 'github-activity'。MONO_CHART_VARIANTS 导出原始 30 个 ID。
dataMonoChartData{}调用方的系列、指标、矩阵、日历、财务或流图数据。
widthnumber560确定性 SVG 坐标宽度,CSS 按容器缩放,最小 180。
heightnumber210 / 紧凑 150SVG 坐标高度,最小 100。
titlestring—可选标题。
ariaLabelstring'Mono chart'SVG 无障碍名称。
compactbooleanfalse缩小内边距、圆角与默认图表高度。
seriesMode'single' | 'dual'本地 'dual'v-model:series-mode;single 使用第一组,dual 包含全部传入组。
layout'col' | 'row'本地 'col'v-model:layout;分组/堆叠柱图方向。
curve'monotone' | 'natural'本地 'monotone'v-model:curve;线、面积、范围、微曲线形态。流图始终自然曲线,阶梯图始终后阶梯。
showLineboolean本地 truev-model:show-line;组合图曲线可见性。
controlsbooleantrue显示来源中的线、柱、面积或组合图控件。
periodsMonoChartPeriod[]—{value,label,range?} 周期按钮。
periodstring首个周期v-model:period;当前数据集/范围。
periodDataRecord<string, MonoChartData>—以周期值索引的真实数据集。
centerMetricstring | number由数据计算无悬停片段时的中心值。
centerLabelstringdata.metricLabel中心默认标签。
showTooltipbooleantrue显示读数;关闭后仍触发 hover。
showLegendbooleantrue环图/径向指标图例。
showMonthsbooleantrue活动日历月份标题。
monthsnumber12最近活动月份窗口上限,同时按宽度适配。
cellSizenumber11活动单元格坐标尺寸,自适应间隙,最小 3。
accentstring | string[]变体配色活动单色或四/五级强度色;四级色自动补透明零级。
accentColor'green' | 'blue' | 'purple' | 'mono'从变体推导未显式设置 accent 时覆盖活动配色。
openboolean本地状态v-model:open;GitHub 仓库展开。
defaultOpenbooleanfalse非受控展开初始状态。
yearnumber最后一条贡献年份覆盖 GitHub 标题年份信息,不生成/筛选数据。
usernamestring—缺失日历/仓库字段的公开 GitHub 来源。
activityLoaderMonoChartActivityLoaderloadGitHubActivity(username, AbortSignal) => Promise<{contributions?,repos?}>。
labelsMonoChartLabels英文默认值来源控件、状态、展开及提示字段名称。
localestring'en-US'月份标题语言,服务端与客户端需一致。
formatValue(number) => stringString(value)数值指标、图例与提示格式化。

数据类型

全部类型从 @talex-touch/tuffex/charts 导出。

MonoChartData 字段结构
categories(string | number)[],类别顺序。
series{id?,name,data:{x:string|number,value:number}[],metric?:string|number,opacity?:number}[]。
items{label,value,max?,target?,opacity?}[],分段/层级/轴/环输入。
points{label,x:number,y:number,z?:number}[],独立数值轴与面积权重。
candles{x,open,high,low,close}[],OHLC 数值。
ranges{x,min,max}[],范围上下界。
waterfall{label,delta,base?,total?}[];省略 base 时累加,total 将该柱基线归零。
matrix{label,values:number[]}[],各行列数可不同。
contributions{date:'YYYY-MM-DD',count:number,level:0|1|2|3|4}[]。
repos{name,count,href?,logo?}[],logo 为图片 URL。
nodes / links现有 SankeyNodeData[] / SankeyLinkData[],边用数值来源/目标索引。
tree{label,value?,children?:MonoChartTreeNode[]}[],内部节点面积由子节点总和决定。
metric / metricLabel / change可选调用方标题指标、单位/标签与变化文案。

标签

labels 为部分对象,省略的键保留英文默认值:single='Single'、dual='Dual'、col='Col'、row='Row'、monotone='Monotone'、natural='Natural'、showLine='Spline on'、hideLine='Spline off'、repositories='Top contributions in'、expand='Show repositories'、collapse='Hide repositories'、empty='No data'、loading='Loading activity'、error='Activity could not be loaded'、retry='Retry'、less='Less'、more='More'、target='Target'、open='Open'、high='High'、low='Low'、close='Close'、x='X'、y='Y'、z='Z'、min='Min'、max='Max'、delta='Delta'、balance='Balance'。

事件

事件载荷含义
update:seriesMode、update:layout、update:curve、update:showLine、update:period、update:open对应属性值受控切换/展开变化;无 model 时使用本地状态。
hoverMonoChartHit | null{key,label,rows:[{name,value}],value?,x,y},坐标使用 SVG viewBox;null 清除检查。
selectMonoChartHit指针点击、图例激活、Enter 或空格,不模拟业务操作。
load{contributions?,repos?}当前请求真正接收的来源数据。
errorError当前加载器/响应失败,取消或过期请求不发成功/错误事件。

插槽

插槽作用域替换内容
header{metric,data}指标/标题摘要,控件独立保留。
tooltip{hit}提示内容。
center{value,label,hit}环图/仪表中心内容。
repository{repo}每个已展开仓库行。
avatar{repo,collapsed}收起头像堆叠与展开仓库行的头像,支持任意 VNode。
footer{data}图表下方内容。

CSS 变量

变量用途
--tx-mono-ink单色描边与填充,默认 --tx-text-color-primary。
--tx-mono-track仪表/子弹轨道,默认 --tx-fill-color。
--tx-mono-accent根活动强调色,由配色或显式输入决定。
--tx-chart-grid-line、--tx-chart-text-primary现有图表网格与坐标轴 token。
--tx-chart-semantic-success、--tx-chart-categorical-1、--tx-chart-categorical-4绿色/蓝色/紫色活动配色与基准标记。
--tx-bg-color、--tx-fill-color*、--tx-border-color*、--tx-text-color*宿主表面、轮廓与界面文案。

技术实现

实现迁移 Amicro src/components/mono-charts 全部 29 个文件的独立渲染契约及其 30 行目录。GitHubActivity 是额外变体,不是活动配色别名。几何计算纯粹由输入驱动,复用现有比例尺、曲线、提示定位与 Sankey helper。分配块按输入权重计算,而非复刻来源演示的固定 CSS 网格。请求取消与版本所有权阻止旧响应更新,公共 motion activity helper 负责可见性/KeepAlive 清理。仓库展开过渡仅在活跃且没有减少动态效果偏好时运行。SVG SSR 不访问浏览器 API;最终构建、浏览器与生命周期验收由集成负责人统一执行。