@bestime/utils_base 1.0.3 → 1.0.6
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/{jUtilsBase.esm.d.ts → jUtilsBase/esm/index.min.d.ts} +412 -33
- package/dist/jUtilsBase/esm/index.min.mjs +5 -0
- package/dist/jUtilsBase/umd/index.min.cjs +5 -0
- package/dist/{jUtilsBase.global.d.ts → jUtilsBase/umd/index.min.d.ts} +412 -33
- package/package.json +7 -4
- package/dist/jUtilsBase.esm.min.mjs +0 -7
- package/dist/jUtilsBase.umd.min.cjs +0 -7
|
@@ -20,15 +20,6 @@ declare function getType(data: any): string;
|
|
|
20
20
|
*/
|
|
21
21
|
declare function isArray(arg: any): arg is any[];
|
|
22
22
|
|
|
23
|
-
/**
|
|
24
|
-
* 判断数据是否为对象
|
|
25
|
-
* @param data - 判断的值
|
|
26
|
-
* @returns 真假值
|
|
27
|
-
*/
|
|
28
|
-
declare function isKvPair(data: any): boolean;
|
|
29
|
-
|
|
30
|
-
declare function isString(data: any): data is string;
|
|
31
|
-
|
|
32
23
|
/**
|
|
33
24
|
* 递归将所有属性改为可选
|
|
34
25
|
*/
|
|
@@ -38,7 +29,17 @@ type BTDeepPartial<T = any> = {
|
|
|
38
29
|
/**
|
|
39
30
|
* 键值对格式的数据
|
|
40
31
|
* */
|
|
41
|
-
type
|
|
32
|
+
type TKvPair = Record<string | number | symbol, any>;
|
|
33
|
+
type TValueOf<T> = T[keyof T];
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* 判断数据是否为对象
|
|
37
|
+
* @param data - 判断的值
|
|
38
|
+
* @returns 真假值
|
|
39
|
+
*/
|
|
40
|
+
declare function isKvPair(arg: any): arg is TKvPair;
|
|
41
|
+
|
|
42
|
+
declare function isString(data: any): data is string;
|
|
42
43
|
|
|
43
44
|
/**
|
|
44
45
|
* 强制转换数据为键值对数据,如果是json字符串,会尝试解析,如果失败,则返回一个空Map
|
|
@@ -57,7 +58,7 @@ type IKvPair = Record<string, any>;
|
|
|
57
58
|
* const data3 = _KvPair({name: 'a'})
|
|
58
59
|
* ```
|
|
59
60
|
*/
|
|
60
|
-
declare function _KvPair(data: any):
|
|
61
|
+
declare function _KvPair(data: any): TKvPair;
|
|
61
62
|
|
|
62
63
|
/**
|
|
63
64
|
* 判断是否为空[null, undefined, '']
|
|
@@ -78,37 +79,48 @@ declare function isFunction(data: any): boolean;
|
|
|
78
79
|
* @param data - 需要转化的数据
|
|
79
80
|
* @returns 转换后的字符串
|
|
80
81
|
*/
|
|
81
|
-
declare function param(data:
|
|
82
|
+
declare function param(data: TKvPair): string;
|
|
82
83
|
|
|
83
84
|
/**
|
|
84
85
|
* 为url链接拼接参数
|
|
85
|
-
* @param url - url
|
|
86
|
+
* @param url - url地址。可带查询参数由 ”{{包裹}}”
|
|
86
87
|
* @param searchString - 查询参数
|
|
87
|
-
* @returns 拼接后的url地址
|
|
88
|
+
* @returns string 拼接后的url地址
|
|
89
|
+
* @example
|
|
90
|
+
* ```js
|
|
91
|
+
* urlToGet('/parent_{{ pid }}/info/{{ uid }}/detail?c=5&', {
|
|
92
|
+
* name: '张三',
|
|
93
|
+
* skill: [1, 2, 3, 4, 5]
|
|
94
|
+
* })
|
|
95
|
+
* urlToGet('1111111111', 'a=0&b=2')
|
|
96
|
+
* urlToGet('2222222222', 'a=0&b=2')
|
|
97
|
+
* urlToGet('333333333?c=5&', 'a=0&b=2')
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
88
100
|
*/
|
|
89
|
-
declare function urlToGet(url: string,
|
|
101
|
+
declare function urlToGet(url: string, data: string | TKvPair): string;
|
|
90
102
|
|
|
91
103
|
/**
|
|
92
|
-
*
|
|
104
|
+
* 移除空字符串。不清空 "\u200e"
|
|
93
105
|
* @param data - 需要处理的数据
|
|
94
106
|
* @param pos - 移除位置。默认:两侧,1:左侧,-1右侧,* 所有
|
|
95
107
|
* @returns 字符串
|
|
96
108
|
*/
|
|
97
109
|
declare function trim(data: any, pos?: 1 | -1 | '*'): string;
|
|
98
110
|
|
|
99
|
-
declare function clean<
|
|
100
|
-
T extends
|
|
101
|
-
| any[]
|
|
102
|
-
| {
|
|
103
|
-
[key: string]: any;
|
|
104
|
-
[key: number]: any;
|
|
105
|
-
}
|
|
106
|
-
>(data: T, removeEmptyStr?: boolean, removeEmptyObject?: boolean): T;
|
|
107
|
-
|
|
108
111
|
type TargetData = Record<string, any> | any[];
|
|
109
112
|
interface Options {
|
|
113
|
+
/**
|
|
114
|
+
* 是否移除空字符串。默认true
|
|
115
|
+
*/
|
|
110
116
|
string?: Boolean;
|
|
117
|
+
/**
|
|
118
|
+
* 是否移除空数组。默认true
|
|
119
|
+
*/
|
|
111
120
|
array?: Boolean;
|
|
121
|
+
/**
|
|
122
|
+
* 是否移除空键值对。默认true
|
|
123
|
+
*/
|
|
112
124
|
kvPair?: Boolean;
|
|
113
125
|
}
|
|
114
126
|
/**
|
|
@@ -180,7 +192,29 @@ declare function deepFindTreePath(
|
|
|
180
192
|
*/
|
|
181
193
|
declare function _Number(data: any): number;
|
|
182
194
|
|
|
183
|
-
|
|
195
|
+
type TNull = undefined | null | '';
|
|
196
|
+
declare function isNull(data: any): data is TNull;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
*
|
|
200
|
+
* @param value 看起来是否像一个数字
|
|
201
|
+
* @example
|
|
202
|
+
* ```
|
|
203
|
+
* isLickNumber(1) => true
|
|
204
|
+
* isLickNumber('2.36884') => true
|
|
205
|
+
* isLickNumber(1/0) => false
|
|
206
|
+
* isLickNumber(0/0) => false
|
|
207
|
+
* isLickNumber('') => false
|
|
208
|
+
* isLickNumber() => false
|
|
209
|
+
* isLickNumber(null) => false
|
|
210
|
+
* isLickNumber(true) => false
|
|
211
|
+
* isLickNumber(false) => false
|
|
212
|
+
* isLickNumber([]) => false
|
|
213
|
+
* isLickNumber(function () {}) => false
|
|
214
|
+
* ```
|
|
215
|
+
* @returns
|
|
216
|
+
*/
|
|
217
|
+
declare function isLikeNumber(value: any): boolean;
|
|
184
218
|
|
|
185
219
|
/**
|
|
186
220
|
* 默认值处理函数
|
|
@@ -354,10 +388,10 @@ declare function cloneEasy<T extends [] | Record<any, any> | Function>(data: T):
|
|
|
354
388
|
* @param childKeyFrom - 原始数据的孩子键
|
|
355
389
|
* @returns 转变后的新数据
|
|
356
390
|
*/
|
|
357
|
-
declare function main<T extends
|
|
391
|
+
declare function main<T extends TKvPair, K extends TKvPair, C extends keyof T>(
|
|
358
392
|
data: K[],
|
|
359
393
|
childKeyTo: C,
|
|
360
|
-
handle: (data: K) => Omit<T, C
|
|
394
|
+
handle: (data: K) => Omit<T, C> | undefined,
|
|
361
395
|
childKeyFrom?: keyof K
|
|
362
396
|
): T[];
|
|
363
397
|
|
|
@@ -404,9 +438,9 @@ declare function defineEventBus<T extends EventHander>(
|
|
|
404
438
|
* @param handle - 迭代方法。这里不用返回子节点
|
|
405
439
|
* @param childKey - 子节点字段。默认值:children
|
|
406
440
|
*/
|
|
407
|
-
declare function forEachTree<T extends
|
|
441
|
+
declare function forEachTree<T extends TKvPair>(
|
|
408
442
|
data: T[],
|
|
409
|
-
handle: (data: T) => void,
|
|
443
|
+
handle: (data: T, parents: T[]) => void,
|
|
410
444
|
childKey?: keyof T
|
|
411
445
|
): void;
|
|
412
446
|
|
|
@@ -491,39 +525,379 @@ declare function dataPage<T>(
|
|
|
491
525
|
|
|
492
526
|
/**
|
|
493
527
|
* 解析序列化字符参数为Map格式数据
|
|
494
|
-
* @param str - url
|
|
528
|
+
* @param str - url 查询参数
|
|
495
529
|
* @returns 键值对
|
|
496
530
|
*/
|
|
497
|
-
declare function parseQuery(str?: string):
|
|
531
|
+
declare function parseQuery(str?: string): TKvPair;
|
|
532
|
+
|
|
533
|
+
declare const fieldCheck: {
|
|
534
|
+
/**
|
|
535
|
+
* 验证传入的数据是否是数字
|
|
536
|
+
* @param title - 标题
|
|
537
|
+
* @param value - 值
|
|
538
|
+
* @param required - 是否必填
|
|
539
|
+
* @returns
|
|
540
|
+
*/
|
|
541
|
+
number(title: string, value: any, required?: boolean): number;
|
|
542
|
+
/**
|
|
543
|
+
* 验证传入的数据是否是字符串
|
|
544
|
+
* @param title - 标题
|
|
545
|
+
* @param value - 值
|
|
546
|
+
* @param required - 是否必填
|
|
547
|
+
* @returns
|
|
548
|
+
*/
|
|
549
|
+
string(title: string, value: any, required?: boolean): string;
|
|
550
|
+
};
|
|
551
|
+
|
|
552
|
+
interface ISummary {
|
|
553
|
+
/** 值 */
|
|
554
|
+
value: number;
|
|
555
|
+
/** 增长率 */
|
|
556
|
+
riseRatio?: number;
|
|
557
|
+
/** 比重 */
|
|
558
|
+
proportion: number;
|
|
559
|
+
}
|
|
560
|
+
interface IARTResultItem<T> {
|
|
561
|
+
name: string;
|
|
562
|
+
value: T;
|
|
563
|
+
data: Record<string, T[]>;
|
|
564
|
+
summary: Record<string, ISummary>;
|
|
565
|
+
}
|
|
566
|
+
type TArrayRowToColumnColumnSort = (a: string, b: string) => number;
|
|
567
|
+
/**
|
|
568
|
+
* 数字中某个字段由 行转列
|
|
569
|
+
* @param originData - 原始数组
|
|
570
|
+
* @param options - 配置项
|
|
571
|
+
* @returns 转换后的数据
|
|
572
|
+
*/
|
|
573
|
+
declare function arrayRowToColumn<T extends Record<string, any>>(
|
|
574
|
+
originData: T[],
|
|
575
|
+
options: {
|
|
576
|
+
/** 唯一行的ID生成器 */
|
|
577
|
+
uniqueRowId: Array<keyof T>;
|
|
578
|
+
/** 将此字段转为列 */
|
|
579
|
+
colField: keyof T;
|
|
580
|
+
/** 列的排序方法 */
|
|
581
|
+
colSort?: TArrayRowToColumnColumnSort;
|
|
582
|
+
/** 生成列信息 */
|
|
583
|
+
colCreate: (key: string) => {
|
|
584
|
+
label: string;
|
|
585
|
+
field: string;
|
|
586
|
+
};
|
|
587
|
+
summaryConfig?: IConfig;
|
|
588
|
+
}
|
|
589
|
+
): {
|
|
590
|
+
columns: {
|
|
591
|
+
value: string;
|
|
592
|
+
label: string;
|
|
593
|
+
field: string;
|
|
594
|
+
}[];
|
|
595
|
+
data: IARTResultItem<T>[];
|
|
596
|
+
colSummary: Record<string, Record<string, ISummary>>;
|
|
597
|
+
getExtRow: <T_1 extends keyof ISummary>(
|
|
598
|
+
groupName: string,
|
|
599
|
+
field: T_1,
|
|
600
|
+
formatter: (data: ISummary[T_1]) => string
|
|
601
|
+
) => Record<string, string>;
|
|
602
|
+
};
|
|
603
|
+
type TArrayRowToColumnCalculateRow = {
|
|
604
|
+
proportionBaseField?: string;
|
|
605
|
+
count: {
|
|
606
|
+
field: string;
|
|
607
|
+
mode: 'length' | 'uniqLength' | 'notZeroValue';
|
|
608
|
+
};
|
|
609
|
+
value: {
|
|
610
|
+
field: string;
|
|
611
|
+
mode: 'sum' | 'uniqLength' | 'avg';
|
|
612
|
+
};
|
|
613
|
+
};
|
|
614
|
+
interface IConfig {
|
|
615
|
+
averageField: string;
|
|
616
|
+
row?: Record<string, TArrayRowToColumnCalculateRow>;
|
|
617
|
+
column?: TColSumaryConfig;
|
|
618
|
+
}
|
|
619
|
+
type TColSumaryConfig = Record<
|
|
620
|
+
string,
|
|
621
|
+
{
|
|
622
|
+
field: string;
|
|
623
|
+
mode: 'uniqLength' | 'avg' | 'notZeroLength' | 'sum';
|
|
624
|
+
}
|
|
625
|
+
>;
|
|
626
|
+
|
|
627
|
+
type ISpanTableItem<T extends TKvPair> = T & {
|
|
628
|
+
$rowSpan: Record<string, number>;
|
|
629
|
+
$colSpan: Record<number, number>;
|
|
630
|
+
$colField: Record<string | number, number>;
|
|
631
|
+
};
|
|
632
|
+
/**
|
|
633
|
+
* 合并单元格。不改变原数组
|
|
634
|
+
* @param data - 一维数组
|
|
635
|
+
* @param fields - 合并的字段
|
|
636
|
+
* @returns 合并后的数据。会在每一项中添加两个字段 "$rowSpan" "$colSpan" "$colField"
|
|
637
|
+
*/
|
|
638
|
+
declare function spanTable<T extends TKvPair>(data: T[], fields: string[]): ISpanTableItem<T>[];
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* 正则千分位转换,支持小数(任意字符串按位数相隔)
|
|
642
|
+
*
|
|
643
|
+
* @param data 需要转换的字符
|
|
644
|
+
* @param len 按多少位分隔一次,默认3
|
|
645
|
+
* @param symbol 千分位替换符号,默认逗号
|
|
646
|
+
*/
|
|
647
|
+
declare function thousands(data: number | string, len?: number, symbol?: string): string;
|
|
648
|
+
|
|
649
|
+
/**
|
|
650
|
+
* 键值对的map实现方法
|
|
651
|
+
* @param data - 元数据
|
|
652
|
+
* @param handler - 自定义处理函数
|
|
653
|
+
* @returns
|
|
654
|
+
*/
|
|
655
|
+
declare function mapKvPair<T extends TKvPair, U>(
|
|
656
|
+
data: T,
|
|
657
|
+
handler: (data: TValueOf<T>, key: string) => U
|
|
658
|
+
): Record<string | number | symbol, U>;
|
|
659
|
+
|
|
660
|
+
/**
|
|
661
|
+
* 模糊搜索,例如 a4 可匹配 a3645
|
|
662
|
+
* @param search - 输入的值,如果为空,则表示无筛选条件,直接返回true
|
|
663
|
+
* @param data - 源数据的值
|
|
664
|
+
* @param regFlags - 与 RegExp 第二个参数相同,指定是否全局、区分大小写等
|
|
665
|
+
* @return
|
|
666
|
+
*/
|
|
667
|
+
declare function isFuzzyMatch(search: string, data: string, regFlags?: string): boolean;
|
|
668
|
+
|
|
669
|
+
/**
|
|
670
|
+
* 向字符串中添加零宽字符。(暂时用于排除同名表格单元格合并)
|
|
671
|
+
* @param data - 需要处理的数据
|
|
672
|
+
* @returns
|
|
673
|
+
*/
|
|
674
|
+
declare function mixInZeroWidthUnicode(data: string): string;
|
|
675
|
+
|
|
676
|
+
/**
|
|
677
|
+
* 键值对的forEach实现方法
|
|
678
|
+
* @param data - 元数据
|
|
679
|
+
* @param handler - 自定义处理函数
|
|
680
|
+
* @returns
|
|
681
|
+
*/
|
|
682
|
+
declare function forEachKvPair<T extends TKvPair, U>(
|
|
683
|
+
data: T,
|
|
684
|
+
handler: (data: TValueOf<T>, key: string, index: number) => U
|
|
685
|
+
): Record<string | number | symbol, U>;
|
|
686
|
+
|
|
687
|
+
/**
|
|
688
|
+
* 获取排序后的索引列表。如 [2,1,3] 排序为 [1,2,3] 索引为 [1,0,2]
|
|
689
|
+
*
|
|
690
|
+
* @param data - 原始数据
|
|
691
|
+
* @param sortHandler 排序处理函数,与原生排序使用方式一致
|
|
692
|
+
* @returns 索引列表
|
|
693
|
+
*
|
|
694
|
+
*/
|
|
695
|
+
declare function getSortIndex<T>(data: T[], sortHandler: (a: T, b: T) => number): number[];
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* 按索引顺序对数组进行排序
|
|
699
|
+
* @param data 需要排序的数据
|
|
700
|
+
* @param index 索引列表
|
|
701
|
+
* @returns 新数据
|
|
702
|
+
*/
|
|
703
|
+
declare function sortWithIndex<T>(data: T[], index: ReturnType<typeof getSortIndex>): T[];
|
|
704
|
+
|
|
705
|
+
type TListGroupKey<T extends TKvPair> = {
|
|
706
|
+
field: string | string[];
|
|
707
|
+
sort?: (a: TInnerGroupListItem<T>, b: TInnerGroupListItem<T>) => number;
|
|
708
|
+
};
|
|
709
|
+
type TGetValueField = string;
|
|
710
|
+
interface ICellSummary {
|
|
711
|
+
denominator?: [string, 'length' | 'uniqLength'];
|
|
712
|
+
/**
|
|
713
|
+
* sum 求和
|
|
714
|
+
* length 长度
|
|
715
|
+
* uniqLength 去重长度
|
|
716
|
+
*/
|
|
717
|
+
numerator: [string, 'sum' | 'length' | 'uniqLength'];
|
|
718
|
+
}
|
|
719
|
+
type TColCustomWay = {
|
|
720
|
+
/** 计算方式 */
|
|
721
|
+
0: 'sum' | 'max' | 'diff';
|
|
722
|
+
/** 参与计算的列(就是被转为列的那些值) */
|
|
723
|
+
1: string[] | '*';
|
|
724
|
+
/** 获取值的方式 */
|
|
725
|
+
2?: 'value' | 'length' | 'uniqLength';
|
|
726
|
+
/** 原始数据中的字段 */
|
|
727
|
+
3?: string;
|
|
728
|
+
};
|
|
729
|
+
interface IListGroupOption<T extends TKvPair> {
|
|
730
|
+
/**
|
|
731
|
+
* 按字段值组装树形结构数据
|
|
732
|
+
*/
|
|
733
|
+
path: TListGroupKey<T>[];
|
|
734
|
+
/**
|
|
735
|
+
* 将此字段转为列,并做一些基础统计
|
|
736
|
+
*/
|
|
737
|
+
colField?: keyof T;
|
|
738
|
+
/**
|
|
739
|
+
* 组装后数据的计算方法
|
|
740
|
+
*/
|
|
741
|
+
cellSummary?: ICellSummary;
|
|
742
|
+
/**
|
|
743
|
+
* 自定义列。分子➗分母
|
|
744
|
+
*/
|
|
745
|
+
colCustom?: Record<
|
|
746
|
+
string,
|
|
747
|
+
{
|
|
748
|
+
numerator: TColCustomWay;
|
|
749
|
+
denominator?: TColCustomWay;
|
|
750
|
+
riseRatio?: boolean;
|
|
751
|
+
}
|
|
752
|
+
>;
|
|
753
|
+
}
|
|
754
|
+
interface TInnerColumnsSummaryItem<T> extends TKvPair {
|
|
755
|
+
data: T[];
|
|
756
|
+
summary: number | undefined;
|
|
757
|
+
_collect: any[];
|
|
758
|
+
}
|
|
759
|
+
type TInnerGroupListItem<T extends TKvPair> = {
|
|
760
|
+
uid: string;
|
|
761
|
+
uidPath: string[];
|
|
762
|
+
data: T[];
|
|
763
|
+
_columns: Record<string, TInnerColumnsSummaryItem<T>>;
|
|
764
|
+
_columnRiseRatio: Record<string, number | undefined>;
|
|
765
|
+
_columnTotal: Record<string, number>;
|
|
766
|
+
_columnProportion: Record<string, number>;
|
|
767
|
+
isLeaf: boolean;
|
|
768
|
+
children: TInnerGroupListItem<T>[];
|
|
769
|
+
};
|
|
770
|
+
declare function listGroup<T extends TKvPair>(
|
|
771
|
+
data: T[],
|
|
772
|
+
options: IListGroupOption<T>
|
|
773
|
+
): {
|
|
774
|
+
/** 树形分组数据 */
|
|
775
|
+
data: TInnerGroupListItem<T>[];
|
|
776
|
+
/** 获取单元格:值 */
|
|
777
|
+
getCellValue: (
|
|
778
|
+
uidPath: string[],
|
|
779
|
+
field: TGetValueField,
|
|
780
|
+
formatter: (value: number, list: T[]) => string,
|
|
781
|
+
defaultData?: string
|
|
782
|
+
) => string;
|
|
783
|
+
/** 获取单元格:纵向增长率 */
|
|
784
|
+
getCellVerticalRiseRatio: (
|
|
785
|
+
uidPath: string[],
|
|
786
|
+
field: TGetValueField,
|
|
787
|
+
formatter: (value: number) => string,
|
|
788
|
+
defaultData?: string
|
|
789
|
+
) => string;
|
|
790
|
+
/** 获取单元格:纵向累计 */
|
|
791
|
+
getCellVerticalTotal: (
|
|
792
|
+
uidPath: string[] | '*',
|
|
793
|
+
field: TGetValueField,
|
|
794
|
+
formatter: (value: number) => string,
|
|
795
|
+
defaultData?: string
|
|
796
|
+
) => string;
|
|
797
|
+
/** 获取单元格:纵向比重 */
|
|
798
|
+
getCellVerticalProportion: (
|
|
799
|
+
uidPath: string[],
|
|
800
|
+
field: TGetValueField,
|
|
801
|
+
formatter: (value: number) => string,
|
|
802
|
+
defaultData?: string
|
|
803
|
+
) => string;
|
|
804
|
+
/** 获取一行:值 */
|
|
805
|
+
getRowCellValue: (
|
|
806
|
+
uidPath: string[],
|
|
807
|
+
fieldList: {
|
|
808
|
+
id: string;
|
|
809
|
+
field: TGetValueField;
|
|
810
|
+
}[],
|
|
811
|
+
formatter: (value: number) => string,
|
|
812
|
+
defaultData?: string
|
|
813
|
+
) => Record<string, string>;
|
|
814
|
+
/** 获取一行:纵向比重 */
|
|
815
|
+
getRowVerticalProportion: (
|
|
816
|
+
uidPath: string[],
|
|
817
|
+
fieldList: {
|
|
818
|
+
id: string;
|
|
819
|
+
field: TGetValueField;
|
|
820
|
+
}[],
|
|
821
|
+
formatter: (value: number) => string,
|
|
822
|
+
defaultData?: string
|
|
823
|
+
) => Record<string, string>;
|
|
824
|
+
/** 获取一个分组的所有原始数据,用于使用者自行计算 */
|
|
825
|
+
getOriginGroupData: (uidPath: string[], field: TGetValueField) => T[];
|
|
826
|
+
getOriginAllData: () => T[];
|
|
827
|
+
};
|
|
828
|
+
|
|
829
|
+
declare function union<T extends TKvPair>(...args: T[]): T[];
|
|
830
|
+
|
|
831
|
+
declare function getRatio(value: number | undefined, base: number | undefined): number;
|
|
832
|
+
|
|
833
|
+
/**
|
|
834
|
+
* 筛选并从原始数组移除符合条件的数据
|
|
835
|
+
* @param data - 原始数据
|
|
836
|
+
* @param predicate - 迭代回调
|
|
837
|
+
* @returns 筛选的结果
|
|
838
|
+
*/
|
|
839
|
+
declare function filterWithMove<T, S extends T>(
|
|
840
|
+
data: T[],
|
|
841
|
+
predicate: (value: T, index: number, array: T[]) => value is S
|
|
842
|
+
): S[];
|
|
843
|
+
|
|
844
|
+
type TUnits = [number, string];
|
|
845
|
+
/**
|
|
846
|
+
* 数字格式化为简称
|
|
847
|
+
* @param data - 数字
|
|
848
|
+
* @param formatter - 格式化数字(不包括单位)
|
|
849
|
+
* @param units - 格式化规则,可自定义
|
|
850
|
+
* @returns 数字简写
|
|
851
|
+
*/
|
|
852
|
+
declare function export_default(
|
|
853
|
+
data: number,
|
|
854
|
+
formatter: (data: number) => string,
|
|
855
|
+
units?: TUnits[]
|
|
856
|
+
): {
|
|
857
|
+
value: number;
|
|
858
|
+
fmtValue: string;
|
|
859
|
+
unit: string;
|
|
860
|
+
};
|
|
498
861
|
|
|
499
862
|
export {
|
|
500
863
|
Polling,
|
|
864
|
+
TArrayRowToColumnCalculateRow,
|
|
501
865
|
_Array,
|
|
502
866
|
_Boolean,
|
|
503
867
|
_KvPair,
|
|
504
868
|
_Number,
|
|
505
869
|
_String,
|
|
870
|
+
arrayRowToColumn,
|
|
506
871
|
changeIndex,
|
|
507
|
-
clean,
|
|
508
872
|
cloneEasy,
|
|
509
873
|
dataPage,
|
|
510
874
|
deepFindItem,
|
|
511
875
|
deepFindTreePath,
|
|
512
876
|
defaultValue,
|
|
513
877
|
defineEventBus,
|
|
878
|
+
fieldCheck,
|
|
879
|
+
filterWithMove,
|
|
514
880
|
flatTree,
|
|
515
881
|
floorFixed,
|
|
516
882
|
forEach,
|
|
883
|
+
forEachKvPair,
|
|
517
884
|
forEachTree,
|
|
518
885
|
getRandom,
|
|
886
|
+
getRatio,
|
|
887
|
+
getSortIndex,
|
|
519
888
|
getType,
|
|
520
889
|
isArray,
|
|
521
890
|
isEmpty,
|
|
522
891
|
isFunction,
|
|
892
|
+
isFuzzyMatch,
|
|
523
893
|
isKvPair,
|
|
894
|
+
isLikeNumber,
|
|
524
895
|
isNull,
|
|
525
896
|
isString,
|
|
897
|
+
listGroup,
|
|
898
|
+
mapKvPair,
|
|
526
899
|
main as mapTree,
|
|
900
|
+
mixInZeroWidthUnicode,
|
|
527
901
|
padEnd,
|
|
528
902
|
padStart,
|
|
529
903
|
param,
|
|
@@ -532,9 +906,14 @@ export {
|
|
|
532
906
|
repeatString,
|
|
533
907
|
roundFixed,
|
|
534
908
|
shake,
|
|
909
|
+
export_default as shortNumber,
|
|
910
|
+
sortWithIndex,
|
|
911
|
+
spanTable,
|
|
535
912
|
split,
|
|
913
|
+
thousands,
|
|
536
914
|
flatArrayToTree as tree,
|
|
537
915
|
trim,
|
|
916
|
+
union,
|
|
538
917
|
urlToGet,
|
|
539
918
|
uuid,
|
|
540
919
|
variableHasValue
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 纯JS工具库 => jUtilsBase
|
|
3
|
+
* @update 2024-06-11 15:02:05
|
|
4
|
+
*/
|
|
5
|
+
var $letters=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],$ArrayTypeNameBig="Array",$FunctionTypeNameBig="Function",$ObjectTypeNameBig="Object",$stringTypeNameBig="String",$numberTypeNameBig="Number",$undefinedValue=void 0,$zeroString="0",$falseString="false",$trueString="true",$ObjectTypeNameBigPrototypeToString=Object.prototype.toString,$encodeURI=encodeURI,$decodeURIComponent=decodeURIComponent,$regSpaceStr="\\s\\uFEFF\\xA0",$zeroWidthCode="";function isNull(e){return null===e||e===$undefinedValue}function _String(e){return isNull(e)?"":String(e)}function getType(e){return $ObjectTypeNameBigPrototypeToString.call(e).slice(8,-1)}function isArray(e){return getType(e)===$ArrayTypeNameBig}function isKvPair(e){return getType(e)===$ObjectTypeNameBig}function isString(e){return getType(e)===$stringTypeNameBig}function hpJsonParse(e,n){var r;try{r=JSON.parse(e)}catch(t){r=n}return r}function _KvPair(e){return e=isKvPair(e)||isKvPair(e=hpJsonParse(e))?e:{}}function isEmpty(e){return isNull(e)||""===e}function isFunction(e){return"function"==typeof e}function param(e){var r=[];function a(e,n){null!=e&&""!==e&&(n=null==(n=isFunction(n)?n():n)?"":n,r[r.length]=$encodeURI(e)+"="+$encodeURI(n))}return function i(e,n){var r,t;if(e)switch(getType(n)){case $ArrayTypeNameBig:for(r=0;r<n.length;r++)i(e+"["+("object"==typeof n[r]&&n[r]?r:"")+"]",n[r]);break;case $ObjectTypeNameBig:for(t in n)i(e+"["+t+"]",n[t]);break;default:a(e,n)}else switch(getType(n)){case $stringTypeNameBig:case $ObjectTypeNameBig:for(t in n)i(t,n[t]);break;case $ArrayTypeNameBig:for(r=0;r<n.length;r++)a(n[r].name,n[r].value)}}("",e),r.join("&")}function _Array(e){return e=isArray(e)||isArray(e=hpJsonParse(e))?e:[]}function _Number(e){return e=Number(e),Math.abs(e)===Math.abs(Infinity)||isNaN(e)?0:e}function hpTryToParseStringToBasicType(e){return null==e?$undefinedValue:$falseString!==e&&($trueString===e||hpJsonParse(e,e))}var defaultSplitArr=[$undefinedValue,$undefinedValue];function handleDeepKey(e,n,r){var n=splitSymbol(n),t=n[0];isPreLikeArray(t)?(t=_Number(t),n[1]==$undefinedValue?e.push(r):(/^\[[\D]+\]/.test(n[1])?e[t]=_KvPair(e[t]):e[t]=_Array(e[t]),handleDeepKey(e[t],n[1],r))):n[1]==$undefinedValue?e[t]=r:(/^\[[\D]+\]/.test(n[1])?e[t]=_KvPair(e[t]):e[t]=_Array(e[t]),handleDeepKey(e[t],n[1],r))}function splitSymbol(e){if(e==$undefinedValue)return defaultSplitArr;var t,a=e;return e.replace(/^\[(.*?)\](.*)?/,function(e,n,r){return a=n,t=r,""}),[a,t]}function isPreLikeArray(e){return""===e||/^\d+$/.test(e)}function parseQuery(e){var i={},o=!1,r="";return(e=isNull(e)?"":e).replace(/([^=&?/#]*?)=([^=&?/#]*)/g,function(e,n,a){a=hpTryToParseStringToBasicType($decodeURIComponent(a)),r=$decodeURIComponent(n),o=!1,""!==r&&(r.replace(/(.*?)(\[.*)/,function(e,n,r){var t=splitSymbol(r);o=!0,isPreLikeArray(t[0])?i[n]=_Array(i[n]):i[n]=_KvPair(i[n]),handleDeepKey(i[n],r,a)}),o||(i[r]=a))}),i}var baseReg="["+$regSpaceStr+"]+";function trim(e,n){var r=getType(e),t=(r===$numberTypeNameBig&&(e=String(e),r=$stringTypeNameBig),"");if(r!==$stringTypeNameBig)return"";switch(n){case 1:t="^"+baseReg;break;case-1:t=baseReg+"$";break;case"*":t=baseReg;break;default:t="^"+baseReg+"|"+baseReg+"$"}return e.replace(new RegExp(t,"g"),"")}function urlToGet(e,n){e=_String(e);var i=isKvPair(n)?n:parseQuery(n),n=parseQuery(e=e.replace(/({{)(.*?)(}})/g,function(e,n,r,t){r=trim(r);var a=i[r];return delete i[r],a})),n=param(i=Object.assign(n,i));return e=n?(e=e.replace(/\?.*/,""))+"?"+n:e}function hpIsEmptyMap(e){var n,r=!0;for(n in e)if(n!==$undefinedValue){r=!1;break}return r}function cloneEasy(e){switch(getType(e)){case $ArrayTypeNameBig:for(var n=[],r=0;r<e.length;r++)n.push(cloneEasy(e[r]));break;case $ObjectTypeNameBig:for(var t in n={},e)n[t]=cloneEasy(e[t]);break;case $FunctionTypeNameBig:function a(){e.apply(this,arguments)}for(var i in e.prototype)a.prototype[i]=e.prototype[i];n=a;break;default:n=e}return n}function isNoData(e,n){var r=!1;return r=isArray(e)&&n.array&&0===e.length||isKvPair(e)&&n.kvPair&&hpIsEmptyMap(e)||isString(e)&&n.string&&""===e||isNull(e)?!0:r}function hander(e,n){if(isKvPair(e))for(var r in e){var t=e[r];(isArray(t)||isKvPair(t))&&hander(t,n),isNoData(t,n)&&delete e[r]}}function shake(e,n){n=Object.assign({string:!0,array:!0,kvPair:!0},n);return hander(e=cloneEasy(e),n),e}function variableHasValue(e,n,r){var t;r=null==r?60:r,e()?n():(clearTimeout(t),setTimeout(function(){variableHasValue(e,n,r)},r))}variableHasValue["async"]=function(n,r){return new Promise(function(e){variableHasValue(n,e,r)})};var DEFAULT_CONFIG={id:"id",children:"children"};function deepFindTreePath(e,n,r){r=Object.assign(DEFAULT_CONFIG,r);for(var t=[],a=cloneEasy(e),i=new Set,o=r["children"];a.length;){var u=a[0];if(i.has(u))t.pop(),a.shift();else if(i.add(u),u[o]&&a.unshift.apply(a,u[o]),t.push(u),n(u))return t}return undefined}function isLikeNumber(e){var n=!1;return"boolean"==typeof e||isArray(e)||null==e||""===e||(e=Number(e),n=!isNaN(e)&&Infinity!=Math.abs(e)),n}function defaultValue(e,n){return isNull(e)?n:e}function repeatString(e,n){var r="";if((e=_String(e)).length*n<1<<28)for(;1==(1&n)&&(r+=e),0!=(n>>>=1);)e+=e;return r}function hpPadString(e,n,r,t){return(e=_String(e)).length>(n>>=0)?e:(n-=e.length,r.length<n&&(r+=repeatString(r,n/r.length)),-1===t?r.slice(0,n)+e:e+r.slice(0,n))}function padStart(e,n,r){return hpPadString(e,n,r,-1)}function padEnd(e,n,r){return hpPadString(e,n,r,1)}function split(e,n){return""!==e?e.split(n):[]}function floorFixed(e,n,r){var e=split(e=trim(_Number(e)),"."),t=e[1]||"";return t.length<n&&(t=padEnd(t,n,$zeroString),r&&(t=t.replace(/0+$/,""))),n<1||!t?e[0]:e[0]+"."+t.substring(0,n)}function roundFixed(e,n,r){e=_Number(e);var t,a=Math.pow(10,n),e=_String(Math.round(e*a)/a);return 0<n&&(t=(a=split(e,"."))[0],(a=a[1]||"").length<n&&(a=padEnd(a,n,$zeroString),e=(a=r?a.replace(/0+$/,""):a)?t+"."+a:t)),e}function deepFindItem(e,r,n){var t,a,i=isNull(n)?"children":n;return function o(e){if(e)for(var n=0;n<e.length;n++){if(a=r(e[n])){t=e[n];break}if(o(e[n][i]),a)break}}(e),t}function flatArrayToTree(e,n){for(var r=(n=_KvPair(n)).id||"id",t=n.pid||"pid",a=n.children||"children",i=0;i<e.length;i++){var o,u=e[i];(o=deepFindItem(e,function(e){return null!=e[r]&&e[r]!=u[r]&&e[r]===u[t]},a))&&(o[a]=_Array(o[a]),o[a].push(u),e.splice(i--,1))}return e}function changeIndex(e,n,r){if(e<0)return n;e+=1;return(n=(n+r)%e)<0&&(n+=e),-0===n?0:n}function getRandom(e,n,r){r=!1===r?0:1;return e=Math.random()*(n-e+r)+e,r?Math.floor(e):e}function getRandomWord(){return $letters[getRandom(0,$letters.length-1)][0]}function uuid(e){e=_Number(e);for(var n="",r=0;r<13;r++)n+=getRandom(1,9);e=(new Date).getTime()*getRandom(1,100);return padEnd(getRandomWord()+Number(n).toString(32)+e.toString(32),20,getRandomWord()+getRandomWord()+getRandomWord())}function _Boolean(e){return!0===e||"true"===e||"1"===e||1===e}function flatTree(e,t){var a=[];return t=defaultValue(t,"children"),function i(e){if(isArray(e))for(var n,r=0;r<e.length;r++)n=e[r],a.push(n),i(n[t])}(e),a}function main(e,a,i,o){o=o||"children";var n=[];return function u(e,n){for(var r=0;r<e.length;r++){var t=i(e[r]);isNull(t)||(n[r]=cloneEasy(t),e[r][o]&&(n[r][a]=[],u(e[r][o],n[r][a])))}}(e,n),n}var events={};function defineEventBus(a){if(events[a])throw'"'+a+'" Has already been registered!';return events[a]=events[a]||[],{on:function(e){events[a].push(e)},emit:function(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];for(var t=0;t<events[a].length;t++)events[a][t].apply($undefinedValue,n)},off:function(e){if(!e)throw"the hander of off is required!";for(var n=0;n<events[a].length;n++)events[a][n]===e&&events[a].splice(n--,1)},dispose:function(){for(var e=0;e<events[a].length;e++)events[a].splice(e--,1);delete events[a]}}}function forEachTree(e,a,i){i=i||"children",function o(e,n){for(var r=0;r<e.length;r++){var t=cloneEasy(n);a(e[r],t),isArray(e[r][i])&&(t.push(e[r]),o(e[r][i],t))}}(e,[])}function forEach(e,n){for(var r=0;r<e.length;r++)n(e[r],r,e)}function randomColor(){return"rgba("+getRandom(0,255,!0)+","+getRandom(0,255,!0)+","+getRandom(0,255,!0)+",1)"}function emptyFunc(e,n){}var Polling=function(){function e(e){this._timer=void 0,this._timer_info=void 0,this._stamp=0,this._passStamp=0,this._option=void 0,this._option=Object.assign({timeout:6e3,interval:1e3,handler:emptyFunc},e),this._next=this._next.bind(this),this._doOnce=this._doOnce.bind(this),this.done=this.done.bind(this)}var n=e.prototype;return n._next=function(){return clearInterval(this._timer),this._passStamp=+new Date-this._stamp,this._timer=setTimeout(this._doOnce,this._option.interval),this},n._doOnce=function(){if(this._passStamp>=this._option.timeout)return this._option.onMessage&&this._option.onMessage(0),this.done(),this;this._option.handler(this._next,this.done)},n.start=function(){var e,n=this;this._stamp=+new Date,this.done(),this._doOnce();return this._option.onMessage&&(clearInterval(this._timer_info),this._timer_info=setInterval(function(){e=+new Date-n._stamp,0===(e=Math.max(n._option.timeout-e,0))&&n.done(),n._option.onMessage(e)},100)),this},n.done=function(){return clearTimeout(this._timer),clearTimeout(this._timer_info),this},n.dispose=function(){return this.done(),this},e}();function dataPage(e,n,r){if(r<1)throw"页码必须大于0";var t=(r-1)*n,a=t+n;return{current:r,total:e.length,size:n,pages:Math.ceil(e.length/n),data:cloneEasy(e.slice(t,a))}}function basicCheck(e,n,r,t){if(e="【"+e+"】",r&&isEmpty(n))throw"字段"+e+"不能为空";if(getType(n)!==t)switch(t){case"String":n=String(n);break;case"Number":if(!isLikeNumber(n))throw"字段"+e+"必须为数字";n=Number(n)}return n}var fieldCheck={number:function(e,n){return basicCheck(e,n,!(2<arguments.length&&arguments[2]!==undefined)||arguments[2],"Number")},string:function(e,n){return basicCheck(e,n,2<arguments.length&&arguments[2]!==undefined&&arguments[2],"String")}};function uniq(e){return Array.from(new Set(e))}var defaultSortFun=function(e,n){return Number(e)-Number(n)},_names_count=0,_namesMap={};function getIdMap(e){return _namesMap[e]||(_namesMap[e]={id:++_names_count,label:e}),_namesMap[e]}function createUniqIds(e,n){var r=[],t=[];return e.forEach(function(e){e=getIdMap(n[e]);r.push(e.id),t.push(e.label)}),{id:r.join("_"),label:t.join("→")}}function arrayRowToColumn(e,a){var n,r=[],i=(e.forEach(function(e){e=String(e[a.colField]);r.includes(e)||r.push(e)}),r.sort(null!=(t=a.colSort)?t:defaultSortFun),{}),f=(e.forEach(function(n){var e=createUniqIds(a.uniqueRowId,n),r={},t=(a.uniqueRowId.forEach(function(e){r[e]=n[e]}),i[e.id]=i[e.id]||{value:r,name:e.label,data:{}},a.colCreate(n[a.colField]).field);i[e.id].data[t]=i[e.id].data[t]||[],i[e.id].data[t].push(n)}),[]);for(n in i)f.push({name:i[n].name,value:i[n].value,data:i[n].data,summary:{}});var t=r.map(function(e){var n=a.colCreate(e);return{value:e,label:n.label,field:n.field}}),d={};return a.summaryConfig&&(a.summaryConfig.row&&(f=mergeRowSummary(f,a.summaryConfig.row,a.summaryConfig.averageField)),a.summaryConfig.column&&(d=mergeColSummary(f,a.summaryConfig.column,a.summaryConfig.averageField))),{columns:t,data:f,colSummary:d,getExtRow:function(n,e,r){var t,a=f.find(function(e){return e.name===n}),i={};if(!a){var o=e,u=r,c=d[n],l={};if(c)for(var s in c)l[s]=u(c[s][o]);return l}for(t in a.summary)i[t]=r(a.summary[t][e]);return i}}}function getRatio$1(e,n){return e===$undefinedValue||n===$undefinedValue?$undefinedValue:(n-e)/e}function mergeRowSummary(a,i,n){return a.forEach(function(c){var l=i[c.name];if(l){var s,e,f=0,d=0;for(e in c.data)!function(e){d++;var n,r=[],t=0,a=[],i=[],o=(c.data[e].forEach(function(e){r.push(e[l.count.field]);var n=_Number(e[l.value.field]);switch(l.value.mode){case"uniqLength":a.push(e[l.value.field]),a=uniq(a),t=a.length;break;case"sum":case"avg":t+=n}0!==n&&i.push(n)}),0);switch(l.count.mode){case"length":o=r.length;break;case"uniqLength":o=uniq(r).length;break;case"notZeroValue":o=i.length}var u=t;"avg"===l.value.mode&&(u=t/o),f+=u,c.summary[e]={value:u,proportion:0,riseRatio:s?getRatio$1(null==(n=c.summary[s])?void 0:n.value,u):void 0},s=e}(e);c.summary[n]={value:f/d,riseRatio:$undefinedValue,proportion:0}}}),a.forEach(function(e){var n=i[e.name];if(n){var r=a.find(function(e){return e.name===n.proportionBaseField});if(n.proportionBaseField&&r)for(var t in e.summary)e.summary[t].proportion=e.summary[t].value/r.summary[t].value}}),a}function mergeColSummary(l,s,f){var e,d={},m={},n=function(a){m[a]={},d[a]={};var e,i=s[a],n=(l.forEach(function(t){for(var e in t.data)!function(e){d[a][e]=d[a][e]||{data:[],sum:0};var n=[],r=0;switch(t.data[e].forEach(function(e){switch(n.push(e[i.field]),i.mode){case"uniqLength":n=uniq(n);break;case"avg":case"sum":r+=e[i.field];break;case"notZeroLength":0!==_Number(e[i.field])&&r++}}),i.mode){case"uniqLength":n=uniq(n);break;case"avg":r/=t.data[e].length}d[a][e].data=d[a][e].data.concat(n),d[a][e].sum+=r}(e)}),void 0);for(e in d[a]){var r,t=0;switch(i.mode){case"avg":t=d[a][e].sum/l.length;break;case"uniqLength":t=d[a][e].data.length;break;case"notZeroLength":case"sum":t=d[a][e].sum}m[a][e]={value:t,proportion:0,riseRatio:n?getRatio$1(null==(r=m[a][n])?void 0:r.value,t):void 0},n=e}var o,u=0,c=0;for(o in m[a])u+=m[a][o].value,c++;m[a][f]={value:u/c,riseRatio:$undefinedValue,proportion:0}};for(e in s)n(e);return m}function sameRowCellCount(e,n,r,t){var a=1;for(e++;e<t.length;e++){var i=t[e][n];if(i!==r&&!isEmpty(i))break;a++}return a}function findPrevRowSpanNum(e,n,r){for(var t=0;0<=n&&!(0<(t=e[n].$rowSpan[r]));n--);return t}function sameColSellCount(e,n,r,t){var a=1;for(e++;e<t.length;e++){var i=trim(r[t[e]]);if(i!==n&&!isEmpty(i))break;a++}return a}function spanTable(e,u){var c=cloneEasy(e),l={};return u.forEach(function(e,n){var a,i,o;a=e,i=u[n-1],o=0,c.forEach(function(e,n){e.$rowSpan=null!=(t=e.$rowSpan)?t:{};var r,t=e[a];l[a]=null!=(r=l[a])?r:0,1<l[a]?(e.$rowSpan[a]=0,l[a]--):(r=sameRowCellCount(n,a,t,c),void 0!==i&&(t=findPrevRowSpanNum(c,n,i),0<o?t<=o+r?(r=t-o,o=0):o+=r:r<t?o=r:r=t),l[a]=r,e.$rowSpan[a]=l[a])})}),c.forEach(function(t){t.$colSpan={},t.$colField={};var a=0;u.forEach(function(e,n){var r=t[e];1<a?(t.$colSpan[n]=0,t.$colField[e]=0,a--):(a=sameColSellCount(n,r,t,u),t.$colSpan[n]=a,t.$colField[e]=a)})}),c}function thousands(e,a,i){return a=a||3,i=i||",",(isString(e)?e:_String(e)).replace(/([^.]*)?(\.)?(.*)?/,function(e,n,r,t){return _String(n).replace(new RegExp("(.(?=(.{"+a+"})+$))","g"),"$1"+i)+_String(r)+_String(t)})}function mapKvPair(e,n){var r,t={};for(r in e)t[r]=n(cloneEasy(e[r]),r);return t}function isFuzzyMatch(e,n,r){var t=!0;return(e=trim(e,"*"))&&(e=split(e,"").join(".*"),t=new RegExp(e,_String(r)).test(n)),t}function mixInZeroWidthUnicode(e){return split(e,"").join($zeroWidthCode)}function forEachKvPair(e,n){var r,t={},a=-1;for(r in e)a++,t[r]=n(e[r],r,a);return t}function getSortList(e){return e.map(function(e,n){return{value:e,index:n}})}function getSortIndex(e,r){var n=getSortList(e),t=getSortList(e);return t.sort(function(e,n){return r(e.value,n.value)}),n.map(function(n){return t.findIndex(function(e){return n.index===e.index})})}function sortWithIndex(e,n){for(var r=[],t=0;t<e.length;t++)r[t]=e[n[t]];return r}function getRatio(e,n){return 0===e||isNull(e)?0:0===n||isNull(n)?1:e/n}function difference(e,r,t){var a=[];return e.forEach(function(n){r.some(function(e){return t(e,n)})||a.push(n)}),r.forEach(function(n){e.some(function(e){return t(e,n)})||a.some(function(e){return t(e,n)})||a.push(n)}),a}function hpObjectKeys(e){return Object.keys(e)}var AVG_FIELD="sys-row-avg";function getUniqId(e,n){var r=[];return isArray(e)?e.forEach(function(e){r.push(n[e])}):r.push(n[e]),r.join("→")}function _rowToColumn(e,n){var u={},r=n.colField;if(!isNull(r)&&e.length){var a=n.cellSummary;if(e.forEach(function(e){var n=e[r];u[n]=u[n]||{data:[],summary:0,_collect:[]},u[n].data.push(e),a&&(e=e[a.numerator[0]],u[n].summary+=e,u[n]._collect.push(e))}),!isNull(a)){var t,i,o;for(t in u)!function(e){var n=u[e],r=1,t=a.denominator;if(t)switch(t[1]){case"length":r=n.data.map(function(e){return e[t[0]]}).length;break;case"uniqLength":r=uniq(n.data.map(function(e){return e[t[0]]})).length}switch(a.numerator[1]){case"sum":isNull(n.summary)||(n.summary=n.summary/r);break;case"length":n.summary=n._collect.length/r;break;case"uniqLength":n.summary=uniq(n._collect).length/r}}(t);o=i=0,forEachKvPair(u,function(e){i++;e=isNull(e.summary)?0:e.summary;o+=e}),u[AVG_FIELD]={data:[],summary:o/i,_collect:[]},n.colCustom&&forEachKvPair(n.colCustom,function(e,n){var r=c(e.numerator),e=e.denominator?c(e.denominator):1;u[n]={data:[],summary:getRatio(r,e),_collect:[]}})}}return u;function c(i){var o=0,e=hpObjectKeys(u).filter(function(e){var n=[AVG_FIELD].includes(e),e="*"===i[1]||i[1].includes(e);return!n&&e});return isArray(i[1])&&e.sort(function(e,n){return i[1].indexOf(e)-i[1].indexOf(n)}),e.forEach(function(e,n){var r,t,e=u[e],a=0;isNull(i[2])||"value"===i[2]?a=isNull(e.summary)?0:e.summary:"length"===i[2]?(r=i[3])&&(a=e.data.map(function(e){return e[r]}).length):"uniqLength"===i[2]&&(t=i[3])&&(a=uniq(e.data.map(function(e){return e[t]})).length),"sum"===i[0]?o+=a:"max"===i[0]?o=Math.max(o,a):"diff"===i[0]&&(0===n?o=a:o-=a)}),o}}function _groupToList(e,n,r,t){var a,i=[];for(a in e){var o=n===r,u=_groupToList(e[a].child,n,r+1,t);i.push({uidPath:e[a].uidPath,uid:e[a].uid,data:e[a].data,_columnRiseRatio:{},_columnTotal:{},_columnProportion:{},_columns:_rowToColumn(e[a].data,t),isLeaf:o,children:u})}return i}function deepGroup(e,u){var n={},c=0;!function s(e,n,r){for(var t=0;t<n.length;t++){var a=n[t],i=getUniqId(u.path[c].field,a);e[i]=e[i]||{uidPath:r.concat(i),uid:i,data:[],child:{}},e[i].data.push(a)}if(c<u.path.length-1)for(var o in c++,e)s(e[o].child,e[o].data,e[o].uidPath)}(n,e,[]);var e=_groupToList(n,c,0,u),t=(!function a(e,n){var r;e.sort(null==(r=u.path[n])?void 0:r.sort),e.forEach(function(e){a(e.children,n+1)})}(e,0),!function i(e){e.forEach(function(e){var r={};forEachKvPair(e._columns,function(e,n){e=isNull(e.summary)?0:e.summary;r[n]=r[n]||0,r[n]+=e}),e._columnTotal=r,i(e.children)})}(e),{}),l=(e.forEach(function(r){forEachKvPair(r._columns,function(e,n){t[n]=t[n]||0,t[n]+=r._columnTotal[n]})}),[]);return u.colCustom&&forEachKvPair(u.colCustom,function(e,n){e.riseRatio||l.push(n)}),function r(e){var i={},o={};e.forEach(function(e,a){forEachKvPair(e._columns,function(e,n){var r,t;l.includes(n)||(0<a?isNull(r=e.summary)?o[n]=$undefinedValue:(t=null!=(t=i[n])?t:0,o[n]=getRatio(r-t,t)):o[n]=void 0,i[n]=e.summary)}),e._columnRiseRatio=o,r(e.children)})}(e),function o(e,t){e.forEach(function(e,n){var r={};forEachKvPair(e._columns,function(e,n){r[n]=getRatio(e.summary,t[n])}),e._columnProportion=r,o(e.children,e._columnTotal)})}(e,t),{data:e,total:t}}function listGroup(e,n){var s=deepGroup(e,n);function i(e,n,r,t,a){var i=deepFindItem(s.data,function(e){return 0===difference(e.uidPath,n,function(e,n){return e===n}).length}),o=defaultValue(a,"");if(i)try{switch(e){case"_columnRiseRatio":case"_columnTotal":case"_columnProportion":var u=i[e][r];return isNull(u)?o:t(u);default:var c=i[e][r].summary;return isNull(c)?o:t(c,i[e][r].data)}}catch(l){return o}return o}function o(e,n,r,t){return i("_columns",e,n,r,t)}function u(e,n,r,t){return i("_columnProportion",e,n,r,t)}return{data:s.data,getCellValue:o,getCellVerticalRiseRatio:function(e,n,r,t){return i("_columnRiseRatio",e,n,r,t)},getCellVerticalTotal:function(e,n,r,t){var a;return"*"===e?isNull(a=s.total[n])?defaultValue(t,""):r(a):i("_columnTotal",e,n,r,t)},getCellVerticalProportion:u,getRowCellValue:function(n,e,r,t){var a={};return e.forEach(function(e){a[e.id]=o(n,e.field,r,t)}),a},getRowVerticalProportion:function(n,e,r,t){var a={};return e.forEach(function(e){a[e.id]=u(n,e.field,r,t)}),a},getOriginGroupData:function(n,e){var r=deepFindItem(s.data,function(e){return 0===difference(e.uidPath,n,function(e,n){return e===n}).length});return r&&null!=(r=null==(e=r._columns[e])?void 0:e.data)?r:[]},getOriginAllData:function(){return e}}}function union(){for(var e=arguments.length,n=new Array(e),r=0;r<e;r++)n[r]=arguments[r];var t=new Set(n);return Array.from(t)}function filterWithMove(e,n){for(var r=[],t=0;t<e.length;t++){var a=e[t];n(a,t,e)&&(r.push(a),e.splice(t--,1))}return r}var defaUnits=[[1e4,"万"],[1e8,"亿"]];function shortNumber(e,n,r){for(var t=isNull(r)?defaUnits:r,a=(t.sort(function(e,n){return n[0]-e[0]}),e),i="",o=0;o<t.length;o++){var u=t[o],c=e/u[0];if(1<=c){a=c,i=u[1];break}}return{value:a,fmtValue:n(a),unit:i}}export{Polling,_Array,_Boolean,_KvPair,_Number,_String,arrayRowToColumn,changeIndex,cloneEasy,dataPage,deepFindItem,deepFindTreePath,defaultValue,defineEventBus,fieldCheck,filterWithMove,flatTree,floorFixed,forEach,forEachKvPair,forEachTree,getRandom,getRatio,getSortIndex,getType,isArray,isEmpty,isFunction,isFuzzyMatch,isKvPair,isLikeNumber,isNull,isString,listGroup,mapKvPair,main as mapTree,mixInZeroWidthUnicode,padEnd,padStart,param,parseQuery,randomColor,repeatString,roundFixed,shake,shortNumber,sortWithIndex,spanTable,split,thousands,flatArrayToTree as tree,trim,union,urlToGet,uuid,variableHasValue};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 纯JS工具库 => jUtilsBase
|
|
3
|
+
* @update 2024-06-11 15:02:05
|
|
4
|
+
*/
|
|
5
|
+
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).jUtilsBase={})}(this,function(n){"use strict";var t=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],o="Array",u="Object",c="String",I="Number",m=void 0,L="false",q="true",V=Object.prototype.toString,e=encodeURI,a=decodeURIComponent;function h(n){return null===n||n===m}function f(n){return h(n)?"":String(n)}function l(n){return V.call(n).slice(8,-1)}function d(n){return l(n)===o}function s(n){return l(n)===u}function v(n){return l(n)===c}function p(n,t){var r;try{r=JSON.parse(n)}catch(e){r=t}return r}function g(n){return n=s(n)||s(n=p(n))?n:{}}function y(n){return h(n)||""===n}function _(n){return"function"==typeof n}function A(n){var r=[];function a(n,t){null!=n&&""!==n&&(t=null==(t=_(t)?t():t)?"":t,r[r.length]=e(n)+"="+e(t))}return function i(n,t){var r,e;if(n)switch(l(t)){case o:for(r=0;r<t.length;r++)i(n+"["+("object"==typeof t[r]&&t[r]?r:"")+"]",t[r]);break;case u:for(e in t)i(n+"["+e+"]",t[e]);break;default:a(n,t)}else switch(l(t)){case c:case u:for(e in t)i(e,t[e]);break;case o:for(r=0;r<t.length;r++)a(t[r].name,t[r].value)}}("",n),r.join("&")}function b(n){return n=d(n)||d(n=p(n))?n:[]}function w(n){return n=Number(n),Math.abs(n)===Math.abs(Infinity)||isNaN(n)?0:n}var D=[m,m];function B(n){if(n==m)return D;var e,a=n;return n.replace(/^\[(.*?)\](.*)?/,function(n,t,r){return a=t,e=r,""}),[a,e]}function K(n){return""===n||/^\d+$/.test(n)}function r(n){var o={},u=!1,e="";return(n=h(n)?"":n).replace(/([^=&?/#]*?)=([^=&?/#]*)/g,function(n,t,i){var r;r=a(i),i=null==r?m:L!==r&&(q===r||p(r,r)),e=a(t),u=!1,""!==e&&(e.replace(/(.*?)(\[.*)/,function(n,t,r){var e=B(r);u=!0,K(e[0])?o[t]=b(o[t]):o[t]=g(o[t]),function a(n,t,r){var t=B(t),e=t[0];K(e)?(e=w(e),t[1]==m?n.push(r):(/^\[[\D]+\]/.test(t[1])?n[e]=g(n[e]):n[e]=b(n[e]),a(n[e],t[1],r))):t[1]==m?n[e]=r:(/^\[[\D]+\]/.test(t[1])?n[e]=g(n[e]):n[e]=b(n[e]),a(n[e],t[1],r))}(o[t],r,i)}),u||(o[e]=i))}),o}var i="[\\s\\uFEFF\\xA0]+";function E(n,t){var r=l(n),e=(r===I&&(n=String(n),r=c),"");if(r!==c)return"";switch(t){case 1:e="^"+i;break;case-1:e=i+"$";break;case"*":e=i;break;default:e="^"+i+"|"+i+"$"}return n.replace(new RegExp(e,"g"),"")}function S(n){switch(l(n)){case o:for(var t=[],r=0;r<n.length;r++)t.push(S(n[r]));break;case u:for(var e in t={},n)t[e]=S(n[e]);break;case"Function":function a(){n.apply(this,arguments)}for(var i in n.prototype)a.prototype[i]=n.prototype[i];t=a;break;default:t=n}return t}function U(n,t){var r=!1;return r=d(n)&&t.array&&0===n.length||s(n)&&t.kvPair&&function(n){var t,r=!0;for(t in n)if(t!==m){r=!1;break}return r}(n)||v(n)&&t.string&&""===n||h(n)?!0:r}function k(n,t,r){var e;r=null==r?60:r,n()?t():(clearTimeout(e),setTimeout(function(){k(n,t,r)},r))}k["async"]=function(t,r){return new Promise(function(n){k(t,n,r)})};var Z={id:"id",children:"children"};function G(n){var t=!1;return"boolean"==typeof n||d(n)||null==n||""===n||(n=Number(n),t=!isNaN(n)&&Infinity!=Math.abs(n)),t}function R(n,t){return h(n)?t:n}function W(n,t){var r="";if((n=f(n)).length*t<1<<28)for(;1==(1&t)&&(r+=n),0!=(t>>>=1);)n+=n;return r}function z(n,t,r,e){return(n=f(n)).length>(t>>=0)?n:(t-=n.length,r.length<t&&(r+=W(r,t/r.length)),-1===e?r.slice(0,t)+n:n+r.slice(0,t))}function x(n,t,r){return z(n,t,r,1)}function T(n,t){return""!==n?n.split(t):[]}function C(n,r,t){var e,a,i=h(t)?"children":t;return function o(n){if(n)for(var t=0;t<n.length;t++){if(a=r(n[t])){e=n[t];break}if(o(n[t][i]),a)break}}(n),e}function P(n,t,r){r=!1===r?0:1;return n=Math.random()*(t-n+r)+n,r?Math.floor(n):n}function F(){return t[P(0,t.length-1)][0]}var N={};function H(n,t){}function J(n,t,r,e){if(n="【"+n+"】",r&&y(t))throw"字段"+n+"不能为空";if(l(t)!==e)switch(e){case"String":t=String(t);break;case"Number":if(!G(t))throw"字段"+n+"必须为数字";t=Number(t)}return t}var Q={number:function(n,t){return J(n,t,!(2<arguments.length&&arguments[2]!==undefined)||arguments[2],"Number")},string:function(n,t){return J(n,t,2<arguments.length&&arguments[2]!==undefined&&arguments[2],"String")}};function O(n){return Array.from(new Set(n))}var X=function(n,t){return Number(n)-Number(t)},Y=0,$={};function nn(n,t){var r=[],e=[];return n.forEach(function(n){n=t[n],$[n]||($[n]={id:++Y,label:n});n=$[n];r.push(n.id),e.push(n.label)}),{id:r.join("_"),label:e.join("→")}}function tn(n,t){return n===m||t===m?m:(t-n)/n}function M(n,t){var r,e={},a=-1;for(r in n)a++,e[r]=t(n[r],r,a);return e}function rn(n){return n.map(function(n,t){return{value:n,index:t}})}function j(n,t){return 0===n||h(n)?0:0===t||h(t)?1:n/t}function en(n,r,e){var a=[];return n.forEach(function(t){r.some(function(n){return e(n,t)})||a.push(t)}),r.forEach(function(t){n.some(function(n){return e(n,t)})||a.some(function(n){return e(n,t)})||a.push(t)}),a}var an="sys-row-avg";function on(n,t){var u={},r=t.colField;if(!h(r)&&n.length){var a=t.cellSummary;if(n.forEach(function(n){var t=n[r];u[t]=u[t]||{data:[],summary:0,_collect:[]},u[t].data.push(n),a&&(n=n[a.numerator[0]],u[t].summary+=n,u[t]._collect.push(n))}),!h(a)){var e,i,o;for(e in u)!function(n){var t=u[n],r=1,e=a.denominator;if(e)switch(e[1]){case"length":r=t.data.map(function(n){return n[e[0]]}).length;break;case"uniqLength":r=O(t.data.map(function(n){return n[e[0]]})).length}switch(a.numerator[1]){case"sum":h(t.summary)||(t.summary=t.summary/r);break;case"length":t.summary=t._collect.length/r;break;case"uniqLength":t.summary=O(t._collect).length/r}}(e);o=i=0,M(u,function(n){i++;n=h(n.summary)?0:n.summary;o+=n}),u[an]={data:[],summary:o/i,_collect:[]},t.colCustom&&M(t.colCustom,function(n,t){var r=c(n.numerator),n=n.denominator?c(n.denominator):1;u[t]={data:[],summary:j(r,n),_collect:[]}})}}return u;function c(i){var o=0,n=Object.keys(u).filter(function(n){var t=[an].includes(n),n="*"===i[1]||i[1].includes(n);return!t&&n});return d(i[1])&&n.sort(function(n,t){return i[1].indexOf(n)-i[1].indexOf(t)}),n.forEach(function(n,t){var r,e,n=u[n],a=0;h(i[2])||"value"===i[2]?a=h(n.summary)?0:n.summary:"length"===i[2]?(r=i[3])&&(a=n.data.map(function(n){return n[r]}).length):"uniqLength"===i[2]&&(e=i[3])&&(a=O(n.data.map(function(n){return n[e]})).length),"sum"===i[0]?o+=a:"max"===i[0]?o=Math.max(o,a):"diff"===i[0]&&(0===t?o=a:o-=a)}),o}}function un(n,u){var t={},c=0;!function l(n,t,r){for(var e=0;e<t.length;e++){var a=t[e],i=function(n,t){var r=[];return d(n)?n.forEach(function(n){r.push(t[n])}):r.push(t[n]),r.join("→")}(u.path[c].field,a);n[i]=n[i]||{uidPath:r.concat(i),uid:i,data:[],child:{}},n[i].data.push(a)}if(c<u.path.length-1)for(var o in c++,n)l(n[o].child,n[o].data,n[o].uidPath)}(t,n,[]);var n=function s(n,t,r,e){var a,i=[];for(a in n){var o=t===r,u=s(n[a].child,t,r+1,e);i.push({uidPath:n[a].uidPath,uid:n[a].uid,data:n[a].data,_columnRiseRatio:{},_columnTotal:{},_columnProportion:{},_columns:on(n[a].data,e),isLeaf:o,children:u})}return i}(t,c,0,u),e=(!function a(n,t){var r;n.sort(null==(r=u.path[t])?void 0:r.sort),n.forEach(function(n){a(n.children,t+1)})}(n,0),!function i(n){n.forEach(function(n){var r={};M(n._columns,function(n,t){n=h(n.summary)?0:n.summary;r[t]=r[t]||0,r[t]+=n}),n._columnTotal=r,i(n.children)})}(n),{}),f=(n.forEach(function(r){M(r._columns,function(n,t){e[t]=e[t]||0,e[t]+=r._columnTotal[t]})}),[]);return u.colCustom&&M(u.colCustom,function(n,t){n.riseRatio||f.push(t)}),function r(n){var i={},o={};n.forEach(function(n,a){M(n._columns,function(n,t){var r,e;f.includes(t)||(0<a?h(r=n.summary)?o[t]=m:(e=null!=(e=i[t])?e:0,o[t]=j(r-e,e)):o[t]=void 0,i[t]=n.summary)}),n._columnRiseRatio=o,r(n.children)})}(n),function o(n,e){n.forEach(function(n,t){var r={};M(n._columns,function(n,t){r[t]=j(n.summary,e[t])}),n._columnProportion=r,o(n.children,n._columnTotal)})}(n,e),{data:n,total:e}}var cn=[[1e4,"万"],[1e8,"亿"]];n.Polling=function(){function n(n){this._timer=void 0,this._timer_info=void 0,this._stamp=0,this._passStamp=0,this._option=void 0,this._option=Object.assign({timeout:6e3,interval:1e3,handler:H},n),this._next=this._next.bind(this),this._doOnce=this._doOnce.bind(this),this.done=this.done.bind(this)}var t=n.prototype;return t._next=function(){return clearInterval(this._timer),this._passStamp=+new Date-this._stamp,this._timer=setTimeout(this._doOnce,this._option.interval),this},t._doOnce=function(){if(this._passStamp>=this._option.timeout)return this._option.onMessage&&this._option.onMessage(0),this.done(),this;this._option.handler(this._next,this.done)},t.start=function(){var n,t=this;this._stamp=+new Date,this.done(),this._doOnce();return this._option.onMessage&&(clearInterval(this._timer_info),this._timer_info=setInterval(function(){n=+new Date-t._stamp,0===(n=Math.max(t._option.timeout-n,0))&&t.done(),t._option.onMessage(n)},100)),this},t.done=function(){return clearTimeout(this._timer),clearTimeout(this._timer_info),this},t.dispose=function(){return this.done(),this},n}(),n._Array=b,n._Boolean=function(n){return!0===n||"true"===n||"1"===n||1===n},n._KvPair=g,n._Number=w,n._String=f,n.arrayRowToColumn=function(n,a){var t,r=[],i=(n.forEach(function(n){n=String(n[a.colField]);r.includes(n)||r.push(n)}),r.sort(null!=(c=a.colSort)?c:X),{}),s=(n.forEach(function(t){var n=nn(a.uniqueRowId,t),r={},e=(a.uniqueRowId.forEach(function(n){r[n]=t[n]}),i[n.id]=i[n.id]||{value:r,name:n.label,data:{}},a.colCreate(t[a.colField]).field);i[n.id].data[e]=i[n.id].data[e]||[],i[n.id].data[e].push(t)}),[]);for(t in i)s.push({name:i[t].name,value:i[t].value,data:i[t].data,summary:{}});var o,u,e,c=r.map(function(n){var t=a.colCreate(n);return{value:n,label:t.label,field:t.field}}),h={};return a.summaryConfig&&(a.summaryConfig.row&&(o=s,u=a.summaryConfig.row,e=a.summaryConfig.averageField,o.forEach(function(c){var f=u[c.name];if(f){var l,n,s=0,h=0;for(n in c.data)!function(n){h++;var t,r=[],e=0,a=[],i=[],o=(c.data[n].forEach(function(n){r.push(n[f.count.field]);var t=w(n[f.value.field]);switch(f.value.mode){case"uniqLength":a.push(n[f.value.field]),a=O(a),e=a.length;break;case"sum":case"avg":e+=t}0!==t&&i.push(t)}),0);switch(f.count.mode){case"length":o=r.length;break;case"uniqLength":o=O(r).length;break;case"notZeroValue":o=i.length}var u=e;"avg"===f.value.mode&&(u=e/o),s+=u,c.summary[n]={value:u,proportion:0,riseRatio:l?tn(null==(t=c.summary[l])?void 0:t.value,u):void 0},l=n}(n);c.summary[e]={value:s/h,riseRatio:m,proportion:0}}}),o.forEach(function(n){var t=u[n.name];if(t){var r=o.find(function(n){return n.name===t.proportionBaseField});if(t.proportionBaseField&&r)for(var e in n.summary)n.summary[e].proportion=n.summary[e].value/r.summary[e].value}}),s=o),a.summaryConfig.column&&(h=function(f,l,s){var n,h={},d={},t=function(a){d[a]={},h[a]={};var n,i=l[a],t=(f.forEach(function(e){for(var n in e.data)!function(n){h[a][n]=h[a][n]||{data:[],sum:0};var t=[],r=0;switch(e.data[n].forEach(function(n){switch(t.push(n[i.field]),i.mode){case"uniqLength":t=O(t);break;case"avg":case"sum":r+=n[i.field];break;case"notZeroLength":0!==w(n[i.field])&&r++}}),i.mode){case"uniqLength":t=O(t);break;case"avg":r/=e.data[n].length}h[a][n].data=h[a][n].data.concat(t),h[a][n].sum+=r}(n)}),void 0);for(n in h[a]){var r,e=0;switch(i.mode){case"avg":e=h[a][n].sum/f.length;break;case"uniqLength":e=h[a][n].data.length;break;case"notZeroLength":case"sum":e=h[a][n].sum}d[a][n]={value:e,proportion:0,riseRatio:t?tn(null==(r=d[a][t])?void 0:r.value,e):void 0},t=n}var o,u=0,c=0;for(o in d[a])u+=d[a][o].value,c++;d[a][s]={value:u/c,riseRatio:m,proportion:0}};for(n in l)t(n);return d}(s,a.summaryConfig.column,a.summaryConfig.averageField))),{columns:c,data:s,colSummary:h,getExtRow:function(t,n,r){var e,a=s.find(function(n){return n.name===t}),i={};if(!a){var o=n,u=r,c=h[t],f={};if(c)for(var l in c)f[l]=u(c[l][o]);return f}for(e in a.summary)i[e]=r(a.summary[e][n]);return i}}},n.changeIndex=function(n,t,r){return n<0?t:((t=(t+r)%(n+=1))<0&&(t+=n),-0===t?0:t)},n.cloneEasy=S,n.dataPage=function(n,t,r){if(r<1)throw"页码必须大于0";var e=(r-1)*t,a=e+t;return{current:r,total:n.length,size:t,pages:Math.ceil(n.length/t),data:S(n.slice(e,a))}},n.deepFindItem=C,n.deepFindTreePath=function(n,t,r){r=Object.assign(Z,r);for(var e=[],a=S(n),i=new Set,o=r["children"];a.length;){var u=a[0];if(i.has(u))e.pop(),a.shift();else if(i.add(u),u[o]&&a.unshift.apply(a,u[o]),e.push(u),t(u))return e}return undefined},n.defaultValue=R,n.defineEventBus=function(a){if(N[a])throw'"'+a+'" Has already been registered!';return N[a]=N[a]||[],{on:function(n){N[a].push(n)},emit:function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];for(var e=0;e<N[a].length;e++)N[a][e].apply(m,t)},off:function(n){if(!n)throw"the hander of off is required!";for(var t=0;t<N[a].length;t++)N[a][t]===n&&N[a].splice(t--,1)},dispose:function(){for(var n=0;n<N[a].length;n++)N[a].splice(n--,1);delete N[a]}}},n.fieldCheck=Q,n.filterWithMove=function(n,t){for(var r=[],e=0;e<n.length;e++){var a=n[e];t(a,e,n)&&(r.push(a),n.splice(e--,1))}return r},n.flatTree=function(n,e){var a=[];return e=R(e,"children"),function i(n){if(d(n))for(var t,r=0;r<n.length;r++)t=n[r],a.push(t),i(t[e])}(n),a},n.floorFixed=function(n,t,r){var e=(n=T(n=E(w(n)),"."))[1]||"";return e.length<t&&(e=x(e,t,"0"),r&&(e=e.replace(/0+$/,""))),t<1||!e?n[0]:n[0]+"."+e.substring(0,t)},n.forEach=function(n,t){for(var r=0;r<n.length;r++)t(n[r],r,n)},n.forEachKvPair=M,n.forEachTree=function(n,a,i){i=i||"children",function o(n,t){for(var r=0;r<n.length;r++){var e=S(t);a(n[r],e),d(n[r][i])&&(e.push(n[r]),o(n[r][i],e))}}(n,[])},n.getRandom=P,n.getRatio=j,n.getSortIndex=function(n,r){var t=rn(n),e=rn(n);return e.sort(function(n,t){return r(n.value,t.value)}),t.map(function(t){return e.findIndex(function(n){return t.index===n.index})})},n.getType=l,n.isArray=d,n.isEmpty=y,n.isFunction=_,n.isFuzzyMatch=function(n,t,r){var e=!0;return(n=E(n,"*"))&&(n=T(n,"").join(".*"),e=new RegExp(n,f(r)).test(t)),e},n.isKvPair=s,n.isLikeNumber=G,n.isNull=h,n.isString=v,n.listGroup=function(n,t){var l=un(n,t);function i(n,t,r,e,a){var i=C(l.data,function(n){return 0===en(n.uidPath,t,function(n,t){return n===t}).length}),o=R(a,"");if(i)try{switch(n){case"_columnRiseRatio":case"_columnTotal":case"_columnProportion":var u=i[n][r];return h(u)?o:e(u);default:var c=i[n][r].summary;return h(c)?o:e(c,i[n][r].data)}}catch(f){return o}return o}function o(n,t,r,e){return i("_columns",n,t,r,e)}function u(n,t,r,e){return i("_columnProportion",n,t,r,e)}return{data:l.data,getCellValue:o,getCellVerticalRiseRatio:function(n,t,r,e){return i("_columnRiseRatio",n,t,r,e)},getCellVerticalTotal:function(n,t,r,e){var a;return"*"===n?h(a=l.total[t])?R(e,""):r(a):i("_columnTotal",n,t,r,e)},getCellVerticalProportion:u,getRowCellValue:function(t,n,r,e){var a={};return n.forEach(function(n){a[n.id]=o(t,n.field,r,e)}),a},getRowVerticalProportion:function(t,n,r,e){var a={};return n.forEach(function(n){a[n.id]=u(t,n.field,r,e)}),a},getOriginGroupData:function(t,n){var r=C(l.data,function(n){return 0===en(n.uidPath,t,function(n,t){return n===t}).length});return r&&null!=(r=null==(n=r._columns[n])?void 0:n.data)?r:[]},getOriginAllData:function(){return n}}},n.mapKvPair=function(n,t){var r,e={};for(r in n)e[r]=t(S(n[r]),r);return e},n.mapTree=function(n,a,i,o){o=o||"children";var t=[];return function u(n,t){for(var r=0;r<n.length;r++){var e=i(n[r]);h(e)||(t[r]=S(e),n[r][o]&&(t[r][a]=[],u(n[r][o],t[r][a])))}}(n,t),t},n.mixInZeroWidthUnicode=function(n){return T(n,"").join("")},n.padEnd=x,n.padStart=function(n,t,r){return z(n,t,r,-1)},n.param=A,n.parseQuery=r,n.randomColor=function(){return"rgba("+P(0,255,!0)+","+P(0,255,!0)+","+P(0,255,!0)+",1)"},n.repeatString=W,n.roundFixed=function(n,t,r){n=w(n);var e,a=Math.pow(10,t),n=f(Math.round(n*a)/a);return 0<t&&(e=(a=T(n,"."))[0],(a=a[1]||"").length<t&&(a=x(a,t,"0"),n=(a=r?a.replace(/0+$/,""):a)?e+"."+a:e)),n},n.shake=function(n,t){return t=Object.assign({string:!0,array:!0,kvPair:!0},t),function a(n,t){if(s(n))for(var r in n){var e=n[r];(d(e)||s(e))&&a(e,t),U(e,t)&&delete n[r]}}(n=S(n),t),n},n.shortNumber=function(n,t,r){for(var e=h(r)?cn:r,a=(e.sort(function(n,t){return t[0]-n[0]}),n),i="",o=0;o<e.length;o++){var u=e[o],c=n/u[0];if(1<=c){a=c,i=u[1];break}}return{value:a,fmtValue:t(a),unit:i}},n.sortWithIndex=function(n,t){for(var r=[],e=0;e<n.length;e++)r[e]=n[t[e]];return r},n.spanTable=function(n,i){var u=S(n),c={};function r(a,i){var o=0;u.forEach(function(n,t){n.$rowSpan=null!=(e=n.$rowSpan)?e:{};var r,e=n[a];c[a]=null!=(r=c[a])?r:0,1<c[a]?(n.$rowSpan[a]=0,c[a]--):(r=function(n,t,r,e){var a=1;for(n++;n<e.length;n++){var i=e[n][t];if(i!==r&&!y(i))break;a++}return a}(t,a,e,u),void 0!==i&&(e=function(n,t,r){for(var e=0;0<=t&&!(0<(e=n[t].$rowSpan[r]));t--);return e}(u,t,i),0<o?e<=o+r?(r=e-o,o=0):o+=r:r<e?o=r:r=e),c[a]=r,n.$rowSpan[a]=c[a])})}return i.forEach(function(n,t){r(n,i[t-1])}),u.forEach(function(e){e.$colSpan={},e.$colField={};var a=0;i.forEach(function(n,t){var r=e[n];1<a?(e.$colSpan[t]=0,e.$colField[n]=0,a--):(a=function(n,t,r,e){var a=1;for(n++;n<e.length;n++){var i=E(r[e[n]]);if(i!==t&&!y(i))break;a++}return a}(t,r,e,i),e.$colSpan[t]=a,e.$colField[n]=a)})}),u},n.split=T,n.thousands=function(n,a,i){return a=a||3,i=i||",",(v(n)?n:f(n)).replace(/([^.]*)?(\.)?(.*)?/,function(n,t,r,e){return f(t).replace(new RegExp("(.(?=(.{"+a+"})+$))","g"),"$1"+i)+f(r)+f(e)})},n.tree=function(n,t){for(var r=(t=g(t)).id||"id",e=t.pid||"pid",a=t.children||"children",i=0;i<n.length;i++){var o,u=n[i];(o=C(n,function(n){return null!=n[r]&&n[r]!=u[r]&&n[r]===u[e]},a))&&(o[a]=b(o[a]),o[a].push(u),n.splice(i--,1))}return n},n.trim=E,n.union=function(){for(var n=arguments.length,t=new Array(n),r=0;r<n;r++)t[r]=arguments[r];var e=new Set(t);return Array.from(e)},n.urlToGet=function(n,t){n=f(n);var i=s(t)?t:r(t),t=r(n=n.replace(/({{)(.*?)(}})/g,function(n,t,r,e){r=E(r);var a=i[r];return delete i[r],a})),t=A(i=Object.assign(t,i));return n=t?(n=n.replace(/\?.*/,""))+"?"+t:n},n.uuid=function(n){n=w(n);for(var t="",r=0;r<13;r++)t+=P(1,9);return n=(new Date).getTime()*P(1,100),x(F()+Number(t).toString(32)+n.toString(32),20,F()+F()+F())},n.variableHasValue=k});
|
|
@@ -20,15 +20,6 @@ declare function getType(data: any): string;
|
|
|
20
20
|
*/
|
|
21
21
|
declare function isArray(arg: any): arg is any[];
|
|
22
22
|
|
|
23
|
-
/**
|
|
24
|
-
* 判断数据是否为对象
|
|
25
|
-
* @param data - 判断的值
|
|
26
|
-
* @returns 真假值
|
|
27
|
-
*/
|
|
28
|
-
declare function isKvPair(data: any): boolean;
|
|
29
|
-
|
|
30
|
-
declare function isString(data: any): data is string;
|
|
31
|
-
|
|
32
23
|
/**
|
|
33
24
|
* 递归将所有属性改为可选
|
|
34
25
|
*/
|
|
@@ -38,7 +29,17 @@ type BTDeepPartial<T = any> = {
|
|
|
38
29
|
/**
|
|
39
30
|
* 键值对格式的数据
|
|
40
31
|
* */
|
|
41
|
-
type
|
|
32
|
+
type TKvPair = Record<string | number | symbol, any>;
|
|
33
|
+
type TValueOf<T> = T[keyof T];
|
|
34
|
+
|
|
35
|
+
/**
|
|
36
|
+
* 判断数据是否为对象
|
|
37
|
+
* @param data - 判断的值
|
|
38
|
+
* @returns 真假值
|
|
39
|
+
*/
|
|
40
|
+
declare function isKvPair(arg: any): arg is TKvPair;
|
|
41
|
+
|
|
42
|
+
declare function isString(data: any): data is string;
|
|
42
43
|
|
|
43
44
|
/**
|
|
44
45
|
* 强制转换数据为键值对数据,如果是json字符串,会尝试解析,如果失败,则返回一个空Map
|
|
@@ -57,7 +58,7 @@ type IKvPair = Record<string, any>;
|
|
|
57
58
|
* const data3 = _KvPair({name: 'a'})
|
|
58
59
|
* ```
|
|
59
60
|
*/
|
|
60
|
-
declare function _KvPair(data: any):
|
|
61
|
+
declare function _KvPair(data: any): TKvPair;
|
|
61
62
|
|
|
62
63
|
/**
|
|
63
64
|
* 判断是否为空[null, undefined, '']
|
|
@@ -78,37 +79,48 @@ declare function isFunction(data: any): boolean;
|
|
|
78
79
|
* @param data - 需要转化的数据
|
|
79
80
|
* @returns 转换后的字符串
|
|
80
81
|
*/
|
|
81
|
-
declare function param(data:
|
|
82
|
+
declare function param(data: TKvPair): string;
|
|
82
83
|
|
|
83
84
|
/**
|
|
84
85
|
* 为url链接拼接参数
|
|
85
|
-
* @param url - url
|
|
86
|
+
* @param url - url地址。可带查询参数由 ”{{包裹}}”
|
|
86
87
|
* @param searchString - 查询参数
|
|
87
|
-
* @returns 拼接后的url地址
|
|
88
|
+
* @returns string 拼接后的url地址
|
|
89
|
+
* @example
|
|
90
|
+
* ```js
|
|
91
|
+
* urlToGet('/parent_{{ pid }}/info/{{ uid }}/detail?c=5&', {
|
|
92
|
+
* name: '张三',
|
|
93
|
+
* skill: [1, 2, 3, 4, 5]
|
|
94
|
+
* })
|
|
95
|
+
* urlToGet('1111111111', 'a=0&b=2')
|
|
96
|
+
* urlToGet('2222222222', 'a=0&b=2')
|
|
97
|
+
* urlToGet('333333333?c=5&', 'a=0&b=2')
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
88
100
|
*/
|
|
89
|
-
declare function urlToGet(url: string,
|
|
101
|
+
declare function urlToGet(url: string, data: string | TKvPair): string;
|
|
90
102
|
|
|
91
103
|
/**
|
|
92
|
-
*
|
|
104
|
+
* 移除空字符串。不清空 "\u200e"
|
|
93
105
|
* @param data - 需要处理的数据
|
|
94
106
|
* @param pos - 移除位置。默认:两侧,1:左侧,-1右侧,* 所有
|
|
95
107
|
* @returns 字符串
|
|
96
108
|
*/
|
|
97
109
|
declare function trim(data: any, pos?: 1 | -1 | '*'): string;
|
|
98
110
|
|
|
99
|
-
declare function clean<
|
|
100
|
-
T extends
|
|
101
|
-
| any[]
|
|
102
|
-
| {
|
|
103
|
-
[key: string]: any;
|
|
104
|
-
[key: number]: any;
|
|
105
|
-
}
|
|
106
|
-
>(data: T, removeEmptyStr?: boolean, removeEmptyObject?: boolean): T;
|
|
107
|
-
|
|
108
111
|
type TargetData = Record<string, any> | any[];
|
|
109
112
|
interface Options {
|
|
113
|
+
/**
|
|
114
|
+
* 是否移除空字符串。默认true
|
|
115
|
+
*/
|
|
110
116
|
string?: Boolean;
|
|
117
|
+
/**
|
|
118
|
+
* 是否移除空数组。默认true
|
|
119
|
+
*/
|
|
111
120
|
array?: Boolean;
|
|
121
|
+
/**
|
|
122
|
+
* 是否移除空键值对。默认true
|
|
123
|
+
*/
|
|
112
124
|
kvPair?: Boolean;
|
|
113
125
|
}
|
|
114
126
|
/**
|
|
@@ -180,7 +192,29 @@ declare function deepFindTreePath(
|
|
|
180
192
|
*/
|
|
181
193
|
declare function _Number(data: any): number;
|
|
182
194
|
|
|
183
|
-
|
|
195
|
+
type TNull = undefined | null | '';
|
|
196
|
+
declare function isNull(data: any): data is TNull;
|
|
197
|
+
|
|
198
|
+
/**
|
|
199
|
+
*
|
|
200
|
+
* @param value 看起来是否像一个数字
|
|
201
|
+
* @example
|
|
202
|
+
* ```
|
|
203
|
+
* isLickNumber(1) => true
|
|
204
|
+
* isLickNumber('2.36884') => true
|
|
205
|
+
* isLickNumber(1/0) => false
|
|
206
|
+
* isLickNumber(0/0) => false
|
|
207
|
+
* isLickNumber('') => false
|
|
208
|
+
* isLickNumber() => false
|
|
209
|
+
* isLickNumber(null) => false
|
|
210
|
+
* isLickNumber(true) => false
|
|
211
|
+
* isLickNumber(false) => false
|
|
212
|
+
* isLickNumber([]) => false
|
|
213
|
+
* isLickNumber(function () {}) => false
|
|
214
|
+
* ```
|
|
215
|
+
* @returns
|
|
216
|
+
*/
|
|
217
|
+
declare function isLikeNumber(value: any): boolean;
|
|
184
218
|
|
|
185
219
|
/**
|
|
186
220
|
* 默认值处理函数
|
|
@@ -354,10 +388,10 @@ declare function cloneEasy<T extends [] | Record<any, any> | Function>(data: T):
|
|
|
354
388
|
* @param childKeyFrom - 原始数据的孩子键
|
|
355
389
|
* @returns 转变后的新数据
|
|
356
390
|
*/
|
|
357
|
-
declare function main<T extends
|
|
391
|
+
declare function main<T extends TKvPair, K extends TKvPair, C extends keyof T>(
|
|
358
392
|
data: K[],
|
|
359
393
|
childKeyTo: C,
|
|
360
|
-
handle: (data: K) => Omit<T, C
|
|
394
|
+
handle: (data: K) => Omit<T, C> | undefined,
|
|
361
395
|
childKeyFrom?: keyof K
|
|
362
396
|
): T[];
|
|
363
397
|
|
|
@@ -404,9 +438,9 @@ declare function defineEventBus<T extends EventHander>(
|
|
|
404
438
|
* @param handle - 迭代方法。这里不用返回子节点
|
|
405
439
|
* @param childKey - 子节点字段。默认值:children
|
|
406
440
|
*/
|
|
407
|
-
declare function forEachTree<T extends
|
|
441
|
+
declare function forEachTree<T extends TKvPair>(
|
|
408
442
|
data: T[],
|
|
409
|
-
handle: (data: T) => void,
|
|
443
|
+
handle: (data: T, parents: T[]) => void,
|
|
410
444
|
childKey?: keyof T
|
|
411
445
|
): void;
|
|
412
446
|
|
|
@@ -491,10 +525,339 @@ declare function dataPage<T>(
|
|
|
491
525
|
|
|
492
526
|
/**
|
|
493
527
|
* 解析序列化字符参数为Map格式数据
|
|
494
|
-
* @param str - url
|
|
528
|
+
* @param str - url 查询参数
|
|
495
529
|
* @returns 键值对
|
|
496
530
|
*/
|
|
497
|
-
declare function parseQuery(str?: string):
|
|
531
|
+
declare function parseQuery(str?: string): TKvPair;
|
|
532
|
+
|
|
533
|
+
declare const fieldCheck: {
|
|
534
|
+
/**
|
|
535
|
+
* 验证传入的数据是否是数字
|
|
536
|
+
* @param title - 标题
|
|
537
|
+
* @param value - 值
|
|
538
|
+
* @param required - 是否必填
|
|
539
|
+
* @returns
|
|
540
|
+
*/
|
|
541
|
+
number(title: string, value: any, required?: boolean): number;
|
|
542
|
+
/**
|
|
543
|
+
* 验证传入的数据是否是字符串
|
|
544
|
+
* @param title - 标题
|
|
545
|
+
* @param value - 值
|
|
546
|
+
* @param required - 是否必填
|
|
547
|
+
* @returns
|
|
548
|
+
*/
|
|
549
|
+
string(title: string, value: any, required?: boolean): string;
|
|
550
|
+
};
|
|
551
|
+
|
|
552
|
+
interface ISummary {
|
|
553
|
+
/** 值 */
|
|
554
|
+
value: number;
|
|
555
|
+
/** 增长率 */
|
|
556
|
+
riseRatio?: number;
|
|
557
|
+
/** 比重 */
|
|
558
|
+
proportion: number;
|
|
559
|
+
}
|
|
560
|
+
interface IARTResultItem<T> {
|
|
561
|
+
name: string;
|
|
562
|
+
value: T;
|
|
563
|
+
data: Record<string, T[]>;
|
|
564
|
+
summary: Record<string, ISummary>;
|
|
565
|
+
}
|
|
566
|
+
type TArrayRowToColumnColumnSort = (a: string, b: string) => number;
|
|
567
|
+
/**
|
|
568
|
+
* 数字中某个字段由 行转列
|
|
569
|
+
* @param originData - 原始数组
|
|
570
|
+
* @param options - 配置项
|
|
571
|
+
* @returns 转换后的数据
|
|
572
|
+
*/
|
|
573
|
+
declare function arrayRowToColumn<T extends Record<string, any>>(
|
|
574
|
+
originData: T[],
|
|
575
|
+
options: {
|
|
576
|
+
/** 唯一行的ID生成器 */
|
|
577
|
+
uniqueRowId: Array<keyof T>;
|
|
578
|
+
/** 将此字段转为列 */
|
|
579
|
+
colField: keyof T;
|
|
580
|
+
/** 列的排序方法 */
|
|
581
|
+
colSort?: TArrayRowToColumnColumnSort;
|
|
582
|
+
/** 生成列信息 */
|
|
583
|
+
colCreate: (key: string) => {
|
|
584
|
+
label: string;
|
|
585
|
+
field: string;
|
|
586
|
+
};
|
|
587
|
+
summaryConfig?: IConfig;
|
|
588
|
+
}
|
|
589
|
+
): {
|
|
590
|
+
columns: {
|
|
591
|
+
value: string;
|
|
592
|
+
label: string;
|
|
593
|
+
field: string;
|
|
594
|
+
}[];
|
|
595
|
+
data: IARTResultItem<T>[];
|
|
596
|
+
colSummary: Record<string, Record<string, ISummary>>;
|
|
597
|
+
getExtRow: <T_1 extends keyof ISummary>(
|
|
598
|
+
groupName: string,
|
|
599
|
+
field: T_1,
|
|
600
|
+
formatter: (data: ISummary[T_1]) => string
|
|
601
|
+
) => Record<string, string>;
|
|
602
|
+
};
|
|
603
|
+
type TArrayRowToColumnCalculateRow = {
|
|
604
|
+
proportionBaseField?: string;
|
|
605
|
+
count: {
|
|
606
|
+
field: string;
|
|
607
|
+
mode: 'length' | 'uniqLength' | 'notZeroValue';
|
|
608
|
+
};
|
|
609
|
+
value: {
|
|
610
|
+
field: string;
|
|
611
|
+
mode: 'sum' | 'uniqLength' | 'avg';
|
|
612
|
+
};
|
|
613
|
+
};
|
|
614
|
+
interface IConfig {
|
|
615
|
+
averageField: string;
|
|
616
|
+
row?: Record<string, TArrayRowToColumnCalculateRow>;
|
|
617
|
+
column?: TColSumaryConfig;
|
|
618
|
+
}
|
|
619
|
+
type TColSumaryConfig = Record<
|
|
620
|
+
string,
|
|
621
|
+
{
|
|
622
|
+
field: string;
|
|
623
|
+
mode: 'uniqLength' | 'avg' | 'notZeroLength' | 'sum';
|
|
624
|
+
}
|
|
625
|
+
>;
|
|
626
|
+
|
|
627
|
+
type ISpanTableItem<T extends TKvPair> = T & {
|
|
628
|
+
$rowSpan: Record<string, number>;
|
|
629
|
+
$colSpan: Record<number, number>;
|
|
630
|
+
$colField: Record<string | number, number>;
|
|
631
|
+
};
|
|
632
|
+
/**
|
|
633
|
+
* 合并单元格。不改变原数组
|
|
634
|
+
* @param data - 一维数组
|
|
635
|
+
* @param fields - 合并的字段
|
|
636
|
+
* @returns 合并后的数据。会在每一项中添加两个字段 "$rowSpan" "$colSpan" "$colField"
|
|
637
|
+
*/
|
|
638
|
+
declare function spanTable<T extends TKvPair>(data: T[], fields: string[]): ISpanTableItem<T>[];
|
|
639
|
+
|
|
640
|
+
/**
|
|
641
|
+
* 正则千分位转换,支持小数(任意字符串按位数相隔)
|
|
642
|
+
*
|
|
643
|
+
* @param data 需要转换的字符
|
|
644
|
+
* @param len 按多少位分隔一次,默认3
|
|
645
|
+
* @param symbol 千分位替换符号,默认逗号
|
|
646
|
+
*/
|
|
647
|
+
declare function thousands(data: number | string, len?: number, symbol?: string): string;
|
|
648
|
+
|
|
649
|
+
/**
|
|
650
|
+
* 键值对的map实现方法
|
|
651
|
+
* @param data - 元数据
|
|
652
|
+
* @param handler - 自定义处理函数
|
|
653
|
+
* @returns
|
|
654
|
+
*/
|
|
655
|
+
declare function mapKvPair<T extends TKvPair, U>(
|
|
656
|
+
data: T,
|
|
657
|
+
handler: (data: TValueOf<T>, key: string) => U
|
|
658
|
+
): Record<string | number | symbol, U>;
|
|
659
|
+
|
|
660
|
+
/**
|
|
661
|
+
* 模糊搜索,例如 a4 可匹配 a3645
|
|
662
|
+
* @param search - 输入的值,如果为空,则表示无筛选条件,直接返回true
|
|
663
|
+
* @param data - 源数据的值
|
|
664
|
+
* @param regFlags - 与 RegExp 第二个参数相同,指定是否全局、区分大小写等
|
|
665
|
+
* @return
|
|
666
|
+
*/
|
|
667
|
+
declare function isFuzzyMatch(search: string, data: string, regFlags?: string): boolean;
|
|
668
|
+
|
|
669
|
+
/**
|
|
670
|
+
* 向字符串中添加零宽字符。(暂时用于排除同名表格单元格合并)
|
|
671
|
+
* @param data - 需要处理的数据
|
|
672
|
+
* @returns
|
|
673
|
+
*/
|
|
674
|
+
declare function mixInZeroWidthUnicode(data: string): string;
|
|
675
|
+
|
|
676
|
+
/**
|
|
677
|
+
* 键值对的forEach实现方法
|
|
678
|
+
* @param data - 元数据
|
|
679
|
+
* @param handler - 自定义处理函数
|
|
680
|
+
* @returns
|
|
681
|
+
*/
|
|
682
|
+
declare function forEachKvPair<T extends TKvPair, U>(
|
|
683
|
+
data: T,
|
|
684
|
+
handler: (data: TValueOf<T>, key: string, index: number) => U
|
|
685
|
+
): Record<string | number | symbol, U>;
|
|
686
|
+
|
|
687
|
+
/**
|
|
688
|
+
* 获取排序后的索引列表。如 [2,1,3] 排序为 [1,2,3] 索引为 [1,0,2]
|
|
689
|
+
*
|
|
690
|
+
* @param data - 原始数据
|
|
691
|
+
* @param sortHandler 排序处理函数,与原生排序使用方式一致
|
|
692
|
+
* @returns 索引列表
|
|
693
|
+
*
|
|
694
|
+
*/
|
|
695
|
+
declare function getSortIndex<T>(data: T[], sortHandler: (a: T, b: T) => number): number[];
|
|
696
|
+
|
|
697
|
+
/**
|
|
698
|
+
* 按索引顺序对数组进行排序
|
|
699
|
+
* @param data 需要排序的数据
|
|
700
|
+
* @param index 索引列表
|
|
701
|
+
* @returns 新数据
|
|
702
|
+
*/
|
|
703
|
+
declare function sortWithIndex<T>(data: T[], index: ReturnType<typeof getSortIndex>): T[];
|
|
704
|
+
|
|
705
|
+
type TListGroupKey<T extends TKvPair> = {
|
|
706
|
+
field: string | string[];
|
|
707
|
+
sort?: (a: TInnerGroupListItem<T>, b: TInnerGroupListItem<T>) => number;
|
|
708
|
+
};
|
|
709
|
+
type TGetValueField = string;
|
|
710
|
+
interface ICellSummary {
|
|
711
|
+
denominator?: [string, 'length' | 'uniqLength'];
|
|
712
|
+
/**
|
|
713
|
+
* sum 求和
|
|
714
|
+
* length 长度
|
|
715
|
+
* uniqLength 去重长度
|
|
716
|
+
*/
|
|
717
|
+
numerator: [string, 'sum' | 'length' | 'uniqLength'];
|
|
718
|
+
}
|
|
719
|
+
type TColCustomWay = {
|
|
720
|
+
/** 计算方式 */
|
|
721
|
+
0: 'sum' | 'max' | 'diff';
|
|
722
|
+
/** 参与计算的列(就是被转为列的那些值) */
|
|
723
|
+
1: string[] | '*';
|
|
724
|
+
/** 获取值的方式 */
|
|
725
|
+
2?: 'value' | 'length' | 'uniqLength';
|
|
726
|
+
/** 原始数据中的字段 */
|
|
727
|
+
3?: string;
|
|
728
|
+
};
|
|
729
|
+
interface IListGroupOption<T extends TKvPair> {
|
|
730
|
+
/**
|
|
731
|
+
* 按字段值组装树形结构数据
|
|
732
|
+
*/
|
|
733
|
+
path: TListGroupKey<T>[];
|
|
734
|
+
/**
|
|
735
|
+
* 将此字段转为列,并做一些基础统计
|
|
736
|
+
*/
|
|
737
|
+
colField?: keyof T;
|
|
738
|
+
/**
|
|
739
|
+
* 组装后数据的计算方法
|
|
740
|
+
*/
|
|
741
|
+
cellSummary?: ICellSummary;
|
|
742
|
+
/**
|
|
743
|
+
* 自定义列。分子➗分母
|
|
744
|
+
*/
|
|
745
|
+
colCustom?: Record<
|
|
746
|
+
string,
|
|
747
|
+
{
|
|
748
|
+
numerator: TColCustomWay;
|
|
749
|
+
denominator?: TColCustomWay;
|
|
750
|
+
riseRatio?: boolean;
|
|
751
|
+
}
|
|
752
|
+
>;
|
|
753
|
+
}
|
|
754
|
+
interface TInnerColumnsSummaryItem<T> extends TKvPair {
|
|
755
|
+
data: T[];
|
|
756
|
+
summary: number | undefined;
|
|
757
|
+
_collect: any[];
|
|
758
|
+
}
|
|
759
|
+
type TInnerGroupListItem<T extends TKvPair> = {
|
|
760
|
+
uid: string;
|
|
761
|
+
uidPath: string[];
|
|
762
|
+
data: T[];
|
|
763
|
+
_columns: Record<string, TInnerColumnsSummaryItem<T>>;
|
|
764
|
+
_columnRiseRatio: Record<string, number | undefined>;
|
|
765
|
+
_columnTotal: Record<string, number>;
|
|
766
|
+
_columnProportion: Record<string, number>;
|
|
767
|
+
isLeaf: boolean;
|
|
768
|
+
children: TInnerGroupListItem<T>[];
|
|
769
|
+
};
|
|
770
|
+
declare function listGroup<T extends TKvPair>(
|
|
771
|
+
data: T[],
|
|
772
|
+
options: IListGroupOption<T>
|
|
773
|
+
): {
|
|
774
|
+
/** 树形分组数据 */
|
|
775
|
+
data: TInnerGroupListItem<T>[];
|
|
776
|
+
/** 获取单元格:值 */
|
|
777
|
+
getCellValue: (
|
|
778
|
+
uidPath: string[],
|
|
779
|
+
field: TGetValueField,
|
|
780
|
+
formatter: (value: number, list: T[]) => string,
|
|
781
|
+
defaultData?: string
|
|
782
|
+
) => string;
|
|
783
|
+
/** 获取单元格:纵向增长率 */
|
|
784
|
+
getCellVerticalRiseRatio: (
|
|
785
|
+
uidPath: string[],
|
|
786
|
+
field: TGetValueField,
|
|
787
|
+
formatter: (value: number) => string,
|
|
788
|
+
defaultData?: string
|
|
789
|
+
) => string;
|
|
790
|
+
/** 获取单元格:纵向累计 */
|
|
791
|
+
getCellVerticalTotal: (
|
|
792
|
+
uidPath: string[] | '*',
|
|
793
|
+
field: TGetValueField,
|
|
794
|
+
formatter: (value: number) => string,
|
|
795
|
+
defaultData?: string
|
|
796
|
+
) => string;
|
|
797
|
+
/** 获取单元格:纵向比重 */
|
|
798
|
+
getCellVerticalProportion: (
|
|
799
|
+
uidPath: string[],
|
|
800
|
+
field: TGetValueField,
|
|
801
|
+
formatter: (value: number) => string,
|
|
802
|
+
defaultData?: string
|
|
803
|
+
) => string;
|
|
804
|
+
/** 获取一行:值 */
|
|
805
|
+
getRowCellValue: (
|
|
806
|
+
uidPath: string[],
|
|
807
|
+
fieldList: {
|
|
808
|
+
id: string;
|
|
809
|
+
field: TGetValueField;
|
|
810
|
+
}[],
|
|
811
|
+
formatter: (value: number) => string,
|
|
812
|
+
defaultData?: string
|
|
813
|
+
) => Record<string, string>;
|
|
814
|
+
/** 获取一行:纵向比重 */
|
|
815
|
+
getRowVerticalProportion: (
|
|
816
|
+
uidPath: string[],
|
|
817
|
+
fieldList: {
|
|
818
|
+
id: string;
|
|
819
|
+
field: TGetValueField;
|
|
820
|
+
}[],
|
|
821
|
+
formatter: (value: number) => string,
|
|
822
|
+
defaultData?: string
|
|
823
|
+
) => Record<string, string>;
|
|
824
|
+
/** 获取一个分组的所有原始数据,用于使用者自行计算 */
|
|
825
|
+
getOriginGroupData: (uidPath: string[], field: TGetValueField) => T[];
|
|
826
|
+
getOriginAllData: () => T[];
|
|
827
|
+
};
|
|
828
|
+
|
|
829
|
+
declare function union<T extends TKvPair>(...args: T[]): T[];
|
|
830
|
+
|
|
831
|
+
declare function getRatio(value: number | undefined, base: number | undefined): number;
|
|
832
|
+
|
|
833
|
+
/**
|
|
834
|
+
* 筛选并从原始数组移除符合条件的数据
|
|
835
|
+
* @param data - 原始数据
|
|
836
|
+
* @param predicate - 迭代回调
|
|
837
|
+
* @returns 筛选的结果
|
|
838
|
+
*/
|
|
839
|
+
declare function filterWithMove<T, S extends T>(
|
|
840
|
+
data: T[],
|
|
841
|
+
predicate: (value: T, index: number, array: T[]) => value is S
|
|
842
|
+
): S[];
|
|
843
|
+
|
|
844
|
+
type TUnits = [number, string];
|
|
845
|
+
/**
|
|
846
|
+
* 数字格式化为简称
|
|
847
|
+
* @param data - 数字
|
|
848
|
+
* @param formatter - 格式化数字(不包括单位)
|
|
849
|
+
* @param units - 格式化规则,可自定义
|
|
850
|
+
* @returns 数字简写
|
|
851
|
+
*/
|
|
852
|
+
declare function export_default(
|
|
853
|
+
data: number,
|
|
854
|
+
formatter: (data: number) => string,
|
|
855
|
+
units?: TUnits[]
|
|
856
|
+
): {
|
|
857
|
+
value: number;
|
|
858
|
+
fmtValue: string;
|
|
859
|
+
unit: string;
|
|
860
|
+
};
|
|
498
861
|
|
|
499
862
|
declare global {
|
|
500
863
|
/**
|
|
@@ -503,32 +866,43 @@ declare global {
|
|
|
503
866
|
namespace jUtilsBase {
|
|
504
867
|
export {
|
|
505
868
|
Polling,
|
|
869
|
+
TArrayRowToColumnCalculateRow,
|
|
506
870
|
_Array,
|
|
507
871
|
_Boolean,
|
|
508
872
|
_KvPair,
|
|
509
873
|
_Number,
|
|
510
874
|
_String,
|
|
875
|
+
arrayRowToColumn,
|
|
511
876
|
changeIndex,
|
|
512
|
-
clean,
|
|
513
877
|
cloneEasy,
|
|
514
878
|
dataPage,
|
|
515
879
|
deepFindItem,
|
|
516
880
|
deepFindTreePath,
|
|
517
881
|
defaultValue,
|
|
518
882
|
defineEventBus,
|
|
883
|
+
fieldCheck,
|
|
884
|
+
filterWithMove,
|
|
519
885
|
flatTree,
|
|
520
886
|
floorFixed,
|
|
521
887
|
forEach,
|
|
888
|
+
forEachKvPair,
|
|
522
889
|
forEachTree,
|
|
523
890
|
getRandom,
|
|
891
|
+
getRatio,
|
|
892
|
+
getSortIndex,
|
|
524
893
|
getType,
|
|
525
894
|
isArray,
|
|
526
895
|
isEmpty,
|
|
527
896
|
isFunction,
|
|
897
|
+
isFuzzyMatch,
|
|
528
898
|
isKvPair,
|
|
899
|
+
isLikeNumber,
|
|
529
900
|
isNull,
|
|
530
901
|
isString,
|
|
902
|
+
listGroup,
|
|
903
|
+
mapKvPair,
|
|
531
904
|
main as mapTree,
|
|
905
|
+
mixInZeroWidthUnicode,
|
|
532
906
|
padEnd,
|
|
533
907
|
padStart,
|
|
534
908
|
param,
|
|
@@ -537,9 +911,14 @@ declare global {
|
|
|
537
911
|
repeatString,
|
|
538
912
|
roundFixed,
|
|
539
913
|
shake,
|
|
914
|
+
export_default as shortNumber,
|
|
915
|
+
sortWithIndex,
|
|
916
|
+
spanTable,
|
|
540
917
|
split,
|
|
918
|
+
thousands,
|
|
541
919
|
flatArrayToTree as tree,
|
|
542
920
|
trim,
|
|
921
|
+
union,
|
|
543
922
|
urlToGet,
|
|
544
923
|
uuid,
|
|
545
924
|
variableHasValue
|
package/package.json
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bestime/utils_base",
|
|
3
|
-
"version": "1.0.
|
|
4
|
-
"main": "./dist/jUtilsBase
|
|
5
|
-
"module": "./dist/jUtilsBase
|
|
6
|
-
"types": "./dist/jUtilsBase
|
|
3
|
+
"version": "1.0.6",
|
|
4
|
+
"main": "./dist/jUtilsBase/umd/index.min.cjs",
|
|
5
|
+
"module": "./dist/jUtilsBase/esm/index.min.mjs",
|
|
6
|
+
"types": "./dist/jUtilsBase/esm/index.d.ts",
|
|
7
7
|
"description": "个人常用工具库",
|
|
8
8
|
"type": "module",
|
|
9
9
|
"files": [
|
|
@@ -48,5 +48,8 @@
|
|
|
48
48
|
"homepage": "https://github.com/bestime/tool",
|
|
49
49
|
"publishConfig": {
|
|
50
50
|
"access": "public"
|
|
51
|
+
},
|
|
52
|
+
"dependencies": {
|
|
53
|
+
"lodash-es": "^4.17.21"
|
|
51
54
|
}
|
|
52
55
|
}
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 基础工具库 => jUtilsBase
|
|
3
|
-
* @QQ 1174295440
|
|
4
|
-
* @author IT0909
|
|
5
|
-
* @update 2023-11-05 17:28:15
|
|
6
|
-
*/
|
|
7
|
-
function isNull(e){return null===e||e===undefined}function _String(e){return isNull(e)?"":String(e)}var $letters=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],$ArrayTypeNameBig="Array",$FunctionTypeNameBig="Function",$ObjectTypeNameBig="Object",$stringTypeNameBig="String",$numberTypeNameBig="Number",$undefinedValue=void 0,$zeroString="0",$falseString="false",$trueString="true",$ObjectTypeNameBigPrototypeToString=Object.prototype.toString,$encodeURI=encodeURI,$decodeURIComponent=decodeURIComponent,$regSpaceStr="\\s\\uFEFF\\xA0",$isBroswer="undefined"!=typeof document&&document.getElementById!==undefined,$browserGlobal="undefined"!=typeof window?window:$undefinedValue;function getType(e){return $ObjectTypeNameBigPrototypeToString.call(e).slice(8,-1)}function isArray(e){return getType(e)===$ArrayTypeNameBig}function isKvPair(e){return getType(e)===$ObjectTypeNameBig}function isString(e){return getType(e)===$stringTypeNameBig}function hpJsonParse(e,n){var t;try{t=JSON.parse(e)}catch(r){t=n}return t}function _KvPair(e){return e=isKvPair(e)||isKvPair(e=hpJsonParse(e))?e:{}}function isEmpty(e){return isNull(e)||""===e}function isFunction(e){return"function"==typeof e}function param(e){var t=[];function i(e,n){null!=e&&""!==e&&(n=null==(n=isFunction(n)?n():n)?"":n,t[t.length]=$encodeURI(e)+"="+$encodeURI(n))}return function a(e,n){var t,r;if(e)switch(getType(n)){case $ArrayTypeNameBig:for(t=0;t<n.length;t++)a(e+"["+("object"==typeof n[t]&&n[t]?t:"")+"]",n[t]);break;case $ObjectTypeNameBig:for(r in n)a(e+"["+r+"]",n[r]);break;default:i(e,n)}else switch(getType(n)){case $stringTypeNameBig:case $ObjectTypeNameBig:for(r in n)a(r,n[r]);break;case $ArrayTypeNameBig:for(t=0;t<n.length;t++)i(n[t].name,n[t].value)}}("",e),t.join("&")}function urlToGet(e,n){e=_String(e).replace(/&*$/g,"").replace(/\?*$/,"");var t="";return(t=isKvPair(n)||isArray(n)?param(n):_String(n).replace(/^&*/,""))&&(e+=(/\?/.test(e)?"&":"?")+t),e}$isBroswer?document.getElementsByTagName("head")[0]:undefined;var baseReg="["+$regSpaceStr+"]+";function trim(e,n){var t=getType(e),r=(t===$numberTypeNameBig&&(e=String(e),t=$stringTypeNameBig),"");if(t!==$stringTypeNameBig)return"";switch(n){case 1:r="^"+baseReg;break;case-1:r=baseReg+"$";break;case"*":r=baseReg;break;default:r="^"+baseReg+"|"+baseReg+"$"}return e.replace(new RegExp(r,"g"),"")}function hpIsEmptyMap(e){var n,t=!0;for(n in e)if(n!==undefined){t=!1;break}return t}function clean(e,n,t){if(t=!1!==t,isKvPair(e)){var r,i,a={};for(i in e)_filterData(isArray(r=e[i])||isKvPair(r)?clean(r,n):r,n,t,function(e){a[i]=e})}else if(isArray(e)){a=[];for(var o=0,s=e.length;o<s;o++)_filterData(clean(e[o],n),n,t,function(e){a.push(e)})}else a=e;return a}function _filterData(e,n,t,r){isString(e)?n&&""==trim(e,"*")||r(e):null!=e&&(t&&isKvPair(e)&&hpIsEmptyMap(e),r(e))}function cloneEasy(e){switch(getType(e)){case $ArrayTypeNameBig:for(var n=[],t=0;t<e.length;t++)n.push(cloneEasy(e[t]));break;case $ObjectTypeNameBig:for(var r in n={},e)n[r]=cloneEasy(e[r]);break;case $FunctionTypeNameBig:function i(){e.apply(this,arguments)}for(var a in e.prototype)i.prototype[a]=e.prototype[a];n=i;break;default:n=e}return n}function isNoData(e,n){var t=!1;return t=isArray(e)&&n.array&&0===e.length||isKvPair(e)&&n.kvPair&&hpIsEmptyMap(e)||isString(e)&&n.string&&""===e||isNull(e)?!0:t}function hander(e,n){if(isKvPair(e))for(var t in e){var r=e[t];(isArray(r)||isKvPair(r))&&hander(r,n),isNoData(r,n)&&delete e[t]}}function shake(e,n){n=Object.assign({string:!0,array:!0,kvPair:!0},n);return hander(e=cloneEasy(e),n),e}function _Array(e){return e=isArray(e)||isArray(e=hpJsonParse(e))?e:[]}function variableHasValue(e,n,t){var r;t=null==t?60:t,e()?n():(clearTimeout(r),setTimeout(function(){variableHasValue(e,n,t)},t))}variableHasValue["async"]=function(n,t){return new Promise(function(e){variableHasValue(n,e,t)})};var DEFAULT_CONFIG={id:"id",children:"children"};function deepFindTreePath(e,n,t){t=Object.assign(DEFAULT_CONFIG,t);for(var r=[],i=cloneEasy(e),a=new Set,o=t["children"];i.length;){var s=i[0];if(a.has(s))r.pop(),i.shift();else if(a.add(s),s[o]&&i.unshift.apply(i,s[o]),r.push(s),n(s))return r}return undefined}function _Number(e){return(e=Number(e))===Math.abs(Infinity)||isNaN(e)?0:e}function defaultValue(e,n){return isNull(e)?n:e}function repeatString(e,n){var t="";if((e=_String(e)).length*n<1<<28)for(;1==(1&n)&&(t+=e),0!=(n>>>=1);)e+=e;return t}function hpPadString(e,n,t,r){return(e=_String(e)).length>(n>>=0)?e:(n-=e.length,t.length<n&&(t+=repeatString(t,n/t.length)),-1===r?t.slice(0,n)+e:e+t.slice(0,n))}function padStart(e,n,t){return hpPadString(e,n,t,-1)}function padEnd(e,n,t){return hpPadString(e,n,t,1)}function split(e,n){return""!==e?e.split(n):[]}function floorFixed(e,n,t){var e=split(e=trim(_Number(e)),"."),r=e[1]||"";return r.length<n&&(r=padEnd(r,n,$zeroString),t&&(r=r.replace(/0+$/,""))),n<1||!r?e[0]:e[0]+"."+r.substring(0,n)}function roundFixed(e,n,t){e=_Number(e);var r,i=Math.pow(10,n),e=_String(Math.round(e*i)/i);return 0<n&&(r=(i=split(e,"."))[0],(i=i[1]||"").length<n&&(i=padEnd(i,n,$zeroString),e=(i=t?i.replace(/0+$/,""):i)?r+"."+i:r)),e}function deepFindItem(e,t,n){var r,i,a=isNull(n)?"children":n;return function o(e){if(e)for(var n=0;n<e.length;n++){if(i=t(e[n])){r=e[n];break}if(o(e[n][a]),i)break}}(e),r}function flatArrayToTree(e,n){for(var t=(n=_KvPair(n)).id||"id",r=n.pid||"pid",i=n.children||"children",a=0;a<e.length;a++){var o,s=e[a];(o=deepFindItem(e,function(e){return null!=e[t]&&e[t]!=s[t]&&e[t]===s[r]},i))&&(o[i]=_Array(o[i]),o[i].push(s),e.splice(a--,1))}return e}function changeIndex(e,n,t){if(e<0)return n;e+=1;return(n=(n+t)%e)<0&&(n+=e),-0===n?0:n}function getRandom(e,n,t){t=!1===t?0:1;return e=Math.random()*(n-e+t)+e,t?Math.floor(e):e}function getRandomWord(){return $letters[getRandom(0,$letters.length-1)][0]}function uuid(e){e=_Number(e);for(var n="",t=0;t<13;t++)n+=getRandom(1,9);e=(new Date).getTime()*getRandom(1,100);return padEnd(getRandomWord()+Number(n).toString(32)+e.toString(32),20,getRandomWord()+getRandomWord()+getRandomWord())}function _Boolean(e){return!0===e||"true"===e||"1"===e||1===e}function flatTree(e,r){var i=[];return r=defaultValue(r,"children"),function a(e){if(isArray(e))for(var n,t=0;t<e.length;t++)n=e[t],i.push(n),a(n[r])}(e),i}function main(e,r,i,a){a=a||"children";var n=[];return function o(e,n){for(var t=0;t<e.length;t++)n[t]=cloneEasy(i(e[t])),e[t][a]&&(n[t][r]=[],o(e[t][a],n[t][r]))}(e,n),n}var events={};function defineEventBus(i){if(events[i])throw'"'+i+'" Has already been registered!';return events[i]=events[i]||[],{on:function(e){events[i].push(e)},emit:function(){for(var e=arguments.length,n=new Array(e),t=0;t<e;t++)n[t]=arguments[t];for(var r=0;r<events[i].length;r++)events[i][r].apply($undefinedValue,n)},off:function(e){if(!e)throw"the hander of off is required!";for(var n=0;n<events[i].length;n++)events[i][n]===e&&events[i].splice(n--,1)},dispose:function(){for(var e=0;e<events[i].length;e++)events[i].splice(e--,1);delete events[i]}}}function forEachTree(e,t,r){r=r||"children",function i(e){for(var n=0;n<e.length;n++)t(e[n]),isArray(e[n][r])&&i(e[n][r])}(e)}function forEach(e,n){for(var t=0;t<e.length;t++)n(e[t],t,e)}function randomColor(){return"rgba("+getRandom(0,255,!0)+","+getRandom(0,255,!0)+","+getRandom(0,255,!0)+",1)"}function emptyFunc(e,n){}var Polling=function(){function e(e){this._timer=void 0,this._timer_info=void 0,this._stamp=0,this._passStamp=0,this._option=void 0,this._option=Object.assign({timeout:6e3,interval:1e3,handler:emptyFunc},e),this._next=this._next.bind(this),this._doOnce=this._doOnce.bind(this),this.done=this.done.bind(this)}var n=e.prototype;return n._next=function(){return clearInterval(this._timer),this._passStamp=+new Date-this._stamp,this._timer=setTimeout(this._doOnce,this._option.interval),this},n._doOnce=function(){if(this._passStamp>=this._option.timeout)return this._option.onMessage&&this._option.onMessage(0),this.done(),this;this._option.handler(this._next,this.done)},n.start=function(){var e,n=this;this._stamp=+new Date,this.done(),this._doOnce();return this._option.onMessage&&(clearInterval(this._timer_info),this._timer_info=setInterval(function(){e=+new Date-n._stamp,0===(e=Math.max(n._option.timeout-e,0))&&n.done(),n._option.onMessage(e)},100)),this},n.done=function(){return clearTimeout(this._timer),clearTimeout(this._timer_info),this},n.dispose=function(){return this.done(),this},e}();function dataPage(e,n,t){if(t<1)throw"页码必须大于0";var r=(t-1)*n,i=r+n;return{current:t,total:e.length,size:n,pages:Math.ceil(e.length/n),data:cloneEasy(e.slice(r,i))}}function hpTryToParseStringToBasicType(e){return null==e?undefined:$falseString!==e&&($trueString===e||hpJsonParse(e,e))}var defaultSplitArr=[$undefinedValue,$undefinedValue];function handleDeepKey(e,n,t){var n=splitSymbol(n),r=n[0];isPreLikeArray(r)?(r=_Number(r),n[1]==$undefinedValue?e.push(t):(/^\[[\D]+\]/.test(n[1])?e[r]=_KvPair(e[r]):e[r]=_Array(e[r]),handleDeepKey(e[r],n[1],t))):n[1]==$undefinedValue?e[r]=t:(/^\[[\D]+\]/.test(n[1])?e[r]=_KvPair(e[r]):e[r]=_Array(e[r]),handleDeepKey(e[r],n[1],t))}function splitSymbol(e){if(e==$undefinedValue)return defaultSplitArr;var r,i=e;return e.replace(/^\[(.*?)\](.*)?/,function(e,n,t){return i=n,r=t,""}),[i,r]}function isPreLikeArray(e){return""===e||/^\d+$/.test(e)}function parseQuery(e){var a,t,o={};return(e=e||$isBroswer&&$browserGlobal.location.href||"").replace(/([^=&?/#]*?)=([^=&?/#]*)/g,function(e,n,i){i=hpTryToParseStringToBasicType($decodeURIComponent(i)),t=$decodeURIComponent(n),a=!1,""!==t&&(t.replace(/(.*?)(\[.*)/,function(e,n,t){var r=splitSymbol(t);a=!0,isPreLikeArray(r[0])?o[n]=_Array(o[n]):o[n]=_KvPair(o[n]),handleDeepKey(o[n],t,i)}),a||(o[t]=i))}),o}export{Polling,_Array,_Boolean,_KvPair,_Number,_String,changeIndex,clean,cloneEasy,dataPage,deepFindItem,deepFindTreePath,defaultValue,defineEventBus,flatTree,floorFixed,forEach,forEachTree,getRandom,getType,isArray,isEmpty,isFunction,isKvPair,isNull,isString,main as mapTree,padEnd,padStart,param,parseQuery,randomColor,repeatString,roundFixed,shake,split,flatArrayToTree as tree,trim,urlToGet,uuid,variableHasValue};
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* 基础工具库 => jUtilsBase
|
|
3
|
-
* @QQ 1174295440
|
|
4
|
-
* @author IT0909
|
|
5
|
-
* @update 2023-11-05 17:28:15
|
|
6
|
-
*/
|
|
7
|
-
!function(n,t){"object"==typeof exports&&"undefined"!=typeof module?t(exports):"function"==typeof define&&define.amd?define(["exports"],t):t((n="undefined"!=typeof globalThis?globalThis:n||self).jUtilsBase={})}(this,function(n){"use strict";function a(n){return null===n||n===undefined}function o(n){return a(n)?"":String(n)}var t=["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"],u="Array",f="Object",c="String",A="Number",s=void 0,B="false",R="true",U=Object.prototype.toString,r=encodeURI,i=decodeURIComponent,e="undefined"!=typeof document&&document.getElementById!==undefined,C="undefined"!=typeof window?window:s;function l(n){return U.call(n).slice(8,-1)}function h(n){return l(n)===u}function d(n){return l(n)===f}function p(n){return l(n)===c}function g(n,t){var e;try{e=JSON.parse(n)}catch(r){e=t}return e}function v(n){return n=d(n)||d(n=g(n))?n:{}}function m(n){return"function"==typeof n}function _(n){var e=[];function i(n,t){null!=n&&""!==n&&(t=null==(t=m(t)?t():t)?"":t,e[e.length]=r(n)+"="+r(t))}return function o(n,t){var e,r;if(n)switch(l(t)){case u:for(e=0;e<t.length;e++)o(n+"["+("object"==typeof t[e]&&t[e]?e:"")+"]",t[e]);break;case f:for(r in t)o(n+"["+r+"]",t[r]);break;default:i(n,t)}else switch(l(t)){case c:case f:for(r in t)o(r,t[r]);break;case u:for(e=0;e<t.length;e++)i(t[e].name,t[e].value)}}("",n),e.join("&")}e?document.getElementsByTagName("head")[0]:undefined;var b="[\\s\\uFEFF\\xA0]+";function y(n,t){var e=l(n),r=(e===A&&(n=String(n),e=c),"");if(e!==c)return"";switch(t){case 1:r="^"+b;break;case-1:r=b+"$";break;case"*":r=b;break;default:r="^"+b+"|"+b+"$"}return n.replace(new RegExp(r,"g"),"")}function w(n){var t,e=!0;for(t in n)if(t!==undefined){e=!1;break}return e}function S(n,t,e,r){p(n)?t&&""==y(n,"*")||r(n):null!=n&&(e&&d(n)&&w(n),r(n))}function T(n){switch(l(n)){case u:for(var t=[],e=0;e<n.length;e++)t.push(T(n[e]));break;case f:for(var r in t={},n)t[r]=T(n[r]);break;case"Function":function i(){n.apply(this,arguments)}for(var o in n.prototype)i.prototype[o]=n.prototype[o];t=i;break;default:t=n}return t}function k(n,t){if(d(n))for(var e in n){var r=n[e];(h(r)||d(r))&&k(r,t),i=t,o=!1,(o=!!(h(r=r)&&i.array&&0===r.length||d(r)&&i.kvPair&&w(r)||p(r)&&i.string&&""===r||a(r))||o)&&delete n[e]}var i,o}function x(n){return n=h(n)||h(n=g(n))?n:[]}function M(n,t,e){var r;e=null==e?60:e,n()?t():(clearTimeout(r),setTimeout(function(){M(n,t,e)},e))}M["async"]=function(t,e){return new Promise(function(n){M(t,n,e)})};var H={id:"id",children:"children"};function O(n){return(n=Number(n))===Math.abs(Infinity)||isNaN(n)?0:n}function E(n,t){return a(n)?t:n}function F(n,t){var e="";if((n=o(n)).length*t<1<<28)for(;1==(1&t)&&(e+=n),0!=(t>>>=1);)n+=n;return e}function K(n,t,e,r){return(n=o(n)).length>(t>>=0)?n:(t-=n.length,e.length<t&&(e+=F(e,t/e.length)),-1===r?e.slice(0,t)+n:n+e.slice(0,t))}function I(n,t,e){return K(n,t,e,1)}function N(n,t){return""!==n?n.split(t):[]}function V(n,e,t){var r,i,o=a(t)?"children":t;return function u(n){if(n)for(var t=0;t<n.length;t++){if(i=e(n[t])){r=n[t];break}if(u(n[t][o]),i)break}}(n),r}function j(n,t,e){e=!1===e?0:1;return n=Math.random()*(t-n+e)+n,e?Math.floor(n):n}function P(){return t[j(0,t.length-1)][0]}var D={};function G(n,t){}var J=[s,s];function Q(n){if(n==s)return J;var r,i=n;return n.replace(/^\[(.*?)\](.*)?/,function(n,t,e){return i=t,r=e,""}),[i,r]}function q(n){return""===n||/^\d+$/.test(n)}n.Polling=function(){function n(n){this._timer=void 0,this._timer_info=void 0,this._stamp=0,this._passStamp=0,this._option=void 0,this._option=Object.assign({timeout:6e3,interval:1e3,handler:G},n),this._next=this._next.bind(this),this._doOnce=this._doOnce.bind(this),this.done=this.done.bind(this)}var t=n.prototype;return t._next=function(){return clearInterval(this._timer),this._passStamp=+new Date-this._stamp,this._timer=setTimeout(this._doOnce,this._option.interval),this},t._doOnce=function(){if(this._passStamp>=this._option.timeout)return this._option.onMessage&&this._option.onMessage(0),this.done(),this;this._option.handler(this._next,this.done)},t.start=function(){var n,t=this;this._stamp=+new Date,this.done(),this._doOnce();return this._option.onMessage&&(clearInterval(this._timer_info),this._timer_info=setInterval(function(){n=+new Date-t._stamp,0===(n=Math.max(t._option.timeout-n,0))&&t.done(),t._option.onMessage(n)},100)),this},t.done=function(){return clearTimeout(this._timer),clearTimeout(this._timer_info),this},t.dispose=function(){return this.done(),this},n}(),n._Array=x,n._Boolean=function(n){return!0===n||"true"===n||"1"===n||1===n},n._KvPair=v,n._Number=O,n._String=o,n.changeIndex=function(n,t,e){return n<0?t:((t=(t+e)%(n+=1))<0&&(t+=n),-0===t?0:t)},n.clean=function $(n,t,e){if(e=!1!==e,d(n)){var r,i,o={};for(i in n)S(h(r=n[i])||d(r)?$(r,t):r,t,e,function(n){o[i]=n})}else if(h(n)){o=[];for(var u=0,a=n.length;u<a;u++)S($(n[u],t),t,e,function(n){o.push(n)})}else o=n;return o},n.cloneEasy=T,n.dataPage=function(n,t,e){if(e<1)throw"页码必须大于0";var r=(e-1)*t,i=r+t;return{current:e,total:n.length,size:t,pages:Math.ceil(n.length/t),data:T(n.slice(r,i))}},n.deepFindItem=V,n.deepFindTreePath=function(n,t,e){e=Object.assign(H,e);for(var r=[],i=T(n),o=new Set,u=e["children"];i.length;){var a=i[0];if(o.has(a))r.pop(),i.shift();else if(o.add(a),a[u]&&i.unshift.apply(i,a[u]),r.push(a),t(a))return r}return undefined},n.defaultValue=E,n.defineEventBus=function(i){if(D[i])throw'"'+i+'" Has already been registered!';return D[i]=D[i]||[],{on:function(n){D[i].push(n)},emit:function(){for(var n=arguments.length,t=new Array(n),e=0;e<n;e++)t[e]=arguments[e];for(var r=0;r<D[i].length;r++)D[i][r].apply(s,t)},off:function(n){if(!n)throw"the hander of off is required!";for(var t=0;t<D[i].length;t++)D[i][t]===n&&D[i].splice(t--,1)},dispose:function(){for(var n=0;n<D[i].length;n++)D[i].splice(n--,1);delete D[i]}}},n.flatTree=function(n,r){var i=[];return r=E(r,"children"),function o(n){if(h(n))for(var t,e=0;e<n.length;e++)t=n[e],i.push(t),o(t[r])}(n),i},n.floorFixed=function(n,t,e){var r=(n=N(n=y(O(n)),"."))[1]||"";return r.length<t&&(r=I(r,t,"0"),e&&(r=r.replace(/0+$/,""))),t<1||!r?n[0]:n[0]+"."+r.substring(0,t)},n.forEach=function(n,t){for(var e=0;e<n.length;e++)t(n[e],e,n)},n.forEachTree=function(n,e,r){r=r||"children",function i(n){for(var t=0;t<n.length;t++)e(n[t]),h(n[t][r])&&i(n[t][r])}(n)},n.getRandom=j,n.getType=l,n.isArray=h,n.isEmpty=function(n){return a(n)||""===n},n.isFunction=m,n.isKvPair=d,n.isNull=a,n.isString=p,n.mapTree=function(n,r,i,o){o=o||"children";var t=[];return function u(n,t){for(var e=0;e<n.length;e++)t[e]=T(i(n[e])),n[e][o]&&(t[e][r]=[],u(n[e][o],t[e][r]))}(n,t),t},n.padEnd=I,n.padStart=function(n,t,e){return K(n,t,e,-1)},n.param=_,n.parseQuery=function(n){var u,r,a={};return(n=n||e&&C.location.href||"").replace(/([^=&?/#]*?)=([^=&?/#]*)/g,function(n,t,o){var e;e=i(o),o=null==e?undefined:B!==e&&(R===e||g(e,e)),r=i(t),u=!1,""!==r&&(r.replace(/(.*?)(\[.*)/,function(n,t,e){var r=Q(e);u=!0,q(r[0])?a[t]=x(a[t]):a[t]=v(a[t]),function i(n,t,e){var t=Q(t),r=t[0];q(r)?(r=O(r),t[1]==s?n.push(e):(/^\[[\D]+\]/.test(t[1])?n[r]=v(n[r]):n[r]=x(n[r]),i(n[r],t[1],e))):t[1]==s?n[r]=e:(/^\[[\D]+\]/.test(t[1])?n[r]=v(n[r]):n[r]=x(n[r]),i(n[r],t[1],e))}(a[t],e,o)}),u||(a[r]=o))}),a},n.randomColor=function(){return"rgba("+j(0,255,!0)+","+j(0,255,!0)+","+j(0,255,!0)+",1)"},n.repeatString=F,n.roundFixed=function(n,t,e){n=O(n);var r,i=Math.pow(10,t),n=o(Math.round(n*i)/i);return 0<t&&(r=(i=N(n,"."))[0],(i=i[1]||"").length<t&&(i=I(i,t,"0"),n=(i=e?i.replace(/0+$/,""):i)?r+"."+i:r)),n},n.shake=function(n,t){return t=Object.assign({string:!0,array:!0,kvPair:!0},t),k(n=T(n),t),n},n.split=N,n.tree=function(n,t){for(var e=(t=v(t)).id||"id",r=t.pid||"pid",i=t.children||"children",o=0;o<n.length;o++){var u,a=n[o];(u=V(n,function(n){return null!=n[e]&&n[e]!=a[e]&&n[e]===a[r]},i))&&(u[i]=x(u[i]),u[i].push(a),n.splice(o--,1))}return n},n.trim=y,n.urlToGet=function(n,t){n=o(n).replace(/&*$/g,"").replace(/\?*$/,"");var e="";return(e=d(t)||h(t)?_(t):o(t).replace(/^&*/,""))&&(n+=(/\?/.test(n)?"&":"?")+e),n},n.uuid=function(n){n=O(n);for(var t="",e=0;e<13;e++)t+=j(1,9);return n=(new Date).getTime()*j(1,100),I(P()+Number(t).toString(32)+n.toString(32),20,P()+P()+P())},n.variableHasValue=M});
|