ronds-metadata 1.3.77 → 1.3.78

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,12 +12,12 @@ import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
12
12
  import { tr } from '../../../../framework/locale';
13
13
  import React from 'react';
14
14
  import { EyeOutlined, MinusCircleOutlined, PlusOutlined } from '@ant-design/icons';
15
- import Split from '../../../Split';
16
- import SqlEdit from '../../../JsonEdit';
17
- import { useGetLabelCol, useGetWrapperCol } from './Datasource/hooks';
15
+ import { useGetWrapperCol } from './Datasource/hooks';
16
+ import CodeEdit from '../../../../comps/CodeEdit';
17
+ import { getConfig } from '../../../../config';
18
+ import { modifyComment } from '../../utils';
18
19
  var SparkSqlTable = function SparkSqlTable(props) {
19
- var extraDico = props.extraDico,
20
- value = props.value,
20
+ var value = props.value,
21
21
  extraInfo = props.extraInfo,
22
22
  onChange = props.onChange;
23
23
  var _React$useState = React.useState('orgin'),
@@ -32,15 +32,17 @@ var SparkSqlTable = function SparkSqlTable(props) {
32
32
  _React$useState6 = _slicedToArray(_React$useState5, 2),
33
33
  list = _React$useState6[0],
34
34
  setList = _React$useState6[1];
35
- var labelCol = useGetLabelCol(extraInfo);
35
+ var listRef = React.useRef([]);
36
36
  var wrapperCol = useGetWrapperCol(extraInfo);
37
37
  var handleAddItem = function handleAddItem() {
38
- var _list = [].concat(_toConsumableArray(list), [{
39
- alias: undefined,
40
- outputView: undefined,
41
- sqlEdit: undefined
42
- }]);
43
- setList(_list);
38
+ var item = {
39
+ alias: "tbl".concat(listRef.current.length + 1),
40
+ outputView: '',
41
+ sqlEdit: "/*+ name(tbl".concat(listRef.current.length + 1, ")*/")
42
+ };
43
+ var _list = [].concat(_toConsumableArray(listRef.current), [item]);
44
+ setList(_toConsumableArray(_list));
45
+ listRef.current = _list;
44
46
  triggerChange({
45
47
  list: _list
46
48
  });
@@ -50,6 +52,7 @@ var SparkSqlTable = function SparkSqlTable(props) {
50
52
  return idx !== index;
51
53
  });
52
54
  setList(_list);
55
+ listRef.current = _list;
53
56
  triggerChange({
54
57
  list: _list
55
58
  });
@@ -74,23 +77,27 @@ var SparkSqlTable = function SparkSqlTable(props) {
74
77
  });
75
78
  };
76
79
  var onListChange = function onListChange(v, index, key) {
77
- var _list = _toConsumableArray(list);
78
- _list[index][key] = typeof v === 'string' ? v : v.target.value;
79
- setList(_list);
80
+ var _list = listRef.current;
81
+ if (key === 'alias' || key === 'outputView') {
82
+ _list[index]['sqlEdit'] = modifyComment(listRef.current[index].sqlEdit, v, key);
83
+ }
84
+ _list[index][key] = v;
85
+ listRef.current = _list;
86
+ setList(_toConsumableArray(_list));
80
87
  triggerChange({
81
88
  list: _list
82
89
  });
83
90
  };
