From 0d1e46d368c87189ef290db46fc85ece2b045d01 Mon Sep 17 00:00:00 2001 From: Tangjiafeng <1282141182@qq.com> Date: Wed, 16 Mar 2022 16:06:12 +0800 Subject: [PATCH] update ui --- ui/fes.config.js | 2 +- ui/i18n-config.json | 66 +- ui/src/assets/js/utils.js | 210 ++++ ui/src/components/fesHeader.fes | 66 +- ui/src/components/template.fes | 7 - .../components/dataSourceCategory.fes | 116 --- .../components/dataSourceForm.fes | 120 --- .../dataSourceManagement/dataSourceApi.js | 301 ------ ui/src/pages/dataSourceManagement/index.fes | 954 ------------------ .../pages/dataSourceManagement/operation.fes | 100 -- 10 files changed, 284 insertions(+), 1658 deletions(-) delete mode 100644 ui/src/pages/dataSourceManagement/components/dataSourceCategory.fes delete mode 100644 ui/src/pages/dataSourceManagement/components/dataSourceForm.fes delete mode 100644 ui/src/pages/dataSourceManagement/dataSourceApi.js delete mode 100644 ui/src/pages/dataSourceManagement/index.fes delete mode 100644 ui/src/pages/dataSourceManagement/operation.fes diff --git a/ui/fes.config.js b/ui/fes.config.js index a6240b6a..b721d3be 100644 --- a/ui/fes.config.js +++ b/ui/fes.config.js @@ -39,7 +39,7 @@ export default { unLogin: ['/home','/dashboard', '/'], noauth: ['/dashboard','/home','/taskQuery', '/taskQuery/verificationDetails', '/taskQuery/ruleDetails', '/addTechniqueRule','/ruleQuery','/ruleQuery/*','/taskDetail', '/ruleTemplateList','/ruleTemplateList/*','/myProject','/projects/*','/myProject/*','/HelpDocument','/customTechnicalRule', - '/crossTableCheck','/verifyFailData', '/addGroupTechniqueRule', '/metricManagement', '/engineConfiguration', '/dataSourceManagement', '/'], + '/crossTableCheck','/verifyFailData', '/addGroupTechniqueRule', '/metricManagement', '/engineConfiguration', '/'], admin: ['/dashboard','*'] }, // map diff --git a/ui/i18n-config.json b/ui/i18n-config.json index 1341183f..23cfbc90 100644 --- a/ui/i18n-config.json +++ b/ui/i18n-config.json @@ -732,7 +732,12 @@ "select": "请选择要模拟登录的用户", "exitUser": "退出模拟用户", "selectUser": "请选择用户", - "signOut": "退出登录" + "signOut": "退出登录", + "changePassword": "修改密码", + "oldPassword": "旧密码", + "newPassword": "新密码", + "confirmPassword": "确认新密码", + "checkPassword": "新密码输入不一致" }, "addGroupTechniqueRule": { "newCustomRule": "单指标校验", @@ -756,32 +761,6 @@ "executationVaribleConfigDesc": "可指定查询过滤条件,也可动态替换查询中的占位符", "fpsFileConfigDesc": "可校验最新文件", "sparkConfigDesc": "可指定Spark Configuration参数" - }, - "dataSourceManagement": { - "title": "数据源管理", - "previous": "上一步", - "close": "关闭", - "finish": "完成", - "dataSourceId": "数据源ID", - "dataSourceName": "数据源名称", - "dataSourceDesc": "数据源描述", - "dataSourceType": "数据源类型", - "addDataSource": "新增数据源", - "editDataSource": "编辑数据源", - "reviewDataSource": "查看数据源", - "exportDataSourceBatch": "批量导出数据源", - "importDataSourceBatch": "批量导入数据源", - "expire": "过期", - "canUse": "可用", - "published": "已发布", - "unPublish": "未发布", - "canNotPublish": "不可发布", - "testConnection": "测试连接", - "versionsModalTitle": "新建版本列表", - "enterDataSourceName": "请输入数据源名称", - "enterDataSourceDesc": "请输入数据源描述", - "enterLabels": "请输入标签", - "rollbackComment": "从版本 {version} 回滚" } }, "en": { @@ -1518,7 +1497,12 @@ "select": "Please select the user to simulate", "exitUser": "Exit Simulated User", "selectUser": "Please select user", - "signOut": "Sign out" + "signOut": "Sign out", + "changePassword": "Change Password", + "oldPassword": "old Password", + "newPassword": "new Password", + "confirmPassword": "Confirm new password", + "checkPassword": "The new password input is inconsistent" }, "addGroupTechniqueRule": { "newCustomRule": "Single index verification", @@ -1542,32 +1526,6 @@ "executationVaribleConfigDesc": "You can specify query filter conditions, and you can also dynamically replace placeholders in the query", "fpsFileConfigDesc": "The latest file can be verified", "sparkConfigDesc": "Can specify Spark Configuration parameters" - }, - "dataSourceManagement": { - "title": "Data Source Management", - "previous": "Previous", - "close": "Close", - "finish": "Finish", - "dataSourceId": "ID", - "dataSourceName": "Data Source Name", - "dataSourceDesc": "Data Source Desc", - "dataSourceType": "Data Source Type", - "addDataSource": "Add Data Source", - "editDataSource": "Edit Data Source", - "reviewDataSource": "Review Data Source", - "exportDataSourceBatch": "Export Data Source Batch", - "importDataSourceBatch": "Import Data Source Batch", - "expire": "Expire", - "canUse": "Can use", - "published": "Published", - "unPublish": "Un Publish", - "canNotPublish": "Can not publish", - "testConnection": "Connection", - "versionsModalTitle": "Version List", - "enterDataSourceName": "please enter name of dataSource", - "enterDataSourceDesc": "please enter desc of dataSource", - "enterLabels": "please enter label", - "rollbackComment": "Rollback from {version}" } } } diff --git a/ui/src/assets/js/utils.js b/ui/src/assets/js/utils.js index 3454ef75..5448a06e 100644 --- a/ui/src/assets/js/utils.js +++ b/ui/src/assets/js/utils.js @@ -363,7 +363,217 @@ const setCursorPositionInformation = (elementId, position) => { const isNullOrUndefined = (value) => value === null || value === undefined; +function sha256(s) { + var chrsz = 8; + var hexcase = 0; + function safe_add(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); + } + function S(X, n) { + return (X >>> n) | (X << (32 - n)); + } + function R(X, n) { + return X >>> n; + } + function Ch(x, y, z) { + return (x & y) ^ (~x & z); + } + function Maj(x, y, z) { + return (x & y) ^ (x & z) ^ (y & z); + } + function Sigma0256(x) { + return S(x, 2) ^ S(x, 13) ^ S(x, 22); + } + function Sigma1256(x) { + return S(x, 6) ^ S(x, 11) ^ S(x, 25); + } + function Gamma0256(x) { + return S(x, 7) ^ S(x, 18) ^ R(x, 3); + } + function Gamma1256(x) { + return S(x, 17) ^ S(x, 19) ^ R(x, 10); + } + function core_sha256(m, l) { + var K = new Array( + 0x428a2f98, + 0x71374491, + 0xb5c0fbcf, + 0xe9b5dba5, + 0x3956c25b, + 0x59f111f1, + 0x923f82a4, + 0xab1c5ed5, + 0xd807aa98, + 0x12835b01, + 0x243185be, + 0x550c7dc3, + 0x72be5d74, + 0x80deb1fe, + 0x9bdc06a7, + 0xc19bf174, + 0xe49b69c1, + 0xefbe4786, + 0xfc19dc6, + 0x240ca1cc, + 0x2de92c6f, + 0x4a7484aa, + 0x5cb0a9dc, + 0x76f988da, + 0x983e5152, + 0xa831c66d, + 0xb00327c8, + 0xbf597fc7, + 0xc6e00bf3, + 0xd5a79147, + 0x6ca6351, + 0x14292967, + 0x27b70a85, + 0x2e1b2138, + 0x4d2c6dfc, + 0x53380d13, + 0x650a7354, + 0x766a0abb, + 0x81c2c92e, + 0x92722c85, + 0xa2bfe8a1, + 0xa81a664b, + 0xc24b8b70, + 0xc76c51a3, + 0xd192e819, + 0xd6990624, + 0xf40e3585, + 0x106aa070, + 0x19a4c116, + 0x1e376c08, + 0x2748774c, + 0x34b0bcb5, + 0x391c0cb3, + 0x4ed8aa4a, + 0x5b9cca4f, + 0x682e6ff3, + 0x748f82ee, + 0x78a5636f, + 0x84c87814, + 0x8cc70208, + 0x90befffa, + 0xa4506ceb, + 0xbef9a3f7, + 0xc67178f2 + ); + var HASH = new Array( + 0x6a09e667, + 0xbb67ae85, + 0x3c6ef372, + 0xa54ff53a, + 0x510e527f, + 0x9b05688c, + 0x1f83d9ab, + 0x5be0cd19 + ); + var W = new Array(64); + var a, b, c, d, e, f, g, h, i, j; + var T1, T2; + m[l >> 5] |= 0x80 << (24 - (l % 32)); + m[(((l + 64) >> 9) << 4) + 15] = l; + for (i = 0; i < m.length; i += 16) { + a = HASH[0]; + b = HASH[1]; + c = HASH[2]; + d = HASH[3]; + e = HASH[4]; + f = HASH[5]; + g = HASH[6]; + h = HASH[7]; + for (j = 0; j < 64; j++) { + if (j < 16) W[j] = m[j + i]; + else + W[j] = safe_add( + safe_add( + safe_add(Gamma1256(W[j - 2]), W[j - 7]), + Gamma0256(W[j - 15]) + ), + W[j - 16] + ); + T1 = safe_add( + safe_add( + safe_add( + safe_add(h, Sigma1256(e)), + Ch(e, f, g) + ), + K[j] + ), + W[j] + ); + T2 = safe_add(Sigma0256(a), Maj(a, b, c)); + h = g; + g = f; + f = e; + e = safe_add(d, T1); + d = c; + c = b; + b = a; + a = safe_add(T1, T2); + } + HASH[0] = safe_add(a, HASH[0]); + HASH[1] = safe_add(b, HASH[1]); + HASH[2] = safe_add(c, HASH[2]); + HASH[3] = safe_add(d, HASH[3]); + HASH[4] = safe_add(e, HASH[4]); + HASH[5] = safe_add(f, HASH[5]); + HASH[6] = safe_add(g, HASH[6]); + HASH[7] = safe_add(h, HASH[7]); + } + return HASH; + } + function str2binb(str) { + var bin = Array(); + var mask = (1 << chrsz) - 1; + for (var i = 0; i < str.length * chrsz; i += chrsz) { + bin[i >> 5] |= + (str.charCodeAt(i / chrsz) & mask) << (24 - (i % 32)); + } + return bin; + } + function Utf8Encode(string) { + string = string.replace(/\r\n/g, "\n"); + var utftext = ""; + for (var n = 0; n < string.length; n++) { + var c = string.charCodeAt(n); + if (c < 128) { + utftext += String.fromCharCode(c); + } else if (c > 127 && c < 2048) { + utftext += String.fromCharCode((c >> 6) | 192); + utftext += String.fromCharCode((c & 63) | 128); + } else { + utftext += String.fromCharCode((c >> 12) | 224); + utftext += String.fromCharCode(((c >> 6) & 63) | 128); + utftext += String.fromCharCode((c & 63) | 128); + } + } + return utftext; + } + function binb2hex(binarray) { + var hex_tab = hexcase ? "0123456789ABCDEF" : "0123456789abcdef"; + var str = ""; + for (var i = 0; i < binarray.length * 4; i++) { + str += + hex_tab.charAt( + (binarray[i >> 2] >> ((3 - (i % 4)) * 8 + 4)) & 0xf + ) + + hex_tab.charAt( + (binarray[i >> 2] >> ((3 - (i % 4)) * 8)) & 0xf + ); + } + return str; + } + s = Utf8Encode(s); + return binb2hex(core_sha256(str2binb(s), s.length * chrsz)); +} + export { + sha256, dateFormat, getStaff, forceDownload, diff --git a/ui/src/components/fesHeader.fes b/ui/src/components/fesHeader.fes index eb24dbfa..420e4050 100644 --- a/ui/src/components/fesHeader.fes +++ b/ui/src/components/fesHeader.fes @@ -21,17 +21,35 @@
- {{ $t('common.cancel') }} + {{ $t('common.cancel') }} {{ $t('common.ok') }}
+ + + + + + + + + + + + +
+ {{ $t('common.cancel') }} + {{ $t('common.ok') }} +
+
+
- diff --git a/ui/src/pages/dataSourceManagement/components/dataSourceForm.fes b/ui/src/pages/dataSourceManagement/components/dataSourceForm.fes deleted file mode 100644 index 0d0df982..00000000 --- a/ui/src/pages/dataSourceManagement/components/dataSourceForm.fes +++ /dev/null @@ -1,120 +0,0 @@ - - diff --git a/ui/src/pages/dataSourceManagement/dataSourceApi.js b/ui/src/pages/dataSourceManagement/dataSourceApi.js deleted file mode 100644 index 2821d0ff..00000000 --- a/ui/src/pages/dataSourceManagement/dataSourceApi.js +++ /dev/null @@ -1,301 +0,0 @@ -import Vue from 'vue'; - -// 需要等待 FesApi挂载到Vue原型上才 能成功赋值给api -let api = null; -let app = null; -let commonParams = { - clusterName: '', - proxyUser: '' -}; -setTimeout(() => { - api = Vue.prototype.FesApi; - app = Vue.prototype.FesApp; -}); - -const getSystemNameNew = (data) => { - return data.full_cn_name - || data.subSystemFullCnName - || data.subSystemId; -}; - -export const setCommonParams = (params) => { - if (!params) return; - commonParams.clusterName = params.clusterName || ''; - commonParams.proxyUser = params.proxyUser || ''; -}; - -export const clearCommonParams = () => { - commonParams.clusterName = ''; - commonParams.proxyUser = ''; -}; - -// 数据源类型过滤器,只保留Enum('1', 'mysql')、Enum('5', 'tdsql')类型的数据源 -export const dataSourceTypesAcceptor = (data) => { - if (!Array.isArray(data)) return []; - return data.filter((item) => ['1', '5', 1, 5].includes(item.id)); -}; - -/** - * 获取环境列表 - * @param {String} clusterName 集群名 - * @param {String} proxyUser 代理用户 - * @return {List} 环境列表 - */ -export const getEnvs = () => { - return new Promise((resolve, reject) => { - api.fetch('/api/v1/projector/meta_data/data_source/env', commonParams, 'get').then((res) => { - if (!Array.isArray(res.query_list)) resolve([]); - resolve(res.query_list); - }).catch((error) => { - reject(error); - }); - }); -}; - -/** - * 获取集群列表 - * @return {List} 集群名称列表 - */ -export const getClusters = () => { - return new Promise((resolve, reject) => { - api.fetch('/api/v1/projector/meta_data/cluster', {}).then((res) => { - const clusters = res.optional_clusters; - if (!Array.isArray(clusters)) resolve([]); - resolve(clusters); - }).catch((error) => { - reject(error); - }); - }); -}; - -/** - * 获取代理用户列表 - * @return {List} 代理用户列表 - */ -export const getProxyUsers = () => { - return new Promise((resolve, reject) => { - api.fetch('/api/v1/projector/proxy_user', {}, 'get').then((res) => { - let proxyUsers; - if (Array.isArray(res) && res.length) { - proxyUsers = res; - } else { - proxyUsers = [app.get('FesUserName')]; - } - resolve(proxyUsers); - }).catch((error) => { - reject(error); - }); - }); -}; - -/** - * 获取子系统列表 - * @return {List} 子系统列表 - */ -export const getSubSystems = () => { - return new Promise((resolve, reject) => { - api.fetch('/api/v1/projector/meta_data/subSystemInfo', {}).then(res => { - if (!Array.isArray(res)) resolve([]); - const subSystemList = res.map((item) => { - const cnName = getSystemNameNew(item); - return Object.assign({}, item, { - subSystemName: cnName, - enName: item.subSystemName, - cnName: cnName - }); - }); - resolve(subSystemList); - }).catch((error) => { - reject(error); - }); - }); -}; - -/** - * 获取数据源类型列表 - * @param {String} clusterName 集群名 - * @param {String} proxyUser 代理用户 - * @return {List} 数据源类型列表 - */ -export const getDataSourceTypes = (acceptor) => { - return new Promise((resolve, reject) => { - api.fetch('/api/v1/projector/meta_data/data_source/types/all', commonParams, 'get').then((res) => { - if (!Array.isArray(res.type_list)) resolve([]); - const dataSourceTypes = acceptor instanceof Function ? acceptor(res.type_list) : res.type_list; - resolve(dataSourceTypes); - }).catch((error) => { - reject(error); - }); - }); -}; - -/** - * 获取数据源列表 - * @param {String} dataSourceName 数据源名称 - * @param {String} dataSourceTypeId 数据源类型ID - * @param {String} clusterName 集群名 - * @param {String} proxyUser 代理用户 - * @param {Number} current 当前页码 - * @param {Number} size 分页大小 - * @return {List} 数据源列表 - */ -export const getDataSources = ( - dataSourceName, - dataSourceTypeId, - current, - size -) => { - return new Promise((resolve, reject) => { - api.fetch('/api/v1/projector/meta_data/data_source/info', Object.assign({ - name: dataSourceName || '', - typeId: dataSourceTypeId || '', - currentPage: current || 1, - pageSize: size || 10 - }, commonParams), 'get').then((res) => { - if (!Array.isArray(res.query_list)) { - resolve({ - total: 0, - data: [] - }); - } - resolve({ - total: res.totalPage, - data: res.query_list - }); - }).catch((error) => { - reject(error); - }); - }); -}; - -/** - * 获取数据源详情信息 - * @param {String} dataSourceId 数据源ID - * @param {String} versionId 数据源版本ID - * @param {String} clusterName 集群名 - * @param {String} proxyUser 代理用户 - * @return {DataSource} 数据源详情信息 - */ -export const getDataSourceDetail = ( - dataSourceId, - versionId -) => { - return new Promise((resolve, reject) => { - api.fetch('/api/v1/projector/meta_data/data_source/info/detail', Object.assign({ - dataSourceId: dataSourceId || '', - versionId: versionId || '' - }, commonParams), 'get').then((res) => { - resolve(res.info); - }).catch((error) => { - reject(error); - }); - }); -}; - -/** - * 获取指定数据源的版本列表 - * @param {String} dataSourceId 数据源ID - * @param {String} clusterName 集群名 - * @param {String} proxyUser 代理用户 - * @return {List} 数据源版本列表 - */ -export const getVersions = (dataSourceId) => { - return new Promise((resolve, reject) => { - api.fetch('/api/v1/projector/meta_data/data_source/versions', Object.assign({ - dataSourceId: dataSourceId || '' - }, commonParams), 'get').then((res) => { - if (!Array.isArray(res.versions)) resolve([]); - resolve(res.versions); - }).catch((error) => { - reject(error); - }); - }); -}; - -/** - * 测试数据源连接 - * @param {String} urlSearchParams url查询参数,包含集群名、代理用户 - * @param {DataSource} dataSource 数据源信息 - */ -export const testConnection = (urlSearchParams, dataSource) => { - return api.fetch(`/api/v1/projector/meta_data/data_source/connect?${urlSearchParams}`, dataSource); -}; - -/** - * 过期作废数据源 - * @param {String} urlSearchParamsStr url查询参数,包含数据源ID、集群名、代理用户 - */ -export const expireDataSource = (urlSearchParamsStr) => { - return api.fetch(`/api/v1/projector/meta_data/data_source/expire?${urlSearchParamsStr}`); -}; - -/** - * 发布数据源 - * @param {String} urlSearchParamsStr url查询参数,包含数据源ID、数据源版本ID、集群名、代理用户 - */ -export const publishDataSource = (urlSearchParamsStr) => { - return api.fetch(`/api/v1/projector/meta_data/data_source/publish?${urlSearchParamsStr}`); -}; - -/** - * 更新数据源连接信息 - * @param {String} urlSearchParamsStr url查询参数,包含数据源ID、集群名、代理用户 - * @param {DataSourceConnectParams} connectParams 数据源连接信息 - * @param {String} comment 更新日志 - */ -export const updateDataSourceConnectionParams = (urlSearchParamsStr, connectParams, comment) => { - return api.fetch(`/api/v1/projector/meta_data/data_source/param/modify?${urlSearchParamsStr}`, { - comment: comment || '', - connectParams: connectParams || {} - }); -}; - -/** - * 获取指定数据源类型的 连接信息字段配置列表 - * @param {String} dataSourceTypeId 数据源类型ID - * @return {List} 数据源连接信息 字段列表 - */ -export const getKeyDefines = (dataSourceTypeId) => { - return new Promise((resolve, reject) => { - api.fetch('/api/v1/projector/meta_data/data_source/key_define/type', Object.assign({ - keyId: dataSourceTypeId, - }, commonParams), 'get').then((res) => { - if (!Array.isArray(res.key_define)) resolve([]); - resolve(res.key_define); - }).catch((error) => { - reject(error); - }) - }); -}; - -/** - * 新增数据源 - * @param {String} urlSearchParamsStr url查询参数,包含集群名、代理用户 - * @param {Object} data 数据源信息 - */ -export const createDataSource = (urlSearchParamsStr, data = {}) => { - return new Promise((resolve, reject) => { - api.fetch(`/api/v1/projector/meta_data/data_source/create?${urlSearchParamsStr}`, data).then((res) => { - const result = Object.assign({}, res, {id: res.insert_id}); - resolve(result); - }).catch((error) => { - reject(error); - }); - }); -}; - -/** - * 更新数据源 - * @param {String} urlSearchParamsStr url查询参数,包含数据源ID、集群名、代理用户 - * @param {Object} data 数据源信息 - */ -export const updateDataSource = (urlSearchParamsStr, data = {}) => { - return new Promise((resolve, reject) => { - api.fetch(`/api/v1/projector/meta_data/data_source/modify?${urlSearchParamsStr}`, data).then((res) => { - const result = Object.assign({}, res, {id: res.update_id}); - resolve(result); - }).catch((error) => { - reject(error); - }); - }); -}; diff --git a/ui/src/pages/dataSourceManagement/index.fes b/ui/src/pages/dataSourceManagement/index.fes deleted file mode 100644 index a5135085..00000000 --- a/ui/src/pages/dataSourceManagement/index.fes +++ /dev/null @@ -1,954 +0,0 @@ - - - diff --git a/ui/src/pages/dataSourceManagement/operation.fes b/ui/src/pages/dataSourceManagement/operation.fes deleted file mode 100644 index eb12dc9f..00000000 --- a/ui/src/pages/dataSourceManagement/operation.fes +++ /dev/null @@ -1,100 +0,0 @@ - - -