生态产品多个设计器现已发布候选版本

查看生态总览
跳转到内容

查看器 ​

@xihan-report/runtime 的公开接口:查看器元素与相关类型。样式在 @xihan-report/runtime/style.css。

<xh-report-viewer> ​

注册 <xh-report-viewer> 与它排出的 UI 元素(按需注册),宿主不必再全量注册 UI 元素。

属性 ​

属性attribute类型说明
schema—ReportDocument | undefined报表定义。
dataProvider—ReportDataProvider | undefined取数回调。
expressionEngine—ExpressionEngine | undefined表达式引擎:计算字段与公式度量要用。
extensions—readonly ReportRuntimeExtension[] | undefined卡片与视图种类、渲染、叠加层、导出与取数中间件的扩展;赋值时当场合并查重,冲突时退回原值再抛。
formatter—ReportFormatter | undefined值的显示文字;缺省按格式说明调 formatValue。
parameters—ParameterValues | undefined报表参数的取值;不给时用各参数的缺省值。
selections—LinkSelections | undefined看板联动的选中值;给了就是受控。
localelocalestring | undefinedBCP 47 语言标记;缺省取全局配置。
timeZonetime-zonestring | undefinedIANA 时区;缺省取运行环境所在的时区。
translations—Partial<ReportViewerTranslations> | undefined元素自己的文案,压在全局配置之上。
hideParametershide-parametersboolean | undefined不显示参数栏;缺省显示。attribute 写 "false" 是显示,其余写法是不显示。

存取器 ​

属性读写类型说明
issues只读readonly ReportViewerIssue[]最近一次校验报表定义与检查参数得到的问题。
loading只读boolean是否还有未完成的取数。

方法 ​

方法说明
getResults(): ReportResults此刻的计算结果,只读快照:主体视图或看板上已算好的卡片,以及当时的参数与联动。
refresh(options?: { readonly cards?: readonly string[] }): Promise<void>重新取数并计算;看板可以只刷新部分卡片。
clearSelections(): void清除看板联动的选中值。
export(format: string, options?: Readonly<Record<string, unknown>>): Promise<Blob | string>导出成文件:交给登记了这种格式的第一个导出器(内置的 xlsx 在最前,扩展可以加别的格式),options 原样交给它。内置的 xlsx 把当前的计算结果写成工作簿:表格主体导出一张表(表名取 options.name,缺省取报表标题),看板按已算好的表格卡片各导一张(表名取卡片标题),写出部分按需加载,还没有可导出的结果时抛 RangeError。没有导出器认这种格式时抛 RangeError。

事件 ​

事件都是冒泡的 CustomEvent。

事件detail说明
issues-change{ issues: readonly ReportViewerIssue[] }报表定义的校验问题或参数的检查问题变了。
load-error{ card: string | null, error: unknown }取数或计算出错:card 是出错的卡片,报表主体出错时为 null。
loading-change{ loading: boolean }开始或结束取数。
selections-change{ value: LinkSelections }看板联动的选中值变了:value 是联动 id 到选中取值的对照;受控时宿主要把它写回 selections。
parameters-change{ value: ParameterValues }参数栏改了参数:value 是新的参数取值,清空的参数写 null。
datum-press{ card: string, link: string | null, value: unknown, chart: unknown }转发图表卡片的 datum-press:link 与 value 是这次点按对应的联动与源维度上的取值,与联动无关时为 null。
action{ card: string | null, link: string | null, value: unknown } & TableCellRef表格的行主操作(点一格,或焦点行上按 Enter),用来下钻:card 是看板里的表格卡片,报表主体是表格时为 null;kind、column、values 说明点中的那一格(见 TableCellRef)。表格卡片作联动源时,link 与 value 是这次点按对应的联动与源维度上的取值,与联动无关时为 null。

函数 ​

defineReportViewer() ​

ts
declare function defineReportViewer(): void

注册 <xh-report-viewer> 与它排出的 UI 元素(按需注册),宿主不必再全量注册 UI 元素。

取数 ​

ReportDataProvider ​

使用方的取数回调:按 core 算出的请求取数,交回明细行或已聚合行。

ts
type ReportDataProvider = (request: DatasetRequest, context: ReportDataContext) => Promise<DatasetData>

ReportDataContext ​

取数时附带的上下文:参数或联动变化、元素卸载时 signal 被取消。

属性类型说明
signalAbortSignal取消信号:这一轮取数作废时触发,取数回调应随之中止请求。

结果与事件 ​

ReportResults ​

