aldehyde 0.2.270 → 0.2.271
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/entry-control.d.ts.map +1 -1
- package/lib/controls/entry-control.js +1 -1
- package/lib/controls/entry-control.js.map +1 -1
- package/lib/controls/select/index.d.ts.map +1 -1
- package/lib/controls/select/index.js.map +1 -1
- package/lib/controls/upload/index.d.ts.map +1 -1
- package/lib/controls/upload/index.js.map +1 -1
- package/lib/controls/upload/mult-file-upload.d.ts.map +1 -1
- package/lib/controls/upload/mult-file-upload.js +41 -23
- package/lib/controls/upload/mult-file-upload.js.map +1 -1
- package/lib/detail/edit/fields-edit-card.js +1 -1
- package/lib/detail/edit/fields-edit-card.js.map +1 -1
- package/lib/detail/edit/row-edit-card.d.ts.map +1 -1
- package/lib/detail/edit/row-edit-card.js +1 -1
- package/lib/detail/edit/row-edit-card.js.map +1 -1
- package/lib/detail/edit/row-editor.js +1 -1
- package/lib/detail/edit/row-editor.js.map +1 -1
- package/lib/form/dtmpl-form.d.ts.map +1 -1
- package/lib/form/dtmpl-form.js +4 -4
- package/lib/form/dtmpl-form.js.map +1 -1
- package/lib/form/field-group-form.d.ts +1 -0
- package/lib/form/field-group-form.d.ts.map +1 -1
- package/lib/form/field-group-form.js +2 -1
- package/lib/form/field-group-form.js.map +1 -1
- package/lib/index.d.ts +2 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +2 -1
- package/lib/index.js.map +1 -1
- package/lib/layout/menu/l2menu-message-bar.js +5 -5
- package/lib/layout/menu/l2menu-message-bar.js.map +1 -1
- package/lib/layout2/page.d.ts.map +1 -1
- package/lib/layout2/page.js +11 -3
- package/lib/layout2/page.js.map +1 -1
- package/lib/lowcode-components/bar-chart/index.d.ts +36 -0
- package/lib/lowcode-components/bar-chart/index.d.ts.map +1 -0
- package/lib/lowcode-components/bar-chart/index.js +85 -0
- package/lib/lowcode-components/bar-chart/index.js.map +1 -0
- package/lib/lowcode-components/base-color-block/index.d.ts +17 -0
- package/lib/lowcode-components/base-color-block/index.d.ts.map +1 -0
- package/lib/lowcode-components/base-color-block/index.js +10 -0
- package/lib/lowcode-components/base-color-block/index.js.map +1 -0
- package/lib/lowcode-components/base-image/index.d.ts +14 -0
- package/lib/lowcode-components/base-image/index.d.ts.map +1 -0
- package/lib/lowcode-components/base-image/index.js +23 -0
- package/lib/lowcode-components/base-image/index.js.map +1 -0
- package/lib/lowcode-components/base-text/index.d.ts +31 -0
- package/lib/lowcode-components/base-text/index.d.ts.map +1 -0
- package/lib/lowcode-components/base-text/index.js +43 -0
- package/lib/lowcode-components/base-text/index.js.map +1 -0
- package/lib/lowcode-components/column-chart/index.d.ts +36 -0
- package/lib/lowcode-components/column-chart/index.d.ts.map +1 -0
- package/lib/lowcode-components/column-chart/index.js +85 -0
- package/lib/lowcode-components/column-chart/index.js.map +1 -0
- package/lib/lowcode-components/date-time/index.d.ts +23 -0
- package/lib/lowcode-components/date-time/index.d.ts.map +1 -0
- package/lib/lowcode-components/date-time/index.js +34 -0
- package/lib/lowcode-components/date-time/index.js.map +1 -0
- package/lib/lowcode-components/four-angle-glow-border/index.d.ts +17 -0
- package/lib/lowcode-components/four-angle-glow-border/index.d.ts.map +1 -0
- package/lib/lowcode-components/four-angle-glow-border/index.js +28 -0
- package/lib/lowcode-components/four-angle-glow-border/index.js.map +1 -0
- package/lib/lowcode-components/index.d.ts +23 -0
- package/lib/lowcode-components/index.d.ts.map +1 -0
- package/lib/lowcode-components/index.js +21 -0
- package/lib/lowcode-components/index.js.map +1 -0
- package/lib/lowcode-components/line-chart/index.d.ts +50 -0
- package/lib/lowcode-components/line-chart/index.d.ts.map +1 -0
- package/lib/lowcode-components/line-chart/index.js +94 -0
- package/lib/lowcode-components/line-chart/index.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-controller.d.ts +51 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-controller.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-controller.js +36 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-controller.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-definition.d.ts +70 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-definition.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-definition.js +12 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-definition.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-designer-controller.d.ts +28 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-designer-controller.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-designer-controller.js +60 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-designer-controller.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-designer-loader.d.ts +15 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-designer-loader.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-designer-loader.js +31 -0
- package/lib/lowcode-components/lowcode-view/component/abstract-designer-loader.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/assets.d.ts +10 -0
- package/lib/lowcode-components/lowcode-view/component/assets.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/assets.js +83 -0
- package/lib/lowcode-components/lowcode-view/component/assets.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/component-container.d.ts +9 -0
- package/lib/lowcode-components/lowcode-view/component/component-container.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/component-container.js +68 -0
- package/lib/lowcode-components/lowcode-view/component/component-container.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/component-controller.d.ts +22 -0
- package/lib/lowcode-components/lowcode-view/component/component-controller.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/component-controller.js +102 -0
- package/lib/lowcode-components/lowcode-view/component/component-controller.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/component-definition.d.ts +12 -0
- package/lib/lowcode-components/lowcode-view/component/component-definition.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/component-definition.js +15 -0
- package/lib/lowcode-components/lowcode-view/component/component-definition.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/layer-builder.d.ts +22 -0
- package/lib/lowcode-components/lowcode-view/component/layer-builder.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/layer-builder.js +83 -0
- package/lib/lowcode-components/lowcode-view/component/layer-builder.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/loading.d.ts +4 -0
- package/lib/lowcode-components/lowcode-view/component/loading.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/component/loading.js +18 -0
- package/lib/lowcode-components/lowcode-view/component/loading.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/index.d.ts +9 -0
- package/lib/lowcode-components/lowcode-view/index.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/index.js +89 -0
- package/lib/lowcode-components/lowcode-view/index.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/interface.d.ts +139 -0
- package/lib/lowcode-components/lowcode-view/interface.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/interface.js +2 -0
- package/lib/lowcode-components/lowcode-view/interface.js.map +1 -0
- package/lib/lowcode-components/lowcode-view/lowcode-constant.d.ts +11 -0
- package/lib/lowcode-components/lowcode-view/lowcode-constant.d.ts.map +1 -0
- package/lib/lowcode-components/lowcode-view/lowcode-constant.js +10 -0
- package/lib/lowcode-components/lowcode-view/lowcode-constant.js.map +1 -0
- package/lib/module/dtmpl-edit-page.js +3 -2
- package/lib/module/dtmpl-edit-page.js.map +1 -1
- package/lib/module/dtmpl-view-drawer.d.ts.map +1 -1
- package/lib/module/dtmpl-view-drawer.js +2 -2
- package/lib/module/dtmpl-view-drawer.js.map +1 -1
- package/lib/routable/ltmpl-route.d.ts.map +1 -1
- package/lib/routable/ltmpl-route.js.map +1 -1
- package/lib/table/relation-table.d.ts +10 -0
- package/lib/table/relation-table.d.ts.map +1 -1
- package/lib/table/relation-table.js +126 -29
- package/lib/table/relation-table.js.map +1 -1
- package/lib/tmpl/control-type-supportor.js +1 -1
- package/lib/tmpl/control-type-supportor.js.map +1 -1
- package/lib/tmpl/hc-data-source.d.ts.map +1 -1
- package/lib/tmpl/hc-data-source.js +13 -10
- package/lib/tmpl/hc-data-source.js.map +1 -1
- package/lib/tmpl/interface.d.ts +4 -0
- package/lib/tmpl/interface.d.ts.map +1 -1
- package/lib/tmpl/interface.js.map +1 -1
- package/lib/welcome/HCWelcome.d.ts.map +1 -1
- package/lib/welcome/HCWelcome.js +1 -6
- package/lib/welcome/HCWelcome.js.map +1 -1
- package/package.json +2 -2
- package/src/aldehyde/controls/entry-control.tsx +1 -3
- package/src/aldehyde/controls/select/index.tsx +0 -1
- package/src/aldehyde/controls/upload/index.tsx +0 -1
- package/src/aldehyde/controls/upload/mult-file-upload.tsx +45 -23
- package/src/aldehyde/detail/edit/fields-edit-card.tsx +1 -1
- package/src/aldehyde/detail/edit/row-edit-card.tsx +2 -14
- package/src/aldehyde/detail/edit/row-editor.tsx +1 -1
- package/src/aldehyde/form/dtmpl-form.tsx +5 -8
- package/src/aldehyde/form/field-group-form.tsx +4 -0
- package/src/aldehyde/index.tsx +3 -0
- package/src/aldehyde/layout/menu/l2menu-message-bar.tsx +6 -6
- package/src/aldehyde/layout2/page.tsx +13 -3
- package/src/aldehyde/lowcode-components/bar-chart/index.tsx +116 -0
- package/src/aldehyde/lowcode-components/base-color-block/index.tsx +32 -0
- package/src/aldehyde/lowcode-components/base-image/index.tsx +45 -0
- package/src/aldehyde/lowcode-components/base-text/index.less +20 -0
- package/src/aldehyde/lowcode-components/base-text/index.tsx +88 -0
- package/src/aldehyde/lowcode-components/column-chart/index.tsx +116 -0
- package/src/aldehyde/lowcode-components/date-time/index.less +5 -0
- package/src/aldehyde/lowcode-components/date-time/index.tsx +65 -0
- package/src/aldehyde/lowcode-components/four-angle-glow-border/index.less +50 -0
- package/src/aldehyde/lowcode-components/four-angle-glow-border/index.tsx +53 -0
- package/src/aldehyde/lowcode-components/index.ts +36 -0
- package/src/aldehyde/lowcode-components/line-chart/index.tsx +122 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-controller.ts +64 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-definition.ts +77 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-designer-controller.ts +63 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/abstract-designer-loader.ts +34 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/assets.ts +89 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/component-container.tsx +88 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/component-controller.ts +99 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/component-definition.ts +24 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/font/DingTalk JinBuTi.ttf +0 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/font/DouyinSansBold.ttf +0 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/font/FontGlobal.css +27 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/font//344/274/230/350/256/276/346/240/207/351/242/230/351/273/221.ttf +0 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/font//345/272/236/351/227/250/346/255/243/351/201/223/346/240/207/351/242/230/344/275/223/345/205/215/350/264/271/347/211/210.ttf +0 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/layer-builder.tsx +91 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/loading.tsx +23 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.less +13 -0
- package/src/aldehyde/lowcode-components/lowcode-view/component/screen-fit/index.tsx +122 -0
- package/src/aldehyde/lowcode-components/lowcode-view/index.less +12 -0
- package/src/aldehyde/lowcode-components/lowcode-view/index.tsx +107 -0
- package/src/aldehyde/lowcode-components/lowcode-view/interface.ts +190 -0
- package/src/aldehyde/lowcode-components/lowcode-view/lowcode-constant.tsx +12 -0
- package/src/aldehyde/module/dtmpl-edit-page.tsx +3 -3
- package/src/aldehyde/module/dtmpl-view-drawer.tsx +1 -2
- package/src/aldehyde/routable/ltmpl-route.tsx +0 -1
- package/src/aldehyde/table/relation-table.tsx +155 -40
- package/src/aldehyde/tmpl/control-type-supportor.tsx +1 -1
- package/src/aldehyde/tmpl/hc-data-source.tsx +14 -11
- package/src/aldehyde/tmpl/interface.tsx +5 -1
- package/src/aldehyde/welcome/HCWelcome.js +1 -6
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
|
|
3
|
+
const style = {
|
|
4
|
+
width: "100%",
|
|
5
|
+
height: "100%",
|
|
6
|
+
backgroundColor: '#374f85',
|
|
7
|
+
background: 'linear-gradient(to right, #182848, #1a2848)',
|
|
8
|
+
color: '#1db3ff',
|
|
9
|
+
display: 'flex',
|
|
10
|
+
justifyContent: 'center',
|
|
11
|
+
alignItems: 'center',
|
|
12
|
+
fontSize: '16px',
|
|
13
|
+
fontWeight: '300'
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
const Loading = () => {
|
|
17
|
+
|
|
18
|
+
return (
|
|
19
|
+
<div style={style}>加 载 中 . . . . . .</div>
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
export default Loading;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
.react-screen-box {
|
|
2
|
+
background-size: 100% 100%;
|
|
3
|
+
width: 100%;
|
|
4
|
+
height: 100%;
|
|
5
|
+
|
|
6
|
+
.screen-wrapper {
|
|
7
|
+
transition-property: all;
|
|
8
|
+
transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
|
|
9
|
+
transition-duration: 300ms;
|
|
10
|
+
position: relative;
|
|
11
|
+
transform-origin: left top;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import React, { ReactNode, useEffect, useRef, useState } from 'react'
|
|
2
|
+
import debounce from "lodash/debounce";
|
|
3
|
+
import './index.less';
|
|
4
|
+
import { AdaptationType } from "../../interface";
|
|
5
|
+
|
|
6
|
+
interface ScreenFitProps {
|
|
7
|
+
children?: ReactNode,
|
|
8
|
+
width: number | string,
|
|
9
|
+
height: number | string,
|
|
10
|
+
bodyOverflowHidden?: boolean,
|
|
11
|
+
delay?: number,
|
|
12
|
+
mode?: AdaptationType,
|
|
13
|
+
scaleChange?: (xScale: number, yScale: number) => void,
|
|
14
|
+
containerStyle: {
|
|
15
|
+
width: number,
|
|
16
|
+
height: number,
|
|
17
|
+
},
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
export default function ScreenFit(props: ScreenFitProps) {
|
|
22
|
+
const { width, height, bodyOverflowHidden = true, delay = 500, scaleChange, containerStyle } = props
|
|
23
|
+
let bodyOverflow: string
|
|
24
|
+
const elRef = useRef<HTMLDivElement>(null)
|
|
25
|
+
const [size, setSize] = useState({ width, height, originalHeight: 0, originalWidth: 0 })
|
|
26
|
+
|
|
27
|
+
let observer: MutationObserver;
|
|
28
|
+
|
|
29
|
+
function updateSize() {
|
|
30
|
+
if (size.width && size.height) {
|
|
31
|
+
elRef.current.style.width = `${size.width}px`
|
|
32
|
+
elRef.current.style.height = `${size.height}px`
|
|
33
|
+
} else {
|
|
34
|
+
elRef.current.style.width = `${size.originalWidth}px`
|
|
35
|
+
elRef.current.style.height = `${size.originalHeight}px`
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
function updateScale() {
|
|
40
|
+
// 获取真实视口尺寸
|
|
41
|
+
const currentWidth = containerStyle.width || 0;
|
|
42
|
+
const currentHeight = containerStyle.height || 0;
|
|
43
|
+
// 获取大屏最终的宽高
|
|
44
|
+
const realWidth = size.width || size.originalWidth;
|
|
45
|
+
const realHeight = size.height || size.originalHeight;
|
|
46
|
+
// 计算缩放比例
|
|
47
|
+
const widthScale = currentWidth / +realWidth;
|
|
48
|
+
const heightScale = currentHeight / +realHeight;
|
|
49
|
+
switch (props.mode) {
|
|
50
|
+
case 'full-screen':
|
|
51
|
+
// 若要铺满全屏,则按照各自比例缩放
|
|
52
|
+
elRef.current.style.transform = `scale(${widthScale},${heightScale})`;
|
|
53
|
+
scaleChange?.(widthScale, heightScale);
|
|
54
|
+
break;
|
|
55
|
+
case 'full-x':
|
|
56
|
+
elRef.current.style.transform = `scale(${widthScale})`;
|
|
57
|
+
scaleChange?.(widthScale, widthScale);
|
|
58
|
+
break;
|
|
59
|
+
case 'full-y':
|
|
60
|
+
elRef.current.style.transform = `scale(${heightScale})`;
|
|
61
|
+
scaleChange?.(heightScale, heightScale);
|
|
62
|
+
elRef.current.style.margin = `0px ${(currentWidth - +realWidth * heightScale) / 2}px`;
|
|
63
|
+
break;
|
|
64
|
+
default:
|
|
65
|
+
// 按照宽高最小比例进行缩放
|
|
66
|
+
const scale = Math.min(widthScale, heightScale);
|
|
67
|
+
elRef.current.style.transform = `scale(${scale},${scale})`;
|
|
68
|
+
const domWidth = elRef.current.clientWidth;
|
|
69
|
+
const domHeight = elRef.current.clientHeight;
|
|
70
|
+
const mx = Math.max((currentWidth - domWidth * scale) / 2, 0);
|
|
71
|
+
const my = Math.max((currentHeight - domHeight * scale) / 2, 0);
|
|
72
|
+
elRef.current.style.margin = `${my}px ${mx}px`;
|
|
73
|
+
scaleChange?.(scale, scale);
|
|
74
|
+
break;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
const onResize = debounce(() => {
|
|
79
|
+
if (!elRef.current) return;
|
|
80
|
+
updateSize();
|
|
81
|
+
updateScale();
|
|
82
|
+
}, delay)
|
|
83
|
+
|
|
84
|
+
function initState() {
|
|
85
|
+
if (bodyOverflowHidden) {
|
|
86
|
+
bodyOverflow = document.body.style.overflow;
|
|
87
|
+
document.body.style.overflow = 'hidden';
|
|
88
|
+
}
|
|
89
|
+
observer = new MutationObserver(() => onResize());
|
|
90
|
+
observer.observe(elRef.current, {
|
|
91
|
+
attributes: true,
|
|
92
|
+
attributeFilter: ['style'],
|
|
93
|
+
attributeOldValue: true
|
|
94
|
+
})
|
|
95
|
+
setSize({
|
|
96
|
+
...size,
|
|
97
|
+
originalWidth: window.screen.width,
|
|
98
|
+
originalHeight: window.screen.height
|
|
99
|
+
})
|
|
100
|
+
updateSize();
|
|
101
|
+
updateScale();
|
|
102
|
+
window.addEventListener('resize', onResize);
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
initState();
|
|
107
|
+
return () => {
|
|
108
|
+
observer.disconnect();
|
|
109
|
+
window.removeEventListener('resize', onResize);
|
|
110
|
+
if (bodyOverflowHidden)
|
|
111
|
+
document.body.style.overflow = bodyOverflow;
|
|
112
|
+
}
|
|
113
|
+
}, [])
|
|
114
|
+
|
|
115
|
+
return (
|
|
116
|
+
<div className={'react-screen-box'}>
|
|
117
|
+
<div className={'screen-wrapper'} ref={elRef}>
|
|
118
|
+
{props.children}
|
|
119
|
+
</div>
|
|
120
|
+
</div>
|
|
121
|
+
)
|
|
122
|
+
}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import React, { CSSProperties, useEffect, useState, useRef } from 'react'
|
|
2
|
+
import { useParams } from 'react-router-dom';
|
|
3
|
+
import Loading from "./component/loading";
|
|
4
|
+
import layerBuilder from "./component/layer-builder";
|
|
5
|
+
import './component/font/FontGlobal.css';
|
|
6
|
+
import ScreenFit from "./component/screen-fit";
|
|
7
|
+
import { LayerManagerDataType, CanvasConfig } from "./interface";
|
|
8
|
+
import HcserviceV3 from "../../tmpl/hcservice-v3";
|
|
9
|
+
import LowcodeConstant from "./lowcode-constant";
|
|
10
|
+
import abstractDesignerLoader from "./component/abstract-designer-loader";
|
|
11
|
+
import "./index.less";
|
|
12
|
+
|
|
13
|
+
const fromBase64 = (base64: string) => {
|
|
14
|
+
const binaryString = atob(base64);
|
|
15
|
+
const utf8Array = new Uint8Array(binaryString.length);
|
|
16
|
+
for (let i = 0; i < binaryString.length; i++) {
|
|
17
|
+
utf8Array[i] = binaryString.charCodeAt(i);
|
|
18
|
+
}
|
|
19
|
+
return new TextDecoder().decode(utf8Array);
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
const screenFitStyleMap: Record<string, CSSProperties> = {
|
|
24
|
+
"none": { overflow: "auto" },
|
|
25
|
+
'scale': { overflow: 'hidden' },
|
|
26
|
+
'full-screen': { overflow: 'hidden' },
|
|
27
|
+
'full-x': { overflow: 'hidden scroll' },
|
|
28
|
+
'full-y': { overflow: 'scroll hidden' }
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
const serverKey = LowcodeConstant.lowcodeDtmpl.serverKey;
|
|
32
|
+
const sourceId = LowcodeConstant.lowcodeDtmpl.sourceId;
|
|
33
|
+
|
|
34
|
+
interface Props {
|
|
35
|
+
isFullScreen: boolean
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const LowcodeView = (props: Props) => {
|
|
39
|
+
const { isFullScreen } = props;
|
|
40
|
+
const { sourceId: code } = useParams();
|
|
41
|
+
const canvasRef = useRef(null);
|
|
42
|
+
const [loading, setLoading] = useState<boolean>(false);
|
|
43
|
+
const [layerManager, setLayerManager] = useState<LayerManagerDataType>();
|
|
44
|
+
const [canvasConfig, setCanvasConfig] = useState<CanvasConfig>();
|
|
45
|
+
const { width, height, adaptationType, backgroundColor, backgroundImage } = canvasConfig || {};
|
|
46
|
+
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
//加载
|
|
49
|
+
abstractDesignerLoader.load();
|
|
50
|
+
}, []);
|
|
51
|
+
|
|
52
|
+
// 获取画面数据
|
|
53
|
+
const getViewData = async () => {
|
|
54
|
+
setLoading(true);
|
|
55
|
+
const dtmpl = await HcserviceV3.requestMstrucDtmplData(serverKey, sourceId, code, null);
|
|
56
|
+
const data = dtmpl?.fieldMap || {};
|
|
57
|
+
const { layerManager, canvasManager } = data["内容"] ? JSON.parse(fromBase64(data["内容"]) || '{}') : {};
|
|
58
|
+
setLayerManager(layerManager);
|
|
59
|
+
setCanvasConfig(canvasManager);
|
|
60
|
+
setLoading(false);
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
if (code) {
|
|
65
|
+
getViewData();
|
|
66
|
+
} else {
|
|
67
|
+
setLayerManager({});
|
|
68
|
+
setCanvasConfig({});
|
|
69
|
+
}
|
|
70
|
+
}, [code])
|
|
71
|
+
|
|
72
|
+
const canvasDom = () => <div style={{
|
|
73
|
+
width,
|
|
74
|
+
height,
|
|
75
|
+
background: backgroundColor,
|
|
76
|
+
backgroundImage: `url(${backgroundImage})`,
|
|
77
|
+
backgroundSize: "100% 100%",
|
|
78
|
+
backgroundRepeat: 'no-repeat',
|
|
79
|
+
overflow: 'hidden',
|
|
80
|
+
position: "relative"
|
|
81
|
+
}}>
|
|
82
|
+
{layerBuilder.buildCanvasComponents(layerManager)}
|
|
83
|
+
</div>;
|
|
84
|
+
|
|
85
|
+
return (
|
|
86
|
+
<div ref={canvasRef} className='lowcodeView' style={{ height: isFullScreen ? "100vh" : "calc(100vh - 121px)", ...screenFitStyleMap[adaptationType || "scale"] }}>
|
|
87
|
+
{loading || !layerManager ?
|
|
88
|
+
<Loading />
|
|
89
|
+
:
|
|
90
|
+
(adaptationType === 'none' ? canvasDom() :
|
|
91
|
+
<ScreenFit
|
|
92
|
+
width={width}
|
|
93
|
+
height={height}
|
|
94
|
+
mode={adaptationType}
|
|
95
|
+
containerStyle={{
|
|
96
|
+
width: canvasRef.current?.clientWidth,
|
|
97
|
+
height: canvasRef.current?.clientHeight
|
|
98
|
+
}}
|
|
99
|
+
>
|
|
100
|
+
{canvasDom()}
|
|
101
|
+
</ScreenFit>)
|
|
102
|
+
}
|
|
103
|
+
</div>
|
|
104
|
+
);
|
|
105
|
+
};
|
|
106
|
+
|
|
107
|
+
export default LowcodeView;
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
export interface ILayerItem {
|
|
2
|
+
//唯一标识
|
|
3
|
+
id?: string | undefined;
|
|
4
|
+
//组件名称
|
|
5
|
+
name?: string | undefined;
|
|
6
|
+
//组件类型
|
|
7
|
+
type?: string | undefined;
|
|
8
|
+
//宽度
|
|
9
|
+
width?: number;
|
|
10
|
+
//高度
|
|
11
|
+
height?: number;
|
|
12
|
+
//坐标
|
|
13
|
+
x?: number;
|
|
14
|
+
//y坐标
|
|
15
|
+
y?: number;
|
|
16
|
+
//是否隐藏
|
|
17
|
+
hide?: boolean;
|
|
18
|
+
//是否锁定
|
|
19
|
+
lock?: boolean;
|
|
20
|
+
//顺序
|
|
21
|
+
order?: number;
|
|
22
|
+
//父图层id
|
|
23
|
+
pid?: string;
|
|
24
|
+
//子图层列表
|
|
25
|
+
children?: ILayerItem[];
|
|
26
|
+
//子图层头指针
|
|
27
|
+
childHeader?: string;
|
|
28
|
+
//子图层尾指针
|
|
29
|
+
childTail?: string;
|
|
30
|
+
//前指针
|
|
31
|
+
prev?: string;
|
|
32
|
+
//后指针
|
|
33
|
+
next?: string;
|
|
34
|
+
// 旋转
|
|
35
|
+
transform?: string;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
export interface LayerManagerDataType {
|
|
39
|
+
//元素样式
|
|
40
|
+
elemConfigs?: { [key: string]: Record<string, any> };
|
|
41
|
+
//图层信息
|
|
42
|
+
layerConfigs?: { [key: string]: ILayerItem };
|
|
43
|
+
//图层头指针
|
|
44
|
+
layerHeader?: string;
|
|
45
|
+
//图层尾指针
|
|
46
|
+
layerTail?: string;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
export type AdaptationType = 'scale' | 'full-screen' | 'full-x' | 'full-y' | 'none';
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* 画布配置
|
|
53
|
+
*/
|
|
54
|
+
export interface CanvasConfig {
|
|
55
|
+
//开启栅格化
|
|
56
|
+
rasterize?: boolean;
|
|
57
|
+
//栅格化拖拽步长
|
|
58
|
+
dragStep?: number;
|
|
59
|
+
//栅格化缩放步长
|
|
60
|
+
resizeStep?: number;
|
|
61
|
+
//画布宽
|
|
62
|
+
width?: number;
|
|
63
|
+
//画布高
|
|
64
|
+
height?: number;
|
|
65
|
+
//屏幕适配
|
|
66
|
+
adaptationType?: AdaptationType;
|
|
67
|
+
// 画布背景颜色
|
|
68
|
+
backgroundColor?: string;
|
|
69
|
+
// 画布背景图
|
|
70
|
+
backgroundImage?: string;
|
|
71
|
+
// 画布背景图类型
|
|
72
|
+
bagImgType?: string;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
export interface ComponentInfoType {
|
|
76
|
+
id: string;
|
|
77
|
+
name: string;
|
|
78
|
+
type: string;
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/**
|
|
82
|
+
* 数据配置项
|
|
83
|
+
*/
|
|
84
|
+
|
|
85
|
+
export interface APIConfig {
|
|
86
|
+
sourceId: string;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
export interface DataConfigType {
|
|
90
|
+
//数据来源方式
|
|
91
|
+
sourceType?: 'static' | 'api';
|
|
92
|
+
//静态数据(除了存放静态数据外,该属性还有动态数据的中转站的作用),其他动态数据获取到后统一都存放在静态数据中,需要使用到的时候再从静态数据中获取
|
|
93
|
+
staticData?: any;
|
|
94
|
+
apiData?: APIConfig;
|
|
95
|
+
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
export interface IFilterConfigType {
|
|
99
|
+
enable?: boolean;
|
|
100
|
+
blur?: number;
|
|
101
|
+
brightness?: number;
|
|
102
|
+
contrast?: number;
|
|
103
|
+
opacity?: number;
|
|
104
|
+
saturate?: number;
|
|
105
|
+
hueRotate?: number;
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
export interface ComponentBaseProps {
|
|
109
|
+
base?: ComponentInfoType;
|
|
110
|
+
style?: Record<string, any>;
|
|
111
|
+
data?: DataConfigType;
|
|
112
|
+
filter?: IFilterConfigType;
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
/**
|
|
116
|
+
* 主题
|
|
117
|
+
*/
|
|
118
|
+
export interface ThemeColors {
|
|
119
|
+
//主体色
|
|
120
|
+
main?: string;
|
|
121
|
+
//主文字
|
|
122
|
+
mainText?: string;
|
|
123
|
+
//背景色
|
|
124
|
+
subText?: string;
|
|
125
|
+
//背景色
|
|
126
|
+
background?: string;
|
|
127
|
+
//补充一
|
|
128
|
+
supplementFirst?: string;
|
|
129
|
+
//补充二
|
|
130
|
+
supplementSecond?: string;
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
export interface ThemeItemType {
|
|
134
|
+
colors: ThemeColors;
|
|
135
|
+
name: string;
|
|
136
|
+
id: string;
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
export interface IFilter {
|
|
140
|
+
id: string;
|
|
141
|
+
name: string;
|
|
142
|
+
func: string;
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
export interface ProjectDataType {
|
|
146
|
+
//项目id
|
|
147
|
+
id?: string;
|
|
148
|
+
//画布设置
|
|
149
|
+
canvasManager?: CanvasConfig;
|
|
150
|
+
//全局主题
|
|
151
|
+
themeManager?: Array<ThemeItemType>;
|
|
152
|
+
//图层管理
|
|
153
|
+
layerManager?: LayerManagerDataType;
|
|
154
|
+
//过滤器管理
|
|
155
|
+
filterManager?: { filters: Record<string, IFilter>; };
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
/**
|
|
159
|
+
* 组件基础信息
|
|
160
|
+
*/
|
|
161
|
+
export interface BaseInfoType {
|
|
162
|
+
/**
|
|
163
|
+
* 组件显示名称
|
|
164
|
+
*/
|
|
165
|
+
compName: string;
|
|
166
|
+
/**
|
|
167
|
+
* 组件标识
|
|
168
|
+
*/
|
|
169
|
+
compKey: string;
|
|
170
|
+
/**
|
|
171
|
+
* 主分类
|
|
172
|
+
*/
|
|
173
|
+
categorize?: string;
|
|
174
|
+
/**
|
|
175
|
+
* 子分类
|
|
176
|
+
*/
|
|
177
|
+
subCategorize?: string;
|
|
178
|
+
/**
|
|
179
|
+
* 版本
|
|
180
|
+
*/
|
|
181
|
+
version?: string;
|
|
182
|
+
/**
|
|
183
|
+
* 初始宽度
|
|
184
|
+
*/
|
|
185
|
+
width?: number;
|
|
186
|
+
/**
|
|
187
|
+
* 初始高度
|
|
188
|
+
*/
|
|
189
|
+
height?: number;
|
|
190
|
+
}
|
|
@@ -319,7 +319,6 @@ export default class DtmplEditPage extends React.PureComponent<
|
|
|
319
319
|
const { dtmplConfig, id, dtmplData } = this.state;
|
|
320
320
|
|
|
321
321
|
let title1 = title ? title : dtmplConfig ? dtmplConfig.title : "";
|
|
322
|
-
debugger
|
|
323
322
|
return (
|
|
324
323
|
<>
|
|
325
324
|
{" "}
|
|
@@ -364,10 +363,11 @@ debugger
|
|
|
364
363
|
mask={false}
|
|
365
364
|
onClose={onCancel}
|
|
366
365
|
open={open}
|
|
367
|
-
width={width}
|
|
368
366
|
height={placement=="top" || placement=="bottom" ? height : "calc(100%)"}
|
|
369
367
|
style={{
|
|
370
|
-
maxWidth: (placement=="top" || placement=="bottom")?"100vw" :"92vw",
|
|
368
|
+
maxWidth: (placement=="top" || placement=="bottom")? "100vw" :"92vw",
|
|
369
|
+
border:"2px solid #d9d9d9",
|
|
370
|
+
width:width,
|
|
371
371
|
}}
|
|
372
372
|
extra={<Space>{this.getFooter()}</Space>}
|
|
373
373
|
>
|
|
@@ -41,7 +41,6 @@ class DtmplViewDrawer extends React.PureComponent<DtmplViewDrawerProps, DtmplVie
|
|
|
41
41
|
|
|
42
42
|
render() {
|
|
43
43
|
const {title,sourceId,code,placement,open,onClose,width,height,cancelText,editable,serverKey,codeSource}=this.props;
|
|
44
|
-
debugger
|
|
45
44
|
return (<Drawer
|
|
46
45
|
height={placement=="top" || placement=="bottom" ? height: "calc(100%)"}
|
|
47
46
|
placement={placement}
|
|
@@ -50,11 +49,11 @@ class DtmplViewDrawer extends React.PureComponent<DtmplViewDrawerProps, DtmplVie
|
|
|
50
49
|
mask={false}
|
|
51
50
|
onClose={onClose}
|
|
52
51
|
open={open}
|
|
53
|
-
width={width}
|
|
54
52
|
style={{
|
|
55
53
|
maxWidth: (placement=="top" || placement=="bottom")?"100vw" :"92vw",
|
|
56
54
|
//borderRightStyle:"2px solid #d9d9d9",
|
|
57
55
|
border:"2px solid #d9d9d9",
|
|
56
|
+
width:width,
|
|
58
57
|
// borderRightWidth:"2px",
|
|
59
58
|
// borderLeftWidth:"2px",
|
|
60
59
|
}}
|
|
@@ -350,7 +350,6 @@ Z
|
|
|
350
350
|
|
|
351
351
|
let windowWidth = ltmplConfig?.buttonViewConfig?.windowWidth
|
|
352
352
|
windowWidth= windowWidth && windowWidth>0 ? windowWidth : 1280;
|
|
353
|
-
|
|
354
353
|
let windowHeight = ltmplConfig?.buttonViewConfig?.windowHeight;
|
|
355
354
|
windowHeight= windowHeight && windowHeight>0 ? windowHeight : '80vh';
|
|
356
355
|
|