84
91
  React.useEffect(function () {
85
92
  if (value) {
86
- if (value['view']) {
87
- setView(value['view']);
93
+ if (value.view) {
94
+ setView(value.view);
88
95
  }
89
- if (value['selected']) {
90
- setSelected(value['selected']);
96
+ if (value.selected) {
97
+ setSelected(value.selected);
91
98
  }
92
- if (value['list']) {
93
- setList(value['list']);
99
+ if (value.list) {
100
+ setList(value.list);
94
101
  }
95
102
  }
96
103
  }, [value]);
@@ -106,21 +113,16 @@ var SparkSqlTable = function SparkSqlTable(props) {
106
113
  }
107
114
  }, /*#__PURE__*/React.createElement("div", {
108
115
  style: {
109
- border: '2px solid var(--ronds-metadata-color-border-1)',
116
+ border: '1px solid var(--ronds-metadata-color-border-1)',
110
117
  height: '500px',
111
118
  width: '100%'
112
119
  }
113
- }, /*#__PURE__*/React.createElement(Split, {
114
- gutterSize: 2,
115
- sizes: [7, 93],
116
- direction: "vertical"
117
120
  }, /*#__PURE__*/React.createElement("div", {
118
121
  style: {
119
122
  display: 'flex',
120
- marginTop: '10px ',
121
- marginLeft: '10px',
122
- marginRight: '10px',
123
- marginBottom: '6px'
123
+ zIndex: -1,
124
+ padding: '4px 8px',
125
+ borderBottom: '1px solid var(--ronds-metadata-color-border-1)'
124
126
  }
125
127
  }, /*#__PURE__*/React.createElement("span", {
126
128
  style: {
@@ -158,12 +160,12 @@ var SparkSqlTable = function SparkSqlTable(props) {
158
160
  }))), /*#__PURE__*/React.createElement("div", {
159
161
  style: {
160
162
  padding: '8px',
161
- height: '100%',
163
+ height: 'calc(100% - 40px)',
162
164
  overflowY: 'auto',
163
165
  width: '100%'
164
166
  }
165
167
  }, list.map(function (item, idx) {
166
- var _item$alias;
168
+ var _getConfig;
167
169
  return /*#__PURE__*/React.createElement("div", {
168
170
  key: idx,
169
171
  style: {
@@ -177,17 +179,11 @@ var SparkSqlTable = function SparkSqlTable(props) {
177
179
  border: '1px solid var(--ronds-metadata-color-border-1)',
178
180
  width: '100%'
179
181
  }
180
- }, /*#__PURE__*/React.createElement(Split, {
181
- gutterSize: 1,
182
- sizes: [20, 80],
183
- direction: "vertical"
184
182
  }, /*#__PURE__*/React.createElement("div", {
185
183
  style: {
186
184
  display: 'flex',
187
- marginTop: '10px ',
188
- marginLeft: '10px',
189
- marginRight: '10px',
190
- marginBottom: '6px'
185
+ padding: '4px 8px',
186
+ borderBottom: '1px solid var(--ronds-metadata-color-border-1)'
191
187
  }
192
188
  }, /*#__PURE__*/React.createElement("span", null, tr('别名'), ' ', /*#__PURE__*/React.createElement(_Input, {
193
189
  style: {
@@ -195,9 +191,9 @@ var SparkSqlTable = function SparkSqlTable(props) {
195
191
  marginLeft: '5px',
196
192
  marginRight: '8px'
197
193
  },
198
- value: (_item$alias = item.alias) !== null && _item$alias !== void 0 ? _item$alias : "tbl".concat(idx + 1),
194
+ value: item.alias,
199
195
  onChange: function onChange(val) {
200
- onListChange(val, idx, 'alias');
196
+ onListChange(val.target.value, idx, 'alias');
201
197
  }
202
198
  })), /*#__PURE__*/React.createElement("span", null, tr('输出视图'), ' ', /*#__PURE__*/React.createElement(_Input, {
203
199
  style: {
@@ -207,24 +203,23 @@ var SparkSqlTable = function SparkSqlTable(props) {
207
203
  placeholder: '请输入',
208
204
  value: item.outputView,
209
205
  onChange: function onChange(val) {
210
- return onListChange(val, idx, 'outputView');
206
+ return onListChange(val.target.value, idx, 'outputView');
211
207
  }
212
208
  }))), /*#__PURE__*/React.createElement("div", {
213
209
  style: {
214
- maxHeight: '100px',
215
- minHeight: '80px',
216
- overflowY: 'auto'
210
+ padding: '4px',
211
+ zIndex: 99999
217
212
  }
218
- }, /*#__PURE__*/React.createElement(SqlEdit, {
219
- value: "/*+".concat(item.alias ? "name(".concat(item.alias, ")") : "name(tbl".concat(idx + 1, ")"), " ").concat(item.outputView ? "output(".concat(item.outputView, ")") : '', "*/"),
220
- theme: 'neo',
221
- isLineNumbers: false,
222
- extraDico: extraDico,
213
+ }, /*#__PURE__*/React.createElement(CodeEdit, {
214
+ key: idx,
215
+ value: item.sqlEdit,
216
+ height: '100px',
217
+ mode: "pgsql",
218
+ theme: ((_getConfig = getConfig()) === null || _getConfig === void 0 ? void 0 : _getConfig.theme) === 'normal' ? 'light' : 'vs-dark',
223
219
  onChange: function onChange(val) {
224
220
  return onListChange(val, idx, 'sqlEdit');
225
- },
226
- onSelectChange: function onSelectChange() {}
227
- })))), /*#__PURE__*/React.createElement(MinusCircleOutlined, {
221
+ }
222
+ }))), /*#__PURE__*/React.createElement(MinusCircleOutlined, {
228
223
  style: {
229
224
  marginLeft: 'auto'
230
225
  },
@@ -234,15 +229,8 @@ var SparkSqlTable = function SparkSqlTable(props) {
234
229
  }));
235
230
  }), /*#__PURE__*/React.createElement(_Button, {
236
231
  type: "dashed",
237
- onClick: function onClick() {
238
- handleAddItem();
239
- setList([].concat(_toConsumableArray(list), [{
240
- alias: undefined,
241
- outputView: undefined,
242
- sqlEdit: undefined
243
- }]));
244
- },
232
+ onClick: handleAddItem,
245
233
  icon: /*#__PURE__*/React.createElement(PlusOutlined, null)
246
- }, tr('添加SQL语句'))))))));
234
+ }, tr('添加SQL语句')))))));
247
235
  };