查看器此刻的计算结果,只读快照。

属性类型说明
parametersParameterValues这一轮取数用到的报表参数取值。
selectionsLinkSelections看板联动的选中值。
bodyViewResult | ExtensionViewResult | undefined主体视图的结果;主体是看板或还没算好时为 undefined。
cardsreadonly { readonly result: CardResult, readonly filters: readonly FilterCondition[] }[]看板上已算好的卡片,按卡片的先后;filters 是它当时收到的联动筛选。

ReportViewerIssue ​

查看器报出的问题:报表定义的校验问题与参数的检查问题,都带上 severity。

ts
type ReportViewerIssue = SchemaIssue<ValidationIssueCode | ParameterIssueCode>

TableCellRef ​

表格里被行主操作点中的那一格在报表里的含义。

属性类型说明
kind'detail' | 'group' | 'subtotal'行的种类:明细行(交叉表是成员行)、组头、小计;总计在表尾,不报行主操作。
columnstring | null点中那一格所在的报表列:明细表与分组报表是列 id 或分组 id,交叉表的值格是度量 id、行表头格是行维度 id;焦点行上按 Enter 时为 null。
valuesReadonly<Record<string, unknown>>这一行(与点中那一列)在各维度上的取值,键与看板联动的 dimension 同一套写法:明细表是列 id,分组报表是分组 id(明细行另带各列 id),交叉表是行、列维度 id。

ChartPress ​

UI 图表派发的 datum-press 明细里查看器用到的字段:图表家族带 seriesId 与 datum,热力图带 date 或 row、column。

属性类型说明
keyunknown点中的数据点在图表里的键。
seriesId?string点中的系列。
datum?Readonly<Record<string, unknown>>点中的数据行。
date?string日历热力图点中的日期,YYYY-MM-DD。
row?string矩阵热力图点中的行。
column?string矩阵热力图点中的列。

显示文字 ​

ReportFormatter ​

把一个值写成显示文字;缺失值由查看器先行处理,不会传进来。

ts
type ReportFormatter = (value: unknown, format: FormatSpec | undefined, context: ReportFormatContext) => string

ReportFormatContext ​

格式化时的上下文。

属性类型说明
localestring | undefinedBCP 47 语言标记;没有时按运行环境。
timeZonestringIANA 时区:日期按它的墙上时间写。
typeFieldType | undefined值所在字段的类型;度量、按粒度取键的维度等没有字段类型时为 undefined。

ReportViewerTranslations ​

查看器的内建文案。

文案键是 xh-report-viewer,中文在 @xihan-report/runtime/locale 的 reportZhCN 里。

键类型说明中文
labelstring查看器的可及名。报表
loadingstring正在加载…
emptystring没有数据时的提示。没有数据
errorstring取数或计算失败时的提示。数据加载失败
invalidstring报表定义有问题、不能显示时的提示。报表定义有问题,无法显示
parametersInvalidstring报表参数缺少或取值不合格时的提示。报表参数缺少或取值不合格
totalstring总计行、总计列的标签。总计
subtotalstring小计行、小计列的标签。小计
missingstring缺失值成员的显示文字。(空)
parametersstring参数栏的可及名。报表参数
clearSelectionsstring清除联动选中的按钮。清除联动
exportXlsxstring内置 xlsx 导出器的名字。Excel 工作簿

全部导出 ​

designer-translations ​

名称种类说明
DEFAULT_REPORT_DESIGNER_TRANSLATIONS常量内建英文文案。
ReportDesignerCascade接口删除数据面板对象时一并删掉的别处的数目。
ReportDesignerIssueDetails接口问题文案的入参:校验问题的码与参数。
ReportDesignerTranslations接口设计器的内建文案。
ReportHistoryStepText接口撤销栈里一步的说明素材:对象种类已按语言取好。
ReportTourStepKey类型新手引导里报表自己的几步:数据面板、「数据」菜单、字段栏、卡片、联动与预览。
ReportTourStepText接口引导一步的标题与说明。

extensions ​

