aldehyde 0.2.255 → 0.2.258

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.
Files changed (170) hide show
  1. package/dist/bundle.04a76d4f726f7257b62e.js +2 -0
  2. package/dist/bundle.04a76d4f726f7257b62e.js.LICENSE.txt +5 -0
  3. package/dist/bundle.04a76d4f726f7257b62e.js.gz +0 -0
  4. package/dist/bundle.0ba97fb9aed3256959a1.js +75 -0
  5. package/dist/bundle.0ba97fb9aed3256959a1.js.LICENSE.txt +8 -0
  6. package/dist/bundle.0ba97fb9aed3256959a1.js.gz +0 -0
  7. package/dist/bundle.0cdb895a99048cda0139.js +1 -0
  8. package/dist/bundle.0cdb895a99048cda0139.js.gz +0 -0
  9. package/dist/bundle.118048608e8ab47050ab.js +1 -0
  10. package/dist/bundle.118048608e8ab47050ab.js.gz +0 -0
  11. package/dist/bundle.22564bca4d0f6fbabf69.js +1 -0
  12. package/dist/bundle.22564bca4d0f6fbabf69.js.gz +0 -0
  13. package/dist/bundle.27227d2415dfad58bab4.js +1 -0
  14. package/dist/bundle.27227d2415dfad58bab4.js.gz +0 -0
  15. package/dist/bundle.334162ac2c2d6bf397cb.js +2 -0
  16. package/dist/bundle.334162ac2c2d6bf397cb.js.LICENSE.txt +20 -0
  17. package/dist/bundle.334162ac2c2d6bf397cb.js.gz +0 -0
  18. package/dist/bundle.3b6c5fe034cbb723c7f3.js +1 -0
  19. package/dist/bundle.3b6c5fe034cbb723c7f3.js.gz +0 -0
  20. package/dist/bundle.3f109b3f90f09c23e8d2.js +2 -0
  21. package/dist/bundle.3f109b3f90f09c23e8d2.js.LICENSE.txt +1 -0
  22. package/dist/bundle.3f109b3f90f09c23e8d2.js.gz +0 -0
  23. package/dist/bundle.420a3c4b880bec7c9395.js +2 -0
  24. package/dist/bundle.420a3c4b880bec7c9395.js.LICENSE.txt +25 -0
  25. package/dist/bundle.420a3c4b880bec7c9395.js.gz +0 -0
  26. package/dist/bundle.4b96ffe1f62e4f94c131.js +1 -0
  27. package/dist/bundle.4b96ffe1f62e4f94c131.js.gz +0 -0
  28. package/dist/bundle.4c54741832df8c763776.js +1 -0
  29. package/dist/bundle.4c54741832df8c763776.js.gz +0 -0
  30. package/dist/bundle.4e74b367562f2fcc557e.js +2 -0
  31. package/dist/bundle.4e74b367562f2fcc557e.js.LICENSE.txt +1 -0
  32. package/dist/bundle.4e74b367562f2fcc557e.js.gz +0 -0
  33. package/dist/bundle.51b107a74d3e9e38daaa.js +2 -0
  34. package/dist/bundle.51b107a74d3e9e38daaa.js.LICENSE.txt +10 -0
  35. package/dist/bundle.51b107a74d3e9e38daaa.js.gz +0 -0
  36. package/dist/bundle.548e656e773307824959.js +1 -0
  37. package/dist/bundle.548e656e773307824959.js.gz +0 -0
  38. package/dist/bundle.54b2a31d011f6c769e7c.js +1 -0
  39. package/dist/bundle.54b2a31d011f6c769e7c.js.gz +0 -0
  40. package/dist/bundle.593c12023e54a91e8a0b.js +1 -0
  41. package/dist/bundle.593c12023e54a91e8a0b.js.gz +0 -0
  42. package/dist/bundle.5ae6eceb7934e46e6d45.js +13 -0
  43. package/dist/bundle.5ae6eceb7934e46e6d45.js.gz +0 -0
  44. package/dist/bundle.5d22c4c1586e95424e26.js +1 -0
  45. package/dist/bundle.5d22c4c1586e95424e26.js.gz +0 -0
  46. package/dist/bundle.61f9eb72cb7b4666013c.js +2 -0
  47. package/dist/bundle.61f9eb72cb7b4666013c.js.LICENSE.txt +16 -0
  48. package/dist/bundle.61f9eb72cb7b4666013c.js.gz +0 -0
  49. package/dist/bundle.699d5561bf119bdb97fc.js +1 -0
  50. package/dist/bundle.699d5561bf119bdb97fc.js.gz +0 -0
  51. package/dist/bundle.6a7337d14083532e943d.js +2 -0
  52. package/dist/bundle.6a7337d14083532e943d.js.LICENSE.txt +9 -0
  53. package/dist/bundle.6a7337d14083532e943d.js.gz +0 -0
  54. package/dist/bundle.79831dc7a84e75f07975.js +2 -0
  55. package/dist/bundle.79831dc7a84e75f07975.js.LICENSE.txt +14 -0
  56. package/dist/bundle.79831dc7a84e75f07975.js.gz +0 -0
  57. package/dist/bundle.7dda8c43f58b4e01000d.js +1 -0
  58. package/dist/bundle.7dda8c43f58b4e01000d.js.gz +0 -0
  59. package/dist/bundle.84924d3443cdf0ef3a08.js +2 -0
  60. package/dist/bundle.84924d3443cdf0ef3a08.js.LICENSE.txt +5 -0
  61. package/dist/bundle.84924d3443cdf0ef3a08.js.gz +0 -0
  62. package/dist/bundle.866fb447979af51deaf0.js +2 -0
  63. package/dist/bundle.866fb447979af51deaf0.js.LICENSE.txt +17 -0
  64. package/dist/bundle.866fb447979af51deaf0.js.gz +0 -0
  65. package/dist/bundle.874b3f088098a51fe779.js +1 -0
  66. package/dist/bundle.874b3f088098a51fe779.js.gz +0 -0
  67. package/dist/bundle.8f008042855b35daf44f.js +1 -0
  68. package/dist/bundle.8f008042855b35daf44f.js.gz +0 -0
  69. package/dist/bundle.8fba396651ab9131e760.js +2 -0
  70. package/dist/bundle.8fba396651ab9131e760.js.LICENSE.txt +22 -0
  71. package/dist/bundle.8fba396651ab9131e760.js.gz +0 -0
  72. package/dist/bundle.a22410e1dd80ca8e1dad.js +1 -0
  73. package/dist/bundle.a22410e1dd80ca8e1dad.js.gz +0 -0
  74. package/dist/bundle.a26a56462550fc7dcb76.js +2 -0
  75. package/dist/bundle.a26a56462550fc7dcb76.js.LICENSE.txt +5 -0
  76. package/dist/bundle.a26a56462550fc7dcb76.js.gz +0 -0
  77. package/dist/bundle.b28c0f5f2d452df6637a.js +1 -0
  78. package/dist/bundle.b28c0f5f2d452df6637a.js.gz +0 -0
  79. package/dist/bundle.b59913b5eca7fc9cf658.js +2 -0
  80. package/dist/bundle.b59913b5eca7fc9cf658.js.LICENSE.txt +50 -0
  81. package/dist/bundle.b59913b5eca7fc9cf658.js.gz +0 -0
  82. package/dist/bundle.b5d9f43fb90d9c6b39a9.js +2 -0
  83. package/dist/bundle.b5d9f43fb90d9c6b39a9.js.LICENSE.txt +8 -0
  84. package/dist/bundle.b5d9f43fb90d9c6b39a9.js.gz +0 -0
  85. package/dist/bundle.c987651cbacb95e92e9a.js +1 -0
  86. package/dist/bundle.c987651cbacb95e92e9a.js.gz +0 -0
  87. package/dist/bundle.d67ab9f0b5662beefec1.js +2 -0
  88. package/dist/bundle.d67ab9f0b5662beefec1.js.LICENSE.txt +9 -0
  89. package/dist/bundle.d67ab9f0b5662beefec1.js.gz +0 -0
  90. package/dist/bundle.df15389f0df80bb5c1f8.js +2 -0
  91. package/dist/bundle.df15389f0df80bb5c1f8.js.LICENSE.txt +8 -0
  92. package/dist/bundle.df15389f0df80bb5c1f8.js.gz +0 -0
  93. package/dist/bundle.e9df92a889fa6911eb3a.js +1 -0
  94. package/dist/bundle.ebe7ebdb4845f80a5dd4.js +2 -0
  95. package/dist/bundle.ebe7ebdb4845f80a5dd4.js.LICENSE.txt +7 -0
  96. package/dist/bundle.ebe7ebdb4845f80a5dd4.js.gz +0 -0
  97. package/dist/bundle.f4c743816a267bced7bb.js +1 -0
  98. package/dist/bundle.f4c743816a267bced7bb.js.gz +0 -0
  99. package/dist/bundle.f6fe12d30504559f5f27.js +2 -0
  100. package/dist/bundle.f6fe12d30504559f5f27.js.LICENSE.txt +6 -0
  101. package/dist/bundle.f6fe12d30504559f5f27.js.gz +0 -0
  102. package/dist/css/chemstruc-graph-3996ceb0836a84cd2d4f.css +12 -0
  103. package/dist/css/chemstruc-graph-3996ceb0836a84cd2d4f.css.gz +0 -0
  104. package/dist/css/common-4fdc190a7145b69314ce.css +56 -0
  105. package/dist/css/html-editor-draft-5e8e152675ab7d201c00.css +886 -0
  106. package/dist/css/html-editor-draft-5e8e152675ab7d201c00.css.gz +0 -0
  107. package/dist/css/main-d4de6792432b484dddeb.css +1169 -0
  108. package/dist/css/main-d4de6792432b484dddeb.css.gz +0 -0
  109. package/dist/images/login-bg-027de94b.png +0 -0
  110. package/dist/images/welcome-8bf57aea.png +0 -0
  111. package/dist/index.html +4 -0
  112. package/lib/detail/view/dtmpl-view.d.ts +1 -0
  113. package/lib/detail/view/dtmpl-view.d.ts.map +1 -1
  114. package/lib/detail/view/dtmpl-view.js +5 -4
  115. package/lib/detail/view/dtmpl-view.js.map +1 -1
  116. package/lib/detail/view/field-view-group.d.ts +4 -0
  117. package/lib/detail/view/field-view-group.d.ts.map +1 -1
  118. package/lib/detail/view/field-view-group.js +5 -1
  119. package/lib/detail/view/field-view-group.js.map +1 -1
  120. package/lib/detail/view/snapshot-timeline.d.ts +12 -5
  121. package/lib/detail/view/snapshot-timeline.d.ts.map +1 -1
  122. package/lib/detail/view/snapshot-timeline.js +53 -14
  123. package/lib/detail/view/snapshot-timeline.js.map +1 -1
  124. package/lib/detail/view/view-compare-panel.d.ts +17 -0
  125. package/lib/detail/view/view-compare-panel.d.ts.map +1 -0
  126. package/lib/detail/view/view-compare-panel.js +21 -0
  127. package/lib/detail/view/view-compare-panel.js.map +1 -0
  128. package/lib/form/criteria-form.js +1 -1
  129. package/lib/form/criteria-form.js.map +1 -1
  130. package/lib/layout/footer/index.js +1 -1
  131. package/lib/layout/footer/index.js.map +1 -1
  132. package/lib/layout2/header.d.ts +1 -2
  133. package/lib/layout2/header.d.ts.map +1 -1
  134. package/lib/layout2/header.js.map +1 -1
  135. package/lib/layout2/main.d.ts +1 -2
  136. package/lib/layout2/main.d.ts.map +1 -1
  137. package/lib/layout2/page.d.ts.map +1 -1
  138. package/lib/layout2/page.js +1 -1
  139. package/lib/layout2/page.js.map +1 -1
  140. package/lib/module/ltmpl-table.js +2 -1
  141. package/lib/module/ltmpl-table.js.map +1 -1
  142. package/lib/table/column/column-builder.d.ts.map +1 -1
  143. package/lib/table/column/column-builder.js +3 -0
  144. package/lib/table/column/column-builder.js.map +1 -1
  145. package/lib/table/index.css +14 -0
  146. package/lib/table/query-table.d.ts.map +1 -1
  147. package/lib/table/query-table.js +15 -14
  148. package/lib/table/query-table.js.map +1 -1
  149. package/lib/table/resizable-table.d.ts +5 -0
  150. package/lib/table/resizable-table.d.ts.map +1 -0
  151. package/lib/table/resizable-table.js +85 -0
  152. package/lib/table/resizable-table.js.map +1 -0
  153. package/lib/tmpl/interface.d.ts +1 -1
  154. package/lib/tmpl/interface.d.ts.map +1 -1
  155. package/package.json +5 -2
  156. package/src/aldehyde/detail/view/dtmpl-view.tsx +5 -4
  157. package/src/aldehyde/detail/view/field-view-group.tsx +6 -1
  158. package/src/aldehyde/detail/view/snapshot-timeline.tsx +81 -26
  159. package/src/aldehyde/detail/view/view-compare-panel.tsx +57 -0
  160. package/src/aldehyde/form/criteria-form.tsx +1 -1
  161. package/src/aldehyde/layout/footer/index.js +1 -1
  162. package/src/aldehyde/layout2/header.tsx +2 -3
  163. package/src/aldehyde/layout2/main.tsx +1 -1
  164. package/src/aldehyde/layout2/page.tsx +2 -1
  165. package/src/aldehyde/module/ltmpl-table.tsx +1 -1
  166. package/src/aldehyde/table/column/column-builder.tsx +3 -2
  167. package/src/aldehyde/table/index.css +14 -0
  168. package/src/aldehyde/table/query-table.tsx +74 -50
  169. package/src/aldehyde/table/resizable-table.tsx +96 -0
  170. package/src/aldehyde/tmpl/interface.tsx +2 -2
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "aldehyde",
3
- "version": "0.2.255",
3
+ "version": "0.2.258",
4
4
  "author": "cosmicparticle",