248
236
  export default SparkSqlTable;
@@ -2,7 +2,7 @@ import _defineProperty from "@babel/runtime/helpers/esm/defineProperty";
2
2
  import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
3
3
  import _slicedToArray from "@babel/runtime/helpers/esm/slicedToArray";
4
4
  /*
5
- * @Author: your name
5
+ * @Author: wangxian
6
6
  * @Date: 2021-09-18 14:15:04
7
7
  * @LastEditTime: 2024-08-20 19:38:44
8
8
  */
@@ -19,3 +19,4 @@ export declare function assignReplace(pathArr: string[], val: any, obj: any): vo
19
19
  export declare function flattenTreeData(treeData: any[]): any;
20
20
  export declare function findTopParent(treeData: any[], value: string): any;
21
21
  export declare const findTopParentIndex: (treeData: any[], key: string) => number;
22
+ export declare const modifyComment: (text: string, newOutput: string, type: string) => string;
@@ -11,7 +11,7 @@ var _excluded = ["children"];
11
11
  /*
12
12
  * @Author: wangxian
13
13
  * @Date: 2021-09-18 14:15:04
14
- * @LastEditTime: 2023-05-18 16:25:00
14
+ * @LastEditTime: 2024-08-22 18:55:25
15
15
  */
16
16
  import React from 'react';
17
17
  import Input from './DataCell/Input';
@@ -178,4 +178,46 @@ export var findTopParentIndex = function findTopParentIndex(treeData, key) {
178
178
  return traverse(node, [index]);
179
179
  });
180
180
  return topNodeIndex;
