Compare commits
6 Commits
persist/11
...
master
Author | SHA1 | Date |
---|---|---|
alan | d919d2ca8c | 5 years ago |
alan | bff9066784 | 5 years ago |
alan | e859c184d8 | 6 years ago |
alan | 99e64a42d8 | 6 years ago |
alan | 3c053bb854 | 6 years ago |
richie | 1373415685 | 6 years ago |
123 changed files with 2 additions and 4811 deletions
@ -1,5 +0,0 @@
|
||||
dist/*.js |
||||
src/assets/* |
||||
src/lib/* |
||||
webpack.config.js |
||||
curd.mock.ts |
@ -1,289 +0,0 @@
|
||||
module.exports = { |
||||
parser: '@typescript-eslint/parser', |
||||
plugins: ['@typescript-eslint'], |
||||
extends: ['plugin:@typescript-eslint/recommended'], |
||||
rules:{ |
||||
"indent": "off", |
||||
"quotes": [1, "single"], |
||||
"space-infix-ops": 2,//操作符前后有空格
|
||||
// 必须使用 === 和 !== ,和 null 对比时除外
|
||||
'eqeqeq': [2, 'always', { 'null': 'ignore' }], |
||||
// 函数的形参不能多于5个
|
||||
'max-params': [2, 5], |
||||
// 禁止 switch 中出现相同的 case
|
||||
'no-duplicate-case': 2, |
||||
// 禁止使用 var,必须用 let 或 const
|
||||
'no-var': 0, |
||||
// 禁止出现空代码块
|
||||
'no-empty': [2, { 'allowEmptyCatch': true }], |
||||
// 禁止空的 function
|
||||
// 包含注释的情况下允许
|
||||
'no-empty-function': 0, |
||||
// if 后必须包含 { ,单行 if 除外
|
||||
'curly': [2, 'multi-line', 'consistent'], |
||||
// for 循环不得因方向错误造成死循环
|
||||
'for-direction': 2, |
||||
// 关键字前后必须有空格
|
||||
'keyword-spacing': 2, |
||||
'key-spacing':2, |
||||
// 最大块嵌套深度为 5 层
|
||||
'max-depth': [2, 5], |
||||
// 最大回调深度为 3 层
|
||||
'max-nested-callbacks': [2, 3], |
||||
// 禁止普通字符串中出现模板字符串语法
|
||||
'no-template-curly-in-string': 0, |
||||
// 禁止连等赋值
|
||||
'no-multi-assign': 2, |
||||
// 禁止使用连续的空格
|
||||
'no-multi-spaces': 2, |
||||
// 禁止使用 \ 来定义多行字符串,统一使用模板字符串来做
|
||||
'no-multi-str': 2, |
||||
// 禁止使用 new Object
|
||||
'no-new-object': 2, |
||||
|
||||
// 禁止使用 new require
|
||||
'no-new-require': 2, |
||||
|
||||
// 禁止使用 new Symbol
|
||||
'no-new-symbol': 2, |
||||
// 禁止 new Boolean、Number 或 String
|
||||
'no-new-wrappers': 2, |
||||
// 禁止 new 一个类而不存储该实例
|
||||
'no-new': 2, |
||||
// 禁止把原生对象 Math、JSON、Reflect 当函数使用
|
||||
'no-obj-calls': 2, |
||||
// 禁止使用八进制转义符
|
||||
'no-octal-escape': 2, |
||||
// 禁止使用0开头的数字表示八进制
|
||||
'no-octal': 2, |
||||
// 禁止使用 __dirname + 'file' 的形式拼接路径,应该使用 path.join 或 path.resolve 来代替
|
||||
'no-path-concat': 2, |
||||
// 禁止对函数的参数重新赋值
|
||||
'no-param-reassign': 2, |
||||
// 禁止使用保留字作为变量名
|
||||
'no-shadow-restricted-names': 2, |
||||
// 禁止数组中出现连续逗号
|
||||
'no-sparse-arrays': 2, |
||||
// 禁止在finally块中出现 return、throw、break、continue
|
||||
'no-unsafe-finally': 2, |
||||
// 禁止出现不安全的否定,如 for (!key in obj} {},应该写为 for (!(key in obj)} {}
|
||||
'no-unsafe-negation': 2, |
||||
// ...后面不允许有空格
|
||||
'rest-spread-spacing': [2, 'never'], |
||||
// 注释的斜线和星号后要加空格
|
||||
'spaced-comment': [2, 'always', { |
||||
'block': { |
||||
exceptions: ['*'], |
||||
balanced: true |
||||
} |
||||
}], |
||||
// typeof 判断条件只能是 "undefined", "object", "boolean", "number", "string", "function" 或 "symbol"
|
||||
'valid-typeof': 2, |
||||
"@typescript-eslint/indent": ["error", 2], |
||||
"@typescript-eslint/explicit-function-return-type": ["warn", { |
||||
allowExpressions: true |
||||
}], |
||||
"@typescript-eslint/no-explicit-any": ["off"], |
||||
// 声明
|
||||
"prefer-const": "error", //如果一个变量不会被重新赋值,最好使用const进行声明
|
||||
"no-const-assign": "error", //不允许改变用const声明的变量
|
||||
"no-var": "error", //用let/const代替var
|
||||
// 对象
|
||||
"no-dupe-keys": "error", // 禁止在对象字面量中出现重复的键
|
||||
"no-prototype-builtins": "error", // 禁止直接使用 Object.prototypes 的内置属性
|
||||
"no-extend-native": "error", // 禁止扩展原生对象
|
||||
"no-new-object": "error", // 禁止使用 Object 构造函数
|
||||
"object-shorthand": [ |
||||
"error", |
||||
"always" |
||||
], //要求对象字面量简写语法
|
||||
"quote-props": [ |
||||
"error", |
||||
"as-needed" |
||||
], // 对象属性只在需要的时候加引号
|
||||
// 数组
|
||||
"no-sparse-arrays": "error", // 禁用稀疏数组
|
||||
"no-array-constructor": "error", //禁止使用 Array 构造函数
|
||||
"array-callback-return": "error", // 数组回调函数内必须返回一个状态
|
||||
// 字符串
|
||||
"quotes": [ |
||||
"error", |
||||
"single", |
||||
{ |
||||
"allowTemplateLiterals": true |
||||
} |
||||
], // 字符串开头和结束使用单引号
|
||||
"prefer-template": "error", // 使用模板而非字符串连接
|
||||
"template-curly-spacing": [ |
||||
"error", |
||||
"never" |
||||
], // 强制模板字符串中花括号内不能出现空格
|
||||
"no-path-concat": "error", // 当使用 _dirname 和 _filename 时不允许字符串拼接
|
||||
"no-useless-concat": "error", // 禁止没有必要的字符拼接
|
||||
"no-useless-escape": "error", // 禁用不必要的转义
|
||||
// 函数
|
||||
"no-dupe-args": "error", // 禁止在 function 定义中出现重复的参数
|
||||
"no-new-func": "error", // 禁用Function构造函数
|
||||
"no-return-assign": "error", // 禁止在返回语句中赋值
|
||||
"func-style": [ |
||||
"error", |
||||
"declaration", |
||||
{ |
||||
"allowArrowFunctions": true |
||||
} |
||||
], // 统一函数风格为函数表达式或函数声明,并且允许使用箭头函数
|
||||
"newline-before-return": "error", // 要求 return 语句之前有一空行
|
||||
"wrap-iife": [ |
||||
"error", |
||||
"outside" |
||||
], // 立即执行函数外部必须包裹括号
|
||||
"no-loop-func": "error", // 禁止在非function内声明function
|
||||
// "space-before-function-paren": "error", // 函数括号前必须要有空格
|
||||
"no-param-reassign": "error", // 禁止修改函数参数
|
||||
"prefer-spread": "error", // 使用解构形式代替.apply()
|
||||
// 箭头函数
|
||||
"prefer-arrow-callback": "error", // 回调使用箭头函数
|
||||
"arrow-spacing": "error", // 箭头前后要有空格
|
||||
"arrow-parens": [ |
||||
"error", |
||||
"as-needed" |
||||
], // 参数使用括号包裹
|
||||
"arrow-body-style": [ |
||||
"error", |
||||
"as-needed", |
||||
{ |
||||
"requireReturnForObjectLiteral": true |
||||
} |
||||
], // 函数体在必要的时候使用大括号
|
||||
// 类 & 构造器
|
||||
"no-useless-constructor": "error", // 禁止没必要的构造器
|
||||
"no-dupe-class-members": "error", // 禁止重复创建类成员
|
||||
// 模块
|
||||
"no-duplicate-imports": "error", // 禁止从一个模块多次import
|
||||
// 迭代器 & 生成器
|
||||
"no-iterator": "error", // 禁止使用Iterator属性
|
||||
"no-restricted-syntax": "error", // 使用对应的数组/对象方法去迭代操作成员
|
||||
"generator-star-spacing": "error", // *前后不要都有空格
|
||||
// 属性
|
||||
"dot-notation": "error", //强制在任何允许的时候使用点号访问属性
|
||||
// 变量
|
||||
// "one-var": ["error", "never"], // 变量统一声明
|
||||
// 比较运算符 & 相等运算符
|
||||
"eqeqeq": "error", // 使用 === 和 !== 代替 == 和 !=
|
||||
"no-nested-ternary": "error", // 禁止混合的三目运算符
|
||||
"no-unneeded-ternary": "error", //禁止可以在有更简单的可替代的表达式时使用三元操作符
|
||||
// 条件
|
||||
"no-cond-assign": "error", // 禁止在条件语句中出现赋值操作符
|
||||
"no-constant-condition": "error", //禁止在条件中使用常量表达式
|
||||
"no-duplicate-case": "error", // 禁止在 switch 语句中的 case 子句中出现重复的测试表达式
|
||||
"default-case": "error", // 要求 Switch 语句中有 Default 分支
|
||||
"no-else-return": "error", // 如果 if 块中包含了一个 return 语句,else 块就成了多余的了。可以将其内容移至块外
|
||||
"no-fallthrough": "error", // 禁止 case 语句落空
|
||||
// 代码块
|
||||
"brace-style": "error", // 代码块左括号紧跟上一行结束
|
||||
"curly": [ |
||||
"error", |
||||
"multi-line" |
||||
], // if、else if、else、for、while强制使用大括号,但允许在单行中省略大括号
|
||||
"no-empty": [ |
||||
"error", |
||||
{ |
||||
"allowEmptyCatch": true |
||||
} |
||||
], // 禁止空块语句,但允许出现空的 catch 子句
|
||||
// 注释
|
||||
"spaced-comment": "error", // 注释前有空格
|
||||
"no-mixed-spaces-and-tabs": "error", // 禁止使用 空格 和 tab 混合缩进
|
||||
"space-before-blocks": [ |
||||
"error", |
||||
"always" |
||||
], // 语句块之前的需要有空格
|
||||
"keyword-spacing": "error", // 关键字后面必须要有空格
|
||||
"space-infix-ops": [ |
||||
"error", |
||||
{ |
||||
"int32Hint": false |
||||
} |
||||
], // 要求中缀操作符周围有空格,设置 int32Hint 选项为 true (默认 false) 允许 a|0 不带空格
|
||||
"eol-last": "error", // 要求文件末尾保留一行空行
|
||||
"newline-per-chained-call": "error", // 要求方法链中每个调用都有一个换行符
|
||||
"padded-blocks": [ |
||||
"error", |
||||
"never" |
||||
], // 代码块开始和结束位置不可以有多余的空行
|
||||
"space-in-parens": [ |
||||
"error", |
||||
"never" |
||||
], // 禁止圆括号内的空格
|
||||
"array-bracket-spacing": [ |
||||
"error", |
||||
"never" |
||||
], // 数组紧贴括号部分不允许包含空格
|
||||
"object-curly-spacing": [ |
||||
"error", |
||||
"never" |
||||
], // 对象紧贴花括号部分不允许包含空格
|
||||
"no-regex-spaces": "error", // 禁止正则表达式字面量中出现多个空格
|
||||
"no-multi-spaces": "error", // 禁止出现多个空格而且不是用来作缩进的
|
||||
"block-spacing": [ |
||||
"error", |
||||
"never" |
||||
], // 单行代码块中紧贴括号部分不允许包含空格
|
||||
"computed-property-spacing": [ |
||||
"error", |
||||
"never" |
||||
], // 禁止括号和其内部值之间的空格
|
||||
"no-trailing-spaces": [ |
||||
"error", |
||||
{ |
||||
"skipBlankLines": true |
||||
} |
||||
], // 禁用行尾空格
|
||||
"no-spaced-func": "error", // 禁止函数调用时,与圆括号之间有空格
|
||||
"space-unary-ops": "error", // 要求或禁止在一元操作符之前或之后存在空格,new、delete、typeof、void、yield要求有空格,-、+、--、++、!、!!要求无空格
|
||||
"yield-star-spacing": [ |
||||
"error", |
||||
{ |
||||
"before": true, |
||||
"after": false |
||||
} |
||||
], // 强制 yield* 表达式中 * 号前有空格,后无空格
|
||||
// 逗号
|
||||
"comma-style": "error", // 逗号必须放在行末
|
||||
"comma-dangle": [ |
||||
"error", |
||||
"always-multiline" |
||||
], // 多行对象字面量中要求拖尾逗号
|
||||
"comma-spacing": [ |
||||
"error", |
||||
{ |
||||
"before": false, |
||||
"after": true |
||||
} |
||||
], //在变量声明、数组字面量、对象字面量、函数参数 和 序列中禁止在逗号前使用空格,要求在逗号后使用一个或多个空格
|
||||
// 分号
|
||||
"semi": "error", //不得省略语句结束的分号
|
||||
"semi-spacing": [ |
||||
"error", |
||||
{ |
||||
"before": false, |
||||
"after": true |
||||
} |
||||
], //禁止分号周围的空格
|
||||
"no-extra-semi": "error", // 禁用不必要的分号
|
||||
// 类型转换
|
||||
"radix": "error", // 在parseInt()中始终使用基数以消除意想不到的后果
|
||||
"no-extra-boolean-cast": "error", // 禁止不必要的布尔类型转换
|
||||
// 其他最佳实践或规范
|
||||
"strict": "error", // 使用强制模式开关use strict;
|
||||
// "@typescript-eslint/no-extra-parens": ["error"],
|
||||
"no-eval": "error", // 禁用 eval()
|
||||
"no-with": "error", // 禁用 with 语句
|
||||
"no-unexpected-multiline": "error", // 禁止使用令人困惑的多行表达式
|
||||
"no-unreachable": "error", // 禁止在 return、throw、continue 和 break 语句后出现不可达代码
|
||||
"no-unsafe-finally": "error", // 禁止在 finally 语句块中出现控制流语句
|
||||
"valid-typeof": "error", // 强制 typeof 表达式与有效的字符串进行比较
|
||||
"no-new-wrappers": "error", // 禁止通过 new 操作符使用 String、Number 和 Boolean
|
||||
"handle-callback-err": "error" // 强制回调错误处理
|
||||
} |
||||
} |
@ -1,7 +0,0 @@
|
||||
* text=auto !eol |
||||
designer_scripts/designer_scripts.iml -text |
||||
designer_scripts/src/readme.md -text |
||||
designer_scripts/src/scripts/store/web/index.html -text |
||||
designer_scripts/src/scripts/store/web/js/bridge.js -text |
||||
designer_scripts/src/scripts/store/web/js/lib/jquery-2.2.2.min.js -text |
||||
designer_scripts/src/scripts/store/web/js/store.js -text |
@ -1,60 +0,0 @@
|
||||
Dec-Dcm_Connection_Management= 数据连接管理 |
||||
Dec-Dcm_Pool_Connection_Management= 连接池管理 |
||||
Dec-Dcm_Data_Connections= 数据连接 |
||||
Dec-Dcm_Active_Connections_Number= 活动连接数 |
||||
Dec-Dcm_Leisure_Connections_Number= 空闲连接数 |
||||
Dec-Dcm_Connections= 连接 |
||||
Dec-Dcm_Default= 默认 |
||||
Dec-Dcm_Delete= 删除 |
||||
Dec-Dcm_Test_Connection= 测试连接 |
||||
Dec-Dcm_Copy= 复制 |
||||
Dec-Dcm_Edit= 编辑 |
||||
Dec-Dcm_Save= 保存 |
||||
Dec-Dcm_Yes= 是 |
||||
Dec-Dcm_No= 否 |
||||
Dec-Dcm_Search= 搜索 |
||||
Dec-Dcm_Type= 类型 |
||||
Dec-Dcm_Other= 其他 |
||||
Dec-Dcm_Tips= 提示 |
||||
Dec-Dcm_Back= 返回 |
||||
Dec-Dcm_Creator= 创建者 |
||||
Dec-Dcm_First_Step= 第一步 |
||||
Dec-Dcm_Second_Step= 第二步 |
||||
Dec-Dcm_Third_Step= 第三步 |
||||
Dec-Dcm_Connection_Detailed_Information= 详细信息 |
||||
Dec-Dcm_Connection_Handup_Information= 收起信息 |
||||
Dec-Dcm_Connection_Testing= 正在测试连接,请稍候... |
||||
Dec-Dcm_Connection_Test_Fail= 测试连接失败 |
||||
Dec-Dcm_Connection_Test_Success= 连接成功 |
||||
Dec-Dcm_Connection_Option_Cannot_Find= 找不到该连接的配置信息 |
||||
Dec-Dcm_Connection_Config_No_Save= 当前设置尚未保存,是否保存? |
||||
Dec-Dcm_Connection_New= 新建数据连接 |
||||
Dec-Dcm_Connection_More= 更多数据连接... |
||||
Dec-Dcm_Connection_More_Title= 更多数据连接 |
||||
Dec-Dcm_Connection_Other= 其他 |
||||
Dec-Dcm_Connection_Plase_Add_One= 请选择左侧数据连接或点击新建数据连接 |
||||
Dec-Dcm_Connection_Is_Existence= 数据连接名已存在 |
||||
Dec-Dcm_Connection_Form_ConnectionName= 数据连接名 |
||||
Dec-Dcm_Connection_Form_ConnectionName-Change-Confirm= *修改数据连接名会影响相关数据表和仪表板 |
||||
Dec-Dcm_Connection_Form_Driver= 驱动器 |
||||
Dec-Dcm_Connection_Form_URL= URL |
||||
Dec-Dcm_Connection_Form_Place_Input= 请输入 |
||||
Dec-Dcm_Connection_Form_OriginalCharsetName= 编码 |
||||
Dec-Dcm_Connection_Form_Auto= 自动 |
||||
Dec-Dcm_Connection_Form_UserName= 用户名 |
||||
Dec-Dcm_Connection_Form_Password= 密码 |
||||
Dec-Dcm_Connection_Form_Pool_Properties= 连接池属性 |
||||
Dec-Dcm_Connection_Form_SQL_Validation_Query= SQL验证查询 |
||||
Dec-Dcm_Connection_Form_Connection-Check= 获取连接前校验 |
||||
Dec-Dcm_Connection_Form_Connection_Max_Number= 最大活动连接数 |
||||
Dec-Dcm_Connection_Form_Place_Input-Number= 请输入有效的正整数 |
||||
Dec-Dcm_Connection_Form_Pattern= 模式 |
||||
Dec-Dcm_Connection_Form_Database_Addr= 数据库地址 |
||||
Dec-Dcm_Connection_Form_Database_Port= 端口号 |
||||
Dec-Dcm_Connection_Make_Sure_Delete= 确定删除该数据连接? |
||||
Dec-Dcm_Connection_ReConnect= 重新连接 |
||||
Dec-Dcm_Connection_JNDI_Form_ConnectionName= JNDI的名字 |
||||
Dec-Dcm_Connection_Form_JNDI_Context= 上下文 |
||||
Dec-Dcm_Connection_Form_JNDI_Advanced= 高级 |
||||
Dec-Dcm_Connection_Form_JNDI_Other_Attributes= 其他属性 |
||||
Dec-Dcm_Connection_Form_JNDI_Collapse-Attributes= 收起 |
@ -1,38 +0,0 @@
|
||||
{ |
||||
"name": "database-connection", |
||||
"version": "1.0.0", |
||||
"description": "数据连接设置页面", |
||||
"main": "index.js", |
||||
"scripts": { |
||||
"start": "webpack-dev-server --mode development --open", |
||||
"build": "webpack --mode production" |
||||
}, |
||||
"author": "alan <alan@fanrun.com>", |
||||
"license": "ISC", |
||||
"devDependencies": { |
||||
"@types/node": "^12.0.2", |
||||
"@typescript-eslint/eslint-plugin": "^1.6.0", |
||||
"@typescript-eslint/parser": "^1.6.0", |
||||
"copy-webpack-plugin": "^5.0.2", |
||||
"css-loader": "^2.1.1", |
||||
"eslint": "^5.16.0", |
||||
"file-loader": "^3.0.1", |
||||
"html-webpack-plugin": "^3.2.0", |
||||
"less": "^3.9.0", |
||||
"less-loader": "^5.0.0", |
||||
"mini-css-extract-plugin": "^0.6.0", |
||||
"node-sass": "^4.11.0", |
||||
"path": "^0.12.7", |
||||
"sass-loader": "^7.1.0", |
||||
"style-loader": "^0.23.1", |
||||
"ts-loader": "^5.3.3", |
||||
"typescript": "^3.4.1", |
||||
"webpack": "^4.29.6", |
||||
"webpack-cli": "^3.3.0", |
||||
"webpack-dev-server": "^3.2.1", |
||||
"webpack-stream": "^5.2.1" |
||||
}, |
||||
"optionalDependencies": { |
||||
"fineui": "git+ssh://git@cloud.finedevelop.com:7999/visual/fineui.git" |
||||
} |
||||
} |
@ -1,373 +0,0 @@
|
||||
export const OTHER_CONNECT = 'other'; |
||||
export const JNDI_CONNECT = 'JNDI'; |
||||
export const MYSQL_CONNECT = 'MySQL'; |
||||
export const DEFAULT_INFO = 'DESIGNER'; |
||||
export const ACTION_DELETE = 'ACTION_DELETE'; |
||||
export const ACTION_COPY = 'ACTION_COPY'; |
||||
export const ACTION_TEST = 'ACTION_TEST'; |
||||
|
||||
export const TAB_LINK_SET = 'TAB_LINK_SET'; |
||||
export const TAB_LINK_POOL = 'TAB_LINK_POOL'; |
||||
|
||||
|
||||
export const DATA_LINKS = ['APACHE KYLIN', 'DERBY', 'HP Vertica', 'IBM DB2', 'INFORMIX', 'Microsoft SQL Server', 'MySQL', 'Oracle', 'Privotal Greenplum Database', 'Postgresql', 'GaussDB 200', 'JNDI']; |
||||
|
||||
export const DATA_BASE_TYPE_OTHER = [ |
||||
{ |
||||
text: 'ADS', |
||||
databaseType: 'ads', |
||||
driver: 'com.mysql.jdbc.Driver', |
||||
url: 'jdbc:mysql://hostname:port/my_ads_db', |
||||
}, |
||||
{ |
||||
text: 'Amazon Redshift', |
||||
databaseType: 'amazon-redshift', |
||||
driver: 'com.amazon.redshift.jdbc4.Driver', |
||||
drivers: ['com.amazon.redshift.jdbc4.Driver', 'com.amazon.redshift.jdbc41.Driver'], |
||||
url: 'jdbc:redshift://endpoint:port/database', |
||||
}, |
||||
{ |
||||
text: 'APACHE IMPALA', |
||||
databaseType: 'apache-impala', |
||||
driver: 'com.cloudera.impala.jdbc41.Driver', |
||||
url: 'jdbc:impala://hostname:port/_impala_builtins', |
||||
}, |
||||
{ |
||||
text: 'APACHE KYLIN', |
||||
databaseType: 'apache-kylin', |
||||
driver: 'org.apache.kylin.jdbc.Driver', |
||||
url: 'jdbc:kylin://<hostname>:<port>/<kylin_project_name>', |
||||
}, |
||||
{ |
||||
text: 'APACHE Phoenix', |
||||
databaseType: 'apache-phoenix', |
||||
driver: 'org.apache.phoenix.jdbc.PhoenixDriver', |
||||
url: 'jdbc:phoenix:hostname:port/dbname', |
||||
}, |
||||
{ |
||||
text: 'DERBY', |
||||
databaseType: 'derby', |
||||
driver: 'org.apache.derby.jdbc.ClientDriver', |
||||
url: 'jdbc:derby://localhost:1527/', |
||||
}, |
||||
{ |
||||
text: 'Gbase 8A', |
||||
databaseType: 'gbase-8a', |
||||
driver: 'com.gbase.jdbc.Driver', |
||||
url: 'jdbc:gbase://hostname:port/dbname', |
||||
}, |
||||
{ |
||||
text: 'Gbase 8S', |
||||
databaseType: 'gbase-8s', |
||||
driver: 'com.gbasedbt.jdbc.IfxDriver', |
||||
url: 'jdbc:gbasedbt-sqli://{host}:{port}/{database}', |
||||
}, |
||||
{ |
||||
text: 'Gbase 8T', |
||||
databaseType: 'gbase-8t', |
||||
driver: 'com.informix.jdbc.IfxDriver', |
||||
url: 'jdbc:informix-sqli://{host}:{port}/{database}:INFORMIXSERVER={server}', |
||||
}, |
||||
{ |
||||
text: 'H2', |
||||
databaseType: 'h2', |
||||
driver: 'org.h2.Driver', |
||||
url: 'jdbc:h2://${ENV_HOME}/../databaseName', |
||||
}, |
||||
{ |
||||
text: '华为云DWS', |
||||
databaseType: 'hw-dws', |
||||
driver: 'org.postgresql.Driver', |
||||
url: 'jdbc:postgresql://hostname:port/dbname', |
||||
}, |
||||
{ |
||||
text: 'FusionInsight elk', |
||||
databaseType: 'hw-elk', |
||||
driver: 'org.postgresql.Driver', |
||||
url: 'jdbc:postgresql://hostname:port/dbname', |
||||
}, |
||||
{ |
||||
text: 'FusionInsight HD', |
||||
databaseType: 'hw-fusioninsight-hd', |
||||
driver: 'org.apache.hive.jdbc.HiveDriver', |
||||
url: 'jdbc:hive2://10.135.0.110:24002,10.135.0.67:24002,10.135.0.66:24002/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2;sasl.qop=auth-conf;auth=KERBEROS;zk.principal=zookeeper/hadoop;principal=hive/hadoop.hadoop.com@HADOOP.COM;', |
||||
}, |
||||
{ |
||||
text: 'GaussDB 200', |
||||
databaseType: 'hw-libr-a', |
||||
driver: 'org.postgresql.Driver', |
||||
url: 'jdbc:postgresql://hostname:port/dbname', |
||||
}, { |
||||
text: 'Hadoop Hive', |
||||
databaseType: 'hadoop-hive', |
||||
driver: 'org.apache.hive.jdbc.HiveDriver', |
||||
url: 'jdbc:hive2://hostname:port/databasename', |
||||
}, { |
||||
text: 'Hbase', |
||||
databaseType: 'hbase', |
||||
driver: 'org.apache.phoenix.jdbc.PhoenixDriver', |
||||
url: 'jdbc:phoenix:hostname:port/dbname', |
||||
}, { |
||||
text: 'HP Vertica', |
||||
databaseType: 'hp-vertica', |
||||
driver: 'com.vertica.jdbc.Driver', |
||||
url: 'jdbc:vertica://ip:port/databaseName', |
||||
}, { |
||||
text: 'Hsql', |
||||
databaseType: 'hsql', |
||||
driver: 'com.fr.third.org.hsqldb.jdbcDriver', |
||||
url: 'jdbc:hsqldb:file:[PATH_TO_DB_FILES]', |
||||
}, { |
||||
text: 'IBM DB2', |
||||
databaseType: 'ibm-db2', |
||||
driver: 'com.ibm.db2.jcc.DB2Driver', |
||||
url: 'jdbc:db2://hostname:port/dbname', |
||||
}, { |
||||
text: 'INFORMIX', |
||||
databaseType: 'informix', |
||||
driver: 'com.informix.jdbc.IfxDriver', |
||||
url: 'jdbc:informix-sqli://{host}:{port}/{database}:INFORMIXSERVER={server}', |
||||
}, { |
||||
text: 'KINGBASE', |
||||
databaseType: 'kingbase', |
||||
driver: 'com.kingbase.Driver', |
||||
url: 'jdbc:kingbase://hostname:port', |
||||
}, { |
||||
text: 'Microsoft SQL Server', |
||||
databaseType: 'sql-server', |
||||
driver: 'com.microsoft.sqlserver.jdbc.SQLServerDriver', |
||||
url: 'jdbc:sqlserver://localhost:1433;databaseName=', |
||||
}, { |
||||
text: 'MySQL', |
||||
databaseType: 'mysql', |
||||
driver: 'com.mysql.jdbc.Driver', |
||||
drivers: ['com.mysql.jdbc.Driver', 'org.gjt.mm.mysql.Driver'], |
||||
url: 'jdbc:mysql://localhost/dbname', |
||||
}, |
||||
{ |
||||
text: 'Oracle', |
||||
databaseType: 'oracle', |
||||
driver: 'oracle.jdbc.driver.OracleDriver', |
||||
url: 'jdbc:oracle:thin:@localhost:1521:databaseName', |
||||
}, |
||||
{ |
||||
text: 'Pivotal Greenplum Database', |
||||
databaseType: 'pivotal-greenplum-database', |
||||
driver: 'org.postgresql.Driver', |
||||
url: 'jdbc:postgresql://hostname:port/dbname', |
||||
}, { |
||||
text: 'Postgresql', |
||||
databaseType: 'postgresql', |
||||
driver: 'org.postgresql.Driver', |
||||
url: 'jdbc:postgresql://hostname:port/dbname', |
||||
}, { |
||||
text: 'Presto', |
||||
databaseType: 'presto', |
||||
driver: 'com.facebook.presto.jdbc.PrestoDriver', |
||||
url: 'jdbc:presto://host:port/catalog', |
||||
}, { |
||||
text: 'SAP HANA', |
||||
databaseType: 'sap-hana', |
||||
driver: 'com.sap.db.jdbc.Driver', |
||||
url: 'jdbc:sap://hostname:port?reconnect=true', |
||||
}, { |
||||
text: 'SAP Sybase', |
||||
databaseType: 'sap-sybase', |
||||
driver: 'com.sybase.jdbc4.jdbc.SybDriver', |
||||
url: 'jdbc:sybase:Tds:hostname:2638/databasename', |
||||
}, { |
||||
text: 'SPARK', |
||||
databaseType: 'spark', |
||||
driver: 'org.apache.hive.jdbc.HiveDriver', |
||||
url: 'jdbc:hive2://hostname:port/databasename', |
||||
}, { |
||||
text: 'Sqlite', |
||||
databaseType: 'sqlite', |
||||
driver: 'org.sqlite.JDBC', |
||||
url: 'jdbc:sqlite:[PATH_TO_DB_FILES]', |
||||
}, { |
||||
text: 'TeraData', |
||||
databaseType: 'teradata', |
||||
driver: 'com.ncr.teradata.TeraDriver', |
||||
url: 'jdbc:teradata://localhost/CLIENT_CHARSET=EUC_CN,TMODE=TERA,CHARSET=ASCII,LOB_SUPPORT', |
||||
}, { |
||||
text: 'TRANSWARP INCEPTOR', |
||||
databaseType: 'transwarp-inceptor', |
||||
driver: 'org.apache.hive.jdbc.HiveDriver', |
||||
url: 'jdbc:hive2://hostname:port/databasename', |
||||
}, |
||||
]; |
||||
|
||||
export const DATA_BASE_TYPE = [ |
||||
{ |
||||
text: 'APACHE KYLIN', |
||||
databaseType: 'apache-kylin', |
||||
driver: 'org.apache.kylin.jdbc.Driver', |
||||
url: 'jdbc:kylin://<hostname>:<port>/<kylin_project_name>', |
||||
}, |
||||
{ |
||||
text: 'DERBY', |
||||
databaseType: 'derby', |
||||
driver: 'org.apache.derby.jdbc.ClientDriver', |
||||
url: 'jdbc:derby://localhost:1527/', |
||||
}, |
||||
{ |
||||
text: 'HP Vertica', |
||||
databaseType: 'hp-vertica', |
||||
driver: 'com.vertica.jdbc.Driver', |
||||
url: 'jdbc:vertica://ip:port/databaseName', |
||||
}, |
||||
{ |
||||
text: 'IBM DB2', |
||||
databaseType: 'ibm-db2', |
||||
driver: 'com.ibm.db2.jcc.DB2Driver', |
||||
url: 'jdbc:db2://hostname:port/dbname', |
||||
}, |
||||
{ |
||||
text: 'INFORMIX', |
||||
databaseType: 'informix', |
||||
driver: 'com.informix.jdbc.IfxDriver', |
||||
url: 'jdbc:informix-sqli://{host}:{port}/{database}:INFORMIXSERVER={server}', |
||||
}, |
||||
{ |
||||
text: 'Microsoft SQL Server', |
||||
databaseType: 'sql-server', |
||||
driver: 'com.microsoft.sqlserver.jdbc.SQLServerDriver', |
||||
url: 'jdbc:sqlserver://localhost:1433;databaseName=', |
||||
}, |
||||
{ |
||||
text: 'Oracle', |
||||
databaseType: 'oracle', |
||||
driver: 'oracle.jdbc.driver.OracleDriver', |
||||
url: 'jdbc:oracle:thin:@localhost:1521:databaseName', |
||||
}, |
||||
{ |
||||
text: 'Privotal Greenplum Database', |
||||
databaseType: 'pivotal-greenplum-database', |
||||
driver: 'org.postgresql.Driver', |
||||
url: 'jdbc:postgresql://hostname:port/dbname', |
||||
}, |
||||
{ |
||||
text: 'Postgresql', |
||||
databaseType: 'postgresql', |
||||
driver: 'org.postgresql.Driver', |
||||
url: 'jdbc:postgresql://hostname:port/dbname', |
||||
}, |
||||
{ |
||||
text: 'GaussDB 200', |
||||
databaseType: 'hw-libr-a', |
||||
driver: 'org.postgresql.Driver', |
||||
url: 'jdbc:postgresql://hostname:port/dbname', |
||||
}, |
||||
{ |
||||
text: 'MySQL', |
||||
databaseType: 'mysql', |
||||
driver: 'com.mysql.jdbc.Driver', |
||||
drivers: ['com.mysql.jdbc.Driver', 'org.gjt.mm.mysql.Driver'], |
||||
url: 'jdbc:mysql://localhost/dbname', |
||||
}, |
||||
{ |
||||
text: OTHER_CONNECT, |
||||
databaseType: 'other', |
||||
driver: 'org.h2.Driver', |
||||
drivers: ['org.h2.Driver', 'com.fr.third.org.hsqldb.jdbcDriver', 'org.sqlite.JDBC'], |
||||
url: 'jdbc:h2://${ENV_HOME}/../databaseName', |
||||
}, |
||||
...DATA_BASE_TYPE_OTHER, |
||||
{ |
||||
text: JNDI_CONNECT, |
||||
}, |
||||
]; |
||||
|
||||
export const JNDI_FACTORYS = ['', 'weblogic.jndi.WLInitialContextFactory', 'com.ibm.websphere.naming.WsnInitialContextFactory', 'org.jboss.naming.HttpNamingContextFactory', 'org.jnp.interfaces.NamingContextFactory', 'com.caucho.burlap.BurlapContextFactory']; |
||||
|
||||
export const OTHER_ATTRIBUTES = [ |
||||
{ |
||||
text: 'OBJECT_FACTORIES', |
||||
name: 'objectFactories', |
||||
}, |
||||
{ |
||||
text: 'STATE_FACTORIES', |
||||
name: 'stateFactories', |
||||
}, |
||||
{ |
||||
text: 'URL_PKG_PREFIXES', |
||||
name: 'urlPkgPrefixes', |
||||
}, |
||||
{ |
||||
text: 'DNS_URL', |
||||
name: 'dnsUrl', |
||||
}, |
||||
{ |
||||
text: 'AUTHORITATIVE', |
||||
name: 'authoritative', |
||||
}, |
||||
{ |
||||
text: 'BATCHSIZE', |
||||
name: 'batchSize', |
||||
}, |
||||
{ |
||||
text: 'REFERRAL', |
||||
name: 'referral', |
||||
}, |
||||
{ |
||||
text: 'SECURITY_PROTOCOL', |
||||
name: 'securityProtocol', |
||||
}, |
||||
{ |
||||
text: 'SECURITY_AUTHENTICATION', |
||||
name: 'securityAuthentication', |
||||
}, |
||||
{ |
||||
text: 'LANGUAGE', |
||||
name: 'language', |
||||
}, |
||||
{ |
||||
text: 'APPLET', |
||||
name: 'applet', |
||||
}, |
||||
]; |
||||
|
||||
export const CONNECT_CHARSET = [ |
||||
{ |
||||
text: 'GBK', |
||||
value: 'GBK', |
||||
}, |
||||
{ |
||||
text: 'BIG5', |
||||
value: 'BIG5', |
||||
}, |
||||
{ |
||||
text: 'ISO-8859-1', |
||||
value: 'ISO-8859-1', |
||||
}, |
||||
{ |
||||
text: 'UTF-8', |
||||
value: 'UTF-8', |
||||
}, |
||||
{ |
||||
text: 'UTF-16', |
||||
value: 'UTF-16', |
||||
}, |
||||
{ |
||||
text: 'EUC_JP', |
||||
value: 'EUC_JP', |
||||
}, |
||||
{ |
||||
text: 'EUC_KR', |
||||
value: 'EUC_KR', |
||||
}, |
||||
{ |
||||
text: 'CP850', |
||||
value: 'CP850', |
||||
}, |
||||
]; |
||||
|
||||
|
||||
const DecDcm = { |
||||
TEST_STATUS_WAITING: 1, |
||||
TEST_STATUS_SUCCESS: 2, |
||||
TEST_STATUS_FAIL: 3, |
||||
}; |
||||
|
||||
export default DecDcm; |
@ -1,63 +0,0 @@
|
||||
export default { |
||||
'Dec-Dcm_Connection_Management': '数据连接管理', |
||||
'Dec-Dcm_Pool_Connection_Management': '连接池管理', |
||||
'Dec-Dcm_Data_Connections': '数据连接', |
||||
'Dec-Dcm_Active_Connections_Number': '活动连接数', |
||||
'Dec-Dcm_Leisure_Connections_Number': '空闲连接数', |
||||
'Dec-Dcm_Connections': '连接', |
||||
'Dec-Dcm_Default': '默认', |
||||
'Dec-Dcm_Delete': '删除', |
||||
'Dec-Dcm_Test_Connection': '测试连接', |
||||
'Dec-Dcm_Copy': '复制', |
||||
'Dec-Dcm_Edit': '编辑', |
||||
'Dec-Dcm_Save': '保存', |
||||
'Dec-Dcm_Yes': '是', |
||||
'Dec-Dcm_No': '否', |
||||
'Dec-Dcm_Search': '搜索', |
||||
'Dec-Dcm_Type': '类型', |
||||
'Dec-Dcm_Other': '其他', |
||||
'Dec-Dcm_Tips': '提示', |
||||
'Dec-Dcm_Back': '返回', |
||||
'Dec-Dcm_Creator': '创建者', |
||||
'Dec-Dcm_First_Step': '第一步', |
||||
'Dec-Dcm_Second_Step': '第二步', |
||||
'Dec-Dcm_Third_Step': '第三步', |
||||
'Dec-Dcm_Connection_Detailed_Information': '详细信息', |
||||
'Dec-Dcm_Connection_Handup_Information': '收起信息', |
||||
'Dec-Dcm_Connection_Testing': '正在测试连接,请稍候...', |
||||
'Dec-Dcm_Connection_Test_Fail': '测试连接失败', |
||||
'Dec-Dcm_Connection_Test_Success': '连接成功', |
||||
'Dec-Dcm_Connection_Option_Cannot_Find': '找不到该连接的配置信息', |
||||
'Dec-Dcm_Connection_Config_No_Save': '当前设置尚未保存,是否保存?', |
||||
'Dec-Dcm_Connection_New': '新建数据连接', |
||||
'Dec-Dcm_Connection_More': '更多数据连接...', |
||||
'Dec-Dcm_Connection_More_Title': '更多数据连接', |
||||
'Dec-Dcm_Connection_Other': '其他', |
||||
'Dec-Dcm_Connection_Plase_Add_One': '请选择左侧数据连接或点击新建数据连接', |
||||
'Dec-Dcm_Connection_Is_Existence': '数据连接名已存在', |
||||
'Dec-Dcm_Connection_Form_ConnectionName': '数据连接名', |
||||
'Dec-Dcm_Connection_Form_ConnectionName-Change-Confirm': '*修改数据连接名会影响相关数据表和仪表板', |
||||
'Dec-Dcm_Connection_Form_Driver': '驱动器', |
||||
'Dec-Dcm_Connection_Form_URL': 'URL', |
||||
'Dec-Dcm_Connection_Form_Place_Input': '请输入', |
||||
'Dec-Dcm_Connection_Form_OriginalCharsetName': '编码', |
||||
'Dec-Dcm_Connection_Form_Auto': '自动', |
||||
'Dec-Dcm_Connection_Form_UserName': '用户名', |
||||
'Dec-Dcm_Connection_Form_Password': '密码', |
||||
'Dec-Dcm_Connection_Form_Pool_Properties': '连接池属性', |
||||
'Dec-Dcm_Connection_Form_SQL_Validation_Query': 'SQL验证查询', |
||||
'Dec-Dcm_Connection_Form_Connection-Check': '获取连接前校验', |
||||
'Dec-Dcm_Connection_Form_Connection_Max_Number': '最大活动连接数', |
||||
'Dec-Dcm_Connection_Form_Place_Input-Number': '请输入有效的正整数', |
||||
'Dec-Dcm_Connection_Form_Pattern': '模式', |
||||
'Dec-Dcm_Connection_Form_Database_Addr': '数据库地址', |
||||
'Dec-Dcm_Connection_Form_Database_Port': '端口号', |
||||
'Dec-Dcm_Connection_Make_Sure_Delete': '确定删除该数据连接?', |
||||
'Dec-Dcm_Connection_ReConnect': '重新连接', |
||||
'Dec-Dcm_Connection_JNDI_Form_ConnectionName': 'JNDI的名字', |
||||
'Dec-Dcm_Connection_Form_JNDI_Context': '上下文', |
||||
'Dec-Dcm_Connection_Form_JNDI_Advanced': '高级', |
||||
'Dec-Dcm_Connection_Form_JNDI_Other_Attributes': '其他属性', |
||||
'Dec-Dcm_Connection_Form_JNDI_Collapse-Attributes': '收起', |
||||
'Dec-Dcm_Connection_Form_JNDI_Notice': '注意:需要把包含INITIAL_CONTEXT_FACTORY类的.jar文件复制到软件安装目录下的/lib目录下.', |
||||
}; |
@ -1,4 +0,0 @@
|
||||
export const ConstantName = 'dec.constant.database.conf.connect.list'; |
||||
BI.constant(ConstantName, [ |
||||
]); |
||||
export default ConstantName; |
@ -1,39 +0,0 @@
|
||||
const className = 'dec.dcm.model.main'; |
||||
import {ModelType} from '@ui'; |
||||
import {LinkType} from '@ui/type'; |
||||
import {fetchLinkList} from '../shared/crud/crud.request'; |
||||
import {TAB_LINK_SET} from '@private/constants'; |
||||
|
||||
const linkList: LinkType[] = []; |
||||
const Model: ModelType = { |
||||
|
||||
childContext: ['tab', 'linkList', 'linkSelected', 'linkUpdate', 'moreLinkSelected', 'statusSelected', 'connectionNameErr'], |
||||
state () { |
||||
return { |
||||
tab: '', |
||||
linkList, |
||||
linkSelected: {}, |
||||
linkUpdate: {}, |
||||
moreLinkSelected: '', |
||||
statusSelected: '', |
||||
connectionNameErr: '', |
||||
}; |
||||
}, |
||||
computed: { |
||||
|
||||
}, |
||||
|
||||
actions: { |
||||
initData(callback: Function) { |
||||
fetchLinkList((linkList: LinkType[]) => { |
||||
this.model.linkList = linkList; |
||||
this.model.tab = TAB_LINK_SET; |
||||
callback(); |
||||
}); |
||||
}, |
||||
}, |
||||
}; |
||||
|
||||
BI.model(className, BI.inherit(Fix.Model, Model)); |
||||
|
||||
export default className; |
@ -1,55 +0,0 @@
|
||||
import {Vtape, Absolute, LinearSegment} from '../ui/index'; |
||||
import appModel from './app.model'; |
||||
import title from './title/title'; |
||||
import linkSet from './connection/link_set'; |
||||
import linkStatus from './status/link_status'; |
||||
import '../less/index.less'; |
||||
|
||||
const className = 'dec.dcm.main'; |
||||
const Widget = BI.inherit(BI.Widget, { |
||||
props: { |
||||
baseCls: 'dec-webui-dcm-layout bi-background', |
||||
}, |
||||
_store() { |
||||
return BI.Models.getModel(appModel); |
||||
}, |
||||
beforeInit (callback) { |
||||
this.store.initData(callback); |
||||
}, |
||||
render() { |
||||
return { |
||||
type: Vtape, |
||||
items: [ |
||||
{ |
||||
el: { |
||||
type: title, |
||||
}, |
||||
height: 40, |
||||
}, |
||||
{ |
||||
type: Absolute, |
||||
items: [{ |
||||
el: { |
||||
type: linkSet, |
||||
}, |
||||
left: 10, |
||||
top: 10, |
||||
right: 10, |
||||
bottom: 10, |
||||
}, { |
||||
el: { |
||||
type: linkStatus, |
||||
}, |
||||
left: 10, |
||||
top: 10, |
||||
right: 10, |
||||
bottom: 10, |
||||
}], |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
}); |
||||
BI.shortcut(className, Widget); |
||||
|
||||
export default className; |
@ -1,4 +0,0 @@
|
||||
@import '../../../../less/index.less'; |
||||
.dec-webui-dcm-connection-left-item{ |
||||
.hover-visible(link-item-icon); |
||||
} |
@ -1,77 +0,0 @@
|
||||
import './left_item.less'; |
||||
import {WidgetType, Icon, TextButton, LeftRightVerticalAdapt} from '@ui'; |
||||
import ItemIcon from './left_item_icon'; |
||||
import ItemDelete from './left_item_delete'; |
||||
import Model from '../../link_set.model'; |
||||
import {ACTION_COPY, ACTION_TEST, ACTION_DELETE, DEFAULT_INFO} from '@private/constants'; |
||||
const className = 'dec.dcm.component.linkSet.left.item'; |
||||
const Widget: WidgetType = { |
||||
props: { |
||||
title: '', |
||||
id: '', |
||||
creator: '', |
||||
baseCls: 'dec-webui-dcm-connection-left-item bi-list-item-active', |
||||
}, |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
render() { |
||||
const {title, creator, text, id} = this.options; |
||||
|
||||
return { |
||||
type: LeftRightVerticalAdapt, |
||||
items: { |
||||
left: [ |
||||
{ |
||||
type: Icon, |
||||
cls: 'dcm-link-font', |
||||
height: 25, |
||||
width: 25, |
||||
text: BI.i18nText('Dec-Dcm_Connections'), |
||||
title, |
||||
}, |
||||
{ |
||||
type: TextButton, |
||||
text: title, |
||||
title, |
||||
}, |
||||
], |
||||
right: [ |
||||
{ |
||||
type: ItemIcon, |
||||
cls: 'link-item-icon dcm-test-font', |
||||
title: BI.i18nText('Dec-Dcm_Test_Connection'), |
||||
value: ACTION_TEST, |
||||
id, |
||||
}, |
||||
{ |
||||
type: ItemIcon, |
||||
cls: 'link-item-icon copy-font', |
||||
title: BI.i18nText('Dec-Dcm_Copy'), |
||||
value: ACTION_COPY, |
||||
id, |
||||
}, |
||||
{ |
||||
type: ItemIcon, |
||||
cls: 'link-item-icon dcm-info-font', |
||||
title: `${BI.i18nText('Dec-Dcm_Type')}:${text === DEFAULT_INFO ? BI.i18nText('Dec-Dcm_Other') : text} \r\n${BI.i18nText('Dec-Dcm_Creator')}:${creator}`, |
||||
id, |
||||
}, |
||||
{ |
||||
type: ItemDelete, |
||||
cls: 'link-item-icon dcm-delete-font', |
||||
title: BI.i18nText('Dec-Dcm_Delete'), |
||||
value: ACTION_DELETE, |
||||
id, |
||||
}, |
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
doClick() { |
||||
const {title} = this.options; |
||||
this.store.setLinkSelected(title); |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.BasicButton, Widget)); |
||||
export default className; |
@ -1,43 +0,0 @@
|
||||
import {WidgetType, Icon, BubbleCombo, TextBubblePopupBarView} from '@ui'; |
||||
import Model from '../../link_set.model'; |
||||
|
||||
const className = 'dec.dcm.component.linkSet.left.item.icon.delete'; |
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
render() { |
||||
const {title, id} = this.options; |
||||
const that = this; |
||||
|
||||
return { |
||||
type: BubbleCombo, |
||||
stopPropagation: true, |
||||
direction: 'bottom', |
||||
ref: _ref => { |
||||
this.combo = _ref; |
||||
}, |
||||
el: { |
||||
type: Icon, |
||||
height: 25, |
||||
width: 25, |
||||
title, |
||||
}, |
||||
popup: { |
||||
type: TextBubblePopupBarView, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Make_Sure_Delete'), |
||||
listeners: [{ |
||||
eventName: BI.BubblePopupBarView.EVENT_CLICK_TOOLBAR_BUTTON, |
||||
action (type: boolean) { |
||||
that.combo.hideView(); |
||||
if (type) { |
||||
that.store.onIconClick(title, id); |
||||
} |
||||
}, |
||||
}], |
||||
}, |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,26 +0,0 @@
|
||||
import {WidgetType, IconButton} from '@ui'; |
||||
import Model from '../../link_set.model'; |
||||
|
||||
const className = 'dec.dcm.component.linkSet.left.item.icon'; |
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
render() { |
||||
const {title} = this.options; |
||||
|
||||
return { |
||||
type: IconButton, |
||||
height: 25, |
||||
width: 25, |
||||
stopPropagation: true, |
||||
title, |
||||
handler: () => { |
||||
const {id, title} = this.options; |
||||
this.store.onIconClick(title, id); |
||||
}, |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,39 +0,0 @@
|
||||
import {WidgetType, ListView} from '@ui'; |
||||
import Model from '../link_set.model'; |
||||
import {LinkType} from '@ui/type'; |
||||
import LeftItem from './item/left_item'; |
||||
|
||||
const className = 'dec.dcm.component.linkset.left'; |
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
watch: { |
||||
linkList(linkList: LinkType[]) { |
||||
this.leftContent.populate(BI.createItems(this._renderItems(linkList))); |
||||
}, |
||||
}, |
||||
render() { |
||||
return { |
||||
type: ListView, |
||||
ref: _ref => { |
||||
this.leftContent = _ref; |
||||
}, |
||||
items: this._renderItems(this.model.linkList), |
||||
}; |
||||
}, |
||||
_renderItems(linkList: LinkType[]) { |
||||
return BI.map(linkList, (index: number, item: LinkType) => { |
||||
return { |
||||
type: LeftItem, |
||||
selected: item.isSelected, |
||||
title: item.connectionName, |
||||
id: item.connectionId, |
||||
creator: item.creator, |
||||
text: item.text ? item.text : BI.i18nText('Dec-Dcm_Default'), |
||||
}; |
||||
}); |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,50 +0,0 @@
|
||||
import {LinkType} from '@ui/type'; |
||||
import {saveConnection} from './link_set.service'; |
||||
|
||||
const mixinName = 'dec.dcm.minxin.linkset'; |
||||
const Mixin = { |
||||
setConnectionNameErr(err: string) { |
||||
this.model.connectionNameErr = err; |
||||
}, |
||||
setEdit(type: boolean) { |
||||
this.model.linkSelected = { |
||||
...this.model.linkSelected, |
||||
isSelected: type, |
||||
}; |
||||
this.model.linkUpdate = this.model.linkSelected; |
||||
}, |
||||
setCancel() { |
||||
const linkSelected: LinkType = this.model.linkSelected; |
||||
const linkList: LinkType[] = this.model.linkList; |
||||
if (linkSelected.connectionId) { |
||||
this.setEdit(false); |
||||
} else { |
||||
this.model.linkList = [ |
||||
...linkList.filter(item => !!item.connectionId), |
||||
]; |
||||
if (this.model.linkList.length > 0) { |
||||
this.model.linkList[0].isSelected = true; |
||||
this.model.linkSelected = { |
||||
...this.model.linkList[0], |
||||
isSelected: false, |
||||
}; |
||||
} else { |
||||
this.model.linkSelected = {}; |
||||
} |
||||
this.model.linkUpdate = this.model.linkSelected; |
||||
} |
||||
}, |
||||
saveLink() { |
||||
const pluginData = this.model.linkUpdate.text ? BI.Constants.getConstant(`dec.constant.database.conf.connect.form.${this.model.linkUpdate.text.toLowerCase()}.value`) : {}; |
||||
const update = { |
||||
...this.model.linkUpdate, |
||||
...pluginData, |
||||
}; |
||||
saveConnection(update).then(() => { |
||||
this.setEdit(false); |
||||
}); |
||||
}, |
||||
}; |
||||
|
||||
Fix.mixin(mixinName, Mixin); |
||||
export default mixinName; |
@ -1,154 +0,0 @@
|
||||
import {LinkType} from '@ui/type'; |
||||
import {deleteConnection, testConnection} from '@shared/crud/crud.request'; |
||||
import {getCnnectionName} from './select/select.service'; |
||||
import {DATA_BASE_TYPE} from '@private/constants'; |
||||
import dialog from '@shared/service/dialog.service'; |
||||
import Mixin from './link_set.mixin'; |
||||
const className = 'dec.dcm.model.linkset'; |
||||
const Model = { |
||||
context: ['tab', 'linkList', 'linkSelected', 'linkUpdate', 'connectionNameErr'], |
||||
mixins: [Mixin], |
||||
actions: { |
||||
/** |
||||
* 左侧点击链接选中 |
||||
* @param name |
||||
*/ |
||||
setLinkSelected(name: string) { |
||||
this._noSaveConfirm(() => { |
||||
this._setLinkSelected(name); |
||||
}); |
||||
}, |
||||
onIconClick(title: string, id: string) { |
||||
switch (title) { |
||||
case BI.i18nText('Dec-Dcm_Delete'): |
||||
deleteConnection(id, () => { |
||||
this.model.linkList = [...this.model.linkList.filter((item: LinkType) => item.connectionId !== id)]; |
||||
this.model.linkSelected = {}; |
||||
this.model.linkUpdate = {}; |
||||
}); |
||||
break; |
||||
case BI.i18nText('Dec-Dcm_Test_Connection'): |
||||
this._textLink(id); |
||||
break; |
||||
case BI.i18nText('Dec-Dcm_Copy'): |
||||
this._noSaveConfirm(() => { |
||||
this.copyLink(id); |
||||
}); |
||||
break; |
||||
default: |
||||
break; |
||||
} |
||||
}, |
||||
copyLink(id: string) { |
||||
const connectionName = BI.find(this.model.linkList, (index: number, item: LinkType) => item.connectionId === id).connectionName; |
||||
const name = getCnnectionName(this.model.linkList, connectionName); |
||||
let data = {}; |
||||
this.model.linkList.forEach((item: LinkType) => { |
||||
if (item.connectionId === id) { |
||||
data = item; |
||||
} |
||||
}); |
||||
const newCopy = { |
||||
...data, |
||||
isSelected: true, |
||||
connectionName: name, |
||||
connectionId: '', |
||||
}; |
||||
this.model.linkList = [ |
||||
newCopy, |
||||
...this.model.linkList, |
||||
]; |
||||
this.model.linkSelected = { |
||||
...newCopy, |
||||
}; |
||||
this.model.linkUpdate = { |
||||
...newCopy, |
||||
}; |
||||
}, |
||||
setLinkUpdate(value: any) { |
||||
this.model.linkUpdate = value; |
||||
}, |
||||
setNewLink(value: string) { |
||||
if (!DATA_BASE_TYPE.some(item => item.text === value) && !BI.Constants.getConstant(`dec.constant.database.conf.connect.form.${value.toLowerCase()}.edit`)) { |
||||
dialog.error(BI.i18nText('Dec-Dcm_Connection_Option_Cannot_Find')); |
||||
|
||||
return; |
||||
} |
||||
this._noSaveConfirm(() => { |
||||
this._setNewLink(value); |
||||
}); |
||||
}, |
||||
}, |
||||
_setLinkSelected(name: string) { |
||||
this.model.linkList.forEach((item: LinkType) => { |
||||
item.isSelected = item.connectionName === name; |
||||
if (item.connectionName === name) { |
||||
this.model.linkSelected = { |
||||
...item, |
||||
isSelected: false, |
||||
}; |
||||
} |
||||
}); |
||||
this.model.linkList = [...this.model.linkList]; |
||||
this.model.linkUpdate = this.model.linkSelected; |
||||
}, |
||||
_textLink(id: string) { |
||||
const link = this.model.linkList.find((item: LinkType) => item.connectionId === id); |
||||
const loadingId = dialog.loading(BI.i18nText('Dec-Dcm_Connection_Testing')); |
||||
testConnection(link, (res: any) => { |
||||
dialog.remove(loadingId); |
||||
if (res && res.errorCode) { |
||||
dialog.linkFail(`${link.connectionName}${BI.i18nText('Dec-Dcm_Connection_Test_Fail')}`, res.errorMsg, () => { |
||||
this._textLink(id); |
||||
}); |
||||
} else { |
||||
dialog.success(BI.i18nText('Dec-Dcm_Connection_Test_Success')); |
||||
} |
||||
}); |
||||
}, |
||||
_setNewLink(value: string) { |
||||
const name = getCnnectionName(this.model.linkList, value); |
||||
let data = {}; |
||||
DATA_BASE_TYPE.forEach(item => { |
||||
if (item.text === value) { |
||||
data = item; |
||||
} |
||||
}); |
||||
this.model.linkList = [ |
||||
{ |
||||
connectionName: name, |
||||
isSelected: true, |
||||
...data, |
||||
text: value, |
||||
}, |
||||
...this.model.linkList, |
||||
]; |
||||
this.model.linkSelected = { |
||||
...data, |
||||
connectionName: name, |
||||
isSelected: true, |
||||
text: value, |
||||
}; |
||||
this.model.linkUpdate = { |
||||
...data, |
||||
connectionName: name, |
||||
text: value, |
||||
}; |
||||
}, |
||||
_noSaveConfirm(cb: Function) { |
||||
if (this.model.linkSelected && this.model.linkSelected.isSelected) { |
||||
dialog.confirm(BI.i18nText('Dec-Dcm_Connection_Config_No_Save'), (isConfirm: boolean) => { |
||||
if (isConfirm) { |
||||
this.saveLink(); |
||||
} else { |
||||
this.setCancel(); |
||||
} |
||||
cb(); |
||||
}); |
||||
} else { |
||||
cb(); |
||||
} |
||||
}, |
||||
}; |
||||
BI.model(className, BI.inherit(Fix.Model, Model)); |
||||
export default className; |
@ -1,26 +0,0 @@
|
||||
import {LinkType} from '@ui/type'; |
||||
import {addConnection, updateConnection} from '@shared/crud/crud.request'; |
||||
|
||||
export function saveConnection(linkUpdate: LinkType): Promise<string> { |
||||
if (linkUpdate.connectionId) { |
||||
return new Promise(((resolve, reject) => { |
||||
try { |
||||
addConnection(linkUpdate, (res: string) => { |
||||
resolve(res); |
||||
}); |
||||
} catch (error) { |
||||
reject(error); |
||||
} |
||||
})); |
||||
} |
||||
|
||||
return new Promise(((resolve, reject) => { |
||||
try { |
||||
updateConnection(linkUpdate, (res: string) => { |
||||
resolve(res); |
||||
}); |
||||
} catch (error) { |
||||
reject(error); |
||||
} |
||||
})); |
||||
} |
@ -1,58 +0,0 @@
|
||||
import {Htape, WidgetType, Vtape, VerticalAdapt} from '@ui'; |
||||
import LeftList from './left/left'; |
||||
import linkSetModel from './link_set.model'; |
||||
import Select from './select/select'; |
||||
import Right from './right/right'; |
||||
import {TAB_LINK_SET} from '@private/constants'; |
||||
const className = 'dec.dcm.linkset'; |
||||
const Widget: WidgetType = { |
||||
props: { |
||||
baseCls: 'bi-card', |
||||
}, |
||||
_store() { |
||||
return BI.Models.getModel(linkSetModel); |
||||
}, |
||||
watch: { |
||||
tab(tab: string) { |
||||
this.setVisible(tab === TAB_LINK_SET); |
||||
}, |
||||
}, |
||||
render() { |
||||
return { |
||||
type: Htape, |
||||
items: [{ |
||||
el: { |
||||
type: Vtape, |
||||
cls: 'dcm-link-left bi-border-right', |
||||
items: [ |
||||
{ |
||||
el: { |
||||
type: VerticalAdapt, |
||||
cls: 'bi-border-bottom', |
||||
items: [ |
||||
{ |
||||
type: Select, |
||||
hgap: 10, |
||||
vgap: 10, |
||||
}, |
||||
], |
||||
}, |
||||
height: 40, |
||||
}, { |
||||
type: LeftList, |
||||
cls: 'left-list', |
||||
vgap: 10, |
||||
hgap: 10, |
||||
}, |
||||
], |
||||
}, |
||||
width: 280, |
||||
}, { |
||||
type: Right, |
||||
}], |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
|
||||
export default className; |
@ -1,6 +0,0 @@
|
||||
@import '../../../../less/index.less'; |
||||
.dec-webui-dcm-connection-more-link-item{ |
||||
&:hover{ |
||||
border-color :@border-color-highlight; |
||||
} |
||||
} |
@ -1,68 +0,0 @@
|
||||
import './more_link_item.less'; |
||||
import {WidgetType, Img, Label, Layout, Absolute, Vtape} from '@ui/index'; |
||||
import ModelName from './more_link_litem.model'; |
||||
|
||||
const className = 'dec.dcm.component.linkSet.morelink.item'; |
||||
const Widget: WidgetType = { |
||||
props: { |
||||
baseCls: 'dec-webui-dcm-connection-more-link-item bi-border', |
||||
height: 120, |
||||
width: 120, |
||||
}, |
||||
_store() { |
||||
return BI.Models.getModel(ModelName); |
||||
}, |
||||
watch: { |
||||
otherSelected(otherSelected: string) { |
||||
const {text} = this.options; |
||||
this.selected.setVisible(text === otherSelected); |
||||
}, |
||||
}, |
||||
render() { |
||||
const {text, name} = this.options; |
||||
|
||||
return { |
||||
type: Vtape, |
||||
items: [ |
||||
{ |
||||
type: Absolute, |
||||
items: [ |
||||
{ |
||||
el: { |
||||
type: Img, |
||||
src: this._buildResourceUrl(name), |
||||
}, |
||||
}, |
||||
{ |
||||
el: { |
||||
type: Layout, |
||||
cls: 'dcm-link-more-selected', |
||||
invisible: true, |
||||
width: 30, |
||||
height: 30, |
||||
ref: _ref => { |
||||
this.selected = _ref; |
||||
}, |
||||
}, |
||||
right: 0, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
el: { |
||||
type: Label, |
||||
cls: 'bi-header-background', |
||||
text, |
||||
}, |
||||
height: 30, |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
_buildResourceUrl(name: string) { |
||||
// TODO: 目前不知道生产环境下的图片的绝对地址,先这样写用于测试。
|
||||
return `img/${name}.jpg`; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.BasicButton, Widget)); |
||||
export default className; |
@ -1,6 +0,0 @@
|
||||
const className = 'dec.dcm.model.link_set.more_link_item'; |
||||
export const Model = BI.inherit(Fix.Model, { |
||||
context: ['otherSelected'], |
||||
}); |
||||
BI.model(className, Model); |
||||
export default className; |
@ -1,16 +0,0 @@
|
||||
const className = 'dec.dcm.model.link_set.more_link'; |
||||
export const Model = BI.inherit(Fix.Model, { |
||||
childContext: ['otherSelected'], |
||||
state() { |
||||
return { |
||||
otherSelected: '', |
||||
}; |
||||
}, |
||||
actions: { |
||||
setOtherSelected(name: string) { |
||||
this.model.otherSelected = name; |
||||
}, |
||||
}, |
||||
}); |
||||
BI.model(className, Model); |
||||
export default className; |
@ -1,50 +0,0 @@
|
||||
import MoreLink from './more_link'; |
||||
let subbitButton = null; |
||||
let selectKey = ''; |
||||
export const moreLink = (onConfirm?: Function): void => { |
||||
const id = BI.UUID(); |
||||
BI.Popovers.create(id, { |
||||
type: 'bi.bar_popover', |
||||
size: 'normal', |
||||
header: BI.i18nText('Dec-Dcm_Connection_More_Title'), |
||||
width: 560, |
||||
height: 500, |
||||
body: { |
||||
type: MoreLink, |
||||
listeners: [ |
||||
{ |
||||
eventName: 'EVENT_SELECT', |
||||
action (text: string) { |
||||
selectKey = text; |
||||
subbitButton.setEnable(true); |
||||
}, |
||||
}, |
||||
], |
||||
}, |
||||
footer: { |
||||
type: 'bi.right_vertical_adapt', |
||||
lgap: 10, |
||||
items: [{ |
||||
type: 'bi.button', |
||||
text: BI.i18nText('BI-Basic_Cancel'), |
||||
value: 1, |
||||
level: 'ignore', |
||||
handler () { |
||||
BI.Popovers.close(id); |
||||
}, |
||||
}, { |
||||
type: 'bi.button', |
||||
text: BI.i18nText('BI-Basic_Sure'), |
||||
disabled: true, |
||||
value: 0, |
||||
ref: _ref => { |
||||
subbitButton = _ref; |
||||
}, |
||||
handler () { |
||||
BI.Popovers.close(id); |
||||
onConfirm ? onConfirm(selectKey) : null; |
||||
}, |
||||
}], |
||||
}, |
||||
}).open(id); |
||||
}; |
@ -1,52 +0,0 @@
|
||||
import {WidgetType, SearchEditor, Left, Vtape, VerticalAdapt} from '@ui/index'; |
||||
import {DATA_BASE_TYPE_OTHER} from '@private/constants'; |
||||
import MoreLinkItem from './item/more_link_item'; |
||||
import ModelName from './more_link.model'; |
||||
const className = 'dec.dcm.component.linkSet.morelink'; |
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(ModelName); |
||||
}, |
||||
render() { |
||||
return { |
||||
type: Vtape, |
||||
items: [ |
||||
{ |
||||
el: { |
||||
type: VerticalAdapt, |
||||
items: [{ |
||||
type: SearchEditor, |
||||
width: 300, |
||||
watermark: BI.i18nText('Dec-Dcm_Search'), |
||||
}], |
||||
}, |
||||
height: 30, |
||||
}, |
||||
{ |
||||
type: Left, |
||||
scrolly: true, |
||||
tgap: 2, |
||||
rgap: 2, |
||||
bgap: 2, |
||||
lgap: 2, |
||||
items: this._createItems(), |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
_createItems() { |
||||
return BI.map(DATA_BASE_TYPE_OTHER, (index: number, item) => { |
||||
return { |
||||
type: MoreLinkItem, |
||||
text: item.text, |
||||
name: item.databaseType, |
||||
handler: () => { |
||||
this.store.setOtherSelected(item.text); |
||||
this.fireEvent('EVENT_SELECT', item.text); |
||||
}, |
||||
}; |
||||
}); |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,30 +0,0 @@
|
||||
import {WidgetType, Layout, Label, HorizotalAdapt, Vtape} from '@ui/index'; |
||||
const className = 'dec.dcm.component.right.nothing'; |
||||
const Widget: WidgetType = { |
||||
render() { |
||||
return { |
||||
type: HorizotalAdapt, |
||||
top: 200, |
||||
items: [{ |
||||
type: Vtape, |
||||
width: 260, |
||||
height: 150, |
||||
items: [ |
||||
{ |
||||
el: { |
||||
type: Layout, |
||||
cls: 'data-connection-background', |
||||
}, |
||||
height: 130, |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Plase_Add_One'), |
||||
}, |
||||
], |
||||
}], |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,33 +0,0 @@
|
||||
import {WidgetType, ListView} from '@ui'; |
||||
import {LinkType} from '@ui/type'; |
||||
import Nothing from './nothing'; |
||||
import RightDetail from './right_detail/right_detail'; |
||||
import Model from '../link_set.model'; |
||||
const className = 'dec.dcm.component.right'; |
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
watch: { |
||||
linkSelected(linkSelected: LinkType) { |
||||
this.rightContent.populate(BI.createItems([ |
||||
{ |
||||
type: (linkSelected && linkSelected.connectionName) ? RightDetail : Nothing, |
||||
}, |
||||
])); |
||||
}, |
||||
}, |
||||
render() { |
||||
return { |
||||
type: ListView, |
||||
ref: _ref => { |
||||
this.rightContent = _ref; |
||||
}, |
||||
items: [{ |
||||
type: Nothing, |
||||
}], |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,25 +0,0 @@
|
||||
export interface AttributeType { |
||||
text: string; |
||||
name: string; |
||||
} |
||||
|
||||
export interface FormType { |
||||
connectionName?: string; |
||||
factory?: string; |
||||
url?: string; |
||||
principal?: string; |
||||
credentials?: string; |
||||
originalCharsetName?: string; |
||||
|
||||
objectFactories?: string; |
||||
stateFactories?: string; |
||||
urlPkgPrefixes?: string; |
||||
dnsUrl?: string; |
||||
authoritative?: string; |
||||
batchSize?: string; |
||||
referral?: string; |
||||
securityProtocol?: string; |
||||
securityAuthentication?: string; |
||||
language?: string; |
||||
applet?: string; |
||||
} |
@ -1,6 +0,0 @@
|
||||
const className = 'dec.dcm.model.link.set.right.detail'; |
||||
export const Model = BI.inherit(Fix.Model, { |
||||
context: ['linkSelected'], |
||||
}); |
||||
BI.model(className, Model); |
||||
export default className; |
@ -1,74 +0,0 @@
|
||||
import {WidgetType, ListView} from '@ui/index'; |
||||
import Model from './right_detail.model'; |
||||
import {LinkType} from '@ui/type'; |
||||
import Title from '../right_title/right_title'; |
||||
import RightShow from '../right_show/right_show'; |
||||
import RightShowJndi from '../right_show/right_show_jndi'; |
||||
import RightEdit from '../right_edit/right_edit'; |
||||
import RightEditMysql from '../right_edit/right_edit_mysql'; |
||||
import RightEditJndi from '../right_edit/right_edit_jndi'; |
||||
import pluginListConstant from '../../../app.constant'; |
||||
import {MYSQL_CONNECT, JNDI_CONNECT} from '@private/constants'; |
||||
|
||||
const className = 'dec.dcm.component.right.detail'; |
||||
|
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
watch: { |
||||
linkSelected(linkSelected: LinkType) { |
||||
const showPage = this._createItems(linkSelected); |
||||
this.rightDetail.populate(BI.createItems(showPage)); |
||||
}, |
||||
}, |
||||
render() { |
||||
const linkSelected = this.model.linkSelected; |
||||
|
||||
return { |
||||
type: ListView, |
||||
ref: _ref => { |
||||
this.rightDetail = _ref; |
||||
}, |
||||
items: this._createItems(linkSelected), |
||||
}; |
||||
}, |
||||
_createItems(linkSelected: LinkType) { |
||||
const plugins: string[] = BI.Constants.getConstant(pluginListConstant); |
||||
const isPlugin = BI.some(plugins, (index: number, item: string) => item === linkSelected.text); |
||||
let editPage = null; |
||||
let showPage = null; |
||||
switch (linkSelected.text) { |
||||
case (MYSQL_CONNECT): |
||||
editPage = RightEditMysql; |
||||
showPage = RightShow; |
||||
break; |
||||
case (JNDI_CONNECT): |
||||
editPage = RightEditJndi; |
||||
showPage = RightShowJndi; |
||||
break; |
||||
default: |
||||
editPage = RightEdit; |
||||
showPage = RightShow; |
||||
} |
||||
if (isPlugin) { |
||||
editPage = BI.Constants.getConstant(`dec.constant.database.conf.connect.form.${linkSelected.text.toLowerCase()}.edit`); |
||||
showPage = BI.Constants.getConstant(`dec.constant.database.conf.connect.form.${linkSelected.text.toLowerCase()}.preview`); |
||||
} |
||||
|
||||
return [ |
||||
{ |
||||
type: Title, |
||||
isEdit: linkSelected.isSelected, |
||||
linkSelected, |
||||
}, { |
||||
type: linkSelected.isSelected ? editPage : showPage, |
||||
vgap: 10, |
||||
hgap: 10, |
||||
linkSelected, |
||||
}, |
||||
]; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,20 +0,0 @@
|
||||
export const className = 'dec.dcm.model.components.right.edit'; |
||||
export const Model = BI.inherit(Fix.Model, { |
||||
state() { |
||||
return { |
||||
isCollapse: false, |
||||
}; |
||||
}, |
||||
|
||||
computed: { |
||||
|
||||
}, |
||||
|
||||
actions: { |
||||
setIsCollapse(status: boolean) { |
||||
this.model.isCollapse = status; |
||||
}, |
||||
}, |
||||
}); |
||||
BI.model(className, Model); |
||||
export default className; |
@ -1,24 +0,0 @@
|
||||
import {LinkType} from '@ui/type'; |
||||
|
||||
export function getDrivers(linkSelected: LinkType): {text: string; value: string}[] { |
||||
const drivers: {text: string; value: string}[] = []; |
||||
if (linkSelected.drivers && linkSelected.drivers.length > 0) { |
||||
linkSelected.drivers.forEach(item => { |
||||
drivers.push({ |
||||
text: item, |
||||
value: item, |
||||
}); |
||||
}); |
||||
} else { |
||||
drivers.push({ |
||||
text: linkSelected.driver, |
||||
value: linkSelected.driver, |
||||
}); |
||||
} |
||||
|
||||
return drivers; |
||||
} |
||||
|
||||
export function connectNameChecker(name: string): boolean { |
||||
return /^\+?[1-9][0-9]*$/.test(name); |
||||
} |
@ -1,373 +0,0 @@
|
||||
import {WidgetType, Vertical, MultiSelectItem, TextAreaEditor, Button, TextValueCombo, TextEditor, VerticalAdapt, Label} from '@ui/index'; |
||||
import {LinkType} from '@ui/type'; |
||||
import {CONNECT_CHARSET} from '@private/constants'; |
||||
import Model from '../../link_set.model'; |
||||
import Title from '@shared/components/title'; |
||||
import {getDrivers, connectNameChecker} from './right_edit.service'; |
||||
let connectionName: any = null; |
||||
const className = 'dec.dcm.component.right.edit'; |
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
watch: { |
||||
connectionNameErr(msg: string) { |
||||
if (msg) { |
||||
BI.Bubbles.show('singleBubble', msg, connectionName, { |
||||
level: 'error', |
||||
}); |
||||
} else { |
||||
BI.Bubbles.hide('singleBubble'); |
||||
} |
||||
}, |
||||
}, |
||||
render() { |
||||
const linkSelected: LinkType = this.model.linkSelected; |
||||
const that = this; |
||||
|
||||
return { |
||||
type: Vertical, |
||||
vgap: 10, |
||||
items: [ |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_ConnectionName'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
width: 300, |
||||
value: linkSelected.connectionName, |
||||
ref(ref: any) { |
||||
connectionName = ref; |
||||
}, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
connectionName: this.getValue(), |
||||
}); |
||||
}, |
||||
}, { |
||||
eventName: BI.Editor.EVENT_FOCUS, |
||||
action() { |
||||
that.store.setConnectionNameErr(''); |
||||
}, |
||||
}], |
||||
}, |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-water-mark', |
||||
lgap: 5, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_ConnectionName-Change-Confirm'), |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_First_Step'), |
||||
}, |
||||
{ |
||||
type: Vertical, |
||||
vgap: 10, |
||||
items: [ |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Driver'), |
||||
}, |
||||
{ |
||||
type: TextValueCombo, |
||||
width: 300, |
||||
text: linkSelected.driver, |
||||
items: getDrivers(linkSelected), |
||||
listeners: [{ |
||||
eventName: BI.TextValueCombo.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
driver: this.getValue()[0], |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_URL'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'), |
||||
width: 300, |
||||
value: linkSelected.url, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
url: this.getValue(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_OriginalCharsetName'), |
||||
}, |
||||
{ |
||||
type: TextValueCombo, |
||||
width: 300, |
||||
text: linkSelected.originalCharsetName === '' ? BI.i18nText('Dec-Dcm_Connection_Form_Auto') : linkSelected.originalCharsetName, |
||||
items: [ |
||||
{ |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Auto'), |
||||
value: '', |
||||
}, |
||||
...CONNECT_CHARSET, |
||||
], |
||||
listeners: [{ |
||||
eventName: BI.TextValueCombo.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
originalCharsetName: this.getValue()[0], |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_UserName'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
allowBlank: true, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'), |
||||
width: 300, |
||||
value: linkSelected.user, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
user: this.getValue(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Password'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
inputType: 'password', |
||||
allowBlank: true, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'), |
||||
width: 300, |
||||
value: linkSelected.password, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
password: this.getValue(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: Title, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Pool_Properties'), |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_SQL_Validation_Query'), |
||||
}, |
||||
{ |
||||
type: TextAreaEditor, |
||||
cls: 'bi-border', |
||||
allowBlank: true, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'), |
||||
width: 300, |
||||
height: 100, |
||||
value: linkSelected.validationQuery, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
validationQuery: this.getValue(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Connection-Check'), |
||||
}, |
||||
{ |
||||
type: MultiSelectItem, |
||||
text: BI.i18nText('Dec-Dcm_Yes'), |
||||
selected: linkSelected.testOnBorrow, |
||||
width: 60, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
testOnBorrow: this.isSelected(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Connection_Max_Number'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
allowBlank: true, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'), |
||||
width: 60, |
||||
value: linkSelected.maxActive, |
||||
errorText: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input-Number'), |
||||
validationChecker: connectNameChecker, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
maxActive: this.getValue(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Second_Step'), |
||||
}, |
||||
{ |
||||
type: Button, |
||||
width: 80, |
||||
text: BI.i18nText('Dec-Dcm_Test_Connection'), |
||||
level: 'ignore', |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Third_Step'), |
||||
}, |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Pattern'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
width: 300, |
||||
disabled: true, |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,226 +0,0 @@
|
||||
import {Vertical, TextValueCombo, TextButton, Label, TextEditor, VerticalAdapt} from '@ui'; |
||||
import {JNDI_FACTORYS, OTHER_ATTRIBUTES, CONNECT_CHARSET} from '@private/constants'; |
||||
import {AttributeType} from '../right.typing'; |
||||
import ModelName from './right_edit.model'; |
||||
|
||||
const classNameEdit = 'dec.dcm.component.right.edit.jndi'; |
||||
const Widget = BI.inherit(BI.Widget, { |
||||
_store() { |
||||
return BI.Models.getModel(ModelName); |
||||
}, |
||||
watch: { |
||||
isCollapse(isCollapse) { |
||||
const text = isCollapse ? BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Collapse-Attributes') : BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Other_Attributes'); |
||||
this.collapseRef.setText(text); |
||||
this.otherAttributesRef.setVisible(isCollapse); |
||||
}, |
||||
}, |
||||
render() { |
||||
const {connectionName, url, factory, principal, credentials, originalCharsetName} = this.options; |
||||
|
||||
return { |
||||
type: Vertical, |
||||
vgap: 10, |
||||
items: [ |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_JNDI_Form_ConnectionName'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
width: 300, |
||||
allowBlank: true, |
||||
value: connectionName, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Context'), |
||||
}, |
||||
{ |
||||
type: Vertical, |
||||
vgap: 10, |
||||
items: [ |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: 'INTIAL_CONTEXT_FACTORY', |
||||
}, |
||||
{ |
||||
type: TextValueCombo, |
||||
width: 300, |
||||
value: factory, |
||||
items: BI.map(JNDI_FACTORYS, (index: number, item: string) => { |
||||
return { |
||||
text: item, |
||||
value: item, |
||||
}; |
||||
}), |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: 'PROVIDER_URL', |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
width: 300, |
||||
allowBlank: true, |
||||
value: url, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: 'SECURITY_PRINCIPAL', |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
width: 300, |
||||
allowBlank: true, |
||||
value: principal, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: 'SECURITY_CREDENTIALS', |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
width: 300, |
||||
allowBlank: true, |
||||
value: credentials, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: TextButton, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Other_Attributes'), |
||||
width: 480, |
||||
textAlign: 'right', |
||||
ref: _ref => { |
||||
this.collapseRef = _ref; |
||||
}, |
||||
handler: () => { |
||||
this.store.setIsCollapse(!this.model.isCollapse); |
||||
}, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: Vertical, |
||||
invisible: true, |
||||
ref: _ref => { |
||||
this.otherAttributesRef = _ref; |
||||
}, |
||||
items: this._getOtherItems(), |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-error', |
||||
lgap: 10, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Notice'), |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Advanced'), |
||||
}, |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_OriginalCharsetName'), |
||||
}, |
||||
{ |
||||
type: TextValueCombo, |
||||
width: 300, |
||||
items: [{ |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Auto'), |
||||
value: originalCharsetName, |
||||
}, |
||||
...CONNECT_CHARSET, |
||||
], |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
_getOtherItems() { |
||||
return BI.map(OTHER_ATTRIBUTES, (index: number, item: AttributeType) => { |
||||
return { |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: item.text, |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
width: 300, |
||||
allowBlank: true, |
||||
value: this.options[item.name], |
||||
}, |
||||
], |
||||
}; |
||||
}); |
||||
}, |
||||
}); |
||||
BI.shortcut(classNameEdit, Widget); |
||||
export default classNameEdit; |
@ -1,325 +0,0 @@
|
||||
import {WidgetType, Vertical, MultiSelectItem, TextAreaEditor, Button, TextValueCombo, TextEditor, VerticalAdapt, Label} from '@ui/index'; |
||||
import {LinkType} from '@ui/type'; |
||||
import {CONNECT_CHARSET} from '@private/constants'; |
||||
import Model from '../../link_set.model'; |
||||
import Title from '@shared/components/title'; |
||||
import {getDrivers, connectNameChecker} from './right_edit.service'; |
||||
let connectionName: any = null; |
||||
const className = 'dec.dcm.component.right.edit.mysql'; |
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
watch: { |
||||
connectionNameErr(msg: string) { |
||||
if (msg) { |
||||
BI.Bubbles.show('singleBubble', msg, connectionName, { |
||||
level: 'error', |
||||
}); |
||||
} else { |
||||
BI.Bubbles.hide('singleBubble'); |
||||
} |
||||
}, |
||||
}, |
||||
render() { |
||||
const linkSelected: LinkType = this.model.linkSelected; |
||||
const that = this; |
||||
|
||||
return { |
||||
type: Vertical, |
||||
vgap: 10, |
||||
items: [ |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_ConnectionName'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
width: 300, |
||||
value: linkSelected.connectionName, |
||||
ref(ref: any) { |
||||
connectionName = ref; |
||||
}, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
connectionName: this.getValue(), |
||||
}); |
||||
}, |
||||
}, { |
||||
eventName: BI.Editor.EVENT_FOCUS, |
||||
action() { |
||||
that.store.setConnectionNameErr(''); |
||||
}, |
||||
}], |
||||
}, |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-water-mark', |
||||
lgap: 5, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_ConnectionName-Change-Confirm'), |
||||
}, |
||||
], |
||||
}, |
||||
|
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Driver'), |
||||
}, |
||||
{ |
||||
type: TextValueCombo, |
||||
width: 300, |
||||
text: linkSelected.driver, |
||||
items: getDrivers(linkSelected), |
||||
listeners: [{ |
||||
eventName: BI.TextValueCombo.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
driver: this.getValue()[0], |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_URL'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'), |
||||
width: 300, |
||||
value: linkSelected.url, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
url: this.getValue(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_OriginalCharsetName'), |
||||
}, |
||||
{ |
||||
type: TextValueCombo, |
||||
width: 300, |
||||
text: linkSelected.originalCharsetName === '' ? BI.i18nText('Dec-Dcm_Connection_Form_Auto') : linkSelected.originalCharsetName, |
||||
items: [ |
||||
{ |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Auto'), |
||||
value: '', |
||||
}, |
||||
...CONNECT_CHARSET, |
||||
], |
||||
listeners: [{ |
||||
eventName: BI.TextValueCombo.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
originalCharsetName: this.getValue()[0], |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_UserName'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
allowBlank: true, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'), |
||||
width: 300, |
||||
value: linkSelected.user, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
user: this.getValue(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Password'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
inputType: 'password', |
||||
allowBlank: true, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'), |
||||
width: 300, |
||||
value: linkSelected.password, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
password: this.getValue(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: Title, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Pool_Properties'), |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_SQL_Validation_Query'), |
||||
}, |
||||
{ |
||||
type: TextAreaEditor, |
||||
cls: 'bi-border', |
||||
allowBlank: true, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'), |
||||
width: 300, |
||||
height: 100, |
||||
value: linkSelected.validationQuery, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
validationQuery: this.getValue(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Connection-Check'), |
||||
}, |
||||
{ |
||||
type: MultiSelectItem, |
||||
text: BI.i18nText('Dec-Dcm_Yes'), |
||||
selected: linkSelected.testOnBorrow, |
||||
width: 60, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
testOnBorrow: this.isSelected(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Connection_Max_Number'), |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
allowBlank: true, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'), |
||||
width: 60, |
||||
value: linkSelected.maxActive, |
||||
errorText: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input-Number'), |
||||
validationChecker: connectNameChecker, |
||||
listeners: [{ |
||||
eventName: BI.Editor.EVENT_CHANGE, |
||||
action() { |
||||
that.store.setLinkUpdate({ |
||||
...that.model.linkUpdate, |
||||
maxActive: this.getValue(), |
||||
}); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Button, |
||||
width: 80, |
||||
text: BI.i18nText('Dec-Dcm_Test_Connection'), |
||||
level: 'ignore', |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,20 +0,0 @@
|
||||
export const className = 'dec.dcm.model.components.right.show'; |
||||
export const Model = BI.inherit(Fix.Model, { |
||||
state() { |
||||
return { |
||||
isCollapse: false, |
||||
}; |
||||
}, |
||||
|
||||
computed: { |
||||
|
||||
}, |
||||
|
||||
actions: { |
||||
setIsCollapse(status: boolean) { |
||||
this.model.isCollapse = status; |
||||
}, |
||||
}, |
||||
}); |
||||
BI.model(className, Model); |
||||
export default className; |
@ -1,72 +0,0 @@
|
||||
import {WidgetType, Vertical} from '@ui/index'; |
||||
import RightShowModel from '../../link_set.model'; |
||||
import BothSide from '@shared/components/both_side'; |
||||
import Title from '@shared/components/title'; |
||||
import {LinkType} from '@ui/type'; |
||||
const className = 'dec.dcm.component.right.show'; |
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(RightShowModel); |
||||
}, |
||||
render() { |
||||
const linkSelected: LinkType = this.model.linkSelected; |
||||
|
||||
return { |
||||
type: Vertical, |
||||
vgap: 10, |
||||
items: [ |
||||
{ |
||||
type: BothSide, |
||||
leftText: BI.i18nText('Dec-Dcm_Connection_Form_ConnectionName'), |
||||
rightText: linkSelected.connectionName, |
||||
}, |
||||
{ |
||||
type: BothSide, |
||||
leftText: BI.i18nText('Dec-Dcm_Connection_Form_Driver'), |
||||
rightText: linkSelected.driver, |
||||
}, |
||||
{ |
||||
type: BothSide, |
||||
leftText: BI.i18nText('Dec-Dcm_Connection_Form_URL'), |
||||
rightText: linkSelected.url, |
||||
}, |
||||
{ |
||||
type: BothSide, |
||||
leftText: BI.i18nText('Dec-Dcm_Connection_Form_OriginalCharsetName'), |
||||
rightText: linkSelected.originalCharsetName === '' ? BI.i18nText('Dec-Dcm_Connection_Form_Auto') : linkSelected.originalCharsetName, |
||||
}, |
||||
{ |
||||
type: BothSide, |
||||
leftText: BI.i18nText('Dec-Dcm_Connection_Form_UserName'), |
||||
rightText: linkSelected.user, |
||||
}, |
||||
{ |
||||
type: BothSide, |
||||
leftText: BI.i18nText('Dec-Dcm_Connection_Form_Password'), |
||||
rightText: linkSelected.password, |
||||
}, |
||||
{ |
||||
type: Title, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Pool_Properties'), |
||||
}, |
||||
{ |
||||
type: BothSide, |
||||
leftText: BI.i18nText('Dec-Dcm_Connection_Form_SQL_Validation_Query'), |
||||
rightText: linkSelected.validationQuery, |
||||
}, |
||||
{ |
||||
type: BothSide, |
||||
leftText: BI.i18nText('Dec-Dcm_Connection_Form_Connection-Check'), |
||||
rightText: linkSelected.testOnBorrow ? BI.i18nText('Dec-Dcm_Yes') : BI.i18nText('Dec-Dcm_No'), |
||||
}, |
||||
{ |
||||
type: BothSide, |
||||
leftText: BI.i18nText('Dec-Dcm_Connection_Form_Connection_Max_Number'), |
||||
rightText: linkSelected.maxActive, |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,203 +0,0 @@
|
||||
import {Vertical, TextButton, Label, VerticalAdapt} from '@ui'; |
||||
import {OTHER_ATTRIBUTES} from '@private/constants'; |
||||
import {AttributeType} from '../right.typing'; |
||||
import ModelName from './right_show.model'; |
||||
|
||||
const className = 'dec.dcm.component.right.show.jndi'; |
||||
const Widget = BI.inherit(BI.Widget, { |
||||
_store() { |
||||
return BI.Models.getModel(ModelName); |
||||
}, |
||||
watch: { |
||||
isCollapse(isCollapse) { |
||||
const text = isCollapse ? BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Collapse-Attributes') : BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Other_Attributes'); |
||||
this.collapseRef.setText(text); |
||||
this.otherAttributesRef.setVisible(isCollapse); |
||||
}, |
||||
}, |
||||
render() { |
||||
const {connectionName, url, factory, principal, credentials, originalCharsetName} = this.options; |
||||
|
||||
return { |
||||
type: Vertical, |
||||
vgap: 10, |
||||
items: [ |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_JNDI_Form_ConnectionName'), |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: connectionName, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Context'), |
||||
}, |
||||
{ |
||||
type: Vertical, |
||||
vgap: 10, |
||||
items: [ |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: 'INTIAL_CONTEXT_FACTORY', |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: factory, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: 'PROVIDER_URL', |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: url, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: 'SECURITY_PRINCIPAL', |
||||
}, |
||||
{ |
||||
type: Label, |
||||
value: principal, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: 'SECURITY_CREDENTIALS', |
||||
}, |
||||
{ |
||||
type: Label, |
||||
value: credentials, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: TextButton, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Other_Attributes'), |
||||
width: 480, |
||||
textAlign: 'right', |
||||
ref: _ref => { |
||||
this.collapseRef = _ref; |
||||
}, |
||||
handler: () => { |
||||
this.store.setIsCollapse(!this.model.isCollapse); |
||||
}, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: Vertical, |
||||
invisible: true, |
||||
ref: _ref => { |
||||
this.otherAttributesRef = _ref; |
||||
}, |
||||
items: this._getOtherItems(), |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-error', |
||||
lgap: 10, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Notice'), |
||||
}, |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 115, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_JNDI_Advanced'), |
||||
}, |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_OriginalCharsetName'), |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: originalCharsetName ? originalCharsetName : BI.i18nText('Dec-Dcm_Connection_Form_Auto'), |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
_getOtherItems() { |
||||
return BI.map(OTHER_ATTRIBUTES, (index: number, item: AttributeType) => { |
||||
return { |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
width: 180, |
||||
textAlign: 'left', |
||||
text: item.text, |
||||
}, |
||||
{ |
||||
type: Label, |
||||
value: this.options[item.name], |
||||
}, |
||||
], |
||||
}; |
||||
}); |
||||
}, |
||||
}); |
||||
BI.shortcut(className, Widget); |
||||
export default className; |
@ -1,20 +0,0 @@
|
||||
import LinksetMixin from '../../link_set.mixin'; |
||||
import {LinkType} from '@ui/type'; |
||||
const modelName = 'dec.dcm.model.component.right.title'; |
||||
export const Model = BI.inherit(Fix.Model, { |
||||
context: ['linkSelected', 'linkList', 'linkUpdate'], |
||||
mixins: [LinksetMixin], |
||||
actions: { |
||||
onSave() { |
||||
const linkList: LinkType[] = this.model.linkList; |
||||
const result = BI.find(linkList, (idx: number, value: LinkType) => this.model.linkUpdate.connectionName === value.connectionName && value.connectionId !== this.model.linkUpdate.connectionId); |
||||
if (result) { |
||||
this.setConnectionNameErr(BI.i18nText('Dec-Dcm_Connection_Is_Existence')); |
||||
} else { |
||||
this.saveLink(); |
||||
} |
||||
}, |
||||
}, |
||||
}); |
||||
BI.model(modelName, Model); |
||||
export default modelName; |
@ -1,66 +0,0 @@
|
||||
import {WidgetType, Label, Button, LeftRightVerticalAdapt} from '@ui/index'; |
||||
import RightTitleModel from './right_title.model'; |
||||
import {LinkType} from '@ui/type'; |
||||
import {OTHER_CONNECT} from '@private/constants'; |
||||
const className = 'dec.dcm.component.right.title'; |
||||
const Widget: WidgetType = { |
||||
props: { |
||||
baseCls: 'bi-border-bottom', |
||||
}, |
||||
_store() { |
||||
return BI.Models.getModel(RightTitleModel); |
||||
}, |
||||
render() { |
||||
const linkSelected: LinkType = this.model.linkSelected; |
||||
const that = this; |
||||
const {isEdit} = this.options; |
||||
const title = linkSelected.text === OTHER_CONNECT ? BI.i18nText('Dec-Dcm_Connection_Other') : linkSelected.text; |
||||
|
||||
return { |
||||
type: LeftRightVerticalAdapt, |
||||
height: 40, |
||||
items: { |
||||
left: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
hgap: 10, |
||||
text: `${BI.i18nText('Dec-Dcm_Data_Connections')}(${title ? title : BI.i18nText('Dec-Dcm_Default')})`, |
||||
}, |
||||
], |
||||
right: [ |
||||
{ |
||||
type: Button, |
||||
hgap: 10, |
||||
invisible: isEdit, |
||||
text: BI.i18nText('Dec-Dcm_Edit'), |
||||
handler() { |
||||
that.store.setEdit(true); |
||||
}, |
||||
}, |
||||
{ |
||||
type: Button, |
||||
hgap: 10, |
||||
invisible: !isEdit, |
||||
level: 'ignore', |
||||
text: BI.i18nText('BI-Basic_Cancel'), |
||||
handler() { |
||||
that.store.setCancel(); |
||||
}, |
||||
}, |
||||
{ |
||||
type: Button, |
||||
hgap: 10, |
||||
invisible: !isEdit, |
||||
text: BI.i18nText('Dec-Dcm_Save'), |
||||
handler() { |
||||
that.store.onSave(); |
||||
}, |
||||
}, |
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,23 +0,0 @@
|
||||
import {LinkType} from '@ui/type'; |
||||
import pluginListConstant from '../../app.constant'; |
||||
|
||||
export const getCnnectionName = (links: LinkType[], name: string): string => { |
||||
const plugins: string[] = BI.Constants.getConstant(pluginListConstant); |
||||
let nameIndex = 0; |
||||
const title = name.replace(/[0-9]/g, ''); |
||||
const isPlugin = BI.some(plugins, (index: number, item: string) => item === title); |
||||
const startWith = isPlugin ? title : BI.i18nText('Dec-Dcm_Data_Connections'); |
||||
|
||||
links.forEach(link => { |
||||
link.isSelected = false; |
||||
if (link.connectionName.startsWith(startWith)) { |
||||
const name = link.connectionName.replace(startWith, '0'); |
||||
const index = parseInt(name, 10) + 1; |
||||
if (index > nameIndex) { |
||||
nameIndex = index; |
||||
} |
||||
} |
||||
}); |
||||
|
||||
return `${startWith}${nameIndex > 0 ? nameIndex : ''}`; |
||||
}; |
@ -1,77 +0,0 @@
|
||||
import {WidgetType, Combo, ButtonGroup, TextItem, Vertical} from '@ui'; |
||||
import selectModel from '../link_set.model'; |
||||
import {moreLink} from '../more/more_link.service'; |
||||
import connectList from '../../app.constant'; |
||||
import {DATA_LINKS} from '@private/constants'; |
||||
const className = 'dec.dcm.linkset.select'; |
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(selectModel); |
||||
}, |
||||
render() { |
||||
return { |
||||
type: Combo, |
||||
trigger: 'click', |
||||
adjustYOffset: 4, |
||||
el: { |
||||
type: 'bi.button', |
||||
text: BI.i18nText('Dec-Dcm_Connection_New'), |
||||
}, |
||||
popup: { |
||||
el: { |
||||
type: ButtonGroup, |
||||
items: [...BI.map([...DATA_LINKS, ...BI.Constants.getConstant(connectList)], (index: number, item: string) => { |
||||
return { |
||||
type: TextItem, |
||||
height: 24, |
||||
width: 152, |
||||
textLgap: 10, |
||||
text: item, |
||||
title: item, |
||||
value: item, |
||||
}; |
||||
}), { |
||||
type: TextItem, |
||||
height: 24, |
||||
width: 152, |
||||
textLgap: 10, |
||||
text: BI.i18nText('Dec-Dcm_Connection_More'), |
||||
title: BI.i18nText('Dec-Dcm_Connection_More'), |
||||
value: 'more', |
||||
}, { |
||||
type: TextItem, |
||||
cls: 'bi-border-top', |
||||
height: 24, |
||||
width: 152, |
||||
textLgap: 10, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Other'), |
||||
title: BI.i18nText('Dec-Dcm_Connection_Other'), |
||||
value: 'other', |
||||
}], |
||||
layouts: [{ |
||||
type: Vertical, |
||||
}], |
||||
}, |
||||
maxHeight: 400, |
||||
}, |
||||
listeners: [{ |
||||
eventName: 'EVENT_CHANGE', |
||||
action: (v: string) => { |
||||
if (v === 'more') { |
||||
moreLink((text: string) => { |
||||
this.store.setNewLink(text); |
||||
}); |
||||
} else { |
||||
this.store.setNewLink(v); |
||||
} |
||||
this.combo.hideView(); |
||||
}, |
||||
}], |
||||
ref: _ref => { |
||||
this.combo = _ref; |
||||
}, |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,17 +0,0 @@
|
||||
import {ModelType} from '@ui'; |
||||
const className = 'dec.dcm.model.linkstatus.left'; |
||||
const Model: ModelType = { |
||||
context: ['tab', 'linkList', 'statusSelected'], |
||||
state () { |
||||
return { |
||||
selected: '', |
||||
}; |
||||
}, |
||||
actions: { |
||||
setStatusSelected(title: string) { |
||||
this.model.statusSelected = title; |
||||
}, |
||||
}, |
||||
}; |
||||
BI.model(className, BI.inherit(Fix.Model, Model)); |
||||
export default className; |
@ -1,44 +0,0 @@
|
||||
import {WidgetType, ListView} from '@ui'; |
||||
import Model from './left.model'; |
||||
import {LinkType} from '@ui/type'; |
||||
import LeftItem from './left_item'; |
||||
|
||||
const className = 'dec.dcm.component.linkStatus.left'; |
||||
const Widget: WidgetType = { |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
watch: { |
||||
linkList(linkList: LinkType[]) { |
||||
const title = linkList.length > 0 ? linkList[0].connectionName : ''; |
||||
this.store.setStatusSelected(title); |
||||
}, |
||||
statusSelected(title: string) { |
||||
const linkList = this.model.linkList; |
||||
this.leftContent.populate(BI.createItems(this._renderItems(linkList, title))); |
||||
}, |
||||
}, |
||||
render() { |
||||
return { |
||||
type: ListView, |
||||
ref: _ref => { |
||||
this.leftContent = _ref; |
||||
}, |
||||
items: this._renderItems(this.model.linkList, this.model.statusSelected), |
||||
}; |
||||
}, |
||||
_renderItems(linkList: LinkType[], selectTitle = '') { |
||||
return BI.map(linkList, (index: number, item: LinkType) => { |
||||
return { |
||||
type: LeftItem, |
||||
selected: item.connectionName === selectTitle, |
||||
title: item.connectionName, |
||||
id: item.connectionId, |
||||
creator: item.creator, |
||||
text: item.text ? item.text : BI.i18nText('Dec-Dcm_Default'), |
||||
}; |
||||
}); |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,39 +0,0 @@
|
||||
import {WidgetType, TextButton, VerticalAdapt} from '@ui'; |
||||
import Model from './left.model'; |
||||
const className = 'dec.dcm.component.linkStatus.left.item'; |
||||
const Widget: WidgetType = { |
||||
props: { |
||||
title: '', |
||||
id: '', |
||||
creator: '', |
||||
baseCls: 'bi-list-item-active', |
||||
}, |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
render() { |
||||
const {title} = this.options; |
||||
|
||||
return { |
||||
type: VerticalAdapt, |
||||
cls: 'bi-list-item-active', |
||||
height: 30, |
||||
items: [ |
||||
{ |
||||
type: TextButton, |
||||
cls: 'link-title', |
||||
lgap: 10, |
||||
textAlign: 'left', |
||||
text: title, |
||||
title, |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
doClick() { |
||||
const {title} = this.options; |
||||
this.store.setStatusSelected(title); |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.BasicButton, Widget)); |
||||
export default className; |
@ -1,9 +0,0 @@
|
||||
import {ModelType} from '@ui'; |
||||
const className = 'dec.dcm.model.linkstatus'; |
||||
const Model: ModelType = { |
||||
context: ['tab', 'linkList'], |
||||
actions: { |
||||
}, |
||||
}; |
||||
BI.model(className, BI.inherit(Fix.Model, Model)); |
||||
export default className; |
@ -1,63 +0,0 @@
|
||||
import {WidgetType, Htape, Vtape, Label, VerticalAdapt} from '@ui'; |
||||
import linkStatusModel from './link_status.model'; |
||||
import LeftList from './left/left'; |
||||
import Right from './right/right'; |
||||
import {TAB_LINK_POOL} from '@private/constants'; |
||||
const className = 'dec.dcm.linkstatus'; |
||||
|
||||
const Widget: WidgetType = { |
||||
props: { |
||||
baseCls: 'bi-card', |
||||
}, |
||||
_store() { |
||||
return BI.Models.getModel(linkStatusModel); |
||||
}, |
||||
watch: { |
||||
tab(tab: string) { |
||||
this.linkStatus.setVisible(tab === TAB_LINK_POOL); |
||||
}, |
||||
}, |
||||
render() { |
||||
return { |
||||
type: Htape, |
||||
invisible: true, |
||||
ref: _ref => { |
||||
this.linkStatus = _ref; |
||||
}, |
||||
items: [{ |
||||
el: { |
||||
type: Vtape, |
||||
cls: 'dcm-link-left', |
||||
items: [ |
||||
{ |
||||
el: { |
||||
type: VerticalAdapt, |
||||
cls: 'bi-border-bottom', |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
hgap: 6, |
||||
vgap: 6, |
||||
text: BI.i18nText('Dec-Dcm_Data_Connections'), |
||||
}, |
||||
], |
||||
}, |
||||
height: 40, |
||||
}, { |
||||
type: LeftList, |
||||
cls: 'left-list', |
||||
}, |
||||
], |
||||
}, |
||||
width: 280, |
||||
}, { |
||||
type: Right, |
||||
cls: 'bi-border-left', |
||||
}], |
||||
}; |
||||
}, |
||||
}; |
||||
|
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,14 +0,0 @@
|
||||
import {ModelType} from '@ui'; |
||||
const className = 'dec.dcm.model.linkstatus.right'; |
||||
const Model: ModelType = { |
||||
context: ['linkList', 'statusSelected'], |
||||
state () { |
||||
return { |
||||
selected: '', |
||||
}; |
||||
}, |
||||
actions: { |
||||
}, |
||||
}; |
||||
BI.model(className, BI.inherit(Fix.Model, Model)); |
||||
export default className; |
@ -1,68 +0,0 @@
|
||||
import {WidgetType, Label, ListView, VerticalAdapt, Vtape} from '@ui/index'; |
||||
import Model from './right.model'; |
||||
import {info} from '@shared/crud/crud.request'; |
||||
import RightCard from './right_card'; |
||||
import {InfoType} from './right.typings'; |
||||
import {LinkType} from '@ui/type'; |
||||
import pluginListConstant from '../../app.constant'; |
||||
|
||||
const className = 'dcm-link-form'; |
||||
|
||||
const Widget: WidgetType = { |
||||
props: { |
||||
baseCls: 'dec-webui-dcm-title bi-card bi-border-bottom', |
||||
}, |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
watch: { |
||||
statusSelected(title: string) { |
||||
const link = BI.find(this.model.linkList, (index: number, item: LinkType) => item.connectionName === title); |
||||
const plugins: string[] = BI.Constants.getConstant(pluginListConstant); |
||||
const isPlugin = link.text && BI.some(plugins, (index: number, item: string) => item === link.text); |
||||
const Pool = isPlugin ? BI.Constants.getConstant(`dec.constant.database.conf.connect.form.${link.text.toLowerCase()}.pool`) : RightCard; |
||||
info(name, (res: InfoType) => { |
||||
this.statusGroup.populate(BI.createItems([{ |
||||
type: Pool, |
||||
...res, |
||||
}])); |
||||
}); |
||||
this.statusTitle.setText(`${BI.i18nText('Dec-Dcm_Data_Connections')}(${title})`); |
||||
}, |
||||
}, |
||||
render() { |
||||
return { |
||||
type: Vtape, |
||||
items: [ |
||||
{ |
||||
el: { |
||||
type: VerticalAdapt, |
||||
cls: 'bi-border-bottom', |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-font-bold', |
||||
lgap: 10, |
||||
text: BI.i18nText('Dec-Dcm_Data_Connections'), |
||||
}, |
||||
], |
||||
ref: _ref => { |
||||
this.statusTitle = _ref; |
||||
}, |
||||
}, |
||||
height: 40, |
||||
}, { |
||||
type: ListView, |
||||
cls: 'right-status-body', |
||||
vgap: 10, |
||||
hgap: 10, |
||||
ref: _ref => { |
||||
this.statusGroup = _ref; |
||||
}, |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,6 +0,0 @@
|
||||
export interface InfoType{ |
||||
maxActive: number; |
||||
maxIdle: number; |
||||
numActive: number; |
||||
numIdle: number; |
||||
} |
@ -1,9 +0,0 @@
|
||||
@import '../../../less/index.less'; |
||||
.dec-webui-dcm-status-right-card{ |
||||
.card-font-success{ |
||||
font-size: @font-size-30; |
||||
} |
||||
.card-font-heighlight{ |
||||
font-size: @font-size-30; |
||||
} |
||||
} |
@ -1,91 +0,0 @@
|
||||
import './right_card.less'; |
||||
import {WidgetType, Left, Label, Vertical, FloatCenter, CenterAdapt, VerticalAdapt} from '@ui/index'; |
||||
const className = 'dec.dcm.component.linkStatus.right.card'; |
||||
const Widget: WidgetType = { |
||||
props: { |
||||
baseCls: 'dec-webui-dcm-status-right-card', |
||||
}, |
||||
render() { |
||||
const {maxActive, maxIdle, numActive, numIdle} = this.options; |
||||
|
||||
return { |
||||
type: FloatCenter, |
||||
height: 150, |
||||
hgap: 20, |
||||
items: [ |
||||
{ |
||||
type: Vertical, |
||||
cls: 'bi-background', |
||||
items: [ |
||||
{ |
||||
type: CenterAdapt, |
||||
cls: 'right-status-board-item', |
||||
tgap: 40, |
||||
items: [ |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-high-light card-font-success', |
||||
text: numActive, |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: '/', |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: maxActive, |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: BI.i18nText('Dec-Dcm_Active_Connections_Number'), |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: Vertical, |
||||
cls: 'bi-background', |
||||
items: [ |
||||
{ |
||||
type: CenterAdapt, |
||||
tgap: 40, |
||||
cls: 'right-status-board-item', |
||||
items: [ |
||||
{ |
||||
type: VerticalAdapt, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
cls: 'bi-high-light card-font-heighlight', |
||||
text: numIdle, |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: '/', |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: maxIdle, |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: Label, |
||||
text: BI.i18nText('Dec-Dcm_Leisure_Connections_Number'), |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
export default className; |
@ -1,8 +0,0 @@
|
||||
@import '../../less/index.less'; |
||||
.dec-webui-dcm-title{ |
||||
.title-item-selected{ |
||||
color: @background-color-highlight; |
||||
border-bottom-color:@border-color-highlight; |
||||
border-bottom-width: 2px; |
||||
} |
||||
} |
@ -1,11 +0,0 @@
|
||||
const className = 'dec.dcm.model.title.item'; |
||||
const Model = BI.inherit(Fix.Model, { |
||||
context: ['tab'], |
||||
actions: { |
||||
setTab(value: string) { |
||||
this.model.tab = value; |
||||
}, |
||||
}, |
||||
}); |
||||
BI.model(className, Model); |
||||
export default className; |
@ -1,61 +0,0 @@
|
||||
import './title.less'; |
||||
import {WidgetType, IconButton, LeftRightVerticalAdapt, LinearSegment} from '@ui/index'; |
||||
import Model from './title.model'; |
||||
import {isDesigner, closeWindow} from '@shared/crud/crud.request'; |
||||
import {TAB_LINK_SET, TAB_LINK_POOL} from '@private/constants'; |
||||
const className = 'dec.dcm.title'; |
||||
const Widget: WidgetType = { |
||||
props: { |
||||
baseCls: 'dec-webui-dcm-title bi-card bi-border-bottom', |
||||
}, |
||||
_store() { |
||||
return BI.Models.getModel(Model); |
||||
}, |
||||
render() { |
||||
const showCloseButton = isDesigner(); |
||||
const that = this; |
||||
|
||||
return { |
||||
type: LeftRightVerticalAdapt, |
||||
items: { |
||||
left: [ |
||||
{ |
||||
type: LinearSegment, |
||||
cls: 'bi-card', |
||||
height: 40, |
||||
width: 200, |
||||
items: [{ |
||||
text: BI.i18nText('Dec-Dcm_Connection_Management'), |
||||
value: TAB_LINK_SET, |
||||
selected: true, |
||||
}, { |
||||
text: BI.i18nText('Dec-Dcm_Pool_Connection_Management'), |
||||
value: TAB_LINK_POOL, |
||||
}], |
||||
listeners: [{ |
||||
eventName: 'EVENT_CHANGE', |
||||
action () { |
||||
that.store.setTab(this.getValue()[0]); |
||||
}, |
||||
}], |
||||
}, |
||||
], |
||||
right: [ |
||||
showCloseButton ? { |
||||
type: IconButton, |
||||
cls: 'close-ha-font', |
||||
width: 30, |
||||
height: 30, |
||||
rgap: 10, |
||||
handler() { |
||||
closeWindow(); |
||||
}, |
||||
} : null, |
||||
], |
||||
}, |
||||
}; |
||||
}, |
||||
}; |
||||
BI.shortcut(className, BI.inherit(BI.Widget, Widget)); |
||||
|
||||
export default className; |
@ -1,91 +0,0 @@
|
||||
import './style.scss'; |
||||
import {TextEditor, Vertical, Left, Label} from '@ui/index'; |
||||
const RedisConstantName = 'dec.constant.database.conf.connect.form.redis.value'; |
||||
const form = { |
||||
url: '192.168.1.22', |
||||
port: 6379, |
||||
password: '123456', |
||||
}; |
||||
|
||||
const classNameEdit = 'dec.dcm.plugin.redis.edit'; |
||||
const Widget = BI.inherit(BI.Widget, { |
||||
render() { |
||||
return { |
||||
type: Vertical, |
||||
cls: 'bi-plugin-redis', |
||||
bgap: 10, |
||||
items: [ |
||||
{ |
||||
type: Left, |
||||
height: 30, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Database_Addr'), |
||||
height: 24, |
||||
width: 115, |
||||
textAlign: 'left', |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Database_Addr'), |
||||
value: form.url, |
||||
allowBlank: true, |
||||
width: 300, |
||||
height: 24, |
||||
}], |
||||
}, |
||||
{ |
||||
type: Left, |
||||
height: 30, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Database_Port'), |
||||
height: 24, |
||||
width: 115, |
||||
textAlign: 'left', |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Database_Port'), |
||||
allowBlank: true, |
||||
width: 300, |
||||
height: 24, |
||||
value: form.port, |
||||
errorText: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input-Number'), |
||||
validationChecker (v: string) { |
||||
return /^\+?[1-9][0-9]*$/.test(v); |
||||
}, |
||||
}], |
||||
}, |
||||
{ |
||||
type: Left, |
||||
height: 30, |
||||
items: [ |
||||
{ |
||||
type: Label, |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Password'), |
||||
height: 24, |
||||
width: 115, |
||||
textAlign: 'left', |
||||
}, |
||||
{ |
||||
type: TextEditor, |
||||
inputType: 'password', |
||||
value: form.password, |
||||
allowBlank: true, |
||||
width: 300, |
||||
height: 24, |
||||
}], |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
}); |
||||
BI.shortcut(classNameEdit, Widget); |
||||
export default classNameEdit; |
||||
export const ConstantName = 'dec.constant.database.conf.connect.list'; |
||||
BI.config(ConstantName, (datas: string[]) => [...datas, 'Redis']); |
||||
BI.constant(RedisConstantName, form); |
||||
BI.constant('dec.constant.database.conf.connect.form.redis.edit', classNameEdit); |
@ -1,68 +0,0 @@
|
||||
const classNamePreview = 'dec.dcm.plugin.redis.preview'; |
||||
const RedisConstantName = 'dec.constant.database.conf.connect.form.redis.value'; |
||||
const form = BI.Constants.getConstant(RedisConstantName); |
||||
|
||||
const Widget = BI.inherit(BI.Widget, { |
||||
render() { |
||||
return { |
||||
type: 'bi.vertical', |
||||
cls: 'bi-plugin-redis', |
||||
bgap: 10, |
||||
items: [ |
||||
{ |
||||
type: 'bi.left', |
||||
height: 30, |
||||
items: [ |
||||
{ |
||||
type: 'bi.label', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Database_Addr'), |
||||
height: 24, |
||||
width: 115, |
||||
textAlign: 'left', |
||||
}, |
||||
{ |
||||
type: 'bi.label', |
||||
text: form.url, |
||||
height: 24, |
||||
}], |
||||
}, |
||||
{ |
||||
type: 'bi.left', |
||||
height: 30, |
||||
items: [ |
||||
{ |
||||
type: 'bi.label', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Database_Port'), |
||||
height: 24, |
||||
width: 115, |
||||
textAlign: 'left', |
||||
}, |
||||
{ |
||||
type: 'bi.label', |
||||
text: form.port, |
||||
height: 24, |
||||
}], |
||||
}, |
||||
{ |
||||
type: 'bi.left', |
||||
height: 30, |
||||
items: [ |
||||
{ |
||||
type: 'bi.label', |
||||
text: BI.i18nText('Dec-Dcm_Connection_Form_Password'), |
||||
height: 24, |
||||
width: 115, |
||||
textAlign: 'left', |
||||
}, |
||||
{ |
||||
type: 'bi.label', |
||||
text: '********', |
||||
height: 24, |
||||
}], |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
}); |
||||
BI.shortcut(classNamePreview, Widget); |
||||
BI.constant('dec.constant.database.conf.connect.form.redis.preview', classNamePreview); |
@ -1,53 +0,0 @@
|
||||
const classNamePool = 'dec.dcm.plugin.redis.pool'; |
||||
|
||||
const WidgetPool = BI.inherit(BI.Widget, { |
||||
render() { |
||||
const {maxActive, maxIdle, numActive, numIdle} = this.options; |
||||
|
||||
return { |
||||
type: 'bi.left', |
||||
items: [ |
||||
{ |
||||
type: 'bi.left', |
||||
cls: 'right-status-item', |
||||
items: [ |
||||
{ |
||||
type: 'bi.vertical', |
||||
cls: 'right-status-board', |
||||
items: [ |
||||
{ |
||||
type: 'bi.vertical', |
||||
cls: 'right-status-board-item', |
||||
items: [ |
||||
{ |
||||
type: 'bi.label', |
||||
cls: 'right-status-text', |
||||
text: numActive, |
||||
}, |
||||
{ |
||||
type: 'bi.label', |
||||
cls: 'right-status-text', |
||||
text: '/', |
||||
}, |
||||
{ |
||||
type: 'bi.label', |
||||
cls: 'right-status-text', |
||||
text: maxActive, |
||||
}, |
||||
], |
||||
}, |
||||
{ |
||||
type: 'bi.label', |
||||
height: 20, |
||||
text: BI.i18nText('Dec-Dcm_Active_Connections_Number'), |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}, |
||||
], |
||||
}; |
||||
}, |
||||
}); |
||||
BI.shortcut(classNamePool, WidgetPool); |
||||
BI.constant('dec.constant.database.conf.connect.form.redis.pool', classNamePool); |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue