diff --git a/core/core-backend/src/main/java/io/gisbi/dataset/manage/DatasetGroupManage.java b/core/core-backend/src/main/java/io/gisbi/dataset/manage/DatasetGroupManage.java index d76bbfa..3fab742 100644 --- a/core/core-backend/src/main/java/io/gisbi/dataset/manage/DatasetGroupManage.java +++ b/core/core-backend/src/main/java/io/gisbi/dataset/manage/DatasetGroupManage.java @@ -218,6 +218,9 @@ public class DatasetGroupManage { if (ObjectUtils.isNotEmpty(request.getLeaf())) { queryWrapper.eq("node_type", request.getLeaf() ? "dataset" : "folder"); } + if (ObjectUtils.isNotEmpty(request.getAppId())) { + queryWrapper.eq("app_id", request.getAppId()); + } String info = CommunityUtils.getInfo(); if (StringUtils.isNotBlank(info)) { queryWrapper.notExists(String.format(info, "core_dataset_group.id")); diff --git a/core/core-frontend/config/dev.ts b/core/core-frontend/config/dev.ts index 54e66e3..eeb8073 100644 --- a/core/core-frontend/config/dev.ts +++ b/core/core-frontend/config/dev.ts @@ -2,13 +2,13 @@ export default { server: { proxy: { '/api/f': { - target: 'http://192.168.1.16:8100', + target: 'http://192.168.1.38:8100', changeOrigin: true, rewrite: path => path.replace(/^\/api\/f/, '') }, // 使用 proxy 实例 '/api': { - target: 'http://192.168.1.16:8100', + target: 'http://192.168.1.38:8100', changeOrigin: true, rewrite: path => path.replace(/^\/api/, '') } diff --git a/core/core-frontend/package.json b/core/core-frontend/package.json index c0a2b57..8ec4bce 100644 --- a/core/core-frontend/package.json +++ b/core/core-frontend/package.json @@ -3,7 +3,7 @@ "private": true, "version": "0.0.0", "scripts": { - "dev": "cross-env NODE_OPTIONS=--max_old_space_size=4096 vite --mode dev --host 0.0.0.0", + "dev": "cross-env NODE_OPTIONS=--max_old_space_size=8196 vite --mode dev --host 0.0.0.0", "build:flush": "cd ./flushbonading && rimraf ./demo.html && npm i && node ./index.js", "ts:check": "vue-tsc --noEmit", "build:base": "cross-env NODE_OPTIONS=--max_old_space_size=4096 vite build --mode base && npm run build:flush", @@ -26,6 +26,7 @@ "@vueuse/core": "^9.13.0", "ace-builds": "^1.15.3", "axios": "^1.3.3", + "codemirror": "^6.0.1", "cross-env": "^7.0.3", "crypto-js": "^4.1.1", "dayjs": "^1.11.9", diff --git a/core/core-frontend/src/api/dataset.ts b/core/core-frontend/src/api/dataset.ts index 018e6f6..160b089 100644 --- a/core/core-frontend/src/api/dataset.ts +++ b/core/core-frontend/src/api/dataset.ts @@ -7,6 +7,7 @@ export interface DatasetOrFolder { action?: string id?: number | string pid?: number | string + appId?: number | string nodeType: 'folder' | 'dataset' union?: Array<{}> allFields?: Array<{}> @@ -151,8 +152,11 @@ export const perDelete = async (id): Promise => { }) } -export const getDatasourceList = async (weight?: number): Promise => { - const data = { busiFlag: 'datasource' } +export const getDatasourceList = async (weight: number,appId:any): Promise => { + const data = { + busiFlag: 'datasource', + appId:appId + } if (weight) { data['weight'] = weight } diff --git a/core/core-frontend/src/assets/newimg/camvassvg/dv-form.svg b/core/core-frontend/src/assets/newimg/camvassvg/dv-form.svg new file mode 100644 index 0000000..16c0584 --- /dev/null +++ b/core/core-frontend/src/assets/newimg/camvassvg/dv-form.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/core/core-frontend/src/assets/newimg/camvassvg/dv-map.svg b/core/core-frontend/src/assets/newimg/camvassvg/dv-map.svg new file mode 100644 index 0000000..290e2e3 --- /dev/null +++ b/core/core-frontend/src/assets/newimg/camvassvg/dv-map.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/core/core-frontend/src/assets/newimg/camvassvg/dv-media.svg b/core/core-frontend/src/assets/newimg/camvassvg/dv-media.svg new file mode 100644 index 0000000..f4d6cfb --- /dev/null +++ b/core/core-frontend/src/assets/newimg/camvassvg/dv-media.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/core/core-frontend/src/assets/newimg/camvassvg/dv-template.svg b/core/core-frontend/src/assets/newimg/camvassvg/dv-template.svg new file mode 100644 index 0000000..38372f9 --- /dev/null +++ b/core/core-frontend/src/assets/newimg/camvassvg/dv-template.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/core/core-frontend/src/assets/newimg/camvassvg/dv-text.svg b/core/core-frontend/src/assets/newimg/camvassvg/dv-text.svg new file mode 100644 index 0000000..36615fc --- /dev/null +++ b/core/core-frontend/src/assets/newimg/camvassvg/dv-text.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/core/core-frontend/src/assets/newimg/camvassvg/dv-view.svg b/core/core-frontend/src/assets/newimg/camvassvg/dv-view.svg new file mode 100644 index 0000000..02f4537 --- /dev/null +++ b/core/core-frontend/src/assets/newimg/camvassvg/dv-view.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/core/core-frontend/src/assets/newimg/camvassvg/矩形 (2).svg b/core/core-frontend/src/assets/newimg/camvassvg/矩形 (2).svg new file mode 100644 index 0000000..91b48aa --- /dev/null +++ b/core/core-frontend/src/assets/newimg/camvassvg/矩形 (2).svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/core/core-frontend/src/assets/newimg/dvCanvas/u101.png b/core/core-frontend/src/assets/newimg/dvCanvas/u101.png new file mode 100644 index 0000000..6b70b8c Binary files /dev/null and b/core/core-frontend/src/assets/newimg/dvCanvas/u101.png differ diff --git a/core/core-frontend/src/assets/newimg/dvCanvas/u4860.png b/core/core-frontend/src/assets/newimg/dvCanvas/u4860.png new file mode 100644 index 0000000..5414569 Binary files /dev/null and b/core/core-frontend/src/assets/newimg/dvCanvas/u4860.png differ diff --git a/core/core-frontend/src/assets/newimg/dvCanvas/u4867.png b/core/core-frontend/src/assets/newimg/dvCanvas/u4867.png new file mode 100644 index 0000000..37dceac Binary files /dev/null and b/core/core-frontend/src/assets/newimg/dvCanvas/u4867.png differ diff --git a/core/core-frontend/src/assets/newimg/dvCanvas/u4876.png b/core/core-frontend/src/assets/newimg/dvCanvas/u4876.png new file mode 100644 index 0000000..714be3e Binary files /dev/null and b/core/core-frontend/src/assets/newimg/dvCanvas/u4876.png differ diff --git a/core/core-frontend/src/assets/newimg/dvCanvas/u4884.png b/core/core-frontend/src/assets/newimg/dvCanvas/u4884.png new file mode 100644 index 0000000..5b32bb5 Binary files /dev/null and b/core/core-frontend/src/assets/newimg/dvCanvas/u4884.png differ diff --git a/core/core-frontend/src/assets/newimg/dvCanvas/u4891.png b/core/core-frontend/src/assets/newimg/dvCanvas/u4891.png new file mode 100644 index 0000000..f3a33c5 Binary files /dev/null and b/core/core-frontend/src/assets/newimg/dvCanvas/u4891.png differ diff --git a/core/core-frontend/src/assets/newimg/dvCanvas/u4905.png b/core/core-frontend/src/assets/newimg/dvCanvas/u4905.png new file mode 100644 index 0000000..dc1084a Binary files /dev/null and b/core/core-frontend/src/assets/newimg/dvCanvas/u4905.png differ diff --git a/core/core-frontend/src/assets/newimg/dvCanvas/u4912.png b/core/core-frontend/src/assets/newimg/dvCanvas/u4912.png new file mode 100644 index 0000000..ddc82b5 Binary files /dev/null and b/core/core-frontend/src/assets/newimg/dvCanvas/u4912.png differ diff --git a/core/core-frontend/src/assets/newimg/dvCanvas/u4919.png b/core/core-frontend/src/assets/newimg/dvCanvas/u4919.png new file mode 100644 index 0000000..1a95a03 Binary files /dev/null and b/core/core-frontend/src/assets/newimg/dvCanvas/u4919.png differ diff --git a/core/core-frontend/src/components/data-visualization/DvToolbar.vue b/core/core-frontend/src/components/data-visualization/DvToolbar.vue index 740e459..98fd268 100644 --- a/core/core-frontend/src/components/data-visualization/DvToolbar.vue +++ b/core/core-frontend/src/components/data-visualization/DvToolbar.vue @@ -1,16 +1,30 @@ + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/ExportExcel.vue b/core/core-frontend/src/viewsnew/application/service/dataset/ExportExcel.vue new file mode 100644 index 0000000..013c755 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/ExportExcel.vue @@ -0,0 +1,582 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/auth-tree/AuthTree.vue b/core/core-frontend/src/viewsnew/application/service/dataset/auth-tree/AuthTree.vue new file mode 100644 index 0000000..cc42e93 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/auth-tree/AuthTree.vue @@ -0,0 +1,245 @@ + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/auth-tree/FilterFiled.vue b/core/core-frontend/src/viewsnew/application/service/dataset/auth-tree/FilterFiled.vue new file mode 100644 index 0000000..2338c84 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/auth-tree/FilterFiled.vue @@ -0,0 +1,1095 @@ + + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/auth-tree/RowAuth.vue b/core/core-frontend/src/viewsnew/application/service/dataset/auth-tree/RowAuth.vue new file mode 100644 index 0000000..e4b8cd8 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/auth-tree/RowAuth.vue @@ -0,0 +1,327 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/AddSql.vue b/core/core-frontend/src/viewsnew/application/service/dataset/form/AddSql.vue new file mode 100644 index 0000000..5f44d2d --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/AddSql.vue @@ -0,0 +1,1661 @@ + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/CalcFieldEdit.vue b/core/core-frontend/src/viewsnew/application/service/dataset/form/CalcFieldEdit.vue new file mode 100644 index 0000000..866e5a1 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/CalcFieldEdit.vue @@ -0,0 +1,897 @@ + + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/CodeMirror.vue b/core/core-frontend/src/viewsnew/application/service/dataset/form/CodeMirror.vue new file mode 100644 index 0000000..7f7d239 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/CodeMirror.vue @@ -0,0 +1,156 @@ + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/CreatDsGroup.vue b/core/core-frontend/src/viewsnew/application/service/dataset/form/CreatDsGroup.vue new file mode 100644 index 0000000..da581b6 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/CreatDsGroup.vue @@ -0,0 +1,454 @@ + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/DatasetUnion.vue b/core/core-frontend/src/viewsnew/application/service/dataset/form/DatasetUnion.vue new file mode 100644 index 0000000..1c84b31 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/DatasetUnion.vue @@ -0,0 +1,1421 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/FieldMore.vue b/core/core-frontend/src/viewsnew/application/service/dataset/form/FieldMore.vue new file mode 100644 index 0000000..5f2f8dc --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/FieldMore.vue @@ -0,0 +1,251 @@ + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/UnionEdit.vue b/core/core-frontend/src/viewsnew/application/service/dataset/form/UnionEdit.vue new file mode 100644 index 0000000..5bc3374 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/UnionEdit.vue @@ -0,0 +1,167 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/UnionFieldList.vue b/core/core-frontend/src/viewsnew/application/service/dataset/form/UnionFieldList.vue new file mode 100644 index 0000000..a5269c5 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/UnionFieldList.vue @@ -0,0 +1,200 @@ + + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/UnionItemEdit.vue b/core/core-frontend/src/viewsnew/application/service/dataset/form/UnionItemEdit.vue new file mode 100644 index 0000000..3949adb --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/UnionItemEdit.vue @@ -0,0 +1,297 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/index.vue b/core/core-frontend/src/viewsnew/application/service/dataset/form/index.vue new file mode 100644 index 0000000..9aaab39 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/index.vue @@ -0,0 +1,3588 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/form/util.ts b/core/core-frontend/src/viewsnew/application/service/dataset/form/util.ts new file mode 100644 index 0000000..39330ec --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/form/util.ts @@ -0,0 +1,172 @@ +import { useI18n } from '@/hooks/web/useI18n' +import SnowflakeId from 'snowflake-id' +const snowflake = new SnowflakeId() + +const { t } = useI18n() + +const guid = () => { + return snowflake.generate() +} + +const timestampFormatDate = (timestamp, showMs?: boolean) => { + if (!timestamp || timestamp === -1) { + return '-' + } + + const date = new Date(timestamp) + + const y = date.getFullYear() + + let MM = date.getMonth() + 1 + MM = (MM < 10 ? '0' + MM : MM) as number + + let d = date.getDate() + d = (d < 10 ? '0' + d : d) as number + + let h = date.getHours() + h = (h < 10 ? '0' + h : h) as number + + let m = date.getMinutes() + m = (m < 10 ? '0' + m : m) as number + + let s = date.getSeconds() + s = (s < 10 ? '0' + s : s) as number + + let format = y + '-' + MM + '-' + d + ' ' + h + ':' + m + ':' + s + + if (showMs === true) { + const ms = date.getMilliseconds() + format += ':' + ms + } + + return format +} + +const defaultValueScopeList = [ + { label: t('dataset.scope_edit'), value: 'EDIT' }, + { label: t('dataset.scope_all'), value: 'ALLSCOPE' } +] +const fieldOptions = [ + { label: t('dataset.text'), value: 'TEXT' }, + { label: t('dataset.value'), value: 'LONG' }, + { + label: t('dataset.value') + '(' + t('dataset.float') + ')', + value: 'DOUBLE' + }, + { label: t('dataset.time_year'), value: 'DATETIME-YEAR' }, + { + label: t('dataset.time_year_month'), + value: 'DATETIME-YEAR-MONTH', + children: [ + { + value: 'YYYY-MM', + label: 'YYYY-MM' + }, + { + value: 'YYYY/MM', + label: 'YYYY/MM' + } + ] + }, + { + label: t('dataset.time_year_month_day'), + value: 'DATETIME-YEAR-MONTH-DAY', + children: [ + { + value: 'YYYY-MM-DD', + label: 'YYYY-MM-DD' + }, + { + value: 'YYYY/MM/DD', + label: 'YYYY/MM/DD' + } + ] + }, + { + label: t('dataset.time_all'), + value: 'DATETIME', + children: [ + { + value: 'YYYY-MM-DD HH:mm:ss', + label: 'YYYY-MM-DD HH:MI:SS' + }, + { + value: 'YYYY/MM/DD HH:mm:ss', + label: 'YYYY/MM/DD HH:MI:SS' + } + ] + } +] + +const getFieldName = (fields, name) => { + let n = name + n = n + '_copy' + for (let i = 0; i < fields.length; i++) { + const field = fields[i] + if (field.name === n) { + n = getFieldName(fields, n) + } + } + return n +} + +const timeTypes = [ + 'yyyy-MM-dd', + 'yyyy/MM/dd', + 'yyyy-MM-dd HH:mm:ss', + 'yyyy/MM/dd HH:mm:ss', + 'custom' +] + +type NodeType = 'db' | 'sql' +type UnionType = 'left' | 'right' | 'inner' +interface UnionField { + currentField: Field + parentField: Field +} +interface Node { + tableName: string + type: NodeType + datasourceId: string + id: string + unionType: UnionType + unionFields: UnionField[] + info: string + sqlVariableDetails: string + currentDsFields: Field[] + children?: Node[] + confirm?: boolean + isShadow?: boolean + flag?: string +} + +interface Field { + checked: boolean + deExtractType: number + deType: number + name: string + type: string + originName: string + id: string +} + +interface DataSource { + id: string + name: string + children?: DataSource[] +} + +export { + NodeType, + UnionType, + UnionField, + DataSource, + Node, + Field, + timestampFormatDate, + defaultValueScopeList, + fieldOptions, + guid, + getFieldName, + timeTypes +} diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/index.vue b/core/core-frontend/src/viewsnew/application/service/dataset/index.vue new file mode 100644 index 0000000..cc7556c --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/index.vue @@ -0,0 +1,1562 @@ + + + + + + + + \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/service/dataset/options.js b/core/core-frontend/src/viewsnew/application/service/dataset/options.js new file mode 100644 index 0000000..c015d8c --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/dataset/options.js @@ -0,0 +1,38 @@ +function formatEnum(ele) { + return { + value: ele, + label: `chart.filter_${ele.replace(' ', '_')}` + } +} + +function toLine(name) { + return name.replace(/([A-Z])/g, '_$1').toLowerCase() +} +const textEnum = ['eq', 'not_eq', 'like', 'not like', 'null', 'not_null', 'empty', 'not_empty'] +const textOptions = textEnum.map(formatEnum) + +const dateEnum = ['eq', 'not_eq', 'lt', 'gt', 'le', 'ge'] +const dateOptions = dateEnum.concat(['null', 'not_null']).map(formatEnum) + +const valueEnum = [...dateEnum] +const valueOptions = valueEnum.map(formatEnum) + +const sysParams = ['eq', 'not_eq', 'like', 'not like', 'in', 'not in'] +const textOptionsForSysParams = sysParams.map(formatEnum) + +const sysParamsEnum = ['userId', 'userName', 'userEmail'] + +const sysParamsIlns = sysParamsEnum.map(_ => { + return { value: `\${sysParams.${_}}`, label: `auth.sysParams_type.${toLine(_)}` } +}) + +const fieldEnums = ['text', 'time', 'value', 'value', 'value', 'location', 'binary', 'url'] + +export { + textOptions, + dateOptions, + valueOptions, + textOptionsForSysParams, + sysParamsIlns, + fieldEnums +} diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/BaseInfoContent.vue b/core/core-frontend/src/viewsnew/application/service/datasource/BaseInfoContent.vue new file mode 100644 index 0000000..f424e28 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/BaseInfoContent.vue @@ -0,0 +1,86 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/BaseInfoItem.vue b/core/core-frontend/src/viewsnew/application/service/datasource/BaseInfoItem.vue new file mode 100644 index 0000000..777620d --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/BaseInfoItem.vue @@ -0,0 +1,35 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/ExcelInfo.vue b/core/core-frontend/src/viewsnew/application/service/datasource/ExcelInfo.vue new file mode 100644 index 0000000..ad2bdb6 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/ExcelInfo.vue @@ -0,0 +1,78 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/FinishPage.vue b/core/core-frontend/src/viewsnew/application/service/datasource/FinishPage.vue new file mode 100644 index 0000000..4246f7d --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/FinishPage.vue @@ -0,0 +1,176 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/SheetTabs.vue b/core/core-frontend/src/viewsnew/application/service/datasource/SheetTabs.vue new file mode 100644 index 0000000..3866f4f --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/SheetTabs.vue @@ -0,0 +1,204 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiAuthConfig.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiAuthConfig.vue new file mode 100644 index 0000000..7d7dd79 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiAuthConfig.vue @@ -0,0 +1,75 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiBody.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiBody.vue new file mode 100644 index 0000000..1f0ff8f --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiBody.vue @@ -0,0 +1,286 @@ + + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiHttpRequestDraw.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiHttpRequestDraw.vue new file mode 100644 index 0000000..fc271e6 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiHttpRequestDraw.vue @@ -0,0 +1,1155 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiHttpRequestForm.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiHttpRequestForm.vue new file mode 100644 index 0000000..befa496 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiHttpRequestForm.vue @@ -0,0 +1,249 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiKeyValue.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiKeyValue.vue new file mode 100644 index 0000000..61473c1 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiKeyValue.vue @@ -0,0 +1,288 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiTestModel.js b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiTestModel.js new file mode 100644 index 0000000..1f0347c --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiTestModel.js @@ -0,0 +1,154 @@ +export class BaseConfig { + set(options, notUndefined) { + options = this.initOptions(options) + for (const name in options) { + if (Object.prototype.hasOwnProperty.call(options, name)) { + if (!(this[name] instanceof Array)) { + if (notUndefined === true) { + this[name] = options[name] === undefined ? this[name] : options[name] + } else { + this[name] = options[name] + } + } + } + } + } + + sets(types, options) { + options = this.initOptions(options) + if (types) { + for (const name in types) { + if ( + Object.prototype.hasOwnProperty.call(types, name) && + Object.prototype.hasOwnProperty.call(options, name) + ) { + options[name].forEach(o => { + this[name].push(new types[name](o)) + }) + } + } + } + } + + initOptions(options) { + return options || {} + } + + isValid() { + return true + } +} + +export class KeyValue extends BaseConfig { + constructor(options) { + options = options || {} + options.enable = options.enable === undefined ? true : options.enable + + super() + this.name = undefined + this.value = undefined + this.type = undefined + this.files = undefined + this.enable = undefined + this.uuid = undefined + this.time = undefined + this.contentType = undefined + this.set(options) + } + + isValid() { + return (!!this.name || !!this.value) && this.type !== 'file' + } + + isFile() { + return (!!this.name || !!this.value) && this.type === 'file' + } +} + +export class Body extends BaseConfig { + constructor(options) { + super() + this.type = 'KeyValue' + this.raw = undefined + this.kvs = [] + this.binary = [] + this.set(options) + this.sets({ kvs: KeyValue }, { binary: KeyValue }, options) + } + + isValid() { + if (this.isKV()) { + return this.kvs.some(kv => { + return kv.isValid() + }) + } else { + return !!this.raw + } + } + + isKV() { + return [BODY_TYPE.FORM_DATA, BODY_TYPE.WWW_FORM, BODY_TYPE.BINARY].indexOf(this.type) > 0 + } +} + +export const BODY_TYPE = { + KV: 'KeyValue', + FORM_DATA: 'Form_Data', + RAW: 'Raw', + WWW_FORM: 'WWW_FORM', + XML: 'XML', + JSON: 'JSON' +} + +export class Scenario extends BaseConfig { + constructor(options = {}) { + super() + this.id = undefined + this.name = undefined + this.url = undefined + this.variables = [] + this.headers = [] + this.requests = [] + this.environmentId = undefined + this.dubboConfig = undefined + this.environment = undefined + this.enableCookieShare = false + this.enable = true + this.databaseConfigs = [] + this.tcpConfig = undefined + this.set(options) + this.sets( + { + variables: KeyValue, + headers: KeyValue + }, + options + ) + } + + initOptions(options = {}) { + options.databaseConfigs = options.databaseConfigs || [] + return options + } + + clone() { + const clone = new Scenario(this) + return clone + } + + isValid() { + if (this.enable) { + for (let i = 0; i < this.requests.length; i++) { + const validator = this.requests[i].isValid(this.environmentId, this.environment) + if (!validator.isValid) { + return validator + } + } + } + return { isValid: true } + } + + isReference() { + return this.id.indexOf('#') !== -1 + } +} diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiVariable.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiVariable.vue new file mode 100644 index 0000000..23ec05d --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/ApiVariable.vue @@ -0,0 +1,345 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/CodeEdit.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/CodeEdit.vue new file mode 100644 index 0000000..555f274 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/CodeEdit.vue @@ -0,0 +1,70 @@ + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/CreatDsGroup.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/CreatDsGroup.vue new file mode 100644 index 0000000..cca24f2 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/CreatDsGroup.vue @@ -0,0 +1,494 @@ + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/DsTypeList.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/DsTypeList.vue new file mode 100644 index 0000000..4e067df --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/DsTypeList.vue @@ -0,0 +1,187 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/EditorDetail.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/EditorDetail.vue new file mode 100644 index 0000000..4959a8c --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/EditorDetail.vue @@ -0,0 +1,1884 @@ + + + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/ExcelDetail.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/ExcelDetail.vue new file mode 100644 index 0000000..a4485fa --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/ExcelDetail.vue @@ -0,0 +1,875 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/Pagination.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/Pagination.vue new file mode 100644 index 0000000..e02b84e --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/Pagination.vue @@ -0,0 +1,229 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/ace-config.ts b/core/core-frontend/src/viewsnew/application/service/datasource/form/ace-config.ts new file mode 100644 index 0000000..2cc06d5 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/ace-config.ts @@ -0,0 +1,15 @@ +import ace from 'ace-builds' +import themeChromeUrl from 'ace-builds/src-noconflict/theme-chrome?url' +ace.config.setModuleUrl('ace/theme/chrome', themeChromeUrl) + +import modeJsonUrl from 'ace-builds/src-noconflict/mode-json?url' +ace.config.setModuleUrl('ace/mode/json', modeJsonUrl) + +import modeXmlUrl from 'ace-builds/src-noconflict/mode-xml?url' +ace.config.setModuleUrl('ace/mode/xml', modeXmlUrl) + +import modeTextUrl from 'ace-builds/src-noconflict/mode-text?url' +ace.config.setModuleUrl('ace/mode/text', modeTextUrl) + +import 'ace-builds/src-noconflict/ext-language_tools' +ace.require('ace/ext/language_tools') diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/convert.js b/core/core-frontend/src/viewsnew/application/service/datasource/form/convert.js new file mode 100644 index 0000000..3331f09 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/convert.js @@ -0,0 +1,184 @@ +import { isString, isObject, isNumber, isNull, isInteger, isEmpty, isBoolean } from 'lodash-es' +const isArray = Array.isArray + +class Convert { + constructor() { + this._option = { + $id: 'http://example.com/root.json', + $schema: 'http://json-schema.org/draft-07/schema#' + } + this._object = null + } + + /** + * 转换函数 + * @param {*} object 需要转换的对象 + * @param {*} ?option 可选参数,目前只有能设置 root 节点的 $id 和 $schema + */ + format(object, option = {}) { + // 数据校验,确保传入的的object只能是对象或数组 + if (!isObject(object)) { + throw new TypeError('传入参数只能是对象或数组') + } + // 合并属性 + this._option = Object.assign(this._option, option) + // 需要转换的对象 + this._object = object + let convertRes + // 数组类型和对象类型结构不一样 + if (isArray(object)) { + convertRes = this._arrayToSchema() + } else { + convertRes = this._objectToSchema() + } + // 释放 + this._object = null + return convertRes + } + + /** + * 数组类型转换成JSONSCHEMA + */ + _arrayToSchema() { + // root节点基本信息 + const result = this._value2object(this._object, this._option.$id, '', true) + if (this._object.length > 0) { + const itemArr = [] + for (let index = 0; index < this._object.length; index++) { + // 创建items对象的基本信息 + const objectItem = this._object[index] + let item = this._value2object(objectItem, `#/items`, 'items') + if (isObject(objectItem) && !isEmpty(objectItem)) { + // 递归遍历 + const objectItemSchema = this._json2schema(objectItem, `#/items`) + // 合并对象 + item = Object.assign(item, objectItemSchema) + } + itemArr.push(item) + } + result['items'] = itemArr + } + return result + } + + /** + * 对象类型转换成JSONSCHEMA + */ + _objectToSchema() { + let baseResult = this._value2object(this._object, this._option.$id, '', true) + const objectSchema = this._json2schema(this._object) + baseResult = Object.assign(baseResult, objectSchema) + return baseResult + } + + _json2schema(object, name = '') { + // 如果递归值不是对象,那么return掉 + if (!isObject(object)) { + return + } + // 处理当前路径$id + if (name === '' || name === undefined) { + name = '#' + } + const result = {} + // 判断传入object是对象还是数组。 + if (isArray(object)) { + result.items = {} + } else { + result.properties = {} + } + // 遍历传入的对象 + for (const key in object) { + if (Object.prototype.hasOwnProperty.call(object, key)) { + const element = object[key] + // 如果只是undefined。跳过 + if (element === undefined) { + continue + } + const $id = `${name}/properties/${key}` + // 判断当前 element 的值 是否也是对象,如果是就继续递归,不是就赋值给result + if (!result['properties']) { + continue + } + if (isObject(element)) { + // 创建当前属性的基本信息 + result['properties'][key] = this._value2object(element, $id, key) + if (isArray(element)) { + // 针对空数组和有值的数组做不同处理 + if (element.length > 0) { + // 是数组 + const itemArr = [] + for (let index = 0; index < element.length; index++) { + const elementItem = element[index] + // 创建items对象的基本信息 + let item = this._value2object(elementItem, `${$id}/items`, key + 'items') + // 判断第一项是否是对象,且对象属性不为空 + if (isObject(elementItem) && !isEmpty(elementItem)) { + // 新增的properties才合并进来 + item = Object.assign(item, this._json2schema(elementItem, `${$id}/items`)) + } + itemArr.push(item) + } + result['properties'][key]['items'] = itemArr + } + } else { + // 不是数组,递归遍历获取,然后合并对象属性 + result['properties'][key] = Object.assign( + result['properties'][key], + this._json2schema(element, $id) + ) + } + } else { + // 一般属性直接获取基本信息 + if (result['properties']) { + result['properties'][key] = this._value2object(element, $id, key) + } + } + } + } + return result + } + + /** + * 把json的值转换成对象类型 + * @param {*} value + * @param {*} $id + * @param {*} key + */ + _value2object(value, $id, key = '', root = false) { + const objectTemplate = { + $id: $id, + title: `The ${key} Schema`, + mock: { + mock: value + } + } + + // 判断是否为初始化root数据 + if (root) { + objectTemplate['$schema'] = this._option.$schema + objectTemplate['title'] = `The Root Schema` + objectTemplate['mock'] = undefined + } + if (isBoolean(value)) { + objectTemplate.type = 'boolean' + } else if (isInteger(value)) { + objectTemplate.type = 'integer' + } else if (isNumber(value)) { + objectTemplate.type = 'number' + } else if (isString(value)) { + objectTemplate.type = 'string' + } else if (isNull(value)) { + objectTemplate.type = 'null' + } else if (isArray(value)) { + objectTemplate.type = 'array' + objectTemplate['mock'] = undefined + } else if (isObject(value)) { + objectTemplate.type = 'object' + objectTemplate['mock'] = undefined + } + + return objectTemplate + } +} +export default Convert diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/format-utils.js b/core/core-frontend/src/viewsnew/application/service/datasource/form/format-utils.js new file mode 100644 index 0000000..38bee39 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/format-utils.js @@ -0,0 +1,185 @@ +export function formatJson(json) { + let i = 0 + let il = 0 + const tab = ' ' + let newJson = '' + let indentLevel = 0 + let inString = false + let currentChar = null + let flag = false + for (i = 0, il = json.length; i < il; i += 1) { + currentChar = json.charAt(i) + switch (currentChar) { + case '{': + if (i !== 0 && json.charAt(i - 1) === '$') { + newJson += currentChar + flag = true + } else if (!inString) { + newJson += currentChar + '\n' + repeat(tab, indentLevel + 1) + indentLevel += 1 + } else { + newJson += currentChar + } + break + case '[': + if (!inString) { + newJson += currentChar + '\n' + repeat(tab, indentLevel + 1) + indentLevel += 1 + } else { + newJson += currentChar + } + break + case '}': + if (flag) { + newJson += currentChar + flag = false + } else if (!inString) { + indentLevel -= 1 + newJson += '\n' + repeat(tab, indentLevel) + currentChar + } else { + newJson += currentChar + } + break + case ']': + if (!inString) { + indentLevel -= 1 + newJson += '\n' + repeat(tab, indentLevel) + currentChar + } else { + newJson += currentChar + } + break + case ',': + if (!inString) { + newJson += ',\n' + repeat(tab, indentLevel) + } else { + newJson += currentChar + } + break + case ':': + if (!inString) { + newJson += ': ' + } else { + newJson += currentChar + } + break + case ' ': + case '\n': + case '\t': + if (inString) { + newJson += currentChar + } + break + case '"': + if (i > 0 && json.charAt(i - 1) !== '\\') { + inString = !inString + } + newJson += currentChar + break + default: + newJson += currentChar + break + } + } + return newJson +} + +function repeat(s, count) { + return new Array(count + 1).join(s) +} + +export function formatXml(text) { + // 去掉多余的空格 + text = + '\n' + + text.replace(/(<\w+)(\s.*?>)/g, function ($0, name, props) { + return name + ' ' + props.replace(/\s+(\w+=)/g, ' $1') + }) + // 把注释编码 + text = text.replace(//g, function ($0, text) { + var ret = '' + return ret + }) + // 调整格式 + var rgx = /\n(<(([^\?]).+?)(?:\s|\s*?>|\s*?(\/)>)(?:.*?(?:(?:(\/)>)|(?:<(\/)\2>)))?)/gm + var nodeStack = [] + var output = text.replace( + rgx, + function ($0, all, name, isBegin, isCloseFull1, isCloseFull2, isFull1, isFull2) { + var isClosed = + isCloseFull1 === '/' || isCloseFull2 === '/' || isFull1 === '/' || isFull2 === '/' + var prefix = '' + if (isBegin === '!') { + prefix = getPrefix(nodeStack.length) + } else { + if (isBegin !== '/') { + prefix = getPrefix(nodeStack.length) + if (!isClosed) { + nodeStack.push(name) + } + } else { + nodeStack.pop() + prefix = getPrefix(nodeStack.length) + } + } + var ret = '\n' + prefix + all + return ret + } + ) + var outputText = output.substring(1) + // 把注释还原并解码,调格式 + outputText = outputText.replace(/(\s*)/g, function ($0, prefix, text) { + if (prefix.charAt(0) === '\r') { + prefix = prefix.substring(1) + } + text = unescape(text).replace(/\r/g, '\n') + var ret = '\n' + prefix + '' + return ret + }) + return outputText.replace(/\s+$/g, '').replace(/\r/g, '\r\n') +} + +/** + * @param time 时间 + * @param cFormat 格式 + * @returns {string|null} 字符串 + * @example formatTime('2018-1-29', '{y}/{m}/{d} {h}:{i}:{s}') // -> 2018/01/29 00:00:00 + */ +export function formatTime(time, cFormat) { + if (arguments.length === 0) return null + if ((time + '').length === 10) { + time = +time * 1000 + } + const format = cFormat || '{y}-{m}-{d} {h}:{i}:{s}' + let date + if (typeof time === 'object') { + date = time + } else { + date = new Date(time) + } + const formatObj = { + y: date.getFullYear(), + m: date.getMonth() + 1, + d: date.getDate(), + h: date.getHours(), + i: date.getMinutes(), + s: date.getSeconds(), + a: date.getDay() + } + return format.replace(/{([ymdhisa])+}/g, (result, key) => { + let value = formatObj[key] + if (key === 'a') return ['一', '二', '三', '四', '五', '六', '日'][value - 1] + if (result.length > 0 && value < 10) { + value = '0' + value + } + return value || 0 + }) +} + +function getPrefix(prefixIndex) { + var span = ' ' + var output = [] + for (var i = 0; i < prefixIndex; ++i) { + output.push(span) + } + return output.join('') +} diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/index.vue b/core/core-frontend/src/viewsnew/application/service/datasource/form/index.vue new file mode 100644 index 0000000..a280cc6 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/index.vue @@ -0,0 +1,1163 @@ + + + + + + \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/form/option.ts b/core/core-frontend/src/viewsnew/application/service/datasource/form/option.ts new file mode 100644 index 0000000..19e9afe --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/form/option.ts @@ -0,0 +1,197 @@ +import { useI18n } from '@/hooks/web/useI18n' +const { t } = useI18n() + +export const dsTypes = [ + { + type: 'db2', + name: 'Db2', + catalog: 'OLTP', + extraParams: '' + }, + { + type: 'mysql', + name: 'MySQL', + catalog: 'OLTP', + extraParams: + 'characterEncoding=UTF-8&connectTimeout=5000&useSSL=false&allowPublicKeyRetrieval=true' + }, + { + type: 'TiDB', + name: 'TiDB', + catalog: 'OLTP', + extraParams: + 'characterEncoding=UTF-8&connectTimeout=5000&useSSL=false&allowPublicKeyRetrieval=true' + }, + { + type: 'impala', + name: 'Apache Impala', + catalog: 'OLAP', + extraParams: 'AuthMech=0' + }, + { + type: 'mariadb', + name: 'MariaDB', + catalog: 'OLTP', + extraParams: + 'characterEncoding=UTF-8&connectTimeout=5000&useSSL=false&allowPublicKeyRetrieval=true' + }, + { + type: 'doris', + name: 'Apache Doris', + catalog: 'OLAP', + extraParams: + 'characterEncoding=UTF-8&connectTimeout=5000&useSSL=false&allowPublicKeyRetrieval=true' + }, + { + type: 'es', + name: 'Elasticsearch', + catalog: 'OLAP', + extraParams: '' + }, + { + type: 'StarRocks', + name: 'StarRocks', + catalog: 'OLAP', + extraParams: + 'characterEncoding=UTF-8&connectTimeout=5000&useSSL=false&allowPublicKeyRetrieval=true' + }, + { + type: 'pg', + name: 'PostgreSQL', + catalog: 'OLTP', + extraParams: '' + }, + { + type: 'sqlServer', + name: 'SQL Server', + catalog: 'OLTP', + extraParams: '' + }, + { + type: 'oracle', + name: 'Oracle', + catalog: 'OLTP', + extraParams: '', + charset: [ + 'Default', + 'GBK', + 'BIG5', + 'ISO-8859-1', + 'UTF-8', + 'UTF-16', + 'CP850', + 'EUC_JP', + 'EUC_KR' + ], + targetCharset: ['Default', 'GBK', 'UTF-8'] + }, + { + type: 'mongo', + name: 'Mongodb-BI', + catalog: 'OLTP', + extraParams: 'rebuildschema=true&authSource=admin' + }, + { + type: 'ck', + name: 'ClickHouse', + catalog: 'OLAP', + extraParams: '' + }, + { + type: 'redshift', + name: 'AWS Redshift', + catalog: 'DL', + extraParams: '' + }, + { + type: 'API', + name: 'API', + catalog: 'OTHER', + extraParams: '' + }, + { + type: 'Excel', + name: 'Excel', + catalog: 'LOCAL', + extraParams: '' + } +] + +export const typeList = ['OLTP', 'OLAP', 'DL', 'OTHER', 'LOCAL'] +export const nameMap = { + OLTP: 'OLTP', + OLAP: 'OLAP', + DL: t('datasource.dl'), + OTHER: t('data_source.api_data'), + LOCAL: t('datasource.local_file') +} + +export interface Configuration { + dataBase: string + jdbcUrl: string + urlType: string + connectionType: string + schema: string + extraParams: string + username: string + password: string + host: string + authMethod: string + port: string + initialPoolSize: string + minPoolSize: string + maxPoolSize: string + queryTimeout: string + useSSH: boolean + sshHost: string + sshPort: string + sshUserName: string + sshType: string + sshPassword: string +} + +export interface ApiConfiguration { + id: string + name: string + type: string + deTableName: string + method: string + copy: boolean + url: string + status: string + useJsonPath: boolean + serialNumber: number +} + +export interface SyncSetting { + id: string + updateType: string + syncRate: string + simpleCronValue: number + simpleCronType: string + startTime: number + endTime: number + endLimit: string + cron: string +} + +export interface Node { + name: string + createBy: string + creator: string + copy: boolean + createTime: string + id: number | string + size: number + description: string + type: string + nodeType: string + fileName: string + syncSetting?: SyncSetting + editType?: number + configuration?: Configuration + apiConfiguration?: ApiConfiguration[] + paramsConfiguration?: ApiConfiguration[] + weight?: number + lastSyncTime?: number | string +} diff --git a/core/core-frontend/src/viewsnew/application/service/datasource/index.vue b/core/core-frontend/src/viewsnew/application/service/datasource/index.vue new file mode 100644 index 0000000..2d523c9 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/datasource/index.vue @@ -0,0 +1,2459 @@ + + + + + + + \ No newline at end of file diff --git a/core/core-frontend/src/viewsnew/application/service/header.vue b/core/core-frontend/src/viewsnew/application/service/header.vue new file mode 100644 index 0000000..32f0256 --- /dev/null +++ b/core/core-frontend/src/viewsnew/application/service/header.vue @@ -0,0 +1,104 @@ + + + + diff --git a/core/core-frontend/src/viewsnew/common/ComponentStyleEditor.vue b/core/core-frontend/src/viewsnew/common/ComponentStyleEditor.vue new file mode 100644 index 0000000..bfc40a0 --- /dev/null +++ b/core/core-frontend/src/viewsnew/common/ComponentStyleEditor.vue @@ -0,0 +1,56 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/common/DeAppApply.vue b/core/core-frontend/src/viewsnew/common/DeAppApply.vue new file mode 100644 index 0000000..75699cd --- /dev/null +++ b/core/core-frontend/src/viewsnew/common/DeAppApply.vue @@ -0,0 +1,430 @@ + + + + + + diff --git a/core/core-frontend/src/viewsnew/common/DeResourceArrow.vue b/core/core-frontend/src/viewsnew/common/DeResourceArrow.vue new file mode 100644 index 0000000..418861b --- /dev/null +++ b/core/core-frontend/src/viewsnew/common/DeResourceArrow.vue @@ -0,0 +1,83 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/common/DeResourceCreateOpt.vue b/core/core-frontend/src/viewsnew/common/DeResourceCreateOpt.vue new file mode 100644 index 0000000..5657e68 --- /dev/null +++ b/core/core-frontend/src/viewsnew/common/DeResourceCreateOpt.vue @@ -0,0 +1,260 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/common/DeResourceCreateOptV2.vue b/core/core-frontend/src/viewsnew/common/DeResourceCreateOptV2.vue new file mode 100644 index 0000000..34b453d --- /dev/null +++ b/core/core-frontend/src/viewsnew/common/DeResourceCreateOptV2.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/common/DeResourceGroupOpt.vue b/core/core-frontend/src/viewsnew/common/DeResourceGroupOpt.vue new file mode 100644 index 0000000..e50ae35 --- /dev/null +++ b/core/core-frontend/src/viewsnew/common/DeResourceGroupOpt.vue @@ -0,0 +1,455 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/common/DeResourceTree.vue b/core/core-frontend/src/viewsnew/common/DeResourceTree.vue new file mode 100644 index 0000000..21f2674 --- /dev/null +++ b/core/core-frontend/src/viewsnew/common/DeResourceTree.vue @@ -0,0 +1,925 @@ + + + + + + diff --git a/core/core-frontend/src/viewsnew/common/DeTemplatePreviewList.vue b/core/core-frontend/src/viewsnew/common/DeTemplatePreviewList.vue new file mode 100644 index 0000000..305fadc --- /dev/null +++ b/core/core-frontend/src/viewsnew/common/DeTemplatePreviewList.vue @@ -0,0 +1,113 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/common/DvDetailInfo.vue b/core/core-frontend/src/viewsnew/common/DvDetailInfo.vue new file mode 100644 index 0000000..cdfafe2 --- /dev/null +++ b/core/core-frontend/src/viewsnew/common/DvDetailInfo.vue @@ -0,0 +1,67 @@ + + + + + diff --git a/core/core-frontend/src/viewsnew/common/MultiplexingCanvas.vue b/core/core-frontend/src/viewsnew/common/MultiplexingCanvas.vue new file mode 100644 index 0000000..e839928 --- /dev/null +++ b/core/core-frontend/src/viewsnew/common/MultiplexingCanvas.vue @@ -0,0 +1,159 @@ + + + + + + + diff --git a/sdk/api/api-base/src/main/java/io/gisbi/api/dataset/union/DatasetGroupInfoDTO.java b/sdk/api/api-base/src/main/java/io/gisbi/api/dataset/union/DatasetGroupInfoDTO.java index 3ff2d56..5ccaa66 100644 --- a/sdk/api/api-base/src/main/java/io/gisbi/api/dataset/union/DatasetGroupInfoDTO.java +++ b/sdk/api/api-base/src/main/java/io/gisbi/api/dataset/union/DatasetGroupInfoDTO.java @@ -23,6 +23,8 @@ public class DatasetGroupInfoDTO extends DatasetNodeDTO { private String sql; + private String appId; + private Long total; private String creator;