arthub-table 0.2.7 → 0.2.8
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/dist/arthub-table.common.js +1 -1
- package/dist/arthub-table.common.js.map +1 -1
- package/dist/arthub-table.umd.js +1 -1
- package/dist/arthub-table.umd.js.map +1 -1
- package/dist/arthub-table.umd.min.js +1 -1
- package/dist/arthub-table.umd.min.js.map +1 -1
- package/dist/types/core/viewers/CpPersonViewer.d.ts +59 -0
- package/dist/types/core/viewers/index.d.ts +3 -0
- package/dist/types/core/viewers/types.d.ts +32 -0
- package/package.json +1 -1
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CpPersonViewer - CP Person (外包人员) rendering viewer
|
|
3
|
+
* Handles avatar and name display for CP users
|
|
4
|
+
*
|
|
5
|
+
* 与 DOM 版 cpPersonViewer.ts 对齐:
|
|
6
|
+
* - value 为 CP 用户 ID 数组(string[])或单个 string
|
|
7
|
+
* - 通过 cpUserResolver 回调将 ID 解析为显示名称(companyName/roleName/nickName)
|
|
8
|
+
* - 未解析的 ID 先显示 ID 占位,异步加载后通过 requestRedraw 刷新
|
|
9
|
+
* - 样式对齐 PersonViewer:头像 + 名称
|
|
10
|
+
*/
|
|
11
|
+
import type { CellViewer, ViewerRenderContext, CpPersonViewerData } from './types';
|
|
12
|
+
/**
|
|
13
|
+
* CpPersonViewer renders CP person information in cells
|
|
14
|
+
* Style aligned with PersonViewer (avatar + name)
|
|
15
|
+
*/
|
|
16
|
+
declare class CpPersonViewer implements CellViewer<CpPersonViewerData> {
|
|
17
|
+
readonly type = "cp-person";
|
|
18
|
+
private imageManager;
|
|
19
|
+
private _sm;
|
|
20
|
+
private get avatarColors();
|
|
21
|
+
constructor();
|
|
22
|
+
/**
|
|
23
|
+
* Draw CP person content in the cell
|
|
24
|
+
*/
|
|
25
|
+
draw(context: ViewerRenderContext, data: CpPersonViewerData): void;
|
|
26
|
+
/**
|
|
27
|
+
* Draw persons list (with background tag style, aligned with PersonViewer showNameBackground mode)
|
|
28
|
+
*/
|
|
29
|
+
private drawPersons;
|
|
30
|
+
/**
|
|
31
|
+
* Draw person avatar (circle shape, using default avatar image)
|
|
32
|
+
*/
|
|
33
|
+
private drawAvatar;
|
|
34
|
+
/**
|
|
35
|
+
* Draw fallback avatar with initial character
|
|
36
|
+
*/
|
|
37
|
+
private drawFallbackAvatar;
|
|
38
|
+
/**
|
|
39
|
+
* Get consistent color index based on person id
|
|
40
|
+
*/
|
|
41
|
+
private getColorIndex;
|
|
42
|
+
/**
|
|
43
|
+
* Get initial character from name
|
|
44
|
+
*/
|
|
45
|
+
private getInitial;
|
|
46
|
+
/**
|
|
47
|
+
* Truncate text with ellipsis to fit within maxWidth
|
|
48
|
+
*/
|
|
49
|
+
private truncateText;
|
|
50
|
+
/**
|
|
51
|
+
* Draw remaining count badge
|
|
52
|
+
*/
|
|
53
|
+
private drawRemainingCount;
|
|
54
|
+
/**
|
|
55
|
+
* Draw placeholder for empty state
|
|
56
|
+
*/
|
|
57
|
+
private drawPlaceholder;
|
|
58
|
+
}
|
|
59
|
+
export default CpPersonViewer;
|
|
@@ -41,6 +41,7 @@ export { default as ChildrenViewer } from './ChildrenViewer';
|
|
|
41
41
|
export { default as OnlyShowErrorViewer } from './OnlyShowErrorViewer';
|
|
42
42
|
export { default as PerspectiveViewer } from './PerspectiveViewer';
|
|
43
43
|
export { default as RelatedTaskViewer } from './RelatedTaskViewer';
|
|
44
|
+
export { default as CpPersonViewer } from './CpPersonViewer';
|
|
44
45
|
import TextViewer from './TextViewer';
|
|
45
46
|
import DropdownViewer from './DropdownViewer';
|
|
46
47
|
import ImageViewer from './ImageViewer';
|
|
@@ -78,6 +79,7 @@ import ChildrenViewer from './ChildrenViewer';
|
|
|
78
79
|
import OnlyShowErrorViewer from './OnlyShowErrorViewer';
|
|
79
80
|
import PerspectiveViewer from './PerspectiveViewer';
|
|
80
81
|
import RelatedTaskViewer from './RelatedTaskViewer';
|
|
82
|
+
import CpPersonViewer from './CpPersonViewer';
|
|
81
83
|
/**
|
|
82
84
|
* Register all default viewers
|
|
83
85
|
* Call this function once during application initialization
|
|
@@ -129,4 +131,5 @@ export declare const defaultViewers: {
|
|
|
129
131
|
'only-show-error': typeof OnlyShowErrorViewer;
|
|
130
132
|
perspective: typeof PerspectiveViewer;
|
|
131
133
|
'related-task': typeof RelatedTaskViewer;
|
|
134
|
+
'cp-person': typeof CpPersonViewer;
|
|
132
135
|
};
|
|
@@ -969,6 +969,7 @@ export interface ViewerTypeMap {
|
|
|
969
969
|
'itfs-path': ItfsPathViewerData;
|
|
970
970
|
'deliverable-review': DeliverableReviewViewerData;
|
|
971
971
|
'rich-text': RichTextViewerData;
|
|
972
|
+
'cp-person': CpPersonViewerData;
|
|
972
973
|
}
|
|
973
974
|
/**
|
|
974
975
|
* All supported viewer types
|
|
@@ -1383,3 +1384,34 @@ export interface RelatedTaskViewerData extends CellViewerData {
|
|
|
1383
1384
|
ids: number[];
|
|
1384
1385
|
}, data: any) => void;
|
|
1385
1386
|
}
|
|
1387
|
+
/**
|
|
1388
|
+
* CP 人员信息(由 cpUserResolver 返回)
|
|
1389
|
+
*/
|
|
1390
|
+
export interface CpPersonInfo {
|
|
1391
|
+
id: string;
|
|
1392
|
+
/** 显示名称,格式如 "公司名/基地/昵称" */
|
|
1393
|
+
showName: string;
|
|
1394
|
+
}
|
|
1395
|
+
/**
|
|
1396
|
+
* CP 人员 Viewer 数据接口
|
|
1397
|
+
* 用于展示外包人员(CP User)信息
|
|
1398
|
+
* 对齐 DOM 版 cpPersonViewer.ts 的渲染逻辑
|
|
1399
|
+
*/
|
|
1400
|
+
export interface CpPersonViewerData extends CellViewerData {
|
|
1401
|
+
/** CP 用户 ID 数组或单个 ID 字符串 */
|
|
1402
|
+
value: string[] | string | null;
|
|
1403
|
+
/** 头像大小,默认 16 */
|
|
1404
|
+
avatarSize?: number;
|
|
1405
|
+
/** 最大显示人数,默认 3 */
|
|
1406
|
+
maxDisplay?: number;
|
|
1407
|
+
/** 空值占位符,默认 '-' */
|
|
1408
|
+
placeholder?: string;
|
|
1409
|
+
/**
|
|
1410
|
+
* CP 用户解析回调
|
|
1411
|
+
* 同步返回已缓存的用户信息,对未缓存的 ID 触发异步加载后调用 requestRedraw
|
|
1412
|
+
* @param ids CP 用户 ID 数组
|
|
1413
|
+
* @param requestRedraw 重绘回调,异步加载完成后调用
|
|
1414
|
+
* @returns 已解析的用户信息数组(未解析的以 ID 作为 showName)
|
|
1415
|
+
*/
|
|
1416
|
+
cpUserResolver?: (ids: string[], requestRedraw: () => void) => CpPersonInfo[];
|
|
1417
|
+
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arthub-table",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.8",
|
|
4
4
|
"description": "High-performance canvas-based table/grid component for Vue 3 with TypeScript support, featuring virtual scrolling, cell viewers, grouped rows, and nested grids.",
|
|
5
5
|
"main": "dist/arthub-table.common.js",
|
|
6
6
|
"module": "dist/arthub-table.umd.min.js",
|