5
5
  "main": "lib/index.js",
6
6
  "module": "src/aldehyde/index.txs",
@@ -29,6 +29,7 @@
29
29
  "@emotion/react": "^11.11.1",
30
30
  "@emotion/styled": "^11.11.0",
31
31
  "@tinymce/tinymce-react": "^3.12.2",
32
+ "@types/react-resizable": "^3.0.8",
32
33
  "add": "^2.0.6",
33
34
  "ahooks": "^3.8.5",
34
35
  "antd": "^5.25.0",
@@ -84,12 +85,14 @@
84
85
  "react-document-title": "^2.0.3",
85
86
  "react-dom": "^18.2.0",
86
87
  "react-draft-wysiwyg": "^1.15.0",
88
+ "react-draggable": "^4.4.6",
87
89
  "react-error-overlay": "^6.0.10",
88
90
  "react-file-viewer": "^1.2.1",
89
91
  "react-highlight-words": "^0.16.0",
90
92
  "react-load-script": "^0.0.6",
91
93
  "react-loadable": "^5.5.0",
92
94
  "react-markdown": "^8.0.4",
95
+ "react-resizable": "^3.0.5",
93
96
  "react-router-dom": "^6.10.0",
94
97
  "react-signature-canvas": "^1.0.5",
95
98
  "react-sortable-hoc": "^2.0.0",