名称种类说明
createReportRuntimeModel函数合出运行时用的报表模型:core 的合并与查重照旧;渲染、导出器重名时抛 DesignerExtensionError。
REPORT_RUNTIME_EXTENSION常量运行时内置扩展:三种内置卡片的渲染与 xlsx 导出。
REPORT_RUNTIME_EXTENSION_ID常量运行时内置扩展的 id。
ReportCardRenderer类型卡片的渲染:把计算结果画进卡片的内容区。
ReportDataMiddleware类型取数中间件:拿到下一层的取数回调,返回包在它外面的一层。
ReportExportContext接口导出时交给导出器的上下文。
ReportOverlay接口叠加层:铺满看板的一层,画在各卡片之下(below)或之上(above);只在主体是看板时画。
ReportOverlayContext接口画叠加层时的上下文。
ReportRendered类型渲染出的、能接联动与下钻的内容:图表或表格;别的内容为 undefined。
ReportResults接口查看器此刻的计算结果,只读快照。
ReportRuntimeExtension接口报表运行时层的扩展。
ReportRuntimeModel接口运行时用的报表模型:core 的模型加上渲染、导出与取数中间件。
ReportScene接口叠加层的场景:看板与它上面各卡片的布局和状态。
ReportSceneCard接口叠加层场景里的一张卡片。
ReportViewRenderer类型作主体的扩展视图的渲染,规则同卡片。

translations ​

名称种类说明
DEFAULT_REPORT_VIEWER_TRANSLATIONS常量内建英文文案。
ReportViewerTranslations接口查看器的内建文案。

viewer/charts ​

名称种类说明
RenderedChart接口渲染好的图表卡片。

viewer/context ​

名称种类说明
RenderContext接口渲染上下文。

viewer/format ​

名称种类说明
defaultFormatter常量缺省格式化器:有格式说明时用 formatValue(它拒绝的值退回原样文字);date / datetime 字段写成 timeZone 里的墙上时间(YYYY-MM-DD 或 YYYY-MM-DD HH:mm:ss);数值按 locale 写千分位;其余写成文本。
ReportFormatContext接口格式化时的上下文。
ReportFormatter类型把一个值写成显示文字;缺失值由查看器先行处理,不会传进来。

viewer/report-viewer ​

名称种类说明
defineReportViewer函数注册 <xh-report-viewer> 与它排出的 UI 元素(按需注册),宿主不必再全量注册 UI 元素。
REPORT_VIEWER_TAG常量查看器的标签名。
ReportDataContext接口取数时附带的上下文:参数或联动变化、元素卸载时 signal 被取消。
ReportDataProvider类型使用方的取数回调:按 core 算出的请求取数,交回明细行或已聚合行。
ReportViewerEventMap接口查看器派发的事件。
ReportViewerIssue类型查看器报出的问题:报表定义的校验问题与参数的检查问题,都带上 severity。
XhReportViewer类报表查看器 <xh-report-viewer>:按报表定义、参数与联动取数,算出并绘出报表主体或看板。

viewer/table ​

名称种类说明
RenderedTable接口渲染好的表格:按 xh-table 行主操作报出的行 id 与列 id 查出点中的那一格。
TableCellRef接口表格里被行主操作点中的那一格在报表里的含义。

@xihan-report/runtime/locale 的导出 ​

locale ​

名称种类说明
reportDeDE常量报表的德语文案:查看器、设计器与 designer-shell 零件。
reportEnUS常量报表的英文文案:查看器、设计器与 designer-shell 零件。
reportEsES常量报表的西班牙语文案:查看器、设计器与 designer-shell 零件。
reportFrFR常量报表的法语文案:查看器、设计器与 designer-shell 零件。
reportJaJP常量报表的日语文案:查看器、设计器与 designer-shell 零件。
reportKoKR常量报表的韩语文案:查看器、设计器与 designer-shell 零件。
reportPtBR常量报表的巴西葡萄牙语文案:查看器、设计器与 designer-shell 零件。
reportRuRU常量报表的俄语文案:查看器、设计器与 designer-shell 零件。
reportZhCN常量报表的简体中文文案:查看器、设计器与 designer-shell 零件。
reportZhTW常量报表的繁体中文文案:查看器、设计器与 designer-shell 零件。

@xihan-report/runtime/xlsx 的导出 ​

xlsx/report ​

名称种类说明
crosstabSheet函数交叉表排成工作表:左上角是表头区,上方是列轴的多层表头,左侧是行轴的多层表头,相同的上层成员合并单元格,小计与总计的标签向内合并;多个度量按 measuresOn 排在最内一层,没有列维度时列轴只有度量一层。
groupSheet函数分组报表排成工作表:前几列是各级分组,之后是视图的列。
SheetOptions接口生成工作表的选项。
tableSheet函数明细表排成工作表:首行是列标题,之后每行一条明细,有汇总时末行写合计(首列没有汇总时写合计标签);冻结首行。
XlsxTranslations类型工作表里的内建文字:查看器语言包里的总计与小计,两边共用一份。

Released under The MIT License