aldehyde 0.2.528 → 0.2.529
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/lib/controls/direct-file-view/index.d.ts.map +1 -1
- package/lib/controls/direct-file-view/index.js +16 -4
- package/lib/controls/direct-file-view/index.js.map +1 -1
- package/lib/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +99 -99
- package/lib/draw-canvas-edit/components/asset-bar/index.less +35 -35
- package/lib/draw-canvas-edit/components/main-header/index.less +23 -23
- package/lib/lowcode-components/base-table/index.less +61 -61
- package/lib/lowcode-components/data-number/index.less +10 -10
- package/lib/lowcode-components/date-time/index.less +4 -4
- package/lib/lowcode-components/four-angle-glow-border/index.less +49 -49
- package/lib/lowcode-components/lowcode-view/component/font/FontGlobal.css +26 -26
- package/lib/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -13
- package/lib/lowcode-components/text-scroller/index.less +28 -28
- package/lib/routable/ttmpl-table-route.d.ts.map +1 -1
- package/lib/routable/ttmpl-table-route.js.map +1 -1
- package/lib/table/column/column-builder.d.ts.map +1 -1
- package/lib/table/column/column-builder.js +5 -4
- package/lib/table/column/column-builder.js.map +1 -1
- package/lib/tmpl/interface.d.ts +1 -0
- package/lib/tmpl/interface.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/aldehyde/controls/direct-file-view/index.tsx +14 -4
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.css +99 -99
- package/src/aldehyde/controls/icon-selector/icon/phonenode-menu-icon/iconfont.json +156 -156
- package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.less +35 -35
- package/src/aldehyde/draw-canvas-edit/components/asset-bar/index.tsx +110 -110
- package/src/aldehyde/draw-canvas-edit/components/main-header/index.less +23 -23
- package/src/aldehyde/draw-canvas-edit/components/main-header/index.tsx +263 -263
- package/src/aldehyde/draw-canvas-edit/components/render/draws/index.ts +7 -7
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/base-graph.ts +241 -241
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/circle.ts +699 -699
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/curve.ts +500 -500
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/index.ts +5 -5
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/line.ts +493 -493
- package/src/aldehyde/draw-canvas-edit/components/render/graphs/rect.ts +680 -680
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/drag-handlers.ts +68 -68
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/graph-handlers.ts +113 -113
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/index.ts +9 -9
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/key-move-handlers.ts +49 -49
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/link-handlers.ts +45 -45
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/shutcut-handlers.ts +45 -45
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/text-handlers.ts +81 -81
- package/src/aldehyde/draw-canvas-edit/components/render/handlers/zoom-handlers.ts +59 -59
- package/src/aldehyde/draw-canvas-edit/components/render/tools/align-tool.ts +89 -89
- package/src/aldehyde/draw-canvas-edit/components/render/tools/asset-tool.ts +154 -154
- package/src/aldehyde/draw-canvas-edit/components/render/tools/link-tool.ts +222 -222
- package/src/aldehyde/draw-canvas-edit/components/render/tools/z-index-tool.ts +224 -224
- package/src/aldehyde/draw-canvas-edit/components/render/utils/a-star.ts +116 -116
- package/src/aldehyde/draw-canvas-edit/components/render/utils/bezier-scene-func.ts +72 -72
- package/src/aldehyde/draw-canvas-edit/components/setting-form/imag-upload.tsx +119 -119
- package/src/aldehyde/layout4/imgs/user.svg +26 -26
- package/src/aldehyde/lowcode-components/base-color-block/index.tsx +31 -31
- package/src/aldehyde/lowcode-components/base-table/index.less +61 -61
- package/src/aldehyde/lowcode-components/data-number/index.less +10 -10
- package/src/aldehyde/lowcode-components/date-time/index.less +4 -4
- package/src/aldehyde/lowcode-components/date-time/index.tsx +64 -64
- package/src/aldehyde/lowcode-components/four-angle-glow-border/index.less +49 -49
- package/src/aldehyde/lowcode-components/four-angle-glow-border/index.tsx +53 -53
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-controller.ts +64 -64
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-definition.ts +77 -77
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-designer-loader.ts +36 -36
- package/src/aldehyde/lowcode-components/lowcode-view/component/component-container.tsx +144 -144
- package/src/aldehyde/lowcode-components/lowcode-view/component/font/FontGlobal.css +26 -26
- package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/controller.ts +36 -36
- package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/definition.ts +53 -53
- package/src/aldehyde/lowcode-components/lowcode-view/component/group-layer/index.tsx +15 -15
- package/src/aldehyde/lowcode-components/lowcode-view/component/layer-builder.tsx +98 -98
- package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -13
- package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.tsx +121 -121
- package/src/aldehyde/lowcode-components/placeholder-component/index.tsx +81 -81
- package/src/aldehyde/lowcode-components/text-scroller/index.less +28 -28
- package/src/aldehyde/lowcode-components/text-scroller/index.tsx +173 -173
- package/src/aldehyde/routable/ttmpl-table-route.tsx +0 -1
- package/src/aldehyde/table/column/column-builder.tsx +5 -4
- package/src/aldehyde/tmpl/interface.tsx +1 -1
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
.text-scroller-container {
|
|
2
|
-
--speed: 10s;
|
|
3
|
-
--container-width: 320px;
|
|
4
|
-
|
|
5
|
-
width: 100%;
|
|
6
|
-
height: 100%;
|
|
7
|
-
overflow: hidden;
|
|
8
|
-
white-space: nowrap;
|
|
9
|
-
position: relative;
|
|
10
|
-
|
|
11
|
-
.text-scroller {
|
|
12
|
-
height: inherit;
|
|
13
|
-
position: absolute;
|
|
14
|
-
color: white;
|
|
15
|
-
animation: scrollText var(--speed) linear infinite;
|
|
16
|
-
display: flex;
|
|
17
|
-
align-items: center;
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
@keyframes scrollText {
|
|
21
|
-
0% {
|
|
22
|
-
transform: translateX(var(--container-width));
|
|
23
|
-
}
|
|
24
|
-
|
|
25
|
-
100% {
|
|
26
|
-
transform: translateX(-100%);
|
|
27
|
-
}
|
|
28
|
-
}
|
|
1
|
+
.text-scroller-container {
|
|
2
|
+
--speed: 10s;
|
|
3
|
+
--container-width: 320px;
|
|
4
|
+
|
|
5
|
+
width: 100%;
|
|
6
|
+
height: 100%;
|
|
7
|
+
overflow: hidden;
|
|
8
|
+
white-space: nowrap;
|
|
9
|
+
position: relative;
|
|
10
|
+
|
|
11
|
+
.text-scroller {
|
|
12
|
+
height: inherit;
|
|
13
|
+
position: absolute;
|
|
14
|
+
color: white;
|
|
15
|
+
animation: scrollText var(--speed) linear infinite;
|
|
16
|
+
display: flex;
|
|
17
|
+
align-items: center;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
@keyframes scrollText {
|
|
21
|
+
0% {
|
|
22
|
+
transform: translateX(var(--container-width));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
100% {
|
|
26
|
+
transform: translateX(-100%);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
29
|
}
|
|
@@ -1,174 +1,174 @@
|
|
|
1
|
-
import React, { forwardRef, ForwardedRef, useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
2
|
-
import './index.less';
|
|
3
|
-
import _ from "lodash";
|
|
4
|
-
import { useLocale } from "../../locale/useLocale";
|
|
5
|
-
import HydrocarbonService from "../../tmpl/hcservice-v3";
|
|
6
|
-
import { DataConfigProps } from "../data";
|
|
7
|
-
|
|
8
|
-
// 处理数据格式
|
|
9
|
-
const handleData = (data: { config: { [key: string]: string }, value: { [key: string]: any }[] }[]) => {
|
|
10
|
-
const temData = data?.[0]?.value?.[0]?.v1;
|
|
11
|
-
return temData;
|
|
12
|
-
}
|
|
13
|
-
|
|
14
|
-
export interface ComponentStyle {
|
|
15
|
-
speed?: number;
|
|
16
|
-
fontSize?: number;
|
|
17
|
-
color?: string;
|
|
18
|
-
fontFamily?: string;
|
|
19
|
-
fontWeight?: number;
|
|
20
|
-
defaultValue?: string;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
export interface ComponentProps {
|
|
24
|
-
style?: ComponentStyle;
|
|
25
|
-
data?: DataConfigProps;
|
|
26
|
-
isDesignMode?: boolean; // 是否编辑模式
|
|
27
|
-
initSearchParams?: { [key: string]: any }; // 全局初始化外部参数,例:传参包含设备id,则在查询时带上设备id
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export interface ComponentRef {
|
|
31
|
-
updateConfig: (newConfig: ComponentProps) => void;
|
|
32
|
-
destroy: () => void;
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>) => {
|
|
36
|
-
const { style, data: propsData, isDesignMode } = props;
|
|
37
|
-
const [config, setConfig] = useState<ComponentStyle>(style || {});
|
|
38
|
-
const [speed, setSpeed] = useState<number>(style?.speed || 5);
|
|
39
|
-
const [dataConfig, setDataConfig] = useState<DataConfigProps>({ ...propsData }); // 数据源配置
|
|
40
|
-
const [data, setData] = useState<string>('');
|
|
41
|
-
const [searchParams, setSearchParams] = useState<{ [key: string]: any }>();
|
|
42
|
-
const [initSearchParams, setInitSearchParams] = useState<{ [key: string]: any }>();
|
|
43
|
-
const textScrollerRef = useRef<HTMLDivElement>(null);
|
|
44
|
-
const textContainerRef = useRef<HTMLDivElement>(null);
|
|
45
|
-
const resizeObserverRef = useRef<ResizeObserver | null>(null);
|
|
46
|
-
const pollingIntervalRef = useRef<number | NodeJS.Timeout>(null);
|
|
47
|
-
const { translate } = useLocale();
|
|
48
|
-
|
|
49
|
-
const handleDestroy = () => {
|
|
50
|
-
resizeObserverRef.current && resizeObserverRef.current.disconnect();
|
|
51
|
-
pollingIntervalRef.current && clearInterval(pollingIntervalRef.current);
|
|
52
|
-
};
|
|
53
|
-
|
|
54
|
-
// 全局初始化请求数据处理
|
|
55
|
-
const handleInitData = (val: DataConfigProps) => {
|
|
56
|
-
if (val.sourceType === "sourceId" && val.isInit && val.initData) {
|
|
57
|
-
const { config, value } = val.initData;
|
|
58
|
-
const temData = handleData(value);
|
|
59
|
-
setData(temData);
|
|
60
|
-
if (config?.requestMode === "polling") {
|
|
61
|
-
pollingIntervalRef.current = setInterval(() => { getData() }, config?.pollingInterval || 60000);
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
// ws订阅数据更新
|
|
67
|
-
const handleWSData = (val: DataConfigProps) => {
|
|
68
|
-
if (val.sourceType === "sourceId" && val.wsData) {
|
|
69
|
-
const { value } = val.initData;
|
|
70
|
-
const temData = handleData(value);
|
|
71
|
-
setData(temData);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
useImperativeHandle(ref, () => ({
|
|
76
|
-
updateConfig: (newConfig) => {
|
|
77
|
-
const { style: newStyle, data: newDataConfig, initSearchParams: newISParams } = newConfig;
|
|
78
|
-
setConfig({ ...(newStyle || {}) });
|
|
79
|
-
setSpeed(newStyle?.speed || 5);
|
|
80
|
-
setDataConfig({ ...newDataConfig });
|
|
81
|
-
handleInitData(newDataConfig);
|
|
82
|
-
setSearchParams(newDataConfig.searchParams);
|
|
83
|
-
setInitSearchParams(newISParams);
|
|
84
|
-
handleWSData(newDataConfig);
|
|
85
|
-
},
|
|
86
|
-
destroy: handleDestroy,
|
|
87
|
-
}));
|
|
88
|
-
|
|
89
|
-
useEffect(() => {
|
|
90
|
-
if (textContainerRef.current) {
|
|
91
|
-
resizeObserverRef.current = new ResizeObserver(_.debounce((entries) => {
|
|
92
|
-
for (const entry of entries) {
|
|
93
|
-
const { width } = entry.contentRect;
|
|
94
|
-
textContainerRef.current.style.setProperty('--container-width', `${width}px`);
|
|
95
|
-
}
|
|
96
|
-
}, 100));
|
|
97
|
-
// 开始观察
|
|
98
|
-
resizeObserverRef.current.observe(textContainerRef.current);
|
|
99
|
-
}
|
|
100
|
-
return () => {
|
|
101
|
-
handleDestroy();
|
|
102
|
-
}
|
|
103
|
-
}, []);
|
|
104
|
-
|
|
105
|
-
useEffect(() => {
|
|
106
|
-
if (textContainerRef.current) {
|
|
107
|
-
textContainerRef.current.style.setProperty('--speed', `${speed || 5}s`);
|
|
108
|
-
}
|
|
109
|
-
}, [speed]);
|
|
110
|
-
|
|
111
|
-
// 请求数据
|
|
112
|
-
const getData = async (params?: object) => {
|
|
113
|
-
const { data } = await HydrocarbonService.requestChartData(null, dataConfig?.sourceId, params) || {};
|
|
114
|
-
const { config, value } = data || {};
|
|
115
|
-
const temData = handleData(value);
|
|
116
|
-
setData(temData);
|
|
117
|
-
return config;
|
|
118
|
-
};
|
|
119
|
-
|
|
120
|
-
// 初始化请求数据
|
|
121
|
-
const getInitData = async (params?: object) => {
|
|
122
|
-
pollingIntervalRef.current && clearInterval(pollingIntervalRef.current);
|
|
123
|
-
const config = await getData(params);
|
|
124
|
-
if (config?.requestMode === "polling") {
|
|
125
|
-
pollingIntervalRef.current = setInterval(() => getData(params), config?.pollingInterval || 60000);
|
|
126
|
-
}
|
|
127
|
-
};
|
|
128
|
-
|
|
129
|
-
// 静态数据处理
|
|
130
|
-
useEffect(() => {
|
|
131
|
-
if (dataConfig?.sourceType === 'staticData') {
|
|
132
|
-
const { value } = dataConfig.staticData || {};
|
|
133
|
-
setData(value);
|
|
134
|
-
}
|
|
135
|
-
}, [dataConfig?.sourceType, dataConfig?.staticData]);
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* 数据源数据请求
|
|
139
|
-
* 1、编辑态不请求数据
|
|
140
|
-
*/
|
|
141
|
-
useEffect(() => {
|
|
142
|
-
if (!isDesignMode && dataConfig?.sourceType === 'sourceId' && dataConfig?.sourceId && !dataConfig?.isInit && dataConfig?.isDefRequest !== false) {
|
|
143
|
-
if (dataConfig?.isInitParams) { // 组件数据源接收外部参数
|
|
144
|
-
initSearchParams && getInitData(initSearchParams);
|
|
145
|
-
} else {
|
|
146
|
-
getInitData();
|
|
147
|
-
}
|
|
148
|
-
} else if (dataConfig?.sourceType === 'sourceId') {
|
|
149
|
-
setData("文本跑马灯");
|
|
150
|
-
}
|
|
151
|
-
}, [dataConfig?.sourceType, dataConfig?.sourceId, initSearchParams]);
|
|
152
|
-
|
|
153
|
-
// 搜索参数变化时重新请求数据
|
|
154
|
-
useEffect(() => {
|
|
155
|
-
if (searchParams) {
|
|
156
|
-
const params = { ...(initSearchParams || {}), ...searchParams };
|
|
157
|
-
if (dataConfig?.isInitParams) { // 数据源接收外部参数,则参数存在再请求
|
|
158
|
-
initSearchParams && getInitData(params);
|
|
159
|
-
} else {
|
|
160
|
-
getInitData(params);
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
}, [searchParams, initSearchParams]);
|
|
164
|
-
|
|
165
|
-
return (
|
|
166
|
-
<div className="text-scroller-container" ref={textContainerRef}>
|
|
167
|
-
<div className="text-scroller" style={{ ...config }} ref={textScrollerRef}>
|
|
168
|
-
{translate("${" + data + "}")}
|
|
169
|
-
</div>
|
|
170
|
-
</div>
|
|
171
|
-
);
|
|
172
|
-
});
|
|
173
|
-
|
|
1
|
+
import React, { forwardRef, ForwardedRef, useEffect, useImperativeHandle, useRef, useState } from 'react';
|
|
2
|
+
import './index.less';
|
|
3
|
+
import _ from "lodash";
|
|
4
|
+
import { useLocale } from "../../locale/useLocale";
|
|
5
|
+
import HydrocarbonService from "../../tmpl/hcservice-v3";
|
|
6
|
+
import { DataConfigProps } from "../data";
|
|
7
|
+
|
|
8
|
+
// 处理数据格式
|
|
9
|
+
const handleData = (data: { config: { [key: string]: string }, value: { [key: string]: any }[] }[]) => {
|
|
10
|
+
const temData = data?.[0]?.value?.[0]?.v1;
|
|
11
|
+
return temData;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
export interface ComponentStyle {
|
|
15
|
+
speed?: number;
|
|
16
|
+
fontSize?: number;
|
|
17
|
+
color?: string;
|
|
18
|
+
fontFamily?: string;
|
|
19
|
+
fontWeight?: number;
|
|
20
|
+
defaultValue?: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export interface ComponentProps {
|
|
24
|
+
style?: ComponentStyle;
|
|
25
|
+
data?: DataConfigProps;
|
|
26
|
+
isDesignMode?: boolean; // 是否编辑模式
|
|
27
|
+
initSearchParams?: { [key: string]: any }; // 全局初始化外部参数,例:传参包含设备id,则在查询时带上设备id
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
export interface ComponentRef {
|
|
31
|
+
updateConfig: (newConfig: ComponentProps) => void;
|
|
32
|
+
destroy: () => void;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const Index = forwardRef((props: ComponentProps, ref: ForwardedRef<ComponentRef>) => {
|
|
36
|
+
const { style, data: propsData, isDesignMode } = props;
|
|
37
|
+
const [config, setConfig] = useState<ComponentStyle>(style || {});
|
|
38
|
+
const [speed, setSpeed] = useState<number>(style?.speed || 5);
|
|
39
|
+
const [dataConfig, setDataConfig] = useState<DataConfigProps>({ ...propsData }); // 数据源配置
|
|
40
|
+
const [data, setData] = useState<string>('');
|
|
41
|
+
const [searchParams, setSearchParams] = useState<{ [key: string]: any }>();
|
|
42
|
+
const [initSearchParams, setInitSearchParams] = useState<{ [key: string]: any }>();
|
|
43
|
+
const textScrollerRef = useRef<HTMLDivElement>(null);
|
|
44
|
+
const textContainerRef = useRef<HTMLDivElement>(null);
|
|
45
|
+
const resizeObserverRef = useRef<ResizeObserver | null>(null);
|
|
46
|
+
const pollingIntervalRef = useRef<number | NodeJS.Timeout>(null);
|
|
47
|
+
const { translate } = useLocale();
|
|
48
|
+
|
|
49
|
+
const handleDestroy = () => {
|
|
50
|
+
resizeObserverRef.current && resizeObserverRef.current.disconnect();
|
|
51
|
+
pollingIntervalRef.current && clearInterval(pollingIntervalRef.current);
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// 全局初始化请求数据处理
|
|
55
|
+
const handleInitData = (val: DataConfigProps) => {
|
|
56
|
+
if (val.sourceType === "sourceId" && val.isInit && val.initData) {
|
|
57
|
+
const { config, value } = val.initData;
|
|
58
|
+
const temData = handleData(value);
|
|
59
|
+
setData(temData);
|
|
60
|
+
if (config?.requestMode === "polling") {
|
|
61
|
+
pollingIntervalRef.current = setInterval(() => { getData() }, config?.pollingInterval || 60000);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
// ws订阅数据更新
|
|
67
|
+
const handleWSData = (val: DataConfigProps) => {
|
|
68
|
+
if (val.sourceType === "sourceId" && val.wsData) {
|
|
69
|
+
const { value } = val.initData;
|
|
70
|
+
const temData = handleData(value);
|
|
71
|
+
setData(temData);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
useImperativeHandle(ref, () => ({
|
|
76
|
+
updateConfig: (newConfig) => {
|
|
77
|
+
const { style: newStyle, data: newDataConfig, initSearchParams: newISParams } = newConfig;
|
|
78
|
+
setConfig({ ...(newStyle || {}) });
|
|
79
|
+
setSpeed(newStyle?.speed || 5);
|
|
80
|
+
setDataConfig({ ...newDataConfig });
|
|
81
|
+
handleInitData(newDataConfig);
|
|
82
|
+
setSearchParams(newDataConfig.searchParams);
|
|
83
|
+
setInitSearchParams(newISParams);
|
|
84
|
+
handleWSData(newDataConfig);
|
|
85
|
+
},
|
|
86
|
+
destroy: handleDestroy,
|
|
87
|
+
}));
|
|
88
|
+
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
if (textContainerRef.current) {
|
|
91
|
+
resizeObserverRef.current = new ResizeObserver(_.debounce((entries) => {
|
|
92
|
+
for (const entry of entries) {
|
|
93
|
+
const { width } = entry.contentRect;
|
|
94
|
+
textContainerRef.current.style.setProperty('--container-width', `${width}px`);
|
|
95
|
+
}
|
|
96
|
+
}, 100));
|
|
97
|
+
// 开始观察
|
|
98
|
+
resizeObserverRef.current.observe(textContainerRef.current);
|
|
99
|
+
}
|
|
100
|
+
return () => {
|
|
101
|
+
handleDestroy();
|
|
102
|
+
}
|
|
103
|
+
}, []);
|
|
104
|
+
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
if (textContainerRef.current) {
|
|
107
|
+
textContainerRef.current.style.setProperty('--speed', `${speed || 5}s`);
|
|
108
|
+
}
|
|
109
|
+
}, [speed]);
|
|
110
|
+
|
|
111
|
+
// 请求数据
|
|
112
|
+
const getData = async (params?: object) => {
|
|
113
|
+
const { data } = await HydrocarbonService.requestChartData(null, dataConfig?.sourceId, params) || {};
|
|
114
|
+
const { config, value } = data || {};
|
|
115
|
+
const temData = handleData(value);
|
|
116
|
+
setData(temData);
|
|
117
|
+
return config;
|
|
118
|
+
};
|
|
119
|
+
|
|
120
|
+
// 初始化请求数据
|
|
121
|
+
const getInitData = async (params?: object) => {
|
|
122
|
+
pollingIntervalRef.current && clearInterval(pollingIntervalRef.current);
|
|
123
|
+
const config = await getData(params);
|
|
124
|
+
if (config?.requestMode === "polling") {
|
|
125
|
+
pollingIntervalRef.current = setInterval(() => getData(params), config?.pollingInterval || 60000);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
|
|
129
|
+
// 静态数据处理
|
|
130
|
+
useEffect(() => {
|
|
131
|
+
if (dataConfig?.sourceType === 'staticData') {
|
|
132
|
+
const { value } = dataConfig.staticData || {};
|
|
133
|
+
setData(value);
|
|
134
|
+
}
|
|
135
|
+
}, [dataConfig?.sourceType, dataConfig?.staticData]);
|
|
136
|
+
|
|
137
|
+
/**
|
|
138
|
+
* 数据源数据请求
|
|
139
|
+
* 1、编辑态不请求数据
|
|
140
|
+
*/
|
|
141
|
+
useEffect(() => {
|
|
142
|
+
if (!isDesignMode && dataConfig?.sourceType === 'sourceId' && dataConfig?.sourceId && !dataConfig?.isInit && dataConfig?.isDefRequest !== false) {
|
|
143
|
+
if (dataConfig?.isInitParams) { // 组件数据源接收外部参数
|
|
144
|
+
initSearchParams && getInitData(initSearchParams);
|
|
145
|
+
} else {
|
|
146
|
+
getInitData();
|
|
147
|
+
}
|
|
148
|
+
} else if (dataConfig?.sourceType === 'sourceId') {
|
|
149
|
+
setData("文本跑马灯");
|
|
150
|
+
}
|
|
151
|
+
}, [dataConfig?.sourceType, dataConfig?.sourceId, initSearchParams]);
|
|
152
|
+
|
|
153
|
+
// 搜索参数变化时重新请求数据
|
|
154
|
+
useEffect(() => {
|
|
155
|
+
if (searchParams) {
|
|
156
|
+
const params = { ...(initSearchParams || {}), ...searchParams };
|
|
157
|
+
if (dataConfig?.isInitParams) { // 数据源接收外部参数,则参数存在再请求
|
|
158
|
+
initSearchParams && getInitData(params);
|
|
159
|
+
} else {
|
|
160
|
+
getInitData(params);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
}, [searchParams, initSearchParams]);
|
|
164
|
+
|
|
165
|
+
return (
|
|
166
|
+
<div className="text-scroller-container" ref={textContainerRef}>
|
|
167
|
+
<div className="text-scroller" style={{ ...config }} ref={textScrollerRef}>
|
|
168
|
+
{translate("${" + data + "}")}
|
|
169
|
+
</div>
|
|
170
|
+
</div>
|
|
171
|
+
);
|
|
172
|
+
});
|
|
173
|
+
|
|
174
174
|
export default Index;
|
|
@@ -68,7 +68,6 @@ const Index = (props: Props) => {
|
|
|
68
68
|
const ettmplConfig: EttmplConfig = await HCDataSource.requestEttmplConfig(serverKey, sourceId);
|
|
69
69
|
const ettmplSourceId_ = ettmplConfig?.sourceId || "";
|
|
70
70
|
const ettmplLtmplConfig: LtmplConfigRes = await HCDataSource.requestEttmplLtmplConfig(serverKey, ettmplSourceId_, ettmplSourceId_);
|
|
71
|
-
|
|
72
71
|
const ltmplConfig = ettmplLtmplConfig?.ltmplConfig;
|
|
73
72
|
setLtmplConfig(ltmplConfig);
|
|
74
73
|
setEttmplConfig(ettmplConfig);
|
|
@@ -581,8 +581,9 @@ export default {
|
|
|
581
581
|
|
|
582
582
|
// 展开树行操作添加按钮
|
|
583
583
|
if (rowRactionAddConfigs?.length && doAddRaction && !readOnly) {
|
|
584
|
-
|
|
585
|
-
|
|
584
|
+
const temConfigs = rowRactionAddConfigs.filter(item => ActionUtils.isShow(item.addableActionConfig?.preposes, [record], undefined)); // 过滤前置条件
|
|
585
|
+
if (temConfigs?.length > 1) {
|
|
586
|
+
const temItems = temConfigs.map(item => ({ key: item.id, label: <Tooltip title={`${translate("${添加}")}${translate("${" + item.title + "}")}`}><div onClick={() => doAddRaction(item.id, record.code)}><PlusOutlined style={{ marginRight: "6px" }} /><span>{item.title}</span></div></Tooltip> }));
|
|
586
587
|
actionButtons.push(<Dropdown menu={{ items: temItems }}>
|
|
587
588
|
<Button
|
|
588
589
|
size="small"
|
|
@@ -590,8 +591,8 @@ export default {
|
|
|
590
591
|
icon={<PlusOutlined />}
|
|
591
592
|
/>
|
|
592
593
|
</Dropdown>);
|
|
593
|
-
} else {
|
|
594
|
-
const tItem =
|
|
594
|
+
} else if (temConfigs[0]) {
|
|
595
|
+
const tItem = temConfigs[0];
|
|
595
596
|
actionButtons.push(
|
|
596
597
|
<Tooltip title={`${translate("${添加}")}${translate("${" + tItem.title + "}")}`}>
|
|
597
598
|
<Button
|
|
@@ -723,7 +723,7 @@ export interface LtmplConfig extends SelectConfig {
|
|
|
723
723
|
tableLayout?: "auto" | "fixed"; // 表格布局(自适应列宽/固定列宽)
|
|
724
724
|
buttonAuditViewAction?: ActionConfig; // 审计查看按钮
|
|
725
725
|
buttonAuditEditAction?: ActionConfig; // 审计编辑按钮
|
|
726
|
-
rowRactionAddConfigs?: { id: string, order: number, tip: string, title: string }[]; // 展开树行操作添加按钮配置
|
|
726
|
+
rowRactionAddConfigs?: { id: string, order: number, tip: string, title: string, addableActionConfig: ActionConfig }[]; // 展开树行操作添加按钮配置
|
|
727
727
|
}
|
|
728
728
|
|
|
729
729
|
export interface EnumItem {
|