arthub-table 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +36 -0
- package/LICENSE +21 -0
- package/README.md +257 -0
- package/dist/arthub-table.common.js +2 -0
- package/dist/arthub-table.common.js.map +1 -0
- package/dist/arthub-table.css +1 -0
- package/dist/arthub-table.umd.js +2 -0
- package/dist/arthub-table.umd.js.map +1 -0
- package/dist/arthub-table.umd.min.js +2 -0
- package/dist/arthub-table.umd.min.js.map +1 -0
- package/dist/demo.html +1 -0
- package/dist/img/ah-icon_audio_pause.55c06fbf.svg +3 -0
- package/dist/img/ah-icon_closeshape.82e52181.svg +3 -0
- package/dist/img/icon_attachment.724d33ba.svg +3 -0
- package/dist/img/icon_default.9ef1a394.svg +5 -0
- package/dist/img/icon_edit.9966e699.svg +3 -0
- package/dist/img/icon_error_dark.2a057cdd.svg +17 -0
- package/dist/img/icon_error_light.ac6763e9.svg +17 -0
- package/dist/img/icon_failure_dark.f68723a7.svg +25 -0
- package/dist/img/icon_failure_light.489a7167.svg +25 -0
- package/dist/img/icon_folder.ea3efcce.svg +11 -0
- package/dist/img/icon_netdisc.d8bbe2e0.svg +4 -0
- package/dist/img/icon_singlearrowright.6adcd336.svg +4 -0
- package/dist/img/icon_totalNum.23a86d16.svg +3 -0
- package/dist/img/icon_transform_dark.033764ea.svg +26 -0
- package/dist/img/icon_transform_light.fa9fbcbd.svg +26 -0
- package/dist/img/img_3d.39b27128.svg +14 -0
- package/dist/img/img_aep.a898e3e7.svg +8 -0
- package/dist/img/img_ai.61f08a0a.svg +8 -0
- package/dist/img/img_audio.e4ada65c.svg +5 -0
- package/dist/img/img_enf.ad88f95d.svg +28 -0
- package/dist/img/img_excel.56663d85.svg +30 -0
- package/dist/img/img_exe.5e3fc198.svg +27 -0
- package/dist/img/img_img.ac2e0d0c.svg +8 -0
- package/dist/img/img_mcp.393ef169.svg +28 -0
- package/dist/img/img_pdf.f4da9922.svg +7 -0
- package/dist/img/img_ppt.d172780f.svg +26 -0
- package/dist/img/img_pxcook.7e9fce57.svg +18 -0
- package/dist/img/img_rarzip7z.e3b1de82.svg +28 -0
- package/dist/img/img_sketch.d49a9bd4.svg +32 -0
- package/dist/img/img_video.b6ac6198.svg +7 -0
- package/dist/img/img_word.0c1d3c88.svg +31 -0
- package/dist/img/img_x2d.6acc94f6.svg +28 -0
- package/dist/img/img_xd.cc23d09a.svg +28 -0
- package/dist/img/matrix-icon_finish.617f5d3e.svg +3 -0
- package/dist/img/matrix-icon_inprogress.3781156a.svg +3 -0
- package/dist/img/matrix-icon_supervise.edae43f0.svg +3 -0
- package/dist/types/assets/icon/iconBase64.d.ts +3 -0
- package/dist/types/components/Icon/index.d.ts +2 -0
- package/dist/types/components/clickoutside.d.ts +3 -0
- package/dist/types/core/Body.d.ts +142 -0
- package/dist/types/core/Cell.d.ts +94 -0
- package/dist/types/core/Clipboard.d.ts +16 -0
- package/dist/types/core/ColumnHeader.d.ts +24 -0
- package/dist/types/core/Context.d.ts +24 -0
- package/dist/types/core/DataGrid.d.ts +749 -0
- package/dist/types/core/EdgeScroller.d.ts +75 -0
- package/dist/types/core/Editor.d.ts +33 -0
- package/dist/types/core/Events.d.ts +25 -0
- package/dist/types/core/Footer.d.ts +37 -0
- package/dist/types/core/GifAnimationManager.d.ts +69 -0
- package/dist/types/core/GifOverlay.d.ts +33 -0
- package/dist/types/core/GroupRow.d.ts +80 -0
- package/dist/types/core/Header.d.ts +40 -0
- package/dist/types/core/History.d.ts +27 -0
- package/dist/types/core/ImageManager.d.ts +94 -0
- package/dist/types/core/NestedGrid.d.ts +177 -0
- package/dist/types/core/Paint.d.ts +101 -0
- package/dist/types/core/PerformanceMonitor.d.ts +96 -0
- package/dist/types/core/Row.d.ts +31 -0
- package/dist/types/core/RowHeader.d.ts +22 -0
- package/dist/types/core/Scroller.d.ts +33 -0
- package/dist/types/core/Selector.d.ts +9 -0
- package/dist/types/core/StyleManager.d.ts +108 -0
- package/dist/types/core/Tooltip.d.ts +28 -0
- package/dist/types/core/Validator.d.ts +26 -0
- package/dist/types/core/config.d.ts +5 -0
- package/dist/types/core/constants.d.ts +39 -0
- package/dist/types/core/element.d.ts +36 -0
- package/dist/types/core/extension-type-mapping.d.ts +5 -0
- package/dist/types/core/footer/utils.d.ts +7 -0
- package/dist/types/core/types.d.ts +399 -0
- package/dist/types/core/util.d.ts +17 -0
- package/dist/types/core/viewers/BooleanViewer.d.ts +46 -0
- package/dist/types/core/viewers/DatetimeViewer.d.ts +33 -0
- package/dist/types/core/viewers/DeliverableReviewViewer.d.ts +87 -0
- package/dist/types/core/viewers/FileStorageSpecViewer.d.ts +37 -0
- package/dist/types/core/viewers/FileViewer.d.ts +118 -0
- package/dist/types/core/viewers/GroupHeaderViewer.d.ts +73 -0
- package/dist/types/core/viewers/HyperlinkTextViewer.d.ts +80 -0
- package/dist/types/core/viewers/ImageViewer.d.ts +31 -0
- package/dist/types/core/viewers/ItfsPathViewer.d.ts +58 -0
- package/dist/types/core/viewers/ModuleViewer.d.ts +53 -0
- package/dist/types/core/viewers/NestedGridViewer.d.ts +47 -0
- package/dist/types/core/viewers/PersonViewer.d.ts +61 -0
- package/dist/types/core/viewers/PivotViewer.d.ts +43 -0
- package/dist/types/core/viewers/PriorityTextViewer.d.ts +35 -0
- package/dist/types/core/viewers/ProgressViewer.d.ts +68 -0
- package/dist/types/core/viewers/PunchTimingViewer.d.ts +42 -0
- package/dist/types/core/viewers/PunchViewer.d.ts +116 -0
- package/dist/types/core/viewers/RichTextViewer.d.ts +83 -0
- package/dist/types/core/viewers/SelectViewer.d.ts +57 -0
- package/dist/types/core/viewers/SeparatorRowViewer.d.ts +25 -0
- package/dist/types/core/viewers/StatusTextViewer.d.ts +40 -0
- package/dist/types/core/viewers/StatusViewer.d.ts +53 -0
- package/dist/types/core/viewers/TableActionButtonViewer.d.ts +77 -0
- package/dist/types/core/viewers/TaskNodeViewer.d.ts +106 -0
- package/dist/types/core/viewers/TextViewer.d.ts +37 -0
- package/dist/types/core/viewers/TextViewerWithSwitcher.d.ts +112 -0
- package/dist/types/core/viewers/ThemeViewer.d.ts +36 -0
- package/dist/types/core/viewers/TreeDropdownViewer.d.ts +55 -0
- package/dist/types/core/viewers/UpstreamViewer.d.ts +79 -0
- package/dist/types/core/viewers/ViewerRegistry.d.ts +76 -0
- package/dist/types/core/viewers/WfStateViewer.d.ts +76 -0
- package/dist/types/core/viewers/WorkflowViewer.d.ts +37 -0
- package/dist/types/core/viewers/index.d.ts +114 -0
- package/dist/types/core/viewers/types.d.ts +1097 -0
- package/dist/types/index.d.ts +37 -0
- package/dist/types/testing/SnapshotManager.d.ts +55 -0
- package/dist/types/testing/TestHooks.d.ts +275 -0
- package/dist/types/testing/index.d.ts +3 -0
- package/dist/types/testing/installTestHooks.d.ts +16 -0
- package/package.json +126 -0
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PunchTimingViewer - 打卡计时单元格渲染器
|
|
3
|
+
* 功能:显示时间格式文本(如 00:00:00),支持点击播放/暂停图标切换计时
|
|
4
|
+
*
|
|
5
|
+
* 核心设计:
|
|
6
|
+
* viewerData 在每次 draw/onClick 时由 Cell.buildViewerData() 重新创建,
|
|
7
|
+
* 因此不能将可变计时状态存储在 data 上。改用 viewer 内部的 Map 来持久化。
|
|
8
|
+
*/
|
|
9
|
+
import type { CellViewer, ViewerRenderContext, PunchTimingViewerData } from './types';
|
|
10
|
+
declare class PunchTimingViewer implements CellViewer<PunchTimingViewerData> {
|
|
11
|
+
readonly type = "punch-timing";
|
|
12
|
+
/**
|
|
13
|
+
* 以 "rowIndex-colIndex" 为 key 持久化计时器状态,
|
|
14
|
+
* 不随 data 对象重建而丢失。
|
|
15
|
+
*/
|
|
16
|
+
private readonly timerStates;
|
|
17
|
+
/** 绘制单元格内容 */
|
|
18
|
+
draw(context: ViewerRenderContext, data: PunchTimingViewerData): void;
|
|
19
|
+
/** 处理点击事件 */
|
|
20
|
+
onClick(context: ViewerRenderContext, data: PunchTimingViewerData, localX: number, localY: number): boolean;
|
|
21
|
+
/** 获取鼠标悬停时的光标样式 */
|
|
22
|
+
getInteractiveCursor(context: ViewerRenderContext, data: PunchTimingViewerData, localX: number, localY: number): string | null;
|
|
23
|
+
/** 清理所有计时器资源 */
|
|
24
|
+
dispose(): void;
|
|
25
|
+
/** 绘制播放/暂停图标 */
|
|
26
|
+
private drawIcon;
|
|
27
|
+
/** 绘制时间文本 */
|
|
28
|
+
private drawTimeText;
|
|
29
|
+
/** 获取或创建持久化的计时器状态 */
|
|
30
|
+
private getOrCreateState;
|
|
31
|
+
/** 开始计时 */
|
|
32
|
+
private startTimer;
|
|
33
|
+
/** 暂停计时 */
|
|
34
|
+
private pauseTimer;
|
|
35
|
+
/** 每秒更新显示 */
|
|
36
|
+
private tick;
|
|
37
|
+
/** 安全清除 interval */
|
|
38
|
+
private clearInterval;
|
|
39
|
+
/** 获取要显示的时间文本 */
|
|
40
|
+
private getDisplayText;
|
|
41
|
+
}
|
|
42
|
+
export default PunchTimingViewer;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* PunchViewer - 打卡进度单元格渲染器(Canvas 实现)
|
|
3
|
+
* 功能:显示环形进度条 + 日期文本 + 审批状态图标 + 未读提示红点 + 编辑/更多操作图标
|
|
4
|
+
* 从 PunchViewerOld.ts(DOM 实现)转换而来
|
|
5
|
+
*/
|
|
6
|
+
import type { CellViewer, ViewerRenderContext, CellViewerData } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* 打卡 Viewer 数据接口
|
|
9
|
+
*/
|
|
10
|
+
export interface PunchViewerData extends CellViewerData {
|
|
11
|
+
value: PunchValue | null;
|
|
12
|
+
/** 数据行 ID */
|
|
13
|
+
id?: string | number;
|
|
14
|
+
/** 属性 key */
|
|
15
|
+
key?: string;
|
|
16
|
+
/** 是否可编辑 */
|
|
17
|
+
canEdit?: boolean;
|
|
18
|
+
/** 是否显示删除线 */
|
|
19
|
+
showLineThrow?: boolean;
|
|
20
|
+
/** 日期显示模式 */
|
|
21
|
+
datePattern?: string;
|
|
22
|
+
/** 是否关联属性 */
|
|
23
|
+
isLink?: boolean;
|
|
24
|
+
/** 关联 key */
|
|
25
|
+
linkKey?: string;
|
|
26
|
+
/** 是否有错误 */
|
|
27
|
+
error?: {
|
|
28
|
+
errorProperty?: string;
|
|
29
|
+
errorMessage?: string;
|
|
30
|
+
} | null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* 打卡值
|
|
34
|
+
*/
|
|
35
|
+
export interface PunchValue {
|
|
36
|
+
/** 打卡记录 ID,> 0 表示已打卡 */
|
|
37
|
+
punch_id?: number;
|
|
38
|
+
/** 打卡日期时间戳 */
|
|
39
|
+
created_date?: number;
|
|
40
|
+
/** 进度 0~1 */
|
|
41
|
+
progress?: number;
|
|
42
|
+
/** 审批状态 */
|
|
43
|
+
review_status?: number | string;
|
|
44
|
+
/** 是否已读 */
|
|
45
|
+
is_read?: boolean;
|
|
46
|
+
}
|
|
47
|
+
declare class PunchViewer implements CellViewer<PunchViewerData> {
|
|
48
|
+
readonly type = "punch";
|
|
49
|
+
/**
|
|
50
|
+
* 绘制打卡单元格内容
|
|
51
|
+
*/
|
|
52
|
+
draw(context: ViewerRenderContext, data: PunchViewerData): void;
|
|
53
|
+
/**
|
|
54
|
+
* 处理点击事件
|
|
55
|
+
* 返回 true 表示事件已被处理
|
|
56
|
+
*/
|
|
57
|
+
onClick(context: ViewerRenderContext, data: PunchViewerData, localX: number, localY: number): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* 获取交互区域的光标样式
|
|
60
|
+
*/
|
|
61
|
+
getInteractiveCursor(context: ViewerRenderContext, data: PunchViewerData, localX: number, localY: number): string | null;
|
|
62
|
+
/**
|
|
63
|
+
* 根据打卡日期和审批状态获取环形进度条颜色
|
|
64
|
+
*/
|
|
65
|
+
private getRingColor;
|
|
66
|
+
/**
|
|
67
|
+
* 绘制环形进度条
|
|
68
|
+
* @param ctx Canvas 上下文
|
|
69
|
+
* @param cx 圆心 X
|
|
70
|
+
* @param cy 圆心 Y
|
|
71
|
+
* @param radius 半径
|
|
72
|
+
* @param strokeWidth 线宽
|
|
73
|
+
* @param progress 进度 0~1
|
|
74
|
+
* @param color 进度颜色
|
|
75
|
+
*/
|
|
76
|
+
private drawPercentRing;
|
|
77
|
+
/**
|
|
78
|
+
* 绘制审批状态图标(在环形进度条中心)
|
|
79
|
+
* 审批通过:✓ 图标
|
|
80
|
+
* 审批拒绝:✕ 图标
|
|
81
|
+
*/
|
|
82
|
+
private drawReviewIcon;
|
|
83
|
+
/**
|
|
84
|
+
* 绘制日期文本
|
|
85
|
+
*/
|
|
86
|
+
private drawDateText;
|
|
87
|
+
/**
|
|
88
|
+
* 绘制未读提示红点
|
|
89
|
+
*/
|
|
90
|
+
private drawHintDot;
|
|
91
|
+
/**
|
|
92
|
+
* 绘制右侧操作图标(更多 + 编辑)
|
|
93
|
+
*/
|
|
94
|
+
private drawAfterIcons;
|
|
95
|
+
/**
|
|
96
|
+
* 绘制列表/更多图标(三横线)
|
|
97
|
+
*/
|
|
98
|
+
private drawListIcon;
|
|
99
|
+
/**
|
|
100
|
+
* 绘制编辑/铅笔图标
|
|
101
|
+
*/
|
|
102
|
+
private drawEditIcon;
|
|
103
|
+
/**
|
|
104
|
+
* 绘制删除线
|
|
105
|
+
*/
|
|
106
|
+
private drawStrikethrough;
|
|
107
|
+
/**
|
|
108
|
+
* 绘制错误提示图标(⚠)
|
|
109
|
+
*/
|
|
110
|
+
private drawErrorIcon;
|
|
111
|
+
/**
|
|
112
|
+
* 文本截断,超出宽度时显示省略号
|
|
113
|
+
*/
|
|
114
|
+
private truncateText;
|
|
115
|
+
}
|
|
116
|
+
export default PunchViewer;
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RichTextViewer - 富文本单元格渲染器(Canvas 实现)
|
|
3
|
+
* 功能:去除 HTML 标签后渲染纯文本 + 编辑按钮 + 错误提示 + 关联图标 + 删除线
|
|
4
|
+
* <img> 标签显示为 [图片],<video> 标签显示为 [视频]
|
|
5
|
+
* 参考 AssetMatrix/src/views/components/ProgressPanel/ProgressPropsViewer/richTextViewer.ts
|
|
6
|
+
*/
|
|
7
|
+
import type { CellViewer, ViewerRenderContext, CellViewerData } from './types';
|
|
8
|
+
/**
|
|
9
|
+
* 富文本 Viewer 数据接口
|
|
10
|
+
*/
|
|
11
|
+
export interface RichTextViewerData extends CellViewerData {
|
|
12
|
+
/** HTML 富文本内容或纯文本 */
|
|
13
|
+
value: string | null;
|
|
14
|
+
/** 数据行 ID */
|
|
15
|
+
id?: string | number;
|
|
16
|
+
/** 属性 key */
|
|
17
|
+
key?: string;
|
|
18
|
+
/** 是否可编辑 */
|
|
19
|
+
canEdit?: boolean;
|
|
20
|
+
/** 是否显示删除线 */
|
|
21
|
+
showLineThrow?: boolean;
|
|
22
|
+
/** 是否关联属性 */
|
|
23
|
+
isLink?: boolean;
|
|
24
|
+
/** 关联 key */
|
|
25
|
+
linkKey?: string;
|
|
26
|
+
/** 是否有错误 */
|
|
27
|
+
error?: {
|
|
28
|
+
errorProperty?: string;
|
|
29
|
+
errorMessage?: string;
|
|
30
|
+
} | null;
|
|
31
|
+
/** 占位符文本 */
|
|
32
|
+
placeholder?: string;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* 解析富文本值,去除 HTML 标签
|
|
36
|
+
* <img> 标签替换为 [图片],<video> 标签替换为 [视频]
|
|
37
|
+
*/
|
|
38
|
+
export declare function getDisplayValue(value: string | null | undefined): string;
|
|
39
|
+
declare class RichTextViewer implements CellViewer<RichTextViewerData> {
|
|
40
|
+
readonly type = "rich-text";
|
|
41
|
+
/**
|
|
42
|
+
* 绘制富文本单元格内容
|
|
43
|
+
*/
|
|
44
|
+
draw(context: ViewerRenderContext, data: RichTextViewerData): void;
|
|
45
|
+
/**
|
|
46
|
+
* 处理点击事件
|
|
47
|
+
* 返回 true 表示事件已被处理
|
|
48
|
+
*/
|
|
49
|
+
onClick(context: ViewerRenderContext, data: RichTextViewerData, localX: number, _localY: number): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* 获取交互区域的光标样式
|
|
52
|
+
*/
|
|
53
|
+
getInteractiveCursor(context: ViewerRenderContext, data: RichTextViewerData, localX: number, _localY: number): string | null;
|
|
54
|
+
/**
|
|
55
|
+
* 绘制文本内容
|
|
56
|
+
*/
|
|
57
|
+
private drawText;
|
|
58
|
+
/**
|
|
59
|
+
* 绘制右侧编辑按钮
|
|
60
|
+
*/
|
|
61
|
+
private drawEditButton;
|
|
62
|
+
/**
|
|
63
|
+
* 绘制编辑/铅笔图标
|
|
64
|
+
*/
|
|
65
|
+
private drawEditIcon;
|
|
66
|
+
/**
|
|
67
|
+
* 绘制关联图标(链接/附件图标)
|
|
68
|
+
*/
|
|
69
|
+
private drawLinkIcon;
|
|
70
|
+
/**
|
|
71
|
+
* 绘制删除线
|
|
72
|
+
*/
|
|
73
|
+
private drawStrikethrough;
|
|
74
|
+
/**
|
|
75
|
+
* 绘制错误提示图标(⚠)
|
|
76
|
+
*/
|
|
77
|
+
private drawErrorIcon;
|
|
78
|
+
/**
|
|
79
|
+
* 文本截断,超出宽度时显示省略号
|
|
80
|
+
*/
|
|
81
|
+
private truncateText;
|
|
82
|
+
}
|
|
83
|
+
export default RichTextViewer;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SelectViewer - Dropdown select rendering viewer
|
|
3
|
+
* Handles single and multiple select display with colored tags
|
|
4
|
+
*/
|
|
5
|
+
import type { CellViewer, ViewerRenderContext, SelectViewerData } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* SelectViewer renders select/dropdown options in cells
|
|
8
|
+
* Supports single select, multiple select, and colored tag display
|
|
9
|
+
*/
|
|
10
|
+
declare class SelectViewer implements CellViewer<SelectViewerData> {
|
|
11
|
+
readonly type = "select";
|
|
12
|
+
/**
|
|
13
|
+
* Draw select content in the cell
|
|
14
|
+
*/
|
|
15
|
+
draw(context: ViewerRenderContext, data: SelectViewerData): void;
|
|
16
|
+
/**
|
|
17
|
+
* Get selected options from value
|
|
18
|
+
*/
|
|
19
|
+
private getSelectedOptions;
|
|
20
|
+
/**
|
|
21
|
+
* Draw empty state
|
|
22
|
+
*/
|
|
23
|
+
private drawEmptyState;
|
|
24
|
+
/**
|
|
25
|
+
* Draw single select option
|
|
26
|
+
*/
|
|
27
|
+
private drawSingleOption;
|
|
28
|
+
/**
|
|
29
|
+
* Draw multiple select tags
|
|
30
|
+
*/
|
|
31
|
+
private drawMultipleTags;
|
|
32
|
+
/**
|
|
33
|
+
* Calculate tag width based on text
|
|
34
|
+
*/
|
|
35
|
+
private calculateTagWidth;
|
|
36
|
+
/**
|
|
37
|
+
* Draw a tag/badge
|
|
38
|
+
*/
|
|
39
|
+
private drawTag;
|
|
40
|
+
/**
|
|
41
|
+
* Draw "+N" more indicator
|
|
42
|
+
*/
|
|
43
|
+
private drawMoreIndicator;
|
|
44
|
+
/**
|
|
45
|
+
* Draw dropdown arrow
|
|
46
|
+
*/
|
|
47
|
+
private drawArrow;
|
|
48
|
+
/**
|
|
49
|
+
* Draw a rounded rectangle
|
|
50
|
+
*/
|
|
51
|
+
private drawRoundedRect;
|
|
52
|
+
/**
|
|
53
|
+
* Truncate text with ellipsis
|
|
54
|
+
*/
|
|
55
|
+
private truncateText;
|
|
56
|
+
}
|
|
57
|
+
export default SelectViewer;
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SeparatorRowViewer - Separator row rendering viewer
|
|
3
|
+
* Renders empty visual separator rows between groups
|
|
4
|
+
*/
|
|
5
|
+
import type { CellViewer, ViewerRenderContext, SeparatorRowViewerData } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* SeparatorRowViewer renders separator rows between groups
|
|
8
|
+
* These rows are purely visual and don't contain any editable content
|
|
9
|
+
*/
|
|
10
|
+
declare class SeparatorRowViewer implements CellViewer<SeparatorRowViewerData> {
|
|
11
|
+
readonly type = "separator-row";
|
|
12
|
+
/**
|
|
13
|
+
* Draw separator row content (background only)
|
|
14
|
+
*/
|
|
15
|
+
draw(context: ViewerRenderContext, data: SeparatorRowViewerData): void;
|
|
16
|
+
/**
|
|
17
|
+
* Separator rows do not handle click events
|
|
18
|
+
*/
|
|
19
|
+
onClick(_context: ViewerRenderContext, _data: SeparatorRowViewerData, _localX: number, _localY: number): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Get preferred height for separator row
|
|
22
|
+
*/
|
|
23
|
+
getPreferredHeight(_context: ViewerRenderContext, data: SeparatorRowViewerData): number;
|
|
24
|
+
}
|
|
25
|
+
export default SeparatorRowViewer;
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatusTextViewer - 状态文本渲染 viewer
|
|
3
|
+
* 用于展示状态标签(图标 + 文字),如"未开始"、"进行中"、"已完成"等
|
|
4
|
+
* 参考 AssetMatrix/src/views/components/ProgressPanel/ProgressPropsViewer/statusTextViewer.ts
|
|
5
|
+
*/
|
|
6
|
+
import type { CellViewer, ViewerRenderContext, StatusTextViewerData } from './types';
|
|
7
|
+
/**
|
|
8
|
+
* StatusTextViewer 在单元格中渲染状态文本
|
|
9
|
+
* 展示形如 [图标] 进行中 的状态标签
|
|
10
|
+
*/
|
|
11
|
+
declare class StatusTextViewer implements CellViewer<StatusTextViewerData> {
|
|
12
|
+
readonly type = "status-text";
|
|
13
|
+
/** 空值占位符 */
|
|
14
|
+
private readonly emptyValue;
|
|
15
|
+
/**
|
|
16
|
+
* 绘制状态文本内容
|
|
17
|
+
*/
|
|
18
|
+
draw(context: ViewerRenderContext, data: StatusTextViewerData): void;
|
|
19
|
+
/**
|
|
20
|
+
* 绘制状态内容(图标 + 文字)
|
|
21
|
+
*/
|
|
22
|
+
private drawStatusContent;
|
|
23
|
+
/**
|
|
24
|
+
* 绘制空值占位文本
|
|
25
|
+
*/
|
|
26
|
+
private drawEmptyText;
|
|
27
|
+
/**
|
|
28
|
+
* 绘制状态图标
|
|
29
|
+
*/
|
|
30
|
+
private drawIcon;
|
|
31
|
+
/**
|
|
32
|
+
* 绘制角标(右上角三角形指示器)
|
|
33
|
+
*/
|
|
34
|
+
private drawCorner;
|
|
35
|
+
/**
|
|
36
|
+
* 截断文本并添加省略号
|
|
37
|
+
*/
|
|
38
|
+
private truncateText;
|
|
39
|
+
}
|
|
40
|
+
export default StatusTextViewer;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* StatusViewer - Status tag rendering viewer
|
|
3
|
+
* Handles status display with icons and colored backgrounds
|
|
4
|
+
*/
|
|
5
|
+
import type { CellViewer, ViewerRenderContext, StatusViewerData } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* StatusViewer renders status values in cells
|
|
8
|
+
* Supports icons, colored tags, and various status types
|
|
9
|
+
*/
|
|
10
|
+
declare class StatusViewer implements CellViewer<StatusViewerData> {
|
|
11
|
+
readonly type = "status";
|
|
12
|
+
/**
|
|
13
|
+
* Draw status content in the cell
|
|
14
|
+
*/
|
|
15
|
+
draw(context: ViewerRenderContext, data: StatusViewerData): void;
|
|
16
|
+
/**
|
|
17
|
+
* Find matching status option
|
|
18
|
+
*/
|
|
19
|
+
private findStatusOption;
|
|
20
|
+
/**
|
|
21
|
+
* Draw status as a tag/badge
|
|
22
|
+
*/
|
|
23
|
+
private drawStatusTag;
|
|
24
|
+
/**
|
|
25
|
+
* Draw status as plain text with icon
|
|
26
|
+
*/
|
|
27
|
+
private drawStatusText;
|
|
28
|
+
/**
|
|
29
|
+
* Draw plain text for unknown status
|
|
30
|
+
*/
|
|
31
|
+
private drawPlainText;
|
|
32
|
+
/**
|
|
33
|
+
* Draw status icon
|
|
34
|
+
*/
|
|
35
|
+
private drawIcon;
|
|
36
|
+
/**
|
|
37
|
+
* Get background color for status type
|
|
38
|
+
*/
|
|
39
|
+
private getTypeBackgroundColor;
|
|
40
|
+
/**
|
|
41
|
+
* Get text color for status type
|
|
42
|
+
*/
|
|
43
|
+
private getTypeColor;
|
|
44
|
+
/**
|
|
45
|
+
* Draw a rounded rectangle
|
|
46
|
+
*/
|
|
47
|
+
private drawRoundedRect;
|
|
48
|
+
/**
|
|
49
|
+
* Truncate text with ellipsis
|
|
50
|
+
*/
|
|
51
|
+
private truncateText;
|
|
52
|
+
}
|
|
53
|
+
export default StatusViewer;
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TableActionButtonViewer - Renders action buttons in table cells
|
|
3
|
+
*
|
|
4
|
+
* Features:
|
|
5
|
+
* - Renders multiple action buttons horizontally
|
|
6
|
+
* - Handles button overflow with "more" button
|
|
7
|
+
* - Supports different button styles (normal, operation, super admin)
|
|
8
|
+
* - Handles button clicks with callbacks
|
|
9
|
+
* - Shows link icon for linked tasks
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* ```typescript
|
|
13
|
+
* const columnDef = {
|
|
14
|
+
* key: 'actions',
|
|
15
|
+
* title: 'Actions',
|
|
16
|
+
* useViewer: true,
|
|
17
|
+
* viewerType: 'table-action-button',
|
|
18
|
+
* viewerConfig: {
|
|
19
|
+
* onButtonClick: (event, payload) => {
|
|
20
|
+
* console.log('Button clicked:', payload);
|
|
21
|
+
* },
|
|
22
|
+
* onOperationBtnClick: (event, payload) => {
|
|
23
|
+
* console.log('Operation button clicked:', payload);
|
|
24
|
+
* },
|
|
25
|
+
* onAfterClick: (event, payload) => {
|
|
26
|
+
* console.log('More button clicked:', payload);
|
|
27
|
+
* }
|
|
28
|
+
* }
|
|
29
|
+
* };
|
|
30
|
+
* ```
|
|
31
|
+
*/
|
|
32
|
+
import type { CellViewer, ViewerRenderContext, TableActionButtonViewerData } from './types';
|
|
33
|
+
export declare class TableActionButtonViewer implements CellViewer<TableActionButtonViewerData> {
|
|
34
|
+
readonly type = "table-action-button";
|
|
35
|
+
private buttonPositions;
|
|
36
|
+
private moreButtonPosition;
|
|
37
|
+
/**
|
|
38
|
+
* Draw the cell content
|
|
39
|
+
*/
|
|
40
|
+
draw(context: ViewerRenderContext, data: TableActionButtonViewerData): void;
|
|
41
|
+
/**
|
|
42
|
+
* Draw empty state placeholder
|
|
43
|
+
*/
|
|
44
|
+
private drawEmpty;
|
|
45
|
+
/**
|
|
46
|
+
* Calculate button width based on text content
|
|
47
|
+
*/
|
|
48
|
+
private calculateButtonWidth;
|
|
49
|
+
/**
|
|
50
|
+
* Calculate which buttons are visible and if overflow occurs
|
|
51
|
+
*/
|
|
52
|
+
private calculateVisibleButtons;
|
|
53
|
+
/**
|
|
54
|
+
* Draw "more" button
|
|
55
|
+
*/
|
|
56
|
+
private drawMoreButton;
|
|
57
|
+
/**
|
|
58
|
+
* Draw a single button
|
|
59
|
+
*/
|
|
60
|
+
private drawButton;
|
|
61
|
+
/**
|
|
62
|
+
* Draw rounded rectangle path
|
|
63
|
+
*/
|
|
64
|
+
private drawRoundedRect;
|
|
65
|
+
/**
|
|
66
|
+
* Draw link icon
|
|
67
|
+
*/
|
|
68
|
+
private drawLinkIcon;
|
|
69
|
+
/**
|
|
70
|
+
* Handle click events on the cell
|
|
71
|
+
*/
|
|
72
|
+
onClick(context: ViewerRenderContext, data: TableActionButtonViewerData, localX: number, localY: number): boolean;
|
|
73
|
+
/**
|
|
74
|
+
* Get cursor style for interactive areas
|
|
75
|
+
*/
|
|
76
|
+
getInteractiveCursor(context: ViewerRenderContext, data: TableActionButtonViewerData, localX: number, localY: number): string | null;
|
|
77
|
+
}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaskNodeViewer - 任务节点类型单元格渲染器(Canvas 实现)
|
|
3
|
+
* 功能:显示任务节点列表(图标 + 名称),右侧编辑/查看图标
|
|
4
|
+
* 从 DOM 实现的 taskNodeViewer-new.ts 转换而来
|
|
5
|
+
*
|
|
6
|
+
* 布局结构:[ middle (nodeItem, nodeItem, ...) ] [ linkIcon? ] [ after (editIcon / viewIcon) ]
|
|
7
|
+
*/
|
|
8
|
+
import type { CellViewer, ViewerRenderContext, TaskNodeViewerData } from './types';
|
|
9
|
+
declare class TaskNodeViewer implements CellViewer<TaskNodeViewerData> {
|
|
10
|
+
readonly type = "task-node";
|
|
11
|
+
private imageManager;
|
|
12
|
+
/** 记录加载失败的图标 URL,避免反复重试 */
|
|
13
|
+
private failedIcons;
|
|
14
|
+
constructor();
|
|
15
|
+
/**
|
|
16
|
+
* 绘制任务节点单元格内容
|
|
17
|
+
*/
|
|
18
|
+
draw(context: ViewerRenderContext, data: TaskNodeViewerData): void;
|
|
19
|
+
/**
|
|
20
|
+
* 处理点击事件
|
|
21
|
+
*/
|
|
22
|
+
onClick(context: ViewerRenderContext, data: TaskNodeViewerData, localX: number, localY: number): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* 处理双击事件
|
|
25
|
+
* 双击节点项时打印该节点的信息
|
|
26
|
+
*/
|
|
27
|
+
onDblClick(context: ViewerRenderContext, data: TaskNodeViewerData, localX: number, localY: number): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* 获取交互区域的光标样式
|
|
30
|
+
*/
|
|
31
|
+
getInteractiveCursor(context: ViewerRenderContext, data: TaskNodeViewerData, localX: number, localY: number): string | null;
|
|
32
|
+
/**
|
|
33
|
+
* 解析值,返回标准化的 TaskNodeItem 数组
|
|
34
|
+
* 支持:TaskNodeItem[] / 逗号分隔字符串 / 单个数字 / null
|
|
35
|
+
*/
|
|
36
|
+
private parseValue;
|
|
37
|
+
/**
|
|
38
|
+
* 通过 ID 数组和 customTaskNodeInfo 映射解析节点信息
|
|
39
|
+
*/
|
|
40
|
+
private resolveNodesByIds;
|
|
41
|
+
/**
|
|
42
|
+
* 计算各区域的布局位置
|
|
43
|
+
* 所有坐标相对于单元格左上角
|
|
44
|
+
*/
|
|
45
|
+
private calculateLayout;
|
|
46
|
+
/**
|
|
47
|
+
* 判断坐标是否在指定区域内
|
|
48
|
+
*/
|
|
49
|
+
private isInArea;
|
|
50
|
+
/**
|
|
51
|
+
* 绘制节点项矩形背景
|
|
52
|
+
*/
|
|
53
|
+
private drawNodeItemBackground;
|
|
54
|
+
/**
|
|
55
|
+
* 绘制空值占位符
|
|
56
|
+
*/
|
|
57
|
+
private drawEmptyPlaceholder;
|
|
58
|
+
/**
|
|
59
|
+
* 绘制所有任务节点项
|
|
60
|
+
*/
|
|
61
|
+
private drawTaskNodes;
|
|
62
|
+
/**
|
|
63
|
+
* 绘制任务节点图标
|
|
64
|
+
* 有 iconFile 时加载对应图标,无或加载失败时使用默认图标 icon_folder.svg
|
|
65
|
+
*/
|
|
66
|
+
private drawNodeIcon;
|
|
67
|
+
/**
|
|
68
|
+
* 通用 SVG 图标绘制方法
|
|
69
|
+
*/
|
|
70
|
+
private drawSvgIcon;
|
|
71
|
+
/**
|
|
72
|
+
* 绘制节点名称文本
|
|
73
|
+
*/
|
|
74
|
+
private drawNodeName;
|
|
75
|
+
/**
|
|
76
|
+
* 绘制右侧操作区域
|
|
77
|
+
* canEdit 时显示编辑图标,否则显示列表图标
|
|
78
|
+
*/
|
|
79
|
+
private drawAfterArea;
|
|
80
|
+
/**
|
|
81
|
+
* 绘制编辑/铅笔图标
|
|
82
|
+
*/
|
|
83
|
+
private drawEditIcon;
|
|
84
|
+
/**
|
|
85
|
+
* 绘制列表/查看图标(简化的列表形状)
|
|
86
|
+
*/
|
|
87
|
+
private drawViewIcon;
|
|
88
|
+
/**
|
|
89
|
+
* 绘制关联图标
|
|
90
|
+
*/
|
|
91
|
+
private drawLinkIcon;
|
|
92
|
+
/**
|
|
93
|
+
* 绘制删除线
|
|
94
|
+
*/
|
|
95
|
+
private drawStrikethrough;
|
|
96
|
+
/**
|
|
97
|
+
* 绘制错误提示图标(⚠)
|
|
98
|
+
* is_warning 为 true 时使用警告色,否则使用错误色
|
|
99
|
+
*/
|
|
100
|
+
private drawErrorIcon;
|
|
101
|
+
/**
|
|
102
|
+
* 文本截断,超出宽度时显示省略号
|
|
103
|
+
*/
|
|
104
|
+
private truncateText;
|
|
105
|
+
}
|
|
106
|
+
export default TaskNodeViewer;
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TextViewer - Basic text rendering viewer
|
|
3
|
+
* Handles text display with alignment, truncation, tags, and rich text
|
|
4
|
+
*/
|
|
5
|
+
import type { CellViewer, ViewerRenderContext, TextViewerData } from './types';
|
|
6
|
+
/**
|
|
7
|
+
* TextViewer renders text content in cells
|
|
8
|
+
* This is the default viewer for most cell types
|
|
9
|
+
*/
|
|
10
|
+
declare class TextViewer implements CellViewer<TextViewerData> {
|
|
11
|
+
readonly type = "text";
|
|
12
|
+
/**
|
|
13
|
+
* Draw text content in the cell
|
|
14
|
+
*/
|
|
15
|
+
draw(context: ViewerRenderContext, data: TextViewerData): void;
|
|
16
|
+
/**
|
|
17
|
+
* Get the display text from data
|
|
18
|
+
*/
|
|
19
|
+
private getDisplayText;
|
|
20
|
+
/**
|
|
21
|
+
* Extract plain text from HTML/rich text content
|
|
22
|
+
*/
|
|
23
|
+
private extractPlainText;
|
|
24
|
+
/**
|
|
25
|
+
* Draw text as a tag/badge with background color
|
|
26
|
+
*/
|
|
27
|
+
private drawTag;
|
|
28
|
+
/**
|
|
29
|
+
* Draw a rounded rectangle
|
|
30
|
+
*/
|
|
31
|
+
private drawRoundedRect;
|
|
32
|
+
/**
|
|
33
|
+
* Truncate text with ellipsis if it exceeds max width
|
|
34
|
+
*/
|
|
35
|
+
private truncateText;
|
|
36
|
+
}
|
|
37
|
+
export default TextViewer;
|