@@ -151,7 +154,7 @@
151
154
  "@loadable/webpack-plugin": "^5.15.0",
152
155
  "@svgr/webpack": "^2.4.1",
153
156
  "@types/node": "^20.10.4",
154
- "@types/react": "^18.2.45",
157
+ "@types/react": "^19.1.8",
155
158
  "@types/react-dom": "^18.2.17",
156
159
  "@types/webpack": "^5.28.0",
157
160
  "autoprefixer": "^10.4.2",
@@ -36,6 +36,7 @@ export interface DtmplViewStat {
36
36
  class DtmplView extends React.PureComponent<DtmplViewProps, DtmplViewStat> {
37
37
  static defaultProps = {
38
38
  showRightNav: true,
39
+ maxColsOnRow:2,
39
40
  };
40
41
 
41
42
  state = {
@@ -110,7 +111,7 @@ class DtmplView extends React.PureComponent<DtmplViewProps, DtmplViewStat> {
110
111
  serverKey,
111
112
  mainCode,
112
113
  showRightNav,
113
- parentId,
114
+ parentId,maxColsOnRow,
114
115
  } = this.props;
115
116
  const { dtmplData, loading, id } = this.state;
116
117
  let groups: FieldGroupConfig[] = [];
@@ -243,7 +244,7 @@ class DtmplView extends React.PureComponent<DtmplViewProps, DtmplViewStat> {
243
244
  headStyle={{ background: "#f2f4f5" }}
244
245
  loading={loading}
245
246
  >
246
- <FieldViewGroup dataCode={dtmplData ? dtmplData.code:null}
247
+ <FieldViewGroup column={maxColsOnRow} dataCode={dtmplData ? dtmplData.code:null}
247
248
  serverKey={serverKey}
248
249
  fields={item.fields}
249
250
  valueMap={dtmplData ? dtmplData.fieldMap : undefined}
@@ -262,7 +263,7 @@ class DtmplView extends React.PureComponent<DtmplViewProps, DtmplViewStat> {
262
263
  code,
263
264
  sourceId,
264
265
  dtmplConfig,
265
- serverKey,
266
+ serverKey,maxColsOnRow,
266
267
  } = this.props;
267
268
  const {
268
269
  premisesTitle,
@@ -289,7 +290,7 @@ class DtmplView extends React.PureComponent<DtmplViewProps, DtmplViewStat> {
289
290
  headStyle={{ background: "#f2f4f5" }}
290
291
  loading={loading}
291
292
  >
292
- <FieldViewGroup serverKey={serverKey} fields={premises} />
293
+ <FieldViewGroup column={maxColsOnRow} serverKey={serverKey} fields={premises} />
293
294
  </CollapseCard>
294
295
  ) : (
295
296
  ""
@@ -10,6 +10,7 @@ interface FieldViewGroupProps {
10
10
  valueMap?: object;
11
11
  width?: number;
12
12
  dataCode?: string;
13
+ column?: number;
13
14
  }
14
15
 
15
16
  interface FieldViewGroupState {
@@ -26,6 +27,9 @@ export default class FieldViewGroup extends React.PureComponent<
26
27
  fileList: [],
27
28
  };
28
29
  }
30
+ static defaultProps = {
31
+ column: 2,
32
+ };
29
33
  static contextType = LocaleContext;
30
34
  context: React.ContextType<typeof LocaleContext>;
31
35
 
@@ -78,6 +82,7 @@ export default class FieldViewGroup extends React.PureComponent<
78
82
  };
79
83
 
80
84
  render() {
81
- return <Descriptions column={2}>{this.initViewList()}</Descriptions>;
85
+ const {column} = this.props;
86
+ return <Descriptions column={column} >{this.initViewList()}</Descriptions>;
82
87
  }
83
88
  }
@@ -4,23 +4,25 @@ import HcserviceV3 from "../../tmpl/hcservice-v3";
4
4
  import "../dtmpl.css";
5
5
  import { DtmplConfig } from "../../tmpl/interface";
6
6
  import Units from "../../units";
7
- import DtmplView from "./dtmpl-view";
8
7
  import { LocaleContext } from "../../locale/LocaleProvider";
8
+ import ViewComparePanel, {ViewComparData} from "./view-compare-panel";
9
+
10
+ type SnapshotType={code:number,time:string,userName:string};
9
11
 
10
12
  export interface SnapshotTimelineProps {
11
13
  sourceId: string;
12
14
  serverKey?: string;
13
15
  code: string;
14
- showSnapshot?: (id: number) => void;
16
+ showSnapshot?: () => void;
15
17
  onClose: () => void;
16
18
  open: boolean;
17
19
  dtmplConfig: DtmplConfig;
18
20
  }
19
21
 
20
22
  export interface SnapshotTimelineStat {
21
- list?: any[];
23
+ list?: SnapshotType[];
22
24
  loading?: boolean;
23
- current?: number;
25
+ currents?: SnapshotType[];
24
26
  }
25
27
 
26
28
  class SnapshotTimeline extends React.PureComponent<
@@ -32,7 +34,7 @@ class SnapshotTimeline extends React.PureComponent<
32
34
  state = {
33
35
  list: undefined,
34
36
  loading: false,
35
- current: undefined,
37
+ currents: [],
36
38
  };
37
39
  static contextType = LocaleContext;
38
40
  context: React.ContextType<typeof LocaleContext>;
@@ -48,8 +50,8 @@ class SnapshotTimeline extends React.PureComponent<
48
50
  }
49
51
 
50
52
  loadData = async () => {
51
- const { sourceId, code, showSnapshot, serverKey } = this.props;
52
- const { current } = this.state;
53
+ const { sourceId, code, serverKey } = this.props;
54
+ const { currents } = this.state;
53
55
  if (code) {
54
56
  this.setState({
55
57
  loading: true,
@@ -59,29 +61,69 @@ class SnapshotTimeline extends React.PureComponent<
59
61
  sourceId,
60
62
  code
61
63
  );
64
+ if(currents.length==0 && list.length > 0){
65
+ this.onAdd(list[0]);
66
+ }
67
+
62
68
  this.setState({
63
69
  list,
64
- current: !current && list.length > 0 ? list[0].code : current,
65
70
  loading: false,
66
71
  });
67
72
  }
68
73
  };
69
74
 
70
- onChange = (code: number) => {
75
+ // onChange = (versionId: number) => {
76
+ // const { showSnapshot } = this.props;
77
+ // this.setState({
78
+ // current: versionId,
79
+ // });
80
+ // showSnapshot(versionId);
81
+ // };
82
+ onAdd = (item: SnapshotType) => {
83
+ const { showSnapshot } = this.props;
84
+ const { currents } = this.state;
85
+ if(!this.isCurrent(item,currents)){
86
+ this.setState({
87
+ currents: [...currents,item],
88
+ });
89
+ }
90
+
91
+ // showSnapshot();
92
+ };
93
+
94
+ onRemove = (item: SnapshotType) => {
71
95
  const { showSnapshot } = this.props;
96
+ const { currents } = this.state;
97
+
98
+ let list:SnapshotType[]=[];
99
+ for (const c of currents) {
100
+ if(c.code!=item.code) {
101
+ list.push(c);
102
+ }
103
+ }
104
+
72
105
  this.setState({
73
- current: code,
106
+ currents: [...list],
74
107
  });
75
- showSnapshot(code);
108
+ // showSnapshot();
76
109
  };
77
110
 
111
+ isCurrent=(item:SnapshotType,currents:SnapshotType[]) => {
112
+ for (const c of currents) {
113
+ if(c.code==item.code) {
114
+ return true;
115
+ }
116
+ }
117
+ return false;
118
+ }
119
+
78
120
  detailHistory = () => {
79
- const { list, current } = this.state;
121
+ const { list, currents } = this.state;
80
122
  const { translate } = this.context;
81
123
  let detailHistory;
82
124
  if (list.length > 0) {
83
125
  detailHistory = list.map((item, index) => {
84
- const isCurrentItem = current ? item.code === current : false;
126
+ const isCurrentItem =this.isCurrent(item,currents);
85
127
  const color = isCurrentItem ? "red" : "blue";
86
128
  return (
87
129
  <Timeline.Item color={color} key={index}>
@@ -89,13 +131,19 @@ class SnapshotTimeline extends React.PureComponent<
89
131
  <br />
90
132
  {`` + item.userName}
91
133
  {isCurrentItem ? (
92
- ""
134
+ <Button
135
+ style={{ marginLeft: 10 }}
136
+ size="small"
137
+ onClick={() => this.onRemove(item)}
138
+ >
139
+ {translate("${取消查看}")}
140
+ </Button>
93
141
  ) : (
94
142
  <Button
95
143
  style={{ marginLeft: 10 }}
96
144
  type="primary"
97
145
  size="small"
98
- onClick={() => this.onChange(item.code)}
146
+ onClick={() => this.onAdd(item)}
99
147
  >
100
148
  {translate("${查看}")}
101
149
  </Button>
@@ -103,7 +151,6 @@ class SnapshotTimeline extends React.PureComponent<
103
151
  </Timeline.Item>
104
152
  );
105
153
  });
106
-
107
154
  return detailHistory;
108
155
  }
109
156
  };
@@ -117,9 +164,15 @@ class SnapshotTimeline extends React.PureComponent<
117
164
  code,
118
165
  serverKey,
119
166
  } = this.props;
120
- const { list, current } = this.state;
167
+ const { list, currents} = this.state;
121
168
  const { translate } = this.context;
122
169
 
170
+ let viewDatas: ViewComparData[]=[];
171
+ currents.sort((a, b) => b.time - a.time);
172
+ for (const c of currents) {
173
+ viewDatas.push({code,versionId: c.code, time: c.time,userName:c.userName});
174
+ }
175
+
123
176
  return (
124
177
  <>
125
178
  <Drawer
@@ -135,7 +188,7 @@ class SnapshotTimeline extends React.PureComponent<
135
188
  translate("${暂无历史记录}")
136
189
  )}
137
190
  </Drawer>
138
- <Drawer
191
+ <Drawer key={translate("${快照查看}")}
139
192
  placement={"left"}
140
193
  title={translate("${快照查看}")}
141
194
  closable={true}
@@ -143,18 +196,20 @@ class SnapshotTimeline extends React.PureComponent<
143
196
  onClose={onClose}
144
197
  open={open}
145
198
  width={"calc(100% - 380px)"}
199
+ styles={{body:{padding:"6px 24px 6px 24px"}}}
146
200
  style={{
147
201
  maxWidth: 1960,
148
202
  }}
149
203
  >
150
- <DtmplView
151
- serverKey={serverKey}
152
- showRightNav={false}
153
- dtmplConfig={dtmplConfig}
154
- sourceId={sourceId}
155
- code={code}
156
- versionId={current}
157
- ></DtmplView>
204
+ {/*<DtmplView*/}
205
+ {/* serverKey={serverKey}*/}
206
+ {/* showRightNav={false}*/}
207
+ {/* dtmplConfig={dtmplConfig}*/}
208
+ {/* sourceId={sourceId}*/}
209
+ {/* code={code}*/}
210
+ {/* versionId={current}*/}
211
+ {/*></DtmplView>*/}
212
+ <ViewComparePanel serverKey={serverKey} dtmplConfig={dtmplConfig} sourceId={sourceId} data={viewDatas}></ViewComparePanel>
158
213
  </Drawer>
159
214
  </>
160
215
  );
@@ -0,0 +1,57 @@
1
+ import { Card, Splitter} from "antd";
2
+ import React, { useEffect, useState } from "react";
3
+ import {DtmplConfig} from "../../tmpl/interface";
4
+ import DtmplView from "./dtmpl-view";
5
+ import Units from "../../units";
6
+
7
+ export type ViewComparData={
8
+ code: string,
9
+ versionId?: number,
10
+ time:string,
11
+ userName?: string,
12
+ }
13
+
14
+ type ViewComparePanelProp = {
15
+ serverKey?:string;
16
+ dtmplConfig:DtmplConfig,
17
+ sourceId:string,
18
+ data?:ViewComparData[]
19
+ };
20
+
21
+
22
+
23
+ const ViewComparePanel = (props: ViewComparePanelProp) => {
24
+ // button
25
+ const {serverKey,
26
+ dtmplConfig,
27
+ sourceId,data}=props;
28
+
29
+
30
+
31
+ return (
32
+ <>
33
+ <Card styles={{body:{padding:'0px'}}} style={{width:data && data.length>1? 500*data.length:'100%'}}>
34
+ <div style={{whiteSpace: 'nowrap',
35
+ overflowX: 'auto'}}>
36
+ <Splitter >
37
+ {data?
38
+ data.map((d)=>{
39
+ return <Splitter.Panel >
40
+ <Card title={d.userName+ ":" + Units.formateDate(d.time)} style={{minWidth:'400px'}}>
41
+ <DtmplView maxColsOnRow={data && data.length>1?1:2}
42
+ serverKey={serverKey}
43
+ showRightNav={false}
44
+ dtmplConfig={dtmplConfig}
45
+ sourceId={sourceId}
46
+ code={d.code}
47
+ versionId={d.versionId}
48
+ ></DtmplView> </Card></Splitter.Panel>
49
+ }) :null}
50
+ </Splitter>
51
+ </div>
52
+ </Card>
53
+ </>
54
+ );
55
+ };
56
+
57
+ export default ViewComparePanel;
@@ -506,7 +506,7 @@ const CriteriaForm: React.FC<CriteriaFormProps> = (props) => {
506
506
  </AntdForm>
507
507
  );
508
508
  };
509
- CriteriaForm.defaultProps = {
509
+ CriteriaForm["defaultProps"] = {
510
510
  hiddenCriteriaIds: [],
511
511
  open: true,
512
512
  };
@@ -10,7 +10,7 @@ export default class Footer extends React.Component {
10
10
  return (
11
11
  <AntdFooter style={{textAlign: 'center'}}>
12
12
  <div className="footer">
13
- {content?content:"Enterprise Applications ©2022 Created by 旷识科技"}
13
+ {/*{content?content:"Enterprise Applications ©2022 Created by 旷识科技"}*/}
14
14
  </div>
15
15
  </AntdFooter>
16
16
  )
@@ -22,14 +22,13 @@ import {
22
22
  import { useLocale } from "../locale/useLocale";
23
23
  import { generate } from "@ant-design/colors";
24
24
  import { useLayoutContext } from "./layout-context";
25
- import { useSessionStorageState } from 'ahooks';
26
- import {AppstoreOutlined, DesktopOutlined, MacCommandOutlined, SettingOutlined} from "@ant-design/icons";
25
+
27
26
  import Units from "../units";
28
27
 
29
28
  type HeaderPropsType = {
30
29
  systemName: string;
31
30
  menuList: MenuType[];
32
- style?: typeof Layout.Header.defaultProps.style;
31
+ style?: any;
33
32
  };
34
33
 
35
34
  type MenuItem = Required<MenuProps>["items"][number];
@@ -4,7 +4,7 @@ import TabsLayout from "./tabs/tabs-layout";
4
4
 
5
5
 
6
6
  type MainPropsType = {
7
- style?: typeof Layout.Content.defaultProps.style;
7
+ style?: any;
8
8
  children?: React.ReactNode;
9
9
  };
10
10
 
@@ -188,7 +188,8 @@ const Page: React.FC<PagePropsType> = (props: PagePropsType) => {
188
188
  }, []);
189
189
 
190
190
  // page ref
191
- const pageRef = useRef<HTMLDivElement>();
191
+ const pageRef = useRef<HTMLDivElement>(undefined);
192
+
192
193
  useEffect(() => {
193
194
  useVarCssColor(generate(colorPrimary));
194
195
  }, []);
@@ -106,7 +106,7 @@ class LtmplTable extends React.PureComponent<LtmplTableProps, LtmplTableState> {
106
106
  //提取 过滤条件的默认值
107
107
  if (ltmplConfigRes) {
108
108
  let defaultCriteriaValue =
109
- ltmplConfigRes.ltmplConfig.defaultCriteriaValue;
109
+ ltmplConfigRes.ltmplConfig?.defaultCriteriaValue;
110
110
  if (defaultCriteriaValue) {
111
111
  criteriaData = this.toCriteriaData(defaultCriteriaValue);
112
112
  }
@@ -77,6 +77,7 @@ export default {
77
77
  }
78
78
  column["title"] = item.title;
79
79
  column["dataIndex"] = item.id;
80
+ column["key"] = item.id;
80
81
  if (item["colWidth"]) column["width"] = item["colWidth"];
81
82
  if (item["statColType"]) column["statColType"] = item["statColType"];
82
83
  if (item["aggFunc"]) column["cal"] = item["aggFunc"];
@@ -91,7 +92,6 @@ export default {
91
92
  TableUnits.sort(column, itemType, order);
92
93
  }
93
94
  }
94
-
95
95
  }
96
96
  //特殊列处理
97
97
  //序号
@@ -161,10 +161,10 @@ export default {
161
161
  );
162
162
  column["width"] = 40;
163
163
  column["dataIndex"] = item.id;
164
+ column["key"] = item.id;
164
165
  column["className"] = "drag-visible";
165
166
  column["render"] = () => <DragHandle/>;
166
167
  },
167
-
168
168
  setHiddenRecordOpt(column:object,hiddenRowCodes,unHiden,onHide,translate){
169
169
  //隐藏
170
170
  column["align"] = "center";
@@ -236,6 +236,7 @@ export default {
236
236
 
237
237
  column["title"] = item.title;
238
238
  column["dataIndex"] = item.id;
239
+ column["key"] = item.id;
239
240
  if (item["colWidth"]) column["width"] = item["colWidth"];
240
241
  if (item["order"]) column["order"] = Number(item["order"]);
241
242
  // column['ellipsis']= true;
@@ -22,6 +22,20 @@
22
22
  z-index: 3; /* 或者更高的值 */
23
23
  }
24
24
 
25
+ .react-resizable {
26
+ position: relative;
27
+ background-clip: padding-box;
28
+ }
29
+
30
+ .react-resizable-handle {
31
+ position: absolute;
32
+ width: 10px;
33
+ height: 100%;
34
+ bottom: 0;
35
+ right: -5px;
36
+ cursor: col-resize;
37
+ z-index: 1;
38
+ }
25
39
 
26
40
  .row-dragging {
27
41
  background: #fafafa;
@@ -15,9 +15,10 @@ import { LocaleContext } from "../locale/LocaleProvider";
15
15
  import { init, merge, statistic } from "../utils/dsu";
16
16
  import VerticalList from "../list/vertical-list";
17
17
  import SummaryBuilder from "./column/summary-builder";
18
- import {Button, Card, Descriptions, message, Space, Statistic, Table} from "antd";
18
+ import {Button, Card, Descriptions, message, Statistic, Table} from "antd";
19
19
  import Units from "../units";
20
20
  import {DownOutlined, UpOutlined} from "@ant-design/icons";
21
+ import ResizableTable from "./resizable-table";
21
22
 
22
23
  const SortableItem = SortableElement((props) => (
23
24
  <tr className="sortable-item-hover" {...props} />
@@ -358,33 +359,33 @@ class QueryTable extends React.PureComponent<QueryTableProps, QueryTableStat> {
358
359
  onChange(pagination, filters, sorter, extra) {
359
360
  console.log("params", pagination, filters, sorter, extra);
360
361
  if (extra.action === "sort") {
362
+
361
363
  const extParams: Record<string, string> = {};
362
364
  const sortColumnData = JSON.parse(
363
365
  JSON.stringify(this.props.sortColumnData)
364
366
  );
365
367
 
366
- const tgt = sortColumnData.findIndex((item) => {
367
- const key = item.split("_")[0];
368
-
369
- if (key === sorter.field) return true;
370
- return false;
371
- });
372
-
373
- if (tgt !== -1) {
374
- sortColumnData.splice(tgt, 1);
375
- }
368
+ // const tgt = sortColumnData.findIndex((item) => {
369
+ // const key = item.split("_")[0];
370
+ // if (key === sorter.field) return true;
371
+ // return false;
372
+ // });
373
+ //
374
+ // if (tgt !== -1) {
375
+ // sortColumnData.splice(tgt, 1);
376
+ // }
376
377
 
377
- if (sorter.order === "ascend") {
378
+ if (sorter.order === "ascend") {
378
379
  Object.assign(extParams, {
379
- sortColIds: [...sortColumnData, sorter.field + "_" + "desc"],
380
+ sortColIds: [ sorter.field + "_" + "asc"],
380
381
  });
381
382
  } else if (sorter.order === "descend") {
382
383
  Object.assign(extParams, {
383
- sortColIds: [...sortColumnData],
384
+ sortColIds: [ sorter.field + "_" + "desc"],
384
385
  });
385
386
  } else {
386
387
  Object.assign(extParams, {
387
- sortColIds: [...sortColumnData, sorter.field + "_" + "asc"],
388
+ sortColIds: [],
388
389
  });
389
390
  }
390
391
  this.props.doSearch(extParams);
@@ -550,14 +551,6 @@ class QueryTable extends React.PureComponent<QueryTableProps, QueryTableStat> {
550
551
 
551
552
  return (
552
553
  <>
553
- {/*{aggregateVO && aggregateVO.aggregates && aggregateVO.aggregates.length>0?<Card styles={{body:{padding:2}}}>*/}
554
- {/* <Space size={"large"} style={{marginLeft:50}}>*/}
555
- {/* {*/}
556
- {/* aggregateVO.aggregates.map(av=>{*/}
557
- {/* return <Statistic title={av.fieldTitle} value={av.value} />*/}
558
- {/* })}*/}
559
- {/* </Space>*/}
560
- {/*</Card>:null}*/}
561
554
  {aggregateVO && aggregateVO.aggregates && aggregateVO.aggregates.length>0 ?
562
555
  <Card variant="borderless" styles={{body:{paddingLeft:10,paddingTop:4,paddingBottom:4,paddingRight:10}}}>
563
556
  <Descriptions
@@ -565,35 +558,66 @@ class QueryTable extends React.PureComponent<QueryTableProps, QueryTableStat> {
565
558
  items={aggregateItems}
566
559
  />
567
560
  </Card>:null}
561
+ {/*{viewModels.includes("table") ? (*/}
562
+ {/* <Table*/}
563
+ {/* size={tableProps.size ? tableProps.size : undefined}*/}
564
+ {/* rowSelection={this.getRowSelection()}*/}
565
+ {/* columns={current_cols}*/}
566
+ {/* dataSource={originData}*/}
567
+ {/* scroll={*/}
568
+ {/* tableProps.scrollY == -1 || tableProps.scrollY == 0*/}
569
+ {/* ? null*/}
570
+ {/* : {*/}
571
+ {/* y: tableProps.scrollY,*/}
572
+ {/* x: table_x,*/}
573
+ {/* }*/}
574
+ {/* }*/}
575
+ {/* bordered*/}
576
+ {/* pagination={false}*/}
577
+ {/* style={{ display: columns ? "block" : "none" }}*/}
578
+ {/* summary={summary}*/}
579
+ {/* loading={loading}*/}
580
+ {/* components={{*/}
581
+ {/* body: {*/}
582
+ {/* wrapper: this.DraggableContainer,*/}
583
+ {/* row: this.DraggableBodyRow,*/}
584
+ {/* },*/}
585
+ {/* }}*/}
586
+ {/* onChange={this.onChange.bind(this)}*/}
587
+ {/* ></Table>*/}
588
+ {/*) : (*/}
589
+ {/* ""*/}
590
+ {/*)}*/}
568
591
  {viewModels.includes("table") ? (
569
- <Table
570
- size={tableProps.size ? tableProps.size : undefined}
571
- rowSelection={this.getRowSelection()}
572
- columns={current_cols}
573
- dataSource={originData}
574
- scroll={
575
- tableProps.scrollY == -1 || tableProps.scrollY == 0
576
- ? null
577
- : {
578
- y: tableProps.scrollY,
579
- x: table_x,
580
- }
581
- }
582
- bordered
583
- pagination={false}
584
- style={{ display: columns ? "block" : "none" }}
585
- summary={summary}
586
- loading={loading}
587
- components={{
588
- body: {
589
- wrapper: this.DraggableContainer,
590
- row: this.DraggableBodyRow,
591
- },
592
- }}
593
- onChange={this.onChange.bind(this)}
594
- ></Table>
592
+ <ResizableTable
593
+ size={tableProps.size ? tableProps.size : undefined}
594
+ rowSelection={this.getRowSelection()}
595
+ columns={current_cols}
596
+ dataSource={originData}
597
+ rowKey={"序号"}
598
+ scroll={
599
+ tableProps.scrollY == -1 || tableProps.scrollY == 0
600
+ ? null
601
+ : {
602
+ y: tableProps.scrollY,
603
+ x: table_x,
604
+ }
605
+ }
606
+ bordered
607
+ pagination={false}
608
+ style={{ display: columns ? "block" : "none" }}
609
+ summary={summary}
610
+ loading={loading}
611
+ components={{
612
+ body: {
613
+ wrapper: this.DraggableContainer,
614
+ row: this.DraggableBodyRow,
615
+ },
616
+ }}
617
+ onChange={this.onChange.bind(this)}
618
+ ></ResizableTable>
595
619
  ) : (
596
- ""
620
+ ""
597
621
  )}
598
622
  <Pagination key={queryKey? queryKey.key:Units.getReactKey()}
599
623
  touchEnd={touchEnd}