181
+ };
182
+ export var modifyComment = function modifyComment(text, newOutput, type) {
183
+ // 正则表达式匹配 /*+ 和 */ 之间的内容
184
+ var regex = /\/\*\+(.*?)\*\//;
185
+ // 查找匹配的内容
186
+ var match = text.match(regex);
187
+ if (match && match[1]) {
188
+ // 提取注释中的内容
189
+ var content = match[1].trim();
190
+ if (type === 'outputView') {
191
+ // 正则表达式匹配 output(...) 的内容
192
+ var outputRegex = /output\((.*?)\)/;
193
+ var outputMatch = content.match(outputRegex);
194
+ if (outputMatch) {
195
+ // 如果已经存在 output(...),则替换括号内的内容
196
+ content = content.replace(outputRegex, "output(".concat(newOutput, ")"));
197
+ } else {
198
+ // 如果不存在 output(...),则追加新的 output(...)
199
+ content += " output(".concat(newOutput, ")");
200
+ }
201
+ // 替换原始文本中的注释内容
202
+ var newText = text.replace(regex, "/*+ ".concat(content, " */"));
203
+ return newText;
204
+ }
205
+ if (type === 'alias') {
206
+ // 正则表达式匹配 output(...) 的内容
207
+ var aliasRegex = /name\((.*?)\)/;
208
+ var aliastMatch = content.match(aliasRegex);
209
+ if (aliastMatch) {
210
+ // 如果已经存在 output(...),则替换括号内的内容
211
+ content = content.replace(aliasRegex, "name(".concat(newOutput, ")"));
212
+ } else {
213
+ // 如果不存在 output(...),则追加新的 output(...)
214
+ content += " name(".concat(newOutput, ")");
215
+ }
216
+ // 替换原始文本中的注释内容
217
+ var _newText = text.replace(regex, "/*+ ".concat(content, " */"));
218
+ return _newText;
219
+ }
220
+ }
221
+ // 如果没有匹配到,返回原始文本
222
+ return text;
181
223
  };
package/es/config.js CHANGED
@@ -2,7 +2,7 @@ import _objectSpread from "@babel/runtime/helpers/esm/objectSpread2";
2
2
  /*
3
3
  * @Author: wangxian
4
4
  * @Date: 2021-09-18 14:15:04
5
- * @LastEditTime: 2024-04-25 13:36:02
5
+ * @LastEditTime: 2024-08-22 15:37:06
6
6
  */
7
7
  import { BehaviorSubject, map, distinctUntilChanged } from 'rxjs';
8
8
  import { setLocale } from './comps/locales/index';
@@ -41,6 +41,11 @@ globalSettingStream.pipe(map(function (p) {
41
41
  'ru-RU': _objectSpread(_objectSpread({}, ruRU), p['ru-RU'])
42
42
  });
43
43
  });
44
+ var config = defaultConfig;
45
+ /** 设置配置 */
46
+ export var setConfig = function setConfig(opts) {
47
+ config = _objectSpread(_objectSpread({}, config), opts);
48
+ };
44
49
  globalSettingStream.pipe(map(function (p) {
45
50
  return p.theme;
46
51
  }), distinctUntilChanged()).subscribe(function (p) {
@@ -48,12 +53,10 @@ globalSettingStream.pipe(map(function (p) {
48
53
  window.jQuery('body').removeClass("".concat(cssPrefix, "-normal"));
49
54
  window.jQuery('body').addClass("".concat(cssPrefix, "-").concat(p));
50
55
  window.jQuery('html').removeAttr('data-prefers-color');
56
+ setConfig({
57
+ theme: p
58
+ });
51
59
  });
52
- var config = defaultConfig;
53
- /** 设置配置 */
54
- export var setConfig = function setConfig(opts) {
55
- config = _objectSpread(_objectSpread({}, config), opts);
56
- };
57
60
  /** 获取单个配置 */
58
61
  export function getConfigByKey(key) {
59
62
  return config[key];
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "public": true,
3
3
  "name": "ronds-metadata",
4
- "version": "1.3.77",
4
+ "version": "1.3.78",
5
5
  "scripts": {
6
6
  "start": "dumi dev",
7
7
  "docs:build": "dumi build",
@@ -44,7 +44,7 @@
44
44
  "@milkdown/react": "^7.3.0",
45
45
  "@milkdown/theme-nord": "^7.3.0",
46
46
  "@milkdown/transformer": "^7.3.0",
47
- "@monaco-editor/react": "^4.5.2",
47
+ "@monaco-editor/react": "^4.6.0",
48
48
  "@popperjs/core": "^2.4.4",
49
49
  "@types/file-saver": "^2.0.5",
50
50
  "@types/markdown-it": "^12.2.3",
@@ -1,6 +0,0 @@
1
- import React from 'react';
2
- interface ISourceConfigProps {
3
- configType: string;
4
- }
5
- declare const SourceConfig: (props: ISourceConfigProps) => React.JSX.Element;
6
- export default SourceConfig;