Compare commits

...

964 Commits

Author SHA1 Message Date
superman 3d641f63ce Merge pull request #10342 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 4 weeks ago
superman 2c7e4bdcbe Merge pull request #10199 in DEC/decision-webui-dcm from release/11.0 to final/11.0 1 month ago
superman e3925580da Merge pull request #10129 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 months ago
superman aff9b028cd Merge pull request #10128 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 months ago
superman 0a206cfd50 Merge pull request #10120 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 months ago
superman a8a774e245 Pull request #10113: 无jira任务, feature/x 合 bugfix/11.0 2 months ago
superman 9614f7befa Merge pull request #9985 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 months ago
superman ddf79abf67 Pull request #9744: 无jira任务, bugfix/11.0 合 feature/x 4 months ago
superman fae8c8b743 Merge pull request #9743 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 4 months ago
superman 95a142fb36 Merge pull request #9742 in DEC/decision-webui-dcm from final/11.0 to release/11.0 4 months ago
superman 5e74901dd0 Merge pull request #9741 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 4 months ago
superman e38b579294 Merge pull request #9736 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 4 months ago
superman fa47cec090 Merge pull request #9666 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 4 months ago
superman d3da23ed00 Merge pull request #9665 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 4 months ago
superman c99acd797b Merge pull request #9664 in DEC/decision-webui-dcm from final/11.0 to release/11.0 4 months ago
superman d8f36eff4a Merge pull request #9658 in DEC/decision-webui-dcm from release/11.0 to final/11.0 4 months ago
superman fb2842a94e Merge pull request #9641 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 4 months ago
superman 290a4c69d5 Merge pull request #9640 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 4 months ago
superman 76b699c197 Pull request #9631: 无jira任务, final/11.0 合 release/11.0 4 months ago
superman c2bce27ae6 Merge pull request #9630 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 4 months ago
superman 6627357743 Merge pull request #9625 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 4 months ago
superman b066df6bd3 Merge pull request #9619 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 4 months ago
superman 7f564a5d41 Merge pull request #9618 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 4 months ago
superman a97abbc859 Merge pull request #9573 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 5 months ago
superman 26dca18095 Merge pull request #9536 in DEC/decision-webui-dcm from release/11.0 to final/11.0 5 months ago
superman 997339a605 Merge pull request #9438 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 6 months ago
superman 902d026e3a Merge pull request #9437 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 6 months ago
superman 6160ca3c58 Merge pull request #9430 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 6 months ago
superman f1c4b1a901 Merge pull request #9429 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 6 months ago
superman 8a5983a808 Merge pull request #9386 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 6 months ago
superman 5ff9006436 Merge pull request #9376 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 6 months ago
superman 035b84a38e Merge pull request #9375 in DEC/decision-webui-dcm from final/11.0 to release/11.0 6 months ago
superman eeca4747fa Merge pull request #9374 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 6 months ago
superman eccc736ea4 Merge pull request #9357 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 6 months ago
superman f0d4110b8f Merge pull request #9343 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 6 months ago
superman 57f367d3aa Merge pull request #9304 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 6 months ago
superman 6b30b3bfb0 Merge pull request #9303 in DEC/decision-webui-dcm from final/11.0 to release/11.0 6 months ago
superman 18f979c949 Merge pull request #9297 in DEC/decision-webui-dcm from release/11.0 to final/11.0 6 months ago
superman 352753b9d2 Merge pull request #9228 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 6 months ago
superman 40e174a026 Merge pull request #9227 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 6 months ago
superman c86f19349c Pull request #9218: 无jira任务, final/11.0 合 release/11.0 7 months ago
superman 5d9c786518 Merge pull request #9217 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 7 months ago
superman 02ecf42291 Merge pull request #9212 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 7 months ago
superman a674710088 Merge pull request #9211 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 7 months ago
superman 075ae092ee Merge pull request #9204 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 7 months ago
superman c22217e22d Merge pull request #9203 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 7 months ago
superman 6db3736016 Merge pull request #9109 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 8 months ago
superman 7af9ee3416 Merge pull request #9053 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 8 months ago
superman 816138af57 Merge pull request #9052 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 8 months ago
superman 4e63da2f29 Merge pull request #9051 in DEC/decision-webui-dcm from final/11.0 to release/11.0 8 months ago
superman ae401046cf Merge pull request #9045 in DEC/decision-webui-dcm from release/11.0 to final/11.0 8 months ago
superman 2c44d7237b Merge pull request #8963 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 8 months ago
superman d99170420d Merge pull request #8962 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 8 months ago
superman 9c32107d5b Merge pull request #8954 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 8 months ago
superman b5e1c42b82 Merge pull request #8953 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 8 months ago
superman c64b818d3d Merge pull request #8869 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 9 months ago
superman 4aeb240a0b Merge pull request #8868 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 9 months ago
superman 102c82fc62 Merge pull request #8867 in DEC/decision-webui-dcm from final/11.0 to release/11.0 9 months ago
superman d151d15312 Merge pull request #8866 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 9 months ago
superman 4d24b17587 Merge pull request #8861 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 9 months ago
superman 76b313752f Merge pull request #8850 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 9 months ago
superman 3bd58876a6 Merge pull request #8849 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 9 months ago
superman 4fcb12556b Merge pull request #8848 in DEC/decision-webui-dcm from final/11.0 to release/11.0 9 months ago
superman f39cc10073 Merge pull request #8847 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 9 months ago
superman e76754f5b2 Merge pull request #8842 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 9 months ago
superman 6a6ff1c1a6 Merge pull request #8841 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 9 months ago
superman 3aee05d032 Merge pull request #8839 in DEC/decision-webui-dcm from final/11.0 to release/11.0 9 months ago
superman fa19a365f0 Merge pull request #8840 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 9 months ago
superman a57cf001bd Merge pull request #8838 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 9 months ago
superman 96aaf30db5 Merge pull request #8831 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 9 months ago
Austin.Duan-段嗣跃 c48a58253f Pull request #8830: BI-144496 fix: 数据连接增加埋点 9 months ago
Austin.Duan 45aeb419b2 BI-144496 fix: 数据连接增加埋点 9 months ago
Hans-杨瀚 d16907214f Pull request #8829: 无jira 区分fdl/平台的jdy数据连接, 不做唯一处理 9 months ago
hans 3b9a4799ef getJdyDataLinkAppList 9 months ago
superman 4d35886a75 Merge pull request #8790 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 9 months ago
superman 0e8af1c8f2 Merge pull request #8789 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 9 months ago
superman 2da1fec841 Merge pull request #8788 in DEC/decision-webui-dcm from final/11.0 to release/11.0 9 months ago
superman 56e4b3290f Merge pull request #8781 in DEC/decision-webui-dcm from release/11.0 to final/11.0 9 months ago
superman aaa86e2fdd Merge pull request #8773 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 9 months ago
superman 90e9f66923 Merge pull request #8772 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 9 months ago
superman 116df28e8a Merge pull request #8771 in DEC/decision-webui-dcm from final/11.0 to release/11.0 9 months ago
superman 3de11092a5 Merge pull request #8764 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 9 months ago
superman fb6b022024 Merge pull request #8755 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 10 months ago
superman abad4846af Merge pull request #8754 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 10 months ago
Hans-杨瀚 d1292456be Pull request #8751: REPORT-112276 公共数据取数简道云数据连接部分适配 10 months ago
superman a891b49c19 Merge pull request #8753 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 10 months ago
hans 74dd5ba289 REPORT-112276 公共数据取数简道云数据连接部分适配 10 months ago
superman 911918aee5 Merge pull request #8730 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 11 months ago
superman 5d71918704 Merge pull request #8729 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 11 months ago
superman 719227fde3 Merge pull request #8728 in DEC/decision-webui-dcm from final/11.0 to release/11.0 11 months ago
superman b0b91e4f45 Merge pull request #8727 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 11 months ago
Austin.Duan-段嗣跃 9acf2bfc1c Pull request #8722: FDL-9101 fix: 修复hana数据连接url联动输入框异常问题 11 months ago
Austin.Duan ce17bd506c FDL-9101 fix: 修复hana数据连接url联动输入框异常问题 11 months ago
superman b304858af7 Merge pull request #8721 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 11 months ago
Austin.Duan-段嗣跃 079aeab638 Pull request #8720: REPORT-112768 fix: 修复数据连接更新视图不同步问题,同步final 11 months ago
Austin.Duan e846f055cc REPORT-112768 fix: 修复数据连接更新视图不同步问题 11 months ago
Austin.Duan-段嗣跃 d809e1e696 Pull request #8719: REPORT-112768 fix: 修复数据连接更新视图不同步问题 11 months ago
Austin.Duan 64d03f0782 REPORT-112768 fix: 修复数据连接更新视图不同步问题 11 months ago
superman baf9ef3303 Merge pull request #8669 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 11 months ago
superman 3630820a68 Merge pull request #8668 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 11 months ago
superman e8cbf5095c Merge pull request #8659 in DEC/decision-webui-dcm from final/11.0 to release/11.0 11 months ago
superman 9cdb4ce07a Merge pull request #8653 in DEC/decision-webui-dcm from release/11.0 to final/11.0 11 months ago
superman 5439cadbf2 Merge pull request #8612 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 11 months ago
superman e38b262b1d Merge pull request #8611 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 11 months ago
Austin.Duan-段嗣跃 3b77884e1f Pull request #8610: REPORT-111534 fix:数据连接脏补下容错 11 months ago
Austin.Duan fc3f98bbf0 REPORT-111534 fix:数据连接脏数据容错 11 months ago
superman ca83faf9cc Merge pull request #8609 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 11 months ago
superman 274d8d1869 Merge pull request #8608 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 11 months ago
Austin.Duan-段嗣跃 aa4f5e13d4 Pull request #8607: 无JIRA任务,修复打包问题 11 months ago
Austin.Duan 58dee6f649 无JIRA任务,修复打包问题 11 months ago
Kevin.King-王凯壮 1b00787f4b Pull request #8606: REPORT-109671 feat:druid校验语句问题 11 months ago
Kevin.King-王凯壮 a26aafbd23 REPORT-109671 feat:druid校验语句问题 11 months ago
Austin.Duan-段嗣跃 30754a6894 Pull request #8599: REPORT-110986 feat: 数据连接支持跳转至详情&联动 12 months ago
Austin.Duan 18d38b1d1f Merge branch 'feature/x' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into feature/x 12 months ago
Austin.Duan 792392ee47 REPORT-110986 feat: 数据连接支持跳转至详情&联动 12 months ago
Austin.Duan-段嗣跃 9c9e2c0dc4 Pull request #8582: REPORT-110986 feat: 数据连接支持跳转至详情&联动 12 months ago
Austin.Duan 42d94b9948 Merge branch 'feature/x' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into feature/x 12 months ago
Austin.Duan 57340b4d11 REPORT-110986 feat: 数据连接支持跳转至详情&联动 12 months ago
superman 82ff2c214d Merge pull request #8573 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 12 months ago
superman bce7080c27 Merge pull request #8572 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 12 months ago
superman 97048893fa Merge pull request #8571 in DEC/decision-webui-dcm from final/11.0 to release/11.0 12 months ago
superman 45b674ce7b Merge pull request #8570 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 12 months ago
superman 4d3f60e2f4 Merge pull request #8565 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 12 months ago
superman d48d0ffee9 Merge pull request #8546 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 12 months ago
superman e4c0a75487 Merge pull request #8545 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
Austin.Duan-段嗣跃 8a4e073a8d Pull request #8528: FDL-9101 fix: 修复saphana数据连接失败问题 1 year ago
Austin.Duan 2d61059b66 FDL-9101 fix: 修复saphana数据连接失败问题 1 year ago
Austin.Duan 594e8bde32 Merge branch 'release/11.0' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into release/11.0 1 year ago
Austin.Duan d127e8e25b FDL-9101 fix: 修复saphana数据连接失败问题 1 year ago
superman 31a2ed0b6e Merge pull request #8527 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman bc2fa50d29 Merge pull request #8526 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman fdfbeeccd0 Merge pull request #8525 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman 4191716dfa Merge pull request #8519 in DEC/decision-webui-dcm from release/11.0 to final/11.0 1 year ago
jacky.li-李星 af63e83d77 Pull request #8510: REPORT-107734 fix:【数据连接增加fetchsize配置项】tdsql数据连接特殊处理下 1 year ago
lixing 45e9cbb792 REPORT-107734 fix:【数据连接增加fetchsize配置项】tdsql数据连接特殊处理下 1 year ago
superman 35000dc81a Merge pull request #8461 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 31f0331552 Merge pull request #8460 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 790361805d Merge pull request #8453 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 1 year ago
superman 504b59e326 Merge pull request #8452 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 1 year ago
jacky.li-李星 ed5e0c138c Pull request #8419: REPORT-107734【平台前端适配】数据连接增加fetchsize配置项 1 year ago
jacky.li-李星 846325fd04 Pull request #1: REPORT-107734【平台前端适配】数据连接增加fetchsize配置项 1 year ago
lixing cf1255a5bb REPORT-107734【平台前端适配】数据连接增加fetchsize配置项 1 year ago
superman fd84104790 Merge pull request #8386 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 87e0ba2e19 Merge pull request #8385 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 74fd7c9a5a Merge pull request #8384 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman d259904625 Merge pull request #8383 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 1 year ago
superman a6f1dac957 Merge pull request #8378 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 1 year ago
superman 2417ad3c49 Merge pull request #8369 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 1a0fd23030 Merge pull request #8368 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman f7b963bd8c Merge pull request #8367 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
Kevin.King-王凯壮 9328204fdc Pull request #8360: REPORT-102763 fix:数据连接支持对接业务系统-接口补充 1 year ago
Kevin.King-王凯壮 b7060fc6ae REPORT-102763 fix:数据连接支持对接业务系统-接口补充 1 year ago
superman 53de565848 Merge pull request #8337 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 40d6016050 Merge pull request #8336 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 4f268138b6 Merge pull request #8335 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
fanglei-方磊 92f35b62c3 Pull request #8319: REPORT-108103 Starrocks数据连接解析不包含catalog的数据连接出错 1 year ago
fanglei-方磊 88737a11bf Pull request #8318: REPORT-108103 Starrocks数据连接解析不包含catalog的数据连接出错 1 year ago
方磊 19c5bc8272 REPORT-108103 Starrocks数据连接解析不包含catalog的数据连接出错 1 year ago
方磊 8722392f0d REPORT-108103 Starrocks数据连接解析不包含catalog的数据连接出错 1 year ago
superman 21cef90c1b Merge pull request #8317 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 06248f2d33 Merge pull request #8316 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman e458bbdf29 Merge pull request #8315 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman 006ef00752 Merge pull request #8309 in DEC/decision-webui-dcm from release/11.0 to final/11.0 1 year ago
fanglei-方磊 f63af026e1 Pull request #8308: REPORT-108103 Starrocks数据连接解析不包含catalog的数据连接出错 1 year ago
方磊 a931e29dae REPORT-108103 Starrocks数据连接解析不包含catalog的数据连接出错 1 year ago
superman c2ba3b0364 Merge pull request #8251 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman b18b55bec4 Merge pull request #8250 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman fe1782ad3d Merge pull request #8235 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 1 year ago
superman 4ae0c5d799 Merge pull request #8243 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman edcfa64820 Merge pull request #8233 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 1 year ago
fanglei-方磊 39164b7799 Pull request #8232: REPORT-99289 数据连接适配加一个catalog配置项 1 year ago
方磊 2f42ff94a5 REPORT-99289 删除代码中的debugger 1 year ago
方磊 f93eb67053 REPORT-99289 数据连接适配加一个catalog配置项 1 year ago
superman e15ee307c5 Merge pull request #8200 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 5068bfaae2 Merge pull request #8199 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 6da898e441 Merge pull request #8198 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman 298bea8c91 Merge pull request #8197 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 1 year ago
superman becfcce23d Merge pull request #8192 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 1 year ago
superman ef5da7acbf Merge pull request #8164 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman dcf63642e7 Merge pull request #8163 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 1bf1d8db49 Merge pull request #8162 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
Austin.Duan-段嗣跃 d27696ddcf Pull request #8154: REPORT-105428 fix: 移除SSH主机校验,同步final 1 year ago
Austin.Duan 0a269508c3 REPORT-105428 fix: 移除SSH主机校验 1 year ago
Austin.Duan-段嗣跃 7d9b41662f Pull request #8145: REPORT-105428 fix: 移除SSH主机校验 1 year ago
superman 4a88a8b6b7 Merge pull request #8153 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman f5891640c5 Merge pull request #8152 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 905dea002c Merge pull request #8151 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
Austin.Duan 9b09472c89 REPORT-105428 fix: 移除SSH主机校验 1 year ago
superman 9f5e96b3f6 Merge pull request #8143 in DEC/decision-webui-dcm from release/11.0 to final/11.0 1 year ago
superman d2d7b2dd1b Merge pull request #8118 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman d45bed415b Merge pull request #8117 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
Austin.Duan-段嗣跃 8dfe6045a2 Pull request #8110: REPORT-105428 fix: 客户正式环境数据连接编辑后测试连接会报接口访问错误的报错 1 year ago
Austin.Duan 7a8404cfc8 REPORT-105428 fix: 客户正式环境数据连接编辑后测试连接会报接口访问错误的报错 1 year ago
superman 755b276b5e Merge pull request #8069 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 0c31b178e7 Merge pull request #8068 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 674bf79b13 Merge pull request #8045 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 1 year ago
superman fa2f4807c0 Merge pull request #8044 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 1 year ago
Kevin.King-王凯壮 10fda08400 Pull request #8033: REPORT-102763 fix:【开个接口】数据连接支持对接业务系统 1 year ago
Kevin.King-王凯壮 3b71fdbdea REPORT-102763 fix:【开个接口】数据连接支持对接业务系统-补充 1 year ago
Kevin.King-王凯壮 1bcfada049 REPORT-102763 fix:【开个接口】数据连接支持对接业务系统 1 year ago
superman a29b05e103 Merge pull request #8024 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 311bef6ef0 Merge pull request #8023 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 4729ce7b08 Merge pull request #8022 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman fa0827f922 Merge pull request #8021 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 1 year ago
superman 46a15520f8 Merge pull request #8014 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 1 year ago
superman 5e85168e05 Merge pull request #7972 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 736fbe1628 Merge pull request #7971 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 8589c14381 Merge pull request #7970 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman 2acae96ef8 Merge pull request #7964 in DEC/decision-webui-dcm from release/11.0 to final/11.0 1 year ago
Austin.Duan-段嗣跃 0901ded1a3 Pull request #7963: BI-131621 fix: 国际化补充title 1 year ago
Austin.Duan b11bab127f Merge branch 'release/11.0' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into release/11.0 1 year ago
Austin.Duan 7e2c8773b6 BI-131621 fix: 国际化补充title 1 year ago
superman cacebd3d40 Merge pull request #7936 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 3702986dab Merge pull request #7935 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
Austin.Duan-段嗣跃 82874475b1 Pull request #7928: BI-131621 fix: 修复数据连接国际化展示问题 1 year ago
Austin.Duan 604fce515e BI-131621 fix: 修复国际化展示问题 1 year ago
superman 3175e20cb0 Merge pull request #7919 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman fe40732bac Merge pull request #7918 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 3ad7c7fcb0 Merge pull request #7917 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman 752fb6ce39 Merge pull request #7910 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 1 year ago
superman 0a99ed395d Merge pull request #7905 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 1 year ago
superman 68af0ac5de Merge pull request #7904 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 1 year ago
superman 848c71bc4f Merge pull request #7903 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 1 year ago
superman 5abb9764c5 Merge pull request #7875 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 4992930ab2 Merge pull request #7874 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman b9a49fdcd2 Merge pull request #7873 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman cf82354ada Merge pull request #7867 in DEC/decision-webui-dcm from release/11.0 to final/11.0 1 year ago
superman ede8e1111e Merge pull request #7850 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 0a623fae70 Merge pull request #7849 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman d164814321 Merge pull request #7842 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 1 year ago
superman 92756319eb Merge pull request #7841 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 1 year ago
superman 204622d951 Merge pull request #7808 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman beb412e2c6 Merge pull request #7807 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
Crawford.Zhou-周旭 93c2b80dca Pull request #7800: REPORT-96835 数据连接JDBC_URL解析错误 1 year ago
旭旭 4dd665d539 REPORT-96835 数据连接JDBC_URL解析错误 1 year ago
旭旭 80e6344383 Merge remote-tracking branch 'origin/release/11.0' into release/11.0 1 year ago
superman 10278fc6a4 Merge pull request #7767 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 0d12a3aa50 Merge pull request #7766 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman c3959116ae Merge pull request #7765 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman 5b77281e33 Merge pull request #7764 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 1 year ago
superman 5628e054e4 Merge pull request #7759 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 1 year ago
superman da0e343cd1 Merge pull request #7705 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman e96dac6a92 Merge pull request #7704 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman ba1519d979 Merge pull request #7703 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman 0eeaf0c0fb Merge pull request #7697 in DEC/decision-webui-dcm from release/11.0 to final/11.0 1 year ago
superman a22cec6acd Merge pull request #7653 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman c17965fd34 Merge pull request #7652 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman ec70052fc2 Merge pull request #7651 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman 8a0356ff06 Merge pull request #7650 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 1 year ago
superman 78c1497c20 Merge pull request #7645 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman c776ea518a Merge pull request #7644 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 1 year ago
superman 2a2011c85d Merge pull request #7643 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 1 year ago
superman a7a23c4520 Merge pull request #7641 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 1 year ago
superman ec7f011d6c Merge pull request #7617 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 1 year ago
superman 89fe823e91 Merge pull request #7616 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 1 year ago
superman 3a12e2e85b Merge pull request #7615 in DEC/decision-webui-dcm from final/11.0 to release/11.0 1 year ago
superman d180322ebd Merge pull request #7607 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman ec56dc6c52 Merge pull request #7552 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 62e2f253ce Merge pull request #7551 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 717d10b44d Merge pull request #7550 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 4d7c05634d Merge pull request #7549 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman 8b074d1021 Merge pull request #7544 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman 32146267c6 Merge pull request #7543 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
superman 2a1b52a268 Merge pull request #7542 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 75304bb570 Merge pull request #7541 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
Crawford.Zhou-周旭 08638c79ca Pull request #7530: REPORT-94752【视觉验收】数据连接 2 years ago
旭旭 88f9e5fb54 REPORT-94752【视觉验收】数据连接 2 years ago
旭旭 c3dc773417 REPORT-94752【视觉验收】数据连接 2 years ago
superman b0d6fe6344 Merge pull request #7528 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
Crawford.Zhou-周旭 fa9edeaa61 Pull request #7527: REPORT-94752【视觉验收】数据连接 2 years ago
旭旭 06f1ea79a5 REPORT-94752【视觉验收】数据连接 2 years ago
Austin.Duan-段嗣跃 3671116076 Pull request #7526: REPORT-94654 fix:数据连接异常报错问题修复 2 years ago
Austin.Duan 2b1cea4686 REPORT-94654 fix:数据连接异常报错问题修复 2 years ago
superman cccca5a428 Merge pull request #7525 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman fb195ea560 Merge pull request #7524 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Crawford.Zhou-周旭 37ac0a6ad1 Pull request #7517: REPORT-94752【视觉验收】数据连接 2 years ago
旭旭 60c5ecf23e REPORT-94752【视觉验收】数据连接 2 years ago
superman f70e316289 Merge pull request #7516 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 02d7267e13 Merge pull request #7515 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 a0ecf5b85c Pull request #7500: REPORT-93097 fix: 修复数据连接多次连接报错问题 2 years ago
Austin.Duan eb6b5e6cff REPORT-93097 fix: 修复数据连接多次连接报错问题 2 years ago
superman 93ef1b6de0 Merge pull request #7481 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 0026c5dc66 Merge pull request #7480 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Crawford.Zhou-周旭 871676f8c1 Pull request #7465: REPORT-91727 对用户输入的参数进行统一校验 DCM仓库也要改下 2 years ago
旭旭 1853994494 REPORT-91727 对用户输入的参数进行统一校验 DCM仓库也要改下 2 years ago
superman c633acf52b Merge pull request #7439 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 80260dbb93 Merge pull request #7438 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 7ef4dcbc89 Merge pull request #7431 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman 31a9ba4f67 Merge pull request #7430 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 08acde543b Pull request #7421: REPORT-93847 fix:数据连接样式问题 2 years ago
Austin.Duan 869cebf114 Merge branch 'feature/x' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into feature/x 2 years ago
Austin.Duan f89124a76d REPORT-93847 fix: 数据连接样式问题 2 years ago
Crawford.Zhou-周旭 73995fcdc9 Pull request #7403: REPORT-93628 fix:修改下文件上传的组件样式 2 years ago
superman f3c49ae3bd Merge pull request #7412 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 026b4da6cf Merge pull request #7411 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
旭旭 b44835ef90 REPORT-93628 fix:修改下文件上传的组件样式 2 years ago
Austin.Duan-段嗣跃 60bd853bf8 Pull request #7402: 无JIRA任务,顺带处理下数据连接样式 2 years ago
Austin.Duan 84b101178f Merge branch 'feature/x' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into feature/x 2 years ago
Austin.Duan 23b901b251 无JIRA任务,顺带处理下数据连接样式 2 years ago
Crawford.Zhou-周旭 76d914f60b Pull request #7401: REPORT-93628 && REPORT-93627 2 years ago
旭旭 7e3dabb316 REPORT-93627【迭代】【平台视觉适配】数据连接管理-模式选择处有滚动条 2 years ago
旭旭 1165a94034 Merge remote-tracking branch 'origin/feature/x' into feature/x 2 years ago
旭旭 93f297c614 REPORT-93628【迭代】【平台视觉适配】数据连接管理-修改下密码处的视觉展示 2 years ago
Austin.Duan-段嗣跃 3d14ec7152 Pull request #7400: REPORT-93513 fix: 修复长文本显示问题 2 years ago
Austin.Duan ae629c9496 REPORT-93513 fix: 修复长文本显示问题 2 years ago
superman f5c2b9d924 Merge pull request #7376 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman aae6d38a58 Merge pull request #7375 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman a6b07e3b19 Merge pull request #7374 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 4d0defb25b Merge pull request #7373 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
Crawford.Zhou-周旭 ba69350d0a Pull request #7368: REPORT-91727 对用户输入的参数进行统一校验 2 years ago
旭旭 9662daabda REPORT-91727 对用户输入的参数进行统一校验 2 years ago
superman 0e1a113d06 Merge pull request #7367 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 9e0a7a0408 Merge pull request #7301 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman a267fee309 Merge pull request #7300 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 726fc7be33 Merge pull request #7299 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 4d341bd656 Merge pull request #7293 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman f171dc470f Merge pull request #7258 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 25cfb8af0f Merge pull request #7257 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 432272de9c Pull request #7249: REPORT-91742 fix: 修复测试连接失败问题 2 years ago
Austin.Duan 9fa393d583 REPORT-91742 fix: 补充下默认值 2 years ago
Austin.Duan ad38c14526 优化下逻辑 2 years ago
Austin.Duan c810430146 Merge branch 'release/11.0' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into release/11.0 2 years ago
Austin.Duan 04a10740ec REPORT-91742 fix: 修复测试连接失败问题 2 years ago
superman 311c4eb567 Merge pull request #7248 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 40744098e7 Merge pull request #7247 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Aries.Lsy-黎思妤 ed5f9bbfc1 Pull request #7239: REPORT-92280 fix:timeBetweenEvictionRunsMillis默认值调整 2 years ago
Aries.lsy 9f44140a75 Merge branch 'release/11.0' of ssh://code.fineres.com:7999/~aries.lsy/decision-webui-dcm into release/11.0 2 years ago
Aries.lsy 6efad99c38 REPORT-92280 fix:timeBetweenEvictionRunsMillis默认值调整 2 years ago
superman c683afcd7c Merge pull request #7238 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 360a21c6fa Merge pull request #7237 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 9b5052a75e Pull request #7228: REPORT-90545 驱动检测平台前端适配 2 years ago
Aries.Lsy-黎思妤 829dfb0751 Pull request #7229: KERNEL-10281 docs:完善数据连接readme 2 years ago
Aries.lsy 2a69cb9907 KERNEL-10281 docs:完善数据连接readme 2 years ago
Austin.Duan a39db945c7 无JIRA,处理下格式问题 2 years ago
Austin.Duan 68aef91840 移除无用代码 2 years ago
Austin.Duan 4cc0ea22eb Merge branch 'release/11.0' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into release/11.0 2 years ago
Austin.Duan af72fa4a51 REPORT-90545: 驱动检测平台前端适配 2 years ago
superman f0c968a6aa Merge pull request #7209 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 053a193743 Merge pull request #7208 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman dabd63c2fe Merge pull request #7200 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman 026e95b794 Merge pull request #7199 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 2704bfb85e Pull request #7198: REPORT-90357 fix: 修改主机、端口后清空密码 2 years ago
Austin.Duan 4f09f02a5d REPORT-90357 fix: 修改主机、端口后清空密码 2 years ago
superman 436e9843a6 Merge pull request #7161 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 0a41a3ac45 Merge pull request #7160 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman ed94adf088 Merge pull request #7159 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 5db0522ad8 Merge pull request #7158 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman 864f857a6e Merge pull request #7152 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman ac04faa269 Merge pull request #7141 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman c19d03652c Merge pull request #7140 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman ba74542f87 Merge pull request #7139 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
Aries.Lsy-黎思妤 b150b48994 Pull request #7132: REPORT-91394 fix:jdbcResolve添加适配syabse 2 years ago
Austin.Duan-段嗣跃 b065c176d9 Pull request #7131: 无JIRA任务,修复类型错误 2 years ago
Aries.lsy 8bcdadec6d REPORT-91394 fix:jdbcResolve添加适配syabse 2 years ago
Austin.Duan 75bd5a8a89 无JIRA任务,修复类型错误 2 years ago
Aries.Lsy-黎思妤 39fb20d36d Pull request #7130: REPORT-91396 fix:拼接url精准匹配:database 2 years ago
Aries.lsy 6cbfe97912 REPORT-91396 fix:拼接url精准匹配:database 2 years ago
superman 9e1fdd3e06 Merge pull request #7129 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 406e400e26 Merge pull request #7128 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 42a67ff3d6 Merge pull request #7127 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman b35f4847e0 Merge pull request #7120 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman 843198ecad Merge pull request #7081 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 84d71a6fc0 Merge pull request #7080 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Aries.Lsy-黎思妤 963c365a5b Pull request #7072: REPORT-90864 fix:拼接url精准匹配/database 2 years ago
Aries.lsy fd698f5970 REPORT-90864 fix:拼接url精准匹配/database 2 years ago
superman 942958933e Merge pull request #7071 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 2a3ea89267 Merge pull request #7070 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 479e926b1f Pull request #7062: REPORT-90807 fix: 数据连接适配加密改造 2 years ago
Austin.Duan 3b6e365777 无JIRA任务,更新下类型 2 years ago
Austin.Duan 60f23068a1 REPORT-90807 fix: 适配加解密改造 2 years ago
superman a53c750a75 Merge pull request #7052 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 59e05e7efc Merge pull request #7051 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 1b3ed2780a Merge pull request #7043 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman 01e98d7f7d Merge pull request #7042 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 c1e16ab544 Pull request #7014: REPORT-88759 feat: 数据连接适配FDL 2 years ago
Austin.Duan b4e6752f7b 无JIRA任务,优化下类型 2 years ago
Austin.Duan 1a08c32804 Merge branch 'feature/x' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into feature/x 2 years ago
Austin.Duan 7a6261949d REPORT-88759 feat: 数据连接适配FDL 2 years ago
Aries.Lsy-黎思妤 6e87ab1068 Pull request #7004: REPORT-88994 feat:适配Kingbase8.0版本 2 years ago
Aries.lsy 13bd0bc9c4 REPORT-88994 feat:适配Kingbase8.0版本 2 years ago
superman dba2d4508b Merge pull request #6994 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 69dda1c220 Merge pull request #6993 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman e2fcc2cf91 Merge pull request #6985 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman d26d2eb1f3 Merge pull request #6984 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman cbc0c89297 Merge pull request #6978 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 914b05bcaa Merge pull request #6913 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 322fcbe08f Merge pull request #6912 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 057c4d4c02 Merge pull request #6911 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman ac993f728d Merge pull request #6908 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman 70a563d215 Merge pull request #6901 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman dc16cad652 Merge pull request #6900 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 a8d96361bb Pull request #6892: REPORT-86413 revert 回退加密改造内容 2 years ago
Austin.Duan 057f9d804c Revert "REPORT-86413 feat: 数据连接适配平台加解密改造" 2 years ago
superman a29d04c3c9 Merge pull request #6882 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 4abbc1d2b3 Merge pull request #6881 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 21bbea47b6 Pull request #6873: REPORT-89173 fix: 适配下接口 2 years ago
Austin.Duan cafec9672f Merge branch 'release/11.0' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into release/11.0 2 years ago
Austin.Duan 1665e6ebca REPORT-89173 fix: 适配下接口 2 years ago
superman e3bf7701af Merge pull request #6872 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 7a353a47b3 Merge pull request #6871 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 6c09907778 Pull request #6863: REPORT-89173 fix: JNDI入口屏蔽 2 years ago
Austin.Duan 49779bdcbd 无JIRA任务,处理下类型 2 years ago
Austin.Duan 06835d70a5 REPORT-89173 fix: JNDI入口屏蔽 2 years ago
superman 4bdf696881 Merge pull request #6852 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 632a2d1e0a Merge pull request #6851 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 1ccf2406aa Merge pull request #6843 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman 67b80df564 Merge pull request #6842 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
superman 01338636bb Merge pull request #6840 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman c189cc9c11 Merge pull request #6839 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman a8c465c5ef Merge pull request #6838 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman 1dec8fcd3f Merge pull request #6832 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
Austin.Duan-段嗣跃 75c7e52880 Pull request #6830: REPORT-86413 feat: 数据连接适配平台加解密改造 2 years ago
Austin.Duan 1cfe9d2ddb REPORT-86413 feat: 数据连接适配平台加解密改造 2 years ago
superman 4e65f93d54 Merge pull request #6813 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 8483fe824d Merge pull request #6812 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 5b53bf63ab Merge pull request #6811 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 5c15f42354 Merge pull request #6810 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman ffad031a7a Merge pull request #6804 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
Aries.Lsy-黎思妤 ff7c07e14f Pull request #6803: REPORT-87662 feat:数据连接添加版本选择 tbase适配 2 years ago
Aries.lsy 8ed653f044 REPORT-87662 feat:tbase适配tdsql的更改 2 years ago
Aries.lsy 9f5eb9077d REPORT-87662 feat:数据连接添加版本选择 2 years ago
Aries.Lsy-黎思妤 99d19669f2 Pull request #6802: REPORT-86591 fix:tdsql数据库更名 2 years ago
Aries.lsy 7f467dab34 REPORT-86591 fix:tdsql数据库更名 2 years ago
superman 6b7000905d Merge pull request #6800 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman c9ddf01ab9 Merge pull request #6799 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman dcaf8b4802 Merge pull request #6798 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman 4144c5cf05 Merge pull request #6792 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 6c93799ac2 Merge pull request #6746 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman f317068039 Merge pull request #6745 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 48804a4cf2 Merge pull request #6744 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 0b612ae517 Merge pull request #6737 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman 4c4d851d60 Merge pull request #6602 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 334899dc2f Merge pull request #6601 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 65753d8ce6 Merge pull request #6593 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman f8770d6d9f Merge pull request #6592 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
superman 86811542e6 Merge pull request #6546 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman ba5524f8a9 Merge pull request #6545 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman bb2f13231c Merge pull request #6544 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman c7f9f5e16a Merge pull request #6543 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman 087e0eb30d Merge pull request #6537 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman e234a0fcf3 Merge pull request #6509 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman c988584e53 Merge pull request #6508 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 656254e106 Merge pull request #6507 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman d3bee0e965 Merge pull request #6506 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman d57ad793ae Merge pull request #6500 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman b0dfc4d8af Merge pull request #6499 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman 0bd1db8cc9 Merge pull request #6450 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 166f3ab496 Merge pull request #6449 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Austin.Duan-段嗣跃 0cd779e9c7 Pull request #6440: REPORT-85619 feat: 拓展下数据连接配置功能 2 years ago
Aries.Lsy-黎思妤 de1fac7644 Pull request #6441: REPORT-85200 fix:修复「初始化连接数」错误提示显示问题 2 years ago
Aries.lsy bd0a0f0e17 REPORT-85200 fix:修复「初始化连接数」错误提示显示问题 2 years ago
Austin.Duan-段嗣跃 e71d9d4263 Pull request #1: REPORT-85619 feat: 拓展下数据连接配置功能 2 years ago
Austin.Duan abea0a53ae Merge branch 'feature/x' of ssh://code.fineres.com:7999/~austin.duan/decision-webui-dcm into feature/x 2 years ago
Austin.Duan 75c06d9318 REPORT-85619 feat: 拓展下数据连接配置功能 2 years ago
superman 1137f1a6cb Merge pull request #6439 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 26b6886f21 Merge pull request #6438 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Aries.Lsy-黎思妤 9483119863 Pull request #6430: REPORT-85441 fix:clickhouse连接url添加database 2 years ago
Aries.lsy e7a20272cf REPORT-85441 fix:clickhouse连接url添加database 2 years ago
superman bb184a6346 Merge pull request #6411 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 9ad0dd6516 Merge pull request #6410 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 486d308b51 Merge pull request #6402 in DEC/decision-webui-dcm from feature/x to release/11.0 2 years ago
superman fa83b5c028 Merge pull request #6356 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman bfee952075 Merge pull request #6355 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 01fb9239a5 Merge pull request #6354 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman aadb834d64 Merge pull request #6353 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman f051a210d4 Merge pull request #6337 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 6eca2087be Merge pull request #6326 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 70432ba725 Merge pull request #6325 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Kevin.King-王凯壮 fa4f5ae6a4 Pull request #6308: BI-116671 fix:数据连接管理-新建数据连接界面在IE浏览器下有问题,最右侧取消和保存部分不显示 2 years ago
Kevin.King 5dd6a58ef9 BI-116671 fix:数据连接管理-新建数据连接界面在IE浏览器下有问题,最右侧取消和保存部分不显示 2 years ago
superman 01d38f8db6 Merge pull request #6298 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 1740711f7a Merge pull request #6297 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman cd073c4df7 Merge pull request #6296 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman d3ecd417d7 Merge pull request #6289 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
Aries.Lsy-黎思妤 07ba12dbb3 Pull request #6287: REPORT-83276 fix:修复FileUpload组件errorInfo未隐藏问题 2 years ago
Aries.lsy d79323b53c REPORT-83276 fix:修复FileUpload组件errorInfo未隐藏问题 2 years ago
superman cf2304eb55 Merge pull request #6268 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman e18323d4a9 Merge pull request #6267 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman f27c1423b8 Merge pull request #6266 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 08802dfae9 Merge pull request #6265 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman c37cb4056c Merge pull request #6184 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman e505ebb0d0 Merge pull request #6259 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 1e625fa4f8 Merge pull request #6258 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 76296368ad Merge pull request #6250 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman 6fddfd24e3 Merge pull request #6249 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
superman fd2af06793 Merge pull request #6194 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman d59d7fcd8c Merge pull request #6193 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Aries.Lsy-黎思妤 03654614c4 Pull request #6185: REPORT-82479 feat:添加数据连接超时设置页面 2 years ago
Aries.lsy 566b8b9ed6 REPORT-82479 feat:添加数据连接超时设置页面 2 years ago
superman a7548df0c9 Merge pull request #6174 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman ad05bd05ce Merge pull request #6173 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 3bddaa11d8 Merge pull request #6172 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 8a9c4f3afc Merge pull request #6171 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman 3b8a0c8e9c Merge pull request #6165 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 31b312839f Merge pull request #6154 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 308027ee61 Merge pull request #6153 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Aries.Lsy-黎思妤 961d699847 Pull request #6145: BI-115632 fix:jdbcResolve添加适配SAPHANA 2 years ago
Aries.lsy aed9cbd4b5 BI-115632 fix:jdbcResolve添加适配SAPHANA 2 years ago
superman 01de1802f3 Merge pull request #6135 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman ae9eebbfcf Merge pull request #6134 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 73716365c4 Merge pull request #6133 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 4da0a70f27 Merge pull request #6126 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman dfa8a36943 Merge pull request #6105 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman a07ea7e6d2 Merge pull request #6104 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Aries.Lsy-黎思妤 e04432e30e Pull request #6096: REPORT-81743 fix:用buttongroup替换listview 2 years ago
Aries.lsy 00c48eee0c REPORT-81743 fix:用buttongroup替换listview 2 years ago
superman 8aceec1914 Merge pull request #6085 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 66a17f8980 Merge pull request #6084 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 876426d6d9 Merge pull request #6083 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 761f166063 Merge pull request #6074 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman baa41dba19 Merge pull request #6054 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 4c930aa86f Merge pull request #6053 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 0f3107ecbb Merge pull request #6042 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman 9a3f789625 Merge pull request #6041 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
superman 22423d0e3e Merge pull request #6022 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman be112d231e Merge pull request #6021 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman ef39b281c1 Merge pull request #6020 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 0f10d04f83 Merge pull request #6019 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
Aries.Lsy-黎思妤 c2f4a2f22b Pull request #6012: REPORT-79641 fix:KerberosParams编辑前需要被初始化 2 years ago
Aries.lsy 2e7097acc3 REPORT-79641 fix:KerberosParams编辑前需要被初始化 2 years ago
superman 47787f9318 Merge pull request #6010 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman aa8388c87d Merge pull request #5981 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 2a2b5a3dad Merge pull request #5971 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman ba61395a1d Merge pull request #5970 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 4a0dcf621e Merge pull request #5963 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman b749d5368c Merge pull request #5962 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
lidongy-李东原 6f98b358a5 Pull request #5950: BI-112056【平台配合任务】在平台数据连接添加starrocks 2 years ago
lidongy 9deb4cb5b3 BI-112056【平台配合任务】在平台数据连接添加starrocks图标 2 years ago
superman 73afee82bf Merge pull request #5841 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman b97a48f10f Merge pull request #5840 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 2d78b646a9 Merge pull request #5839 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 76a44db40c Merge pull request #5838 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman 57721dabf7 Merge pull request #5832 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 90bb9c2eb9 Merge pull request #5803 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman a245f3f6ca Merge pull request #5802 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 8801e60126 Merge pull request #5794 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman b0ea0877ce Merge pull request #5793 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman b6a6c53f15 Merge pull request #5783 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman a40b0357d6 Merge pull request #5782 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Aries.Lsy e44f66f126 Pull request #5774: BI-112953 fix:jdbcResolve正则匹配trino 2 years ago
Aries.lsy 49e216478c BI-112953 fix:jdbcResolve正则匹配trino 2 years ago
superman c3f5a4a147 Merge pull request #5763 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 7180d5ec70 Merge pull request #5762 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman a65ace4fd5 Merge pull request #5761 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 0e312f8893 Merge pull request #5760 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman dcd8e46bf7 Merge pull request #5753 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman 5972a5157a Merge pull request #5752 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
superman b7a2aab6c0 Merge pull request #5748 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 50f1840c44 Merge pull request #5750 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman ec57ba328b Merge pull request #5747 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 728248ac34 Merge pull request #5746 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman f8c67d9f2d Merge pull request #5745 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman ffdbdbc455 Merge pull request #5738 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 5a62169c99 Merge pull request #5720 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman ea44a8d035 Merge pull request #5719 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 205e7132a6 Merge pull request #5718 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 6d79f3d6f7 Merge pull request #5711 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman b7e247b179 Merge pull request #5710 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
Aries.Lsy 9ca5596294 Pull request #5707: BI-108526 BI-111537 feat:添加trino tdsql数据连接 2 years ago
Aries.lsy 08c8df4012 BI-108526 BI-111537 feat:添加trino tdsql数据连接 2 years ago
Aries.Lsy f57793293e Pull request #5705: REPORT-78047 fix:greenplum连接url自动拼写添加DatabaseName= 2 years ago
Aries.lsy 0708799d06 REPORT-78047 fix:greenplum连接url自动拼写添加DatabaseName= 2 years ago
Kevin.King 721455c608 Pull request #5695: REPORT-77480 feat:SSRF漏洞处理 2 years ago
Kevin.King 50debb93e9 REPORT-77480 fix:SSRF漏洞处理 2 years ago
Kevin.King 1009867445 REPORT-77480 fix:SSRF漏洞处理 2 years ago
Aries.lsy 8158bc5a03 REPORT-75699 fix:处理控制台重复注册组件的报错 2 years ago
superman 6ed964328f Merge pull request #5604 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 05ccea5362 Merge pull request #5603 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman a6171eed16 Merge pull request #5602 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman b26fae93f1 Merge pull request #5601 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman c9ae3d4ea9 Merge pull request #5595 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 4e6173ff4a Merge pull request #5557 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman cbb58a7f90 Merge pull request #5556 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman ddd98df9e3 Merge pull request #5555 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 316a570b4f Merge pull request #5548 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman b1f56c500f Merge pull request #5544 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 76a4b4aef8 Merge pull request #5543 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 00a57786db Merge pull request #5542 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 79549184d9 Merge pull request #5535 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman c345d3f295 Merge pull request #5523 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman c0fe0a76c6 Merge pull request #5522 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 48ce217085 Merge pull request #5514 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 3b2d1102ad Merge pull request #5513 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman 03d14872a2 Merge pull request #5499 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman ea3527f796 Merge pull request #5498 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
superman 7022d25583 Merge pull request #5494 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
Aries.Lsy 99e37a7c64 Pull request #5497: REPORT-75699 fix:编辑连接时principal值与选项初始化 2 years ago
Aries.lsy 787aa83b90 REPORT-75699 fix:规范方法命名 2 years ago
Aries.lsy 27871652ab REPORT-75699 fix:编辑连接时principal值与选项初始化 2 years ago
superman 35e81df99f Merge pull request #5496 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman dae17e694d Merge pull request #5493 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman de189fe486 Merge pull request #5492 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
Aries.Lsy 94abbc5960 Pull request #5485: REPORT-75736 fix:显示时间改为上传时间 2 years ago
Aries.lsy af840451ad REPORT-75736 fix:显示时间改为上传时间 2 years ago
Aries.Lsy fd754e0860 Pull request #5482: REPORT-74590 fix:国际化key修正 2 years ago
Aries.lsy fa84ddb63b REPORT-74590 fix:国际化key修正 2 years ago
superman 2665e8db5e Merge pull request #5465 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman df3f9610c9 Merge pull request #5464 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 7406d14871 Merge pull request #5463 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
Aries.Lsy c96f8313a1 Pull request #5452: REPORT-72487 fix:数据连接优化前端代码 2 years ago
superman 767626d8a7 Merge pull request #5456 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman 8a5f344959 Merge pull request #5455 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
Aries.lsy 598546772c REPORT-72487 fix:代码规范 2 years ago
Aries.lsy 16f8d21823 REPORT-72487 fix:代码规范 2 years ago
Aries.lsy 3c4f53a4ab REPORT-72487 fix:代码规范 2 years ago
Aries.lsy 912407297d REPORT-72487 fix:var更改为let或const 2 years ago
Aries.lsy f9d98bff0c REPORT-72487 fix:数据连接优化前端代码 2 years ago
superman fd809e8546 Merge pull request #5451 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman a95b29ffaa Merge pull request #5450 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
Aries.Lsy ea62fd6b74 Pull request #5442: REPORT-72487 feat:新增国际化 2 years ago
Aries.lsy a2c1620dba REPORT-72487 feat:新增国际化 2 years ago
Aries.Lsy 41063a1b74 Pull request #5441: REPORT-74590 fix:国际化key修正 2 years ago
Aries.lsy cc95b3f2e0 REPORT-74590 fix:国际化key修正 2 years ago
superman fc6d0f5887 Merge pull request #5408 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 698540adbf Merge pull request #5407 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman c7781dadf2 Merge pull request #5406 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman ad1d7f55ea Merge pull request #5405 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman ea35447449 Merge pull request #5398 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 01328e21bb Merge pull request #5361 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman a57b54e779 Merge pull request #5360 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 428514acbc Merge pull request #5359 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman b0f1f67387 Merge pull request #5358 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman 80412ccbb8 Merge pull request #5352 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 2 years ago
superman 07ecd62f84 Merge pull request #5315 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 933051ffa0 Merge pull request #5314 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 8cce91bd94 Merge pull request #5313 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman ecda4ce075 Merge pull request #5306 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman 77a484a212 Merge pull request #5278 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman d6c4cf174b Merge pull request #5277 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 960d8cf230 Merge pull request #5276 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman e483790f11 Merge pull request #5269 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman 0d0711e6b2 Merge pull request #5268 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 0c254cff15 Merge pull request #5267 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman 086b0e67cf Merge pull request #5266 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 02417d3a87 Merge pull request #5259 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman e9d47d253b Merge pull request #5258 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 2 years ago
superman 88b27d907d Merge pull request #5257 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 2 years ago
superman beb98be6c2 Merge pull request #5255 in DEC/decision-webui-dcm from final/11.0 to release/11.0 2 years ago
superman 5e1742e60f Merge pull request #5256 in DEC/decision-webui-dcm from release/11.0 to final/11.0 2 years ago
superman 91ce90cfd2 Merge pull request #5254 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 2 years ago
superman 6608053e30 Merge pull request #5248 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 2 years ago
superman 39217563d6 Merge pull request #5246 in DEC/decision-webui-dcm from feature/x to bugfix/11.0 2 years ago
superman b02c3d2bb8 Merge pull request #5240 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
Cauchy.Ke c467cd0037 Pull request #5225: 无jira任务, bugfix/11.0 合 feature/x 3 years ago
superman b8397d11c4 Merge pull request #5224 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 3 years ago
superman 9b6c5eb684 Merge pull request #5223 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 383b563c43 Merge pull request #5222 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 0f02b1f434 Merge pull request #5216 in DEC/decision-webui-dcm from release/11.0 to final/11.0 3 years ago
superman 5543010436 Merge pull request #5215 in DEC/decision-webui-dcm from bugfix/11.0 to release/11.0 3 years ago
superman 259c845248 Merge pull request #5210 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 572cb2e5ff Merge pull request #5175 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 3 years ago
superman ba22691dcc Merge pull request #5174 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 3 years ago
Cauchy.Ke 9f74cdd0c3 Pull request #5165: REPORT-72078 fix:【11.0】修复Informix类型连接的URL转换问题 3 years ago
Cauchy.Ke 796386969e REPORT-72078 fix:修复Informix类型连接的URL转换问题 3 years ago
Cauchy.Ke b3f011141b Pull request #5164: REPORT-72078 fix:修复Informix类型连接的URL转换问题 3 years ago
Cauchy.Ke 9c851d9d02 REPORT-72078 fix:修复Informix类型连接的URL转换问题 3 years ago
superman 99b7ffd476 Merge pull request #5145 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 3 years ago
superman 89e264ab10 Merge pull request #5144 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 3 years ago
superman 184c5f4362 Merge pull request #5143 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman c1b86fc001 Merge pull request #5142 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 0d2ffb1cbb Merge pull request #5136 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 37ca68200c Merge pull request #5135 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 3 years ago
superman 413a407706 Merge pull request #5134 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 3 years ago
superman cf83c32214 Merge pull request #5133 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman e005f21696 Merge pull request #5132 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman ba66ca6487 Merge pull request #5125 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 5576171ede Merge pull request #5096 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 3 years ago
superman 981326ec62 Merge pull request #5095 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 3 years ago
superman bdbb51b8bb Merge pull request #5094 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 7d1a1cf10c Merge pull request #5093 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 18c5f0957a Merge pull request #5088 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman b2b521263e Merge pull request #5069 in DEC/decision-webui-dcm from bugfix/11.0 to feature/x 3 years ago
superman f52314f437 Merge pull request #5068 in DEC/decision-webui-dcm from release/11.0 to bugfix/11.0 3 years ago
superman d2e2284131 Merge pull request #5052 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 8c1899efee Merge pull request #5051 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 002ddc67ce Merge pull request #5044 in DEC/decision-webui-dcm from release/11.0 to final/11.0 3 years ago
superman 5023ef0600 Merge pull request #5019 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 8afbe2a7ec Merge pull request #5018 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 6ebe436589 Merge pull request #5017 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 2571c41846 Merge pull request #5011 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman a90e7b1427 Merge pull request #5009 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman af77c19839 Merge pull request #5000 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
superman eb44b29984 Merge pull request #4959 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 4dd55b587e Merge pull request #4958 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 0f29f86dab Merge pull request #4957 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman c95794150f Merge pull request #4951 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 8ca2fe476e Merge pull request #4934 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 617fa7ddb7 Merge pull request #4933 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 01a5fd0f18 Merge pull request #4932 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 9f01556c44 Merge pull request #4926 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 16df773d9c Merge pull request #4900 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 2f1932560c Merge pull request #4899 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 1ca8ad6dd2 Merge pull request #4892 in DEC/decision-webui-dcm from release/11.0 to final/11.0 3 years ago
Aries.Lsy c2fbb449b8 Pull request #4839: Revert "REPORT-69127 fix:修改Hadoop生态数据连接hasSchema值" 3 years ago
Aries.lsy 6e1b41ca3b Merge branch 'feature/x' of ssh://code.fineres.com:7999/~aries.lsy/decision-webui-dcm into feature/x 3 years ago
Aries.lsy 449030d9a7 Revert "REPORT-69127 fix:修改Hadoop生态数据连接hasSchema值" 3 years ago
superman e6abcae2d6 Merge pull request #4822 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 0ce0cdbb6d Merge pull request #4821 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 81df303056 Merge pull request #4820 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman a384d7e115 Merge pull request #4814 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 2a61a09d63 Merge pull request #4813 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman efda866dfb Merge pull request #4812 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 8b01042f21 Merge pull request #4811 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 0909a39829 Merge pull request #4805 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 201877fae9 Merge pull request #4794 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 5ebe63c217 Merge pull request #4793 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
Kara 21a3d80b7c Pull request #4786: 无jira任务, release/11.0 合 final/11.0 3 years ago
Aries.Lsy e79dc7504d Pull request #4784: REPORT-69127 fix:修改Hadoop生态数据连接hasSchema值 3 years ago
Aries.lsy 1745a5e9d8 REPORT-69127 fix:修改Hadoop生态数据连接hasSchema值 3 years ago
superman 82f2f69493 Merge pull request #4711 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 68de0e899c Merge pull request #4701 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
superman dc50a6a928 Merge pull request #4668 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman b500e2511b Merge pull request #4667 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 871cd5c773 Merge pull request #4666 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 8c606e6089 Merge pull request #4660 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman f524ba5a05 Merge pull request #4641 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 7e701c6d20 Merge pull request #4640 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 24840047e8 Merge pull request #4639 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 3f2fd56b70 Merge pull request #4633 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 0372b5ea55 Merge pull request #4599 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 0d2172e683 Merge pull request #4598 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman f2ec72dde3 Merge pull request #4591 in DEC/decision-webui-dcm from release/11.0 to final/11.0 3 years ago
Cauchy.Ke 51dd5fb283 Pull request #4588: REPORT-67986 fix:【迭代】【数据连接支持SSH及SSL】优化显示 3 years ago
Cauchy.Ke ed600b2006 REPORT-67986 fix:【迭代】【数据连接支持SSH及SSL】优化显示 3 years ago
Cauchy.Ke b4dde2b78f Pull request #4563: DEC-22540 fix:【迭代】【数据连接支持SSH及SSL】调整目录树节点名称 3 years ago
Cauchy.Ke 248451ea60 DEC-22540 fix:【迭代】【数据连接支持SSH及SSL】调整目录树节点名称 3 years ago
superman a8f74c7d4c Merge pull request #4562 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 034ed9bb3d Merge pull request #4561 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 44e46c4f44 Merge pull request #4560 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 44b4fd5357 Merge pull request #4554 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
Cauchy.Ke 01dca08510 Pull request #4545: DEC-22408 feat:【迭代】【数据连接支持SSH及SSL】 3 years ago
Cauchy.Ke f427f41fd8 DEC-22408 feat:【迭代】【数据连接支持SSH及SSL】调整gap 3 years ago
Cauchy.Ke 8158ac4ce6 DEC-22408 feat:【迭代】【数据连接支持SSH及SSL】 3 years ago
superman a64009b050 Merge pull request #4488 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 4f710e573b Merge pull request #4487 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman b2a36fb293 Merge pull request #4486 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman c8c7aa0c49 Merge pull request #4480 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 43afe437ce Merge pull request #4445 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 82a1dc556c Merge pull request #4444 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 3039ea64b0 Merge pull request #4443 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman f4ba768e66 Merge pull request #4437 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 467cc8c0a3 Merge pull request #4428 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman e1ace0035e Merge pull request #4427 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman e7c84d5e71 Merge pull request #4426 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 7c7928a18f Merge pull request #4420 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman d4beccd1c4 Merge pull request #4387 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 80cbde52a1 Merge pull request #4386 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 8a80f20b7e Merge pull request #4379 in DEC/decision-webui-dcm from release/11.0 to final/11.0 3 years ago
superman 1a63c1a2a5 Merge pull request #4343 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 3d627a6787 Merge pull request #4335 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
superman 9fb62179b6 Merge pull request #4164 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 8c67080e2f Merge pull request #4163 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman bb340b6810 Merge pull request #4162 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman e8117efd17 Merge pull request #4156 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 4e83be3d04 Merge pull request #4155 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 3fe784484b Merge pull request #4154 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman be948a0c1e Merge pull request #4153 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 15c9648656 Merge pull request #4147 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 1070ed2611 Merge pull request #4113 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 22021acaff Merge pull request #4112 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman ae6702b53c Merge pull request #4105 in DEC/decision-webui-dcm from release/11.0 to final/11.0 3 years ago
superman 62bcf82277 Merge pull request #4079 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 87251362ee Merge pull request #4078 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman c495428db5 Merge pull request #4077 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 63d9a94556 Merge pull request #4071 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 5d0080714c Merge pull request #4070 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 24aa7ae224 Merge pull request #4049 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman e4dceb00d7 Merge pull request #4031 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 642f9b28dc Merge pull request #4030 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 5532af5f06 Merge pull request #4029 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman f76ffeeeb5 Merge pull request #4022 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 5545d63a41 Merge pull request #4003 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 936177aa94 Merge pull request #4002 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 2bce28cfad Merge pull request #4001 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 831591105e Merge pull request #3994 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 029d5ed149 Merge pull request #3993 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman dd68dbbe6c Merge pull request #3992 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 9093ac8099 Merge pull request #3984 in DEC/decision-webui-dcm from release/11.0 to final/11.0 3 years ago
superman ef7b855f39 Merge pull request #3974 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman fe3b4370b7 Merge pull request #3969 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 0cec6c91d7 Merge pull request #3936 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman f2bfb66a1d Merge pull request #3931 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman b26a220774 Merge pull request #3923 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
Dailer 0e6043c5d4 Pull request #3898: DEC-21782 feat: 适配dremio数据源 3 years ago
dailer 369e428735 DEC-21782 feat: 适配dremio数据源 3 years ago
superman 0839d8136e Merge pull request #3861 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 8309bdf24f Merge pull request #3860 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 88d7875e61 Merge pull request #3859 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 367966b80b Merge pull request #3852 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 809a177466 Merge pull request #3842 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 5ec4da4390 Merge pull request #3841 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 4488447763 Merge pull request #3840 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman c3be27ec98 Merge pull request #3837 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 3f8402555e Merge pull request #3833 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
Dailer f3a129c632 Pull request #3821: DEC-21782 feat: 适配dremio数据源 3 years ago
dailer 7c727e4e37 DEC-21809 fix: 【迭代】【连接池配置优化】最大空闲连接数未删除 3 years ago
dailer 2f49db5e3f Merge branch 'feature/x' of ssh://cloud.finedevelop.com:7999/~dailer/decision-webui-dcm into feature/x 3 years ago
dailer 28aaed596d DEC-21782 feat: 适配dremio数据源 3 years ago
superman 94d3fbfa3c Merge pull request #3793 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 1211b40b5b Merge pull request #3788 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
Dailer 85a7128c45 Pull request #3760: DEC-21498 fix: 【FR配合】连接池配置优化 3 years ago
dailer bef463ad19 DEC-21498 fix: 【FR配合】连接池配置优化 3 years ago
superman 02375d8c15 Merge pull request #3759 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 6103d67b0d Merge pull request #3758 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 3b2e9a228f Merge pull request #3757 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 4295c80a51 Merge pull request #3750 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman edb236db32 Merge pull request #3740 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 6da7a12d78 Merge pull request #3739 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 5c6419d08a Merge pull request #3738 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 41417d559d Merge pull request #3735 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 1dd52b93a2 Merge pull request #3730 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 927d0e78bf Merge pull request #3711 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 2734c92578 Merge pull request #3710 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 01316dc12a Merge pull request #3709 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 55bccfaf0d Merge pull request #3706 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman df1c2170c1 Merge pull request #3698 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 3ee03605c4 Merge pull request #3669 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 8dcfaaca4e Merge pull request #3668 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 40235f248d Merge pull request #3660 in DEC/decision-webui-dcm from release/11.0 to final/11.0 3 years ago
superman 81ea653e22 Merge pull request #3641 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman d6baceaab0 Merge pull request #3636 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 4de6f0ebd2 Merge pull request #3613 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman e5a4978b8f Merge pull request #3608 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
Dailer f3ca4ff6c9 Pull request #3604: DEC-21535 fix: 【迭代】【达梦数据库适配】数据库输入URL,对应参数不回填 3 years ago
dailer f4f0a552b6 DEC-21535 fix: 【迭代】【达梦数据库适配】数据库输入URL,对应参数不回填 3 years ago
superman a5d1924676 Merge pull request #3603 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
Dailer dff99d60d1 Pull request #3545: DEC-21444 feat: 【BI配合】达梦数据库适配 3 years ago
dailer 67151ab586 DEC-21444 feat: 【BI配合】达梦数据库适配 3 years ago
dailer b14563262d DEC-21444 feat: 【BI配合】达梦数据库适配 3 years ago
superman 315607ff7e Merge pull request #3508 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
Dailer 0e5dda852d Pull request #3499: DEC-21469 fix: 【迭代】【驱动管理v1.1】两个驱动类相同的自定义驱动,新建数据连接保存后会默认显示最新的那个 3 years ago
dailer 29c53b976a DEC-21469 fix: 【迭代】【驱动管理v1.1】两个驱动类相同的自定义驱动,新建数据连接保存后会默认显示最新的那个 3 years ago
superman f78dafb825 Merge pull request #3476 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 890d89aba3 Merge pull request #3475 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman be883b61b9 Merge pull request #3474 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 751c33cf72 Merge pull request #3471 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 83888a2b2d Merge pull request #3461 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 124f91d72c Merge pull request #3463 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
Dailer 25d4b2fb98 Pull request #3452: Feature/x 3 years ago
superman 98827aa6eb Merge pull request #3407 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 88f312d2dc Merge pull request #3402 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman fa1d62bd64 Merge pull request #3398 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 6adfe6fb55 Merge pull request #3397 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 78adfbb28e Merge pull request #3395 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 89511d5217 Merge pull request #3389 in DEC/decision-webui-dcm from release/11.0 to final/11.0 3 years ago
superman 54728b20c7 Merge pull request #3365 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman b3b6db44f6 Merge pull request #3346 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman c681dcbd12 Merge pull request #3324 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 4620296804 Merge pull request #3323 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman fa03431731 Merge pull request #3322 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman da578ffff4 Merge pull request #3321 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman f73bfe2ea5 Merge pull request #3315 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman ed86275b2d Merge pull request #3304 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman e09cf4f670 Merge pull request #3303 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 61a9525090 Merge pull request #3302 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 5f81ff9db5 Merge pull request #3295 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman 757f632741 Merge pull request #3291 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 47a3b38123 Merge pull request #3275 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 1e5d63ce1f Merge pull request #3274 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 25f9f5b574 Merge pull request #3273 in DEC/decision-webui-dcm from persist/11.0 to final/11.0 3 years ago
superman 2e2e4fbca1 Merge pull request #3270 in DEC/decision-webui-dcm from final/11.0 to persist/11.0 3 years ago
superman f004275cfc Merge pull request #3245 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman ef7e35c8c5 Merge pull request #3244 in DEC/decision-webui-dcm from final/11.0 to release/11.0 3 years ago
superman 655f229251 Merge pull request #3241 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 7e174e6e24 Merge pull request #3242 in DEC/decision-webui-dcm from release/11.0 to final/11.0 3 years ago
Dailer b456c805e5 Pull request #3210: Revert "DEC-20201 feat: 【迭代】【驱动管理】屏蔽驱动管理入口以及相关功能" 3 years ago
dailer 351740976c Revert "DEC-20201 feat: 【迭代】【驱动管理】屏蔽驱动管理入口以及相关功能" 3 years ago
superman d3a7d5fbeb Merge pull request #3209 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman a9d53e739b Merge pull request #3206 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman b72f1bfcab Merge pull request #3193 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
superman 316701667b Merge pull request #3194 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 98df09285d Merge pull request #3156 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 0cc77952a9 Merge pull request #3141 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 02721a23e2 Merge pull request #3090 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 58ef590200 Merge pull request #3042 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman f3aa69f0cd Merge pull request #3041 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman d71a042b17 Merge pull request #3028 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman b85872c7d4 Merge pull request #3027 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 84a12d6eff Merge pull request #3002 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 0e8924ba8f Merge pull request #3001 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 1c69a1e828 Merge pull request #2937 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 0f9446b572 Merge pull request #2936 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman b0cf085d27 Merge pull request #2900 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 192f52ea6e Merge pull request #2899 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman b04ea73f6c Merge pull request #2878 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 03ea8b6d8b Merge pull request #2877 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 40994df378 Merge pull request #2863 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 0c992425ef Merge pull request #2855 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
superman 67c8d11b9b Merge pull request #2847 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 54e296c1f8 Merge pull request #2846 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman f6c19b4506 Merge pull request #2840 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
superman 022440a84c Merge pull request #2838 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman c8ae4735df Merge pull request #2837 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 4c481ab9ea Merge pull request #2825 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 6cafa23f8c Merge pull request #2824 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman ac83e11f48 Merge pull request #2789 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman f414107f3e Merge pull request #2788 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 764b4986ff Merge pull request #2773 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 1e5324a55b Merge pull request #2772 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 700ef3d295 Merge pull request #2757 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 0a760c15d5 Merge pull request #2756 in DEC/decision-webui-dcm from release/10.0 to release/11.0 3 years ago
superman 5436efd0af Merge pull request #2604 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 92f5888409 Merge pull request #2603 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman 5f7b5d7aa9 Merge pull request #2596 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
superman 95a7089aa1 Merge pull request #2588 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 655bf580ae Merge pull request #2587 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman b59b82caa6 Merge pull request #2574 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 24d1c80203 Merge pull request #2573 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman 57367fac9f Merge pull request #2543 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman cc341efd5e Merge pull request #2542 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman fb78a6e28a Merge pull request #2507 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 7842c1bf47 Merge pull request #2506 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman e6274659f6 Merge pull request #2464 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 42e20ae0ee Merge pull request #2463 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman c7c4a3853b Merge pull request #2457 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman f8596f5ecc Merge pull request #2454 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman 623fa4d6a3 Merge pull request #2433 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 8f4b4040a0 Merge pull request #2432 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman 5c7791822b Merge pull request #2418 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 3e60b6035e Merge pull request #2411 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
superman 5d4cb8b0ce Merge pull request #2410 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 033826f06e Merge pull request #2403 in DEC/decision-webui-dcm from feature/x to release/11.0 3 years ago
superman 9ef29811b2 Merge pull request #2368 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 6adad8b8ba Merge pull request #2367 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman b614440541 Merge pull request #2361 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 007a7d285c Merge pull request #2360 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman afee119288 Merge pull request #2338 in DEC/decision-webui-dcm from release/11.0 to feature/x 3 years ago
superman 391c3c6d7c Merge pull request #2337 in DEC/decision-webui-dcm from feature/10.0 to release/11.0 3 years ago
superman ee312d1cf9 Merge pull request #2317 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 243fa9968e Merge pull request #2304 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 7b02029f18 Merge pull request #2285 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman cb3992f672 Merge pull request #2272 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 73ed805c78 Merge pull request #2259 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 9d64fd4e89 Merge pull request #2253 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman e604f1bced Merge pull request #2216 in DEC/decision-webui-dcm from feature/10.0 to feature/x 3 years ago
superman 668a8f4179 Merge pull request #2191 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 90dc9e61b9 Merge pull request #2184 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 3d917f03a8 Merge pull request #2164 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 03d522682f Merge pull request #2140 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 4d97a2d1d6 Merge pull request #2115 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 0ce4008750 Merge pull request #2078 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 72d448b1d2 Merge pull request #2064 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 9c0537f414 Merge pull request #2033 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman e3b901089e Merge pull request #2002 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 43580f26eb Merge pull request #1955 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 268630f833 Merge pull request #1949 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman dbbec2f78f Merge pull request #1940 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman fdf607df76 Merge pull request #1905 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman eb3f632a1c Merge pull request #1850 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 48b1e794e0 Merge pull request #1831 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman d913cb8e99 Merge pull request #1794 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 4a5e264b57 Merge pull request #1788 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman cab0bbc3d5 Merge pull request #1756 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 5419bb35cc Merge pull request #1731 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 31e4b7f73d Merge pull request #1701 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman fb4fa7edc8 Merge pull request #1681 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 23d2bdcbb3 Merge pull request #1626 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 19159f09de Merge pull request #1594 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman eea3f5516a Merge pull request #1521 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 3b9c45f53e Merge pull request #1492 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 331b2251bb Merge pull request #1404 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman a56a24cb04 Merge pull request #1357 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman 3fc1cb4e1d Merge pull request #1330 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
superman d9d405b0d3 Merge pull request #1297 in DEC/decision-webui-dcm from feature/10.0 to feature/x 4 years ago
  1. 5
      .eslintrc
  2. 165
      README.md
  3. 14
      babel.config.js
  4. 18
      i18n/zh_cn.properties
  5. 7
      package.json
  6. 16
      private/i18n.ts
  7. 3
      src/modules/app.model.ts
  8. 115
      src/modules/app.provider.ts
  9. 38
      src/modules/app.service.ts
  10. 34
      src/modules/app.ts
  11. 11
      src/modules/app.typings.d.ts
  12. 6
      src/modules/components/collapse/collapse.ts
  13. 68
      src/modules/components/file_chooser/file_chooser.model.ts
  14. 183
      src/modules/components/file_chooser/file_chooser.ts
  15. 13
      src/modules/components/file_upload/file_upload.less
  16. 35
      src/modules/components/file_upload/file_upload.model.ts
  17. 327
      src/modules/components/file_upload/file_upload.ts
  18. 33
      src/modules/components/test_status/test_status.ts
  19. 21
      src/modules/components/test_status/tip_icon/tip_fail.ts
  20. 44
      src/modules/components/text_checker/text_checker.ts
  21. 41
      src/modules/components/tips_combo/tips_combo.ts
  22. 110
      src/modules/constants/constant.ts
  23. 52
      src/modules/core/checkIllegalStrings/checkIllegalStrings.ts
  24. 15
      src/modules/core/checkIllegalStrings/constant.ts
  25. 1
      src/modules/core/index.ts
  26. 17
      src/modules/crud/api.ts
  27. 6
      src/modules/crud/crud.service.ts
  28. 237
      src/modules/crud/crud.typings.d.ts
  29. 48
      src/modules/crud/decision.api.ts
  30. 27
      src/modules/crud/design.api.ts
  31. 24
      src/modules/pages/__point__/connect.point.ts
  32. 9
      src/modules/pages/connection/connection.model.ts
  33. 84
      src/modules/pages/connection/connection.ts
  34. 270
      src/modules/pages/connection/connection_jdbc/connection_jdbc.ts
  35. 1
      src/modules/pages/connection/list/list.constant.ts
  36. 28
      src/modules/pages/connection/list/list.model.ts
  37. 2
      src/modules/pages/connection/list/list.ts
  38. 3
      src/modules/pages/connection/list/list_item/list_item.model.ts
  39. 33
      src/modules/pages/connection/list/list_item/list_item.ts
  40. 17
      src/modules/pages/database/database.constant.ts
  41. 15
      src/modules/pages/database/database.model.ts
  42. 46
      src/modules/pages/database/database.ts
  43. 7
      src/modules/pages/database/database_type/database_type.model.ts
  44. 4
      src/modules/pages/database/database_type/database_type.ts
  45. 17
      src/modules/pages/maintain/components/driverselector/driverselector.model.ts
  46. 32
      src/modules/pages/maintain/components/driverselector/driverselector.ts
  47. 16
      src/modules/pages/maintain/components/form_item/form_item.ts
  48. 1559
      src/modules/pages/maintain/forms/components/form.jdbc.ts
  49. 4
      src/modules/pages/maintain/forms/components/form.plugin.ts
  50. 5
      src/modules/pages/maintain/forms/form.model.ts
  51. 58
      src/modules/pages/maintain/forms/form.server.ts
  52. 101
      src/modules/pages/maintain/forms/form.ts
  53. 12
      src/modules/pages/maintain/maintain.ts
  54. 96
      src/modules/pages/setting/setting.ts
  55. 11
      src/modules/title/title.ts
  56. 5
      src/modules/title/title_database/title_datebase.ts
  57. 3
      src/modules/title/title_maintain/title_maintain.model.ts
  58. 14
      src/modules/title/title_maintain/title_maintain.ts
  59. 24
      tsconfig.json
  60. 22
      types/globals.d.ts
  61. 9
      types/request.d.ts

5
.eslintrc

@ -30,7 +30,8 @@
"no-use-before-define": [ "no-use-before-define": [
"error", "error",
{ {
"functions": false "functions": false,
"classes ": false
} }
], ],
"new-cap": [ "new-cap": [
@ -179,7 +180,7 @@
"array-bracket-spacing": ["error", "never"], // 数组紧贴括号部分不允许包含空格 "array-bracket-spacing": ["error", "never"], // 数组紧贴括号部分不允许包含空格
"object-curly-spacing": ["error", "always"], // 对象紧贴花括号部分不允许包含空格 "object-curly-spacing": ["error", "always"], // 对象紧贴花括号部分不允许包含空格
"no-regex-spaces": "error", // 禁止正则表达式字面量中出现多个空格 "no-regex-spaces": "error", // 禁止正则表达式字面量中出现多个空格
"no-multi-spaces": "error", // 禁止出现多个空格而且不是用来作缩进的 // "no-multi-spaces": "error", // 禁止出现多个空格而且不是用来作缩进的
"block-spacing": ["error", "never"], // 单行代码块中紧贴括号部分不允许包含空格 "block-spacing": ["error", "never"], // 单行代码块中紧贴括号部分不允许包含空格
"computed-property-spacing": ["error", "never"], // 禁止括号和其内部值之间的空格 "computed-property-spacing": ["error", "never"], // 禁止括号和其内部值之间的空格
"no-trailing-spaces": [ "no-trailing-spaces": [

165
README.md

@ -7,7 +7,7 @@
## 开始 ## 开始
安装依赖 安装依赖
``` ```
yarn yarn install
``` ```
开始开发 开始开发
@ -15,8 +15,107 @@ yarn
yarn dev yarn dev
``` ```
## 决策平台开发:
### A.项目运行
#### 1. 工程`decision-webui-dev`添加代理(可跳过)
```js
webpack/webpack.config
"/plugin/dcm": {
pathRewrite: { "^/plugin/dcm": "" },
target: "http://localhost:10002",
},
```
#### 2. 工程`decision-webui-dev`引入
fr环境:`templates/bundle.report.html` bi环境:`templates/bundle.bi.html`
```html
// css 文件:
<head>
<link rel="stylesheet" type="text/css" href="/plugin/dcm/show.dev.css" />
<link rel="stylesheet" type="text/css" href="http://localhost:10002/show.dev.css" />
</head>
// js 文件
<script type="text/javascript" src="/plugin/dcm/show.dev.js"></script>
```
若未设1,将`/plugin/dcm`替换成`http://localhost:10002`亦可
#### 3. 启动工程[decision-webui-dev]以及数据连接[desicion-webui-dcm]工程
#### 4. 此时工程`decision-webui-dev`的`http://localhost:9002/#management/connnection`数据连接模块已替换成该工程
### B.插件形式添加数据连接-数据库
#### 1. 以多版本的tdsql为例 单一版本数据库不需drivers,versions,hasSchemas
```js
BI.config("dec.connection.provider.datebase", function (provider) {
BI.isFunction(provider.registerJdbcDatabase) && provider.registerJdbcDatabase({
text: 'TDSQL', // 数据库名称
databaseType: 'tdsql', // 数据库key
driver: 'org.postgresql.Driver', // 默认驱动
drivers: {
"pgsql": ["org.postgresql.Driver"],
"mysql": ["com.mysql.jdbc.Driver"]
}, // 驱动可选项,version: array[driver],[0]为该版本的默认驱动
versions: ["pgsql", "mysql"], // array[version]
urls: {
"org.postgresql.Driver": "jdbc:postgresql://hostname:port/database?finedbType=tdsql-pgsql",
"com.mysql.jdbc.Driver": "jdbc:mysql://hostname:port/database?finedbType=tdsql-mysql"
}, // urlkey : url 一个驱动对应一个url
url: 'jdbc:postgresql://hostname:port/database?finedbType=tdsql-pgsql',
commonly: false,
internal: true,
type: 'jdbc', 数据库类型
hasSchema: true, // 默认是否支持模式
hasSchemas: {
"pgsql": true,
"mysql": false,
},是否支持模式 version: boolean
kerberos: false, // 是否添加kerberos认证方式
}, function (url) {
var result = url.match(/^jdbc:(mysql|postgresql):\/\/([0-9a-zA-Z_\\.-]+)(:([0-9|port]+))?\/([0-9a-zA-Z_\\.]+)(.*)finedbType=([^&]+)(|(&.*))/i); // 匹配正则
if (result) {
return {
host: result[2], //主机
port: result[4] === "port" ? "" : result[4], // 端口
databaseName: result[5], // 数据库名称
version: result[7].split('-')[1] ?? "pgsql", // 版本 单版本不要返回这个
};
}
//适配原先tbase的url
result = url.match(/^jdbc:postgresql:\/\/([0-9a-zA-Z_\\.-]+)(:([0-9|port]+))?\/([0-9a-zA-Z_\\.]+)(.*)/i);
if (result) {
return {
host: result[1],
port: result[3] === "port" ? "" : result[3],
databaseName: result[4],
version: "pgsql",
};
}
});
});
```
### C 工程开发
#### 1. 图片资源添加
工程`decision-webui-dev`
decision-webui/dist/images/1x/icon/database
decision-webui/dist/images/2x/icon/database
#### 2. 国际化添加
工程`decision-webui-dev`
decision-i18n/decision-main-i18n/src/main/resources/com/fr/decision/web/i18n
#### 3. 版本控制
版本和平台保持一致
## 接口文档: ## 接口文档:
### 增加数据连接类型 ### A 增加数据连接类型
#### 1. 增加数据连接类型
使用`BI.config`,ConstantName名称为`dec.constant.database.conf.connect.types`,值为连接的名称 使用`BI.config`,ConstantName名称为`dec.constant.database.conf.connect.types`,值为连接的名称
例如增加`Redis`的连接: 例如增加`Redis`的连接:
@ -30,25 +129,25 @@ BI.config(ConstantPluginTyps, (datas: string[]) => [...datas, {
}]); }]);
``` ```
### 数据连接填写页面 #### 2. 数据连接填写页面
edit属性值为填写组件shortcut的名称 edit属性值为填写组件shortcut的名称
### 数据连接展示页面 #### 3. 数据连接展示页面
show属性值为组件shortcut的名称 show属性值为组件shortcut的名称
### 示例 #### 4. 示例
``` ```js
const DataBaseConfigProvider = 'dec.connection.provider.datebase'; const DataBaseConfigProvider = 'dec.connection.provider.datebase';
const RedisShowName = 'dec.dcm.connection.plugin.redis.show'; const RedisShowName = 'dec.dcm.connection.plugin.redis.show';
const RedisEditName = 'dec.dcm.connection.plugin.redis.edit'; const RedisEditName = 'dec.dcm.connection.plugin.redis.edit';
BI.config(DataBaseConfigProvider, function (provider) { BI.config(DataBaseConfigProvider, function (provider) {
provider.registerDatabaseType({ provider.registerDatabaseType([{
text: "Redis", text: "Redis",
databaseType: "Redis", databaseType: "Redis",
edit: "dec.dcm.connection.plugin.demo.edit", edit: "dec.dcm.connection.plugin.demo.edit",
show: "dec.dcm.connection.plugin.demo.show", show: "dec.dcm.connection.plugin.demo.show",
}); }]);
}); });
const RedisShow = BI.inherit(BI.Widget, { const RedisShow = BI.inherit(BI.Widget, {
@ -116,7 +215,7 @@ const RedisShow = BI.inherit(BI.Widget, {
], ],
}, },
], ],
}; },
}, },
}); });
BI.shortcut(RedisShowName, RedisShow); BI.shortcut(RedisShowName, RedisShow);
@ -211,7 +310,55 @@ const RedisEdit = BI.inherit(BI.Widget, {
password: this.password.getValue(), password: this.password.getValue(),
}; };
}, },
//可以触发组件的数据save方法,不需要则可不写
async save() {
let result = false;
await Promise.resolve().then(() => {result = true});
//要求返回是否成功的boolean变量
return result;
},
}); });
BI.shortcut(RedisEditName, RedisEdit); BI.shortcut(RedisEditName, RedisEdit);
``` ```
### B 添加数据连接实例
#### 1. 增加数据连接
```js
BI.config('dec.constant.connection.list', function (value) {
const result = [{
"connectionType": "Redis",//和databaseType一致
"connectionName": "CHART",//类似于id,唯一性
"pluginConnection": true,//表示是外来添加的插件
"connectionData": {
//表单保存数据
},
"connectionId": null,
}];
return value.concat(result);
})
```
### C 添加数据连接类型分类
#### 1. 添加分类DEMO
```js
BI.config('dec.constant.database.filter.type', (value) => {
value.push({
text:"DEMO",
value:"DEMO_VALUE"
});
return value;
});
```
#### 2. 添加数据连接类型进DEMO
```js
BI.config('dec.connection.provider.datebase', function (provider) {
text: "Redis",//必填
databaseType: "Redis",//唯一值
marker: 'DEMO_VALUE',//marker对标dec.constant.database.filter.type常量item的value,用于过滤
isHideConnection: true, //是否隐藏测试连接按钮
isNoSave: true,//是否不执行平台的保存逻辑
iconUrl:'https://work.fineres.com/secure/projectavatar?pid=10301&avatarId=10011',
driver: 'com.amazon.redshift.jdbc41.Driver',
drivers: ['com.amazon.redshift.jdbc4.Driver', 'com.amazon.redshift.jdbc41.Driver'],
url: 'jdbc:redshift://endpoint:port/database',
}
```

14
babel.config.js

@ -1,3 +1,13 @@
module.exports = function (api) { module.exports = api => {
return require("@fui/babel-preset-fineui").configs.base(api) const { plugins, presets, sourceType } = require("@fui/babel-preset-fineui").configs.base(api);
return {
compact: false,
presets,
sourceType,
plugins: [
...plugins,
"@babel/plugin-proposal-logical-assignment-operators",
],
};
}; };

18
i18n/zh_cn.properties

@ -62,6 +62,11 @@ Dec-Dcm_Connection_Form_UserName= 用户名
Dec-Dcm_Connection_Form_Password= 密码 Dec-Dcm_Connection_Form_Password= 密码
Dec-Dcm_Connection_Form_Principal= 客户端principal Dec-Dcm_Connection_Form_Principal= 客户端principal
Dec-Dcm_Connection_Form_KeyPath= keytab密钥路径 Dec-Dcm_Connection_Form_KeyPath= keytab密钥路径
Dec-Dcm_Connection_Form_Krb5File= krb5.conf文件
Dec-Dcm_Connection_File_Upload_Success= 已成功上传并校验成功
Dec-Dcm_Connection_File_Upload_Error= 检测异常
Dec-Dcm_Connection_File_Upload_ErrorCode= 错误代码
Dec-Dcm_Connection_File_Upload_ErrorMsg= 错误详情
Dec-Dcm_Connection_Form_Pool_Properties= 连接池属性 Dec-Dcm_Connection_Form_Pool_Properties= 连接池属性
Dec-Dcm_Connection_Form_SQL_Validation_Query= SQL验证查询 Dec-Dcm_Connection_Form_SQL_Validation_Query= SQL验证查询
Dec-Dcm_Connection_Form_Connection-Check= 获取连接前校验 Dec-Dcm_Connection_Form_Connection-Check= 获取连接前校验
@ -80,10 +85,10 @@ Dec-Dcm_Connection_Form_Database_Max_Wait= 最大等待时间
Dec-Dcm_Connection_Form_Database_Validation_Query= SQL验证查询 Dec-Dcm_Connection_Form_Database_Validation_Query= SQL验证查询
Dec-Dcm_Connection_Form_Database_Test_On_Borrow= 获取连接前检验 Dec-Dcm_Connection_Form_Database_Test_On_Borrow= 获取连接前检验
Dec-Dcm_Connection_Form_Database_Test_On_Return= 归还连接前检验 Dec-Dcm_Connection_Form_Database_Test_On_Return= 归还连接前检验
Dec-Dcm_Connection_Form_Database_Test_While_Idle= 开启空闲回收器检 Dec-Dcm_Connection_Form_Database_Test_While_Idle= 获取连接时空闲连接可用性校
Dec-Dcm_Connection_Form_Database_Test_Between_Eviction_Millis= 空闲连接回收器休眠时间 Dec-Dcm_Connection_Form_Database_Test_Between_Eviction_Millis= 空闲连接回收器工作间隔
Dec-Dcm_Connection_Form_Database_Tests_PerEviction_Run_Num= 空闲连接回收检查数 Dec-Dcm_Connection_Form_Database_Tests_PerEviction_Run_Num= 空闲连接回收检查数
Dec-Dcm_Connection_Form_Database_Min_Evictable_Idle_Time_Millis= 保持空闲最小时间 Dec-Dcm_Connection_Form_Database_Min_Evictable_Idle_Time_Millis= 空闲连接回收时间阈
Dec-Dcm_Connection_Make_Sure_Delete= 确定删除该数据连接? Dec-Dcm_Connection_Make_Sure_Delete= 确定删除该数据连接?
Dec-Dcm_Connection_ReConnect= 重新连接 Dec-Dcm_Connection_ReConnect= 重新连接
Dec-Dcm_Connection_JNDI_Form_ConnectionName= JNDI的名字 Dec-Dcm_Connection_JNDI_Form_ConnectionName= JNDI的名字
@ -96,7 +101,7 @@ Dec-Dcm_Connection_JNDI= JNDI数据连接
Dec-Dcm_Connection_JNDI_Warning= 注意:需要把包含INTIAL_CONTEXT_FACTORY类的.jar文件复制到软件安装目录下的/lib目录下 Dec-Dcm_Connection_JNDI_Warning= 注意:需要把包含INTIAL_CONTEXT_FACTORY类的.jar文件复制到软件安装目录下的/lib目录下
Dec-Dcm_Connection_Error= 接口访问错误 Dec-Dcm_Connection_Error= 接口访问错误
Dec-Dcm_Connection_Is_Using= 该连接正在被{R1}编辑,请稍后再试 Dec-Dcm_Connection_Is_Using= 该连接正在被{R1}编辑,请稍后再试
Dec-Dcm_Connection_Check_Integer= 请输入不小于0的整数 Dec-Dcm_Connection_Check_Integer= 请输入不小于{}的整数
Dec-Dcm_Connection_Check_Number= 只允许为整数 Dec-Dcm_Connection_Check_Number= 只允许为整数
Dec-Dcm_Connection_JDBC_Other=其他JDBC Dec-Dcm_Connection_JDBC_Other=其他JDBC
Dec-Dcm_Connection_JDBC_Warning= 请确认已经将krb5.Conf文件添加到/webapps/webroot/WEB_INF/resources目录 Dec-Dcm_Connection_JDBC_Warning= 请确认已经将krb5.Conf文件添加到/webapps/webroot/WEB_INF/resources目录
@ -304,3 +309,8 @@ BI-Basic_Now= 此刻
Dec-Dcm_Connection_Analytic_DB=阿里云AnalyticDB Dec-Dcm_Connection_Analytic_DB=阿里云AnalyticDB
Dec-Dcm_Connection_Value_Out_Range=数值超出范围 Dec-Dcm_Connection_Value_Out_Range=数值超出范围
Dec-Dcm_Socket_Unable_Connect_Tip=可能出现编辑冲突 Dec-Dcm_Socket_Unable_Connect_Tip=可能出现编辑冲突
Dec-Dcm_Connection_File_Upload_ErrorTip1= 参考
Dec-Dcm_Connection_File_Upload_ErrorTip2= kerberos配置
Dec-Dcm_Connection_File_Upload_ErrorTip3= 获取帮助或联系技术支持
Dec-Dcm_Connection_Timeout_Detection=数据连接超时检测
Dec-Dcm_Connection_Timeout_Millisecond=毫秒(ms)

7
package.json

@ -7,6 +7,7 @@
"author": "decision", "author": "decision",
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"@babel/plugin-proposal-logical-assignment-operators": "^7.20.7",
"@types/jss": "9.5.8", "@types/jss": "9.5.8",
"autoprefixer": "^9.6.1", "autoprefixer": "^9.6.1",
"es6-promise": "4.2.6", "es6-promise": "4.2.6",
@ -18,9 +19,9 @@
"devDependencies": { "devDependencies": {
"@fui/babel-preset-fineui": "^1.0.0", "@fui/babel-preset-fineui": "^1.0.0",
"@types/jest": "24.0.11", "@types/jest": "24.0.11",
"@typescript-eslint/eslint-plugin": "1.7.0", "@typescript-eslint/eslint-plugin": "^5.0.0",
"@typescript-eslint/parser": "1.7.0", "@typescript-eslint/parser": "^5.0.0",
"axios": "0.18.0", "axios": "^0.24.0",
"babel-loader": "8.0.6", "babel-loader": "8.0.6",
"body-parser": "1.18.3", "body-parser": "1.18.3",
"chokidar": "2.1.5", "chokidar": "2.1.5",

16
private/i18n.ts

@ -61,6 +61,11 @@ export default {
'Dec-Dcm_Connection_Form_Password': '密码', 'Dec-Dcm_Connection_Form_Password': '密码',
'Dec-Dcm_Connection_Form_Principal': '客户端principal', 'Dec-Dcm_Connection_Form_Principal': '客户端principal',
'Dec-Dcm_Connection_Form_KeyPath': 'keytab密钥路径', 'Dec-Dcm_Connection_Form_KeyPath': 'keytab密钥路径',
'Dec-Dcm_Connection_Form_Krb5File': 'krb5.conf文件',
'Dec-Dcm_Connection_File_Upload_Success': ' 已成功上传并校验成功',
'Dec-Dcm_Connection_File_Upload_Error': '检测异常',
'Dec-Dcm_Connection_File_Upload_ErrorCode': '错误代码',
'Dec-Dcm_Connection_File_Upload_ErrorMsg': '错误详情',
'Dec-Dcm_Connection_Form_Pool_Properties': '连接池属性', 'Dec-Dcm_Connection_Form_Pool_Properties': '连接池属性',
'Dec-Dcm_Connection_Form_SQL_Validation_Query': 'SQL验证查询', 'Dec-Dcm_Connection_Form_SQL_Validation_Query': 'SQL验证查询',
'Dec-Dcm_Connection_Form_Connection-Check': '获取连接前校验', 'Dec-Dcm_Connection_Form_Connection-Check': '获取连接前校验',
@ -79,10 +84,10 @@ export default {
'Dec-Dcm_Connection_Form_Database_Validation_Query': 'SQL验证查询', 'Dec-Dcm_Connection_Form_Database_Validation_Query': 'SQL验证查询',
'Dec-Dcm_Connection_Form_Database_Test_On_Borrow': '获取连接前检验', 'Dec-Dcm_Connection_Form_Database_Test_On_Borrow': '获取连接前检验',
'Dec-Dcm_Connection_Form_Database_Test_On_Return': '归还连接前检验', 'Dec-Dcm_Connection_Form_Database_Test_On_Return': '归还连接前检验',
'Dec-Dcm_Connection_Form_Database_Test_While_Idle': '开启空闲回收器检验', 'Dec-Dcm_Connection_Form_Database_Test_While_Idle': '获取连接时空闲连接可用性校验',
'Dec-Dcm_Connection_Form_Database_Test_Between_Eviction_Millis': '空闲连接回收器休眠时间', 'Dec-Dcm_Connection_Form_Database_Test_Between_Eviction_Millis': '空闲连接回收器工作间隔',
'Dec-Dcm_Connection_Form_Database_Tests_PerEviction_Run_Num': '空闲连接回收检查数', 'Dec-Dcm_Connection_Form_Database_Tests_PerEviction_Run_Num': '空闲连接回收检查数',
'Dec-Dcm_Connection_Form_Database_Min_Evictable_Idle_Time_Millis': '保持空闲最小时间值', 'Dec-Dcm_Connection_Form_Database_Min_Evictable_Idle_Time_Millis': '空闲连接回收时间阈值',
'Dec-Dcm_Connection_Make_Sure_Delete': '确定删除该数据连接?', 'Dec-Dcm_Connection_Make_Sure_Delete': '确定删除该数据连接?',
'Dec-Dcm_Connection_ReConnect': '重新连接', 'Dec-Dcm_Connection_ReConnect': '重新连接',
'Dec-Dcm_Connection_JNDI_Form_ConnectionName': 'JNDI的名字', 'Dec-Dcm_Connection_JNDI_Form_ConnectionName': 'JNDI的名字',
@ -95,7 +100,7 @@ export default {
'Dec-Dcm_Connection_JNDI_Warning': '注意:需要把包含INTIAL_CONTEXT_FACTORY类的.jar文件复制到软件安装目录下的/lib目录下', 'Dec-Dcm_Connection_JNDI_Warning': '注意:需要把包含INTIAL_CONTEXT_FACTORY类的.jar文件复制到软件安装目录下的/lib目录下',
'Dec-Dcm_Connection_Error': '接口访问错误', 'Dec-Dcm_Connection_Error': '接口访问错误',
'Dec-Dcm_Connection_Is_Using': '该连接正在被{R1}编辑,请稍后再试', 'Dec-Dcm_Connection_Is_Using': '该连接正在被{R1}编辑,请稍后再试',
'Dec-Dcm_Connection_Check_Integer': '请输入不小于0的整数', 'Dec-Dcm_Connection_Check_Integer': '请输入不小于{}的整数',
'Dec-Dcm_Connection_Check_Number': '只允许为整数', 'Dec-Dcm_Connection_Check_Number': '只允许为整数',
'Dec-Dcm_Connection_JDBC_Other': '其他JDBC', 'Dec-Dcm_Connection_JDBC_Other': '其他JDBC',
'Dec-Dcm_Connection_JDBC_Warning': '请确认已经将krb5.Conf文件添加到/webapps/webroot/WEB_INF/resources目录', 'Dec-Dcm_Connection_JDBC_Warning': '请确认已经将krb5.Conf文件添加到/webapps/webroot/WEB_INF/resources目录',
@ -306,4 +311,7 @@ export default {
'Dec-Connection_Lic_Limit_Approach_Tip': '当前数据连接数量超过注册lic限制({}个),所有数据连接都不可用,请删除多余的数据连接', 'Dec-Connection_Lic_Limit_Approach_Tip': '当前数据连接数量超过注册lic限制({}个),所有数据连接都不可用,请删除多余的数据连接',
'Dec-Connection_Lic_Limit_Approach_Prevent_Tip': '当前数据连接数量已经达到注册lic限制({}个),无法新增', 'Dec-Connection_Lic_Limit_Approach_Prevent_Tip': '当前数据连接数量已经达到注册lic限制({}个),无法新增',
'Dec-Dcm_Connection_Check_Fetch_Size_Range': '请输入0-1000000之间的值', 'Dec-Dcm_Connection_Check_Fetch_Size_Range': '请输入0-1000000之间的值',
'Dec-Dcm_Connection_File_Upload_ErrorTip1':'参考',
'Dec-Dcm_Connection_File_Upload_ErrorTip2': 'kerberos配置',
'Dec-Dcm_Connection_File_Upload_ErrorTip3': '取帮助或联系技术支持',
}; };

3
src/modules/app.model.ts

@ -7,7 +7,7 @@ import { getAllDatabaseTypes } from './app.service';
export class AppModel extends Model { export class AppModel extends Model {
static xtype = 'dec.dcm.model.main'; static xtype = 'dec.dcm.model.main';
childContext = <const>['pageIndex', 'datebaseTypeSelected', 'datebaseTypeSelectedOne', 'filter', 'connections', 'connectionSelected', 'connectionSelectedOne', 'saveEvent', 'testEvent', 'isCopy', 'connectionLicInfo']; childContext = <const>['pageIndex', 'datebaseTypeSelected', 'datebaseTypeSelectedOne', 'filter', 'connections', 'connectionSelected', 'connectionSelectedOne', 'saveEvent', 'testEvent', 'isCopy', 'connectionLicInfo', 'noTestConnection'];
state() { state() {
return { return {
@ -23,6 +23,7 @@ export class AppModel extends Model {
currentConnectionNum: 0, currentConnectionNum: 0,
maxConnectionNum: 0, maxConnectionNum: 0,
}, },
noTestConnection: false,
}; };
} }

115
src/modules/app.provider.ts

@ -1,11 +1,67 @@
import { CONSTANT_PLUGIN_TYPES } from './app.constant'; import { CONSTANT_PLUGIN_TYPES } from './app.constant';
import { DATA_BASE_TYPES } from '@constants/constant';
BI.provider('dec.connection.provider.datebase', function () { BI.provider('dec.connection.provider.datebase', function () {
this.resolves = {}; this.resolves = {};
function starRocksResolve(url: string) {
// 处理starRocks数据连接常规模式
let result = url.match(/^jdbc:mysql:\/\/([0-9a-zA-Z_\\.-]+):([0-9a-zA-Z_\\.-]+)\/([0-9a-zA-Z_\\.-]+)\.([^]+)(.*)/i);
if (result) {
return {
host: result[1],
port: result[2] === 'port' ? '' : result[2],
catalog: result[3],
databaseName: result[4],
urlInfo: result[0],
};
} else {
// 兼容老数据库里面没有catalog的情况
result = url.match(/^jdbc:mysql:\/\/([0-9a-zA-Z_\\.-]+):([0-9a-zA-Z_\\.-]+)\/([^]+)(.*)/i);
if (result) {
return {
host: result[1],
port: result[2] === 'port' ? '' : result[2],
catalog: '',
databaseName: result[3],
urlInfo: result[0],
};
}
}
// 处理starRocks数据连接负载均衡模式
let loadBalance = url.match(/^jdbc:mysql:loadbalance:\/\/[^/]+\/([^/]+)\.([^/]+)/i);
if (loadBalance) {
return {
host: '',
port: '',
catalog: loadBalance[1],
databaseName: loadBalance[2],
urlInfo: loadBalance[0],
}
} else {
// 兼容老数据库里面没有catalog的情况
loadBalance = url.match(/^jdbc:mysql:loadbalance:\/\/[^/]+\/([^/]+)([^/]+)/i);
if (loadBalance) {
return {
host: '',
port: '',
catalog: '',
databaseName: loadBalance[1],
urlInfo: loadBalance[0],
}
}
}
return {
host: '',
port: '',
databaseName: '',
urlInfo: '',
};
}
// 原service中resolveUrlInfo方法 // 原service中resolveUrlInfo方法
function jdbcResolve(url: string) { function jdbcResolve(url: string) {
if (BI.isNull(url)) return {}; if (BI.isNull(url)) return {};
const oracleUlr = url.match(/^jdbc:(oracle):(thin:([0-9a-zA-Z/]*)?@|thin:([0-9a-zA-Z/]*)?@\/\/|\/\/|)([0-9a-zA-Z_\\.-]+)(:([0-9|port]+))?(:|\/)([^]+)(.*)/i); const oracleUlr = url.match(/^jdbc:(oracle):(thin:([0-9a-zA-Z/]*)?@|thin:([0-9a-zA-Z/]*)?@\/\/|\/\/|)([0-9a-zA-Z_\\.-]+)(:([0-9|port]+))?(:|\/)([^]+)(.*)/i);
if (oracleUlr) { if (oracleUlr) {
return { return {
@ -16,7 +72,7 @@ BI.provider('dec.connection.provider.datebase', function() {
}; };
} }
const greenplumUrl = url.match(/^jdbc:(pivotal:greenplum):(thin:([0-9a-zA-Z/]*)?@\/\/|\/\/|)([0-9a-zA-Z_\\.-]+)(:([0-9|port]+))?(\/|;)([^]+)(.*)/i); const greenplumUrl = url.match(/^jdbc:(pivotal:greenplum):(thin:([0-9a-zA-Z/]*)?@\/\/|\/\/|)([0-9a-zA-Z_\\.-]+)(:([0-9|port]+))?(\/|;DatabaseName=)?([^]+)(.*)/i);
if (greenplumUrl) { if (greenplumUrl) {
return { return {
host: greenplumUrl[4], host: greenplumUrl[4],
@ -25,7 +81,7 @@ BI.provider('dec.connection.provider.datebase', function() {
urlInfo: greenplumUrl[9], urlInfo: greenplumUrl[9],
}; };
} }
const result = url.match(/^jdbc:(mysql|sqlserver|db2|impala|kylin|phoenix|derby|gbase|gbasedbt-sqli|informix-sqli|h2|postgresql|hive2|vertica|kingbase|presto|redshift|postgresql|clickhouse):(thin:([0-9a-zA-Z/]*)?@|thin:([0-9a-zA-Z/]*)?@\/\/|\/\/|)([0-9a-zA-Z_\\.-]+)(:([0-9|port]+))?(\/|;DatabaseName=)?([^]+)?(.*)/i); const result = url.match(/^jdbc:(mysql|sqlserver|db2|dm|impala|kylin|phoenix|derby|gbase|gbasedbt-sqli|informix-sqli|h2|postgresql|hive2|vertica|kingbase|presto|redshift|postgresql|clickhouse|trino|sybase:Tds):(thin:([0-9a-zA-Z/]*)?@|thin:([0-9a-zA-Z/]*)?@\/\/|\/\/|)([0-9a-zA-Z_\\.-]+)(:([0-9|port]+))?(\/|;DatabaseName=)?([^]+)?(.*)/i);
if (result) { if (result) {
return { return {
host: result[5], host: result[5],
@ -35,6 +91,17 @@ BI.provider('dec.connection.provider.datebase', function() {
}; };
} }
// 处理SAP HANA数据连接url
const sapHanaUrl = url.match(/^jdbc:(sap):(thin:([0-9a-zA-Z/]*)?@|thin:([0-9a-zA-Z/]*)?@\/\/|\/\/|)([0-9a-zA-Z_\\.-]+)(:([0-9|port]+))?(\?databaseName=)?([^&]+)([^]+)?(.*)/i);
if (sapHanaUrl) {
return {
host: sapHanaUrl[5],
port: sapHanaUrl[7] === 'port' ? '' : sapHanaUrl[7],
databaseName: sapHanaUrl[9] || '',
urlInfo: sapHanaUrl[10],
};
}
// 处理oracle的RAC方式 // 处理oracle的RAC方式
if (/^jdbc:oracle:thin:([0-9a-zA-Z/]*)?@\(DESCRIPTION/i.test(url)) { if (/^jdbc:oracle:thin:([0-9a-zA-Z/]*)?@\(DESCRIPTION/i.test(url)) {
const host = url.match(/\(HOST\s*=\s*([0-9a-zA-Z_\\.-]+)\)/i); const host = url.match(/\(HOST\s*=\s*([0-9a-zA-Z_\\.-]+)\)/i);
@ -48,7 +115,6 @@ BI.provider('dec.connection.provider.datebase', function() {
urlInfo: '', urlInfo: '',
}; };
} }
return { return {
host: '', host: '',
port: '', port: '',
@ -57,18 +123,55 @@ BI.provider('dec.connection.provider.datebase', function() {
}; };
} }
function coverBaseDatabase(config) {
const baseDataBase = DATA_BASE_TYPES.find(item => item.text === config.text);
if (BI.isNotNull(baseDataBase)) {
// 覆盖基础配置
Object.assign(baseDataBase, config);
return true;
}
return false;
}
function filterPluginDataTypeByPriority() {
const originTypes = [...BI.Constants.getConstant(CONSTANT_PLUGIN_TYPES)];
const sortDataTypes = BI.sortBy(originTypes, (index, value: any) => {
return value.priority || 0;
})
return BI.uniqWith(sortDataTypes, (current, other) => {
return current.text == other.text;
});
}
this.registerDatabaseType = (config: any) => { this.registerDatabaseType = (config: any) => {
if (coverBaseDatabase(config)) return;
BI.config(CONSTANT_PLUGIN_TYPES, connections => BI.concat(connections, config)); BI.config(CONSTANT_PLUGIN_TYPES, connections => BI.concat(connections, config));
}; };
this.registerJdbcDatabase = (config: any, resolve?: Function) => { this.registerJdbcDatabase = (config: any, resolve?: Function) => {
BI.config(CONSTANT_PLUGIN_TYPES, connections => BI.concat(connections, { ...config, type: 'jdbc' })); config = {
...config,
type: 'jdbc',
};
BI.isFunction(resolve) && (this.resolves[config.databaseType] = resolve); BI.isFunction(resolve) && (this.resolves[config.databaseType] = resolve);
if (coverBaseDatabase(config)) return;
BI.config(CONSTANT_PLUGIN_TYPES, connections => BI.concat(connections, config));
}; };
this.$get = () => BI.inherit(BI.OB, { this.$get = () => BI.inherit(BI.OB, {
getJdbcResolveByType: (type: string) => this.resolves[type] || jdbcResolve, getJdbcResolveByType: (type: string) => {
// starRocks特殊处理
// todo: 后面有专门的迭代系统处理,这里先临时解决下bug
if (type === "starrocks"){
return starRocksResolve
}
return this.resolves[type] || jdbcResolve
},
customDatabaseType: BI.Constants.getConstant(CONSTANT_PLUGIN_TYPES), customDatabaseType: BI.Constants.getConstant(CONSTANT_PLUGIN_TYPES),
}); });
}); });

38
src/modules/app.service.ts

@ -1,4 +1,10 @@
import { DATA_BASE_TYPES, DATA_BASE_TYPES_OTHER, DESIGN_DRIVER_TYPE, OTHER_JDBC } from '@constants/constant'; import {
DATA_BASE_TYPES,
DATA_BASE_TYPES_OTHER,
DESIGN_DRIVER_TYPE,
OTHER_JDBC,
DATABASE_TYPE,
} from '@constants/constant';
import { DatabaseType } from './app.typings'; import { DatabaseType } from './app.typings';
import { Connection } from './crud/crud.typings'; import { Connection } from './crud/crud.typings';
export function getAllDatabaseTypes(): DatabaseType[] { export function getAllDatabaseTypes(): DatabaseType[] {
@ -61,14 +67,40 @@ export function resolveUrlInfo (url: string, database?: string) {
} }
// 拼接url // 拼接url
export function splitUrl(host: string, port: string, database: string, baseUrl: string) { export function splitUrl(host: string, port: string, catalog: string, database: string, baseUrl: string, databaseType: string) {
if (baseUrl.startsWith('jdbc:sqlserver')) { if (baseUrl.startsWith('jdbc:sqlserver')) {
return baseUrl.replace('hostname', host).replace(':port', port ? `:${port}` : '') return baseUrl.replace('hostname', host).replace(':port', port ? `:${port}` : '')
.replace('=database', `=${database}`); .replace('=database', `=${database}`);
} }
return baseUrl.replace('hostname', host).replace(':port', port ? `:${port}` : '') // https://work.fineres.com/browse/REPORT-72078
if (baseUrl.startsWith('jdbc:informix-sqli')) {
return baseUrl.replace('hostname', host)
.replace(':port', port ? `:${port}` : '')
.replace('database', database) .replace('database', database)
.replace(':INFORMIXSERVER={server}', '');
}
if (databaseType === DATABASE_TYPE.STAR_ROCKS) {
let databaseStr = '';
if (!catalog || !database) {
databaseStr = catalog + database;
} else {
databaseStr = catalog + '.' + database;
}
return baseUrl.replace('hostname', host).replace(':port', port ? `:${port}` : '')
.replace('default_catalog.database', databaseStr);
}
if (databaseType === DATABASE_TYPE.SAP_HANA) {
return baseUrl.replace('hostname', host)
.replace('port', port || '')
.replace('=database', `=${database}`);
}
return baseUrl.replace('hostname', host).replace(':port', port ? `:${port}` : '')
.replace('/database', `/${database}`)
.replace(':database', `:${database}`)
.replace('dbname', database); .replace('dbname', database);
} }

34
src/modules/app.ts

@ -7,8 +7,10 @@ import { Tab } from '@fui/core';
import { Datebase } from './pages/database/database'; import { Datebase } from './pages/database/database';
import { Maintain } from './pages/maintain/maintain'; import { Maintain } from './pages/maintain/maintain';
import { ConnectionPool } from './pages/connection_pool/connection_pool'; import { ConnectionPool } from './pages/connection_pool/connection_pool';
import { TimeOutSetting } from './pages/setting/setting';
import './app.provider'; import './app.provider';
import '../less/index.less'; import '../less/index.less';
import "./pages/__point__/connect.point";
@shortcut() @shortcut()
@store(AppModel) @store(AppModel)
@ -37,7 +39,12 @@ export class App extends BI.Widget {
{ {
el: { el: {
type: Title.xtype, type: Title.xtype,
cls: 'bi-border-bottom', listeners: [{
eventName: 'EVENT_CLICK_SETTING',
action:() => {
this._setting();
},
}]
}, },
height: 40, height: 40,
}, },
@ -75,13 +82,30 @@ export class App extends BI.Widget {
} }
}, },
}, },
left: 10, left: 0,
top: 10, top: 0,
right: 10, right: 0,
bottom: 10, bottom: 0,
}], }],
}, },
], ],
}; };
} }
private _setting() {
const settingLayerId = BI.UUID();
BI.Layers.create(settingLayerId, null, {
container: this,
render: {
type: TimeOutSetting.xtype,
listeners: [{
eventName: "EVENT_CHANGE",
action: function () {
BI.Layers.remove(settingLayerId);
},
}],
},
}, this);
BI.Layers.show(settingLayerId);
}
} }

11
src/modules/app.typings.d.ts vendored

@ -8,9 +8,18 @@ export interface DatabaseType {
internal: boolean; internal: boolean;
type: string; type: string;
hasSchema?: boolean; hasSchema?: boolean;
hasSchemas?: {
[key: string]: boolean;
};
fetchSize: number;
versionConfig?: {
[key: string]: DatabaseType;
},
kerberos?: boolean; kerberos?: boolean;
iconUrl?: string; iconUrl?: string;
versions?: string[];
urls?: { urls?: {
[key: string]: string; [key: string]: string;
} };
marker?: string;
} }

6
src/modules/components/collapse/collapse.ts

@ -12,6 +12,7 @@ export class Collapse extends BI.BasicButton {
name: '', name: '',
isCollapse: true, isCollapse: true,
$testId: 'dec-dcm-components-collapse', $testId: 'dec-dcm-components-collapse',
el: {},
} }
rightFont: IconLabel; rightFont: IconLabel;
@ -57,6 +58,7 @@ export class Collapse extends BI.BasicButton {
lgap: 2, lgap: 2,
text: this.options.name, text: this.options.name,
}, },
this.options.el,
], ],
}; };
} }
@ -64,4 +66,8 @@ export class Collapse extends BI.BasicButton {
doClick() { doClick() {
this.store.setCollapse(!this.model.isCollapse); this.store.setCollapse(!this.model.isCollapse);
} }
setCollapse(v: boolean) {
this.store.setCollapse(v);
}
} }

68
src/modules/components/file_chooser/file_chooser.model.ts

@ -0,0 +1,68 @@
import { model, Model } from '@core/core';
type RootInfo = {
url: string; // api url
prefix: string; // 路径前缀
root: string; // 根文件夹名称
};
export const ROOT_INFO_MAP: Record<string, RootInfo> = {
// 证书 resources/certificates/
certificates: {
url: '/v10/certificates/all',
prefix: 'resources/',
root: 'certificates',
},
};
@model()
export class FileChooserModel extends Model {
static xtype = 'dec.dcm.model.components.file_chooser';
private options: {
root: string;
};
state() {
return {
keyword: '', // 搜索关键字
items: [], // 文件项
};
}
actions = {
/**
* items
* @param callback
*/
requestGetItems: (callback?: Function) => {
const { keyword } = this.model;
const { url, prefix, root } = ROOT_INFO_MAP[this.options.root];
const requestUrl = `${url}?keyword=${encodeURIComponent(keyword)}`;
Dec.reqGetHandle(requestUrl, '', (data) => {
this.model.items = data
.concat({
id: root,
text: prefix + root,
value: prefix + root,
isParent: true,
})
.map((item) => ({
...item,
value: prefix + item.path,
open: item.id === root || BI.isKey(keyword),
}));
BI.isFunction(callback) && callback();
});
},
/**
* keyword
* @param value
*/
setKeyword: (value: string) => {
this.model.keyword = value;
this.requestGetItems();
},
};
}

183
src/modules/components/file_chooser/file_chooser.ts

@ -0,0 +1,183 @@
import { EVENT_CHANGE } from './../collapse/collapse';
import { shortcut, store } from '@core/core';
import { SignEditor, MultiLayerSingleLevelTree, SearchEditor, Button, Editor } from '@fui/core';
import { FileChooserModel } from './file_chooser.model';
@shortcut()
@store(FileChooserModel, {
props(this: FileChooser) {
return this.options;
},
})
export class FileChooser extends BI.Widget {
static xtype = 'dec.dcm.components.file_chooser';
props = {
width: 300,
root: '', // 含义见model中的RootInfo
watermark: '',
value: '',
};
model: FileChooserModel['model'];
store: FileChooserModel['store'];
watch = {
items: (value) => {
this.fileTree.populate(value);
},
};
textEditor: SignEditor;
keywordEditor: SearchEditor;
fileTree: MultiLayerSingleLevelTree;
sureButton: Button;
render() {
const { width, watermark, value } = this.options;
return {
type: BI.VerticalAdaptLayout.xtype,
height: 24,
items: [
{
type: BI.SignEditor.xtype,
cls: 'bi-border-bottom bi-focus-shadow',
width,
height: 22,
watermark,
title: value,
value,
ref: (_ref: SignEditor) => {
this.textEditor = _ref;
},
listeners: [
{
eventName: BI.SignEditor.EVENT_CHANGE,
action: () => {
const value = this.textEditor.getValue();
this.setValue(value);
},
},
],
},
{
el: {
type: BI.Button.xtype,
text: BI.i18nText('Dec-Basic_Choose_File'),
clear: true,
handler: () => {
this.openFileChoosePopover();
},
},
lgap: 10,
},
],
};
}
getValue(): string {
return this.textEditor.getValue();
}
setValue(value: string) {
this.options.value = value;
this.textEditor.text.setTitle(value);
this.textEditor.setValue(value);
}
/**
*
*/
private openFileChoosePopover() {
// 重置搜索关键词
this.store.setKeyword('');
// 创建并显示窗口
const popoverName = BI.UUID();
BI.Popovers.create(
popoverName,
{
header: BI.i18nText('Dec-Data_Set_File_Select_Server_File'),
body: {
type: BI.VTapeLayout.xtype,
items: [
{
type: BI.SearchEditor.xtype,
ref: (ref: SearchEditor) => {
this.keywordEditor = ref;
},
height: 24,
value: this.model.keyword,
listeners: [
{
eventName: BI.SearchEditor.EVENT_CHANGE,
action: () => {
const value = this.keywordEditor.getValue();
this.store.setKeyword(value);
},
},
{
eventName: BI.SearchEditor.EVENT_CLEAR,
action: () => {
this.store.setKeyword('');
},
},
],
},
{
el: {
type: BI.MultiLayerSingleLevelTree.xtype,
ref: (ref: MultiLayerSingleLevelTree) => {
this.fileTree = ref;
},
keywordGetter: () => this.model.keyword,
items: this.model.items,
listeners: [
{
eventName: BI.MultiLayerSingleLevelTree.EVENT_CHANGE,
action: () => {
this.sureButton.setEnable(true);
},
},
],
},
tgap: 15,
},
{
type: BI.RightVerticalAdaptLayout.xtype,
height: 24,
vgap: 10,
items: [
{
type: BI.Button.xtype,
text: BI.i18nText('BI-Basic_Cancel'),
level: 'ignore',
handler: () => {
BI.Popovers.remove(popoverName);
},
},
{
el: {
type: BI.Button.xtype,
ref: (ref: Button) => {
this.sureButton = ref;
},
text: BI.i18nText('BI-Basic_OK'),
disabled: true,
handler: () => {
const value = this.fileTree.getValue()[0];
this.setValue(value);
BI.Popovers.remove(popoverName);
},
},
lgap: 10,
},
],
},
],
},
},
this
).show(popoverName);
}
}

13
src/modules/components/file_upload/file_upload.less

@ -0,0 +1,13 @@
.data-conf-file {
.x-icon{
width: 48px;
height: 48px;
}
}
.data-keytab-file {
.x-icon{
width: 48px;
height: 48px;
}
}

35
src/modules/components/file_upload/file_upload.model.ts

@ -0,0 +1,35 @@
import { model, Model } from '@core/core';
type UploadParam = {
keytabPath: string;
krb5ConfPath: string;
principal: string;
}
@model()
export class FileUploadModel extends Model {
static xtype = 'dec.dcm.model.components.file_upload';
private options: {
inter: string;
}
state() {
return {
uploadUrl: '',
fileName: '',
};
}
actions = {
setFileInfo: (params: UploadParam) => {
const inter = this.options.inter;
this.model.uploadUrl = Dec.Utils.getEncodeURL(Dec.fineServletURL + inter, "", params);
},
setFileName:(v: string) => {
this.model.fileName = v;
}
}
}

327
src/modules/components/file_upload/file_upload.ts

@ -0,0 +1,327 @@
import { shortcut, store } from '@core/core';
import { SignEditor, MultiLayerSingleLevelTree, SearchEditor, Button, Editor, Label } from '@fui/core';
import { FileUploadModel } from './file_upload.model';
import { ApiFactory } from 'src/modules/crud/apiFactory';
import './file_upload.less';
const api = new ApiFactory().create();
@shortcut()
@store(FileUploadModel, {
props(this: FileUpload) {
return this.options;
},
})
export class FileUpload extends BI.Widget {
public static xtype = "dec.dcm.components.file_upload";
public static EVENT_CHECK_SUCCESS = 'EVENT_CHECK_SUCCESS';
public static EVENT_CLEAR_FILE = 'EVENT_CLEAR_FILE';
public props = {
watermark: '',
value: '',
processId: '',
disabled: false,
inter: '',
access: '',
iconCls: ''
};
model: FileUploadModel['model'];
store: FileUploadModel['store'];
watch = {
uploadUrl: function () {
this.uploader.setUrl(this.model.uploadUrl);
},
};
public textEditor: SignEditor;
public keywordEditor: SearchEditor;
public fileTree: MultiLayerSingleLevelTree;
public sureButton: Button;
public infoLabel: Label;
public render() {
const { width, watermark, value, processId, inter } = this.options;
let self = this;
const processName = BI.concat("process-", processId);
const processClass = BI.concat(".process-", processId);
this.setFileInfo({
keytabPath: '',
principal:'',
krb5ConfPath: '',
});
return {
type: BI.VerticalLayout.xtype,
items:[{
type: BI.FloatLeftLayout.xtype,
items: [
{
type: BI.SignEditor.xtype,
cls: 'bi-border-bottom bi-focus-shadow',
width: 300,
height: 22,
watermark,
disabled: true,
value,
ref: (_ref: SignEditor) => {
this.textEditor = _ref;
},
listeners: [
{
eventName: BI.SignEditor.EVENT_CHANGE,
action: () => {
const value = this.textEditor.getValue();
this.setValue(value);
},
},
],
}, {
type: BI.Button.xtype,
width: 100,
_lgap: 10,
iconCls: "upload-font",
level: "ignore",
ghost: true,
ref: (_ref: Button) => {
this.uploadButton = _ref;
},
text: BI.i18nText('Dec-Basic_Choose_File'),
handler: () => {
this.uploader.select();
},
},
],
}, {
type: BI.FloatLeftLayout.xtype,
tgap: 8,
invisible: true,
ref: (_ref) => {
this.fileInfo = _ref;
},
items: [
{
type: BI.VerticalLayout.xtype,
cls: "bi-border",
items: [{
type: BI.HTapeLayout.xtype,
height: 68,
width: 300,
items: [{
el: {
type: BI.IconLabel.xtype,
cls: this.options.iconCls,
},
width: 48,
lgap: 8,
}, {
el: {
type: BI.VerticalLayout.xtype,
items : [{
type: BI.Label.xtype,
width: 200,
height: 20,
textAlign: "left",
ref: (_ref: Label) => {
this.fileName = _ref;
},
},{
type: BI.VerticalAdaptLayout.xtype,
items: [{
type: BI.Label.xtype,
cls: "bi-tips",
height: 20,
rgap: 3,
ref: (_ref: Label) => {
this.fileSize = _ref;
},
}, {
type: BI.Label.xtype,
cls: "bi-tips",
height: 20,
ref: (_ref: Label) => {
this.fileModified = _ref;
},
}]
}],
},
tgap: 14,
lgap: 4,
}, {
el: {
type: BI.IconButton.xtype,
cls: "default-delete-font",
handler: function () {
NProgress.set(0.0);
self.xhr.abort();
self.store.setFileName('');
self.clearInfo();
self.fireEvent(FileUpload.EVENT_CLEAR_FILE);
},
},
rgap: 10,
}]
}, {
type: BI.VerticalLayout.xtype,
cls: processName,
width: 300,
height: 1,
}]
}, {
el :{
type: BI.VerticalLayout.xtype,
cls: "bi-error",
ref: (_ref: any) => {
this.errorInfo = _ref;
},
invisible: true,
items : [{
type: BI.Label.xtype,
height: 20,
textAlign: "left",
ref: (_ref: Label) => {
this.errorCode = _ref;
},
},{
type: BI.Label.xtype,
height: 20,
textAlign: "left",
ref: (_ref: Label) => {
this.errorMsg = _ref;
},
}, {
type: BI.VerticalAdaptLayout.xtype,
rgap: 5,
items: [
{
type: BI.Label.xtype,
text: BI.i18nText('Dec-Dcm_Connection_File_Upload_ErrorTip1'),
},{
type: BI.TextButton.xtype,
cls: "bi-high-light bi-high-light-border-bottom",
text: BI.i18nText('Dec-Dcm_Connection_File_Upload_ErrorTip2'),
handler: function () {
window.open(Dec.system[DecCst.Hyperlink.DECISION_HYPERLINK_CONFIG][DecCst.Hyperlink.KERBEROS_CONF_HELP]);
},
},{
type: BI.Label.xtype,
text: BI.i18nText('Dec-Dcm_Connection_File_Upload_ErrorTip3'),
}
],
},],
},
vgap: 4,
lgap: 8,
}
],
}, {
type: BI.MultifileEditor.xtype,
ref: (ref:any) => {
self.uploader = ref;
},
url: this.model.uploadUrl,
accept: this.options.accept,
listeners: [
{
// 选择文件
eventName: BI.MultifileEditor.EVENT_CHANGE,
action: function (files) {
self.options.attachId = '';
const fileInfo = files.files[0];
self.setInfo(fileInfo);
self.store.setFileName(fileInfo.fileName);
this.upload();
NProgress.configure({ parent: processClass, minimum: 0.0 });
},
},
{
// 上传进度刷新
eventName: BI.MultifileEditor.EVENT_PROGRESS,
action: function (progress) {
let rate = progress.loaded/progress.total;
NProgress.set(rate);
},
},
{
// 开始上传文件
eventName: BI.MultifileEditor.EVENT_UPLOADSTART,
action: function (progressEvent, xhr) {
self.xhr = xhr;
},
},
{
// 上传文件完毕
eventName: BI.MultifileEditor.EVENT_UPLOADED,
action: function () {
const uploadedInfo = this.getValue();
const failed = BI.some(uploadedInfo, function (index, file) {
if (file.data.errorCode) {
BI.Msg.toast(uploadedInfo[0].filename + BI.i18nText('Dec-Dcm_Connection_File_Upload_Error'), {
level: "error",
});
self.setErrorInfo(file.data)
return true;
}
});
const key = self.options.processId +'Path';
!failed && self.setValue(uploadedInfo[0].data.kerberosInfo[key]);
!failed && self.fireEvent(FileUpload.EVENT_CHECK_SUCCESS, uploadedInfo[0].data);
!failed && BI.Msg.toast(uploadedInfo[0].filename + BI.i18nText('Dec-Dcm_Connection_File_Upload_Success'),{
level: "success"
});
NProgress.configure({ parent: 'body'});
},
},
],
}]
};
}
public getValue(): string {
return this.options.value;
}
public setValue(value: string) {
this.options.value = value;
this.textEditor.text.setTitle(value);
this.textEditor.setValue(value);
}
public setInfo(info: any) {
this.uploadButton.setEnable(false);
this.fileInfo.setVisible(true);
this.textEditor.setValue(info.fileName);
this.fileName.setText(info.fileName);
this.fileSize.setText(Dec.Utils.getByteWidthUnit(info.size));
this.fileModified.setText(BI.getDate().print("%Y-%X-%d %H:%M:%S"))
}
public clearInfo() {
this.uploadButton.setEnable(true);
this.fileInfo.setVisible(false);
this.errorInfo.setVisible(false);
this.textEditor.setValue('');
this.options.attachId = '';
}
public setErrorInfo(errorInfo: any) {
this.errorInfo.setVisible(true);
this.errorCode.setText(BI.i18nText("Dec-Dcm_Connection_File_Upload_ErrorCode") + ":"+ errorInfo.errorCode);
this.errorMsg.setText(BI.i18nText("Dec-Dcm_Connection_File_Upload_ErrorMsg") + ":" + errorInfo.errorMessage);
}
public setEnable(v) {
this.uploadButton._setEnable(v);
}
public setFileInfo(params) {
this.store.setFileInfo(params);
}
}

33
src/modules/components/test_status/test_status.ts

@ -29,6 +29,9 @@ export class TestStatus extends BI.Widget {
failDriverMessage: Label; failDriverMessage: Label;
driverLink: FloatLeftLayout; driverLink: FloatLeftLayout;
detail: VerticalLayout; detail: VerticalLayout;
failMaskers: any;
extraContainer: VerticalLayout;
watch = { watch = {
status: (status: string) => { status: (status: string) => {
@ -37,6 +40,7 @@ export class TestStatus extends BI.Widget {
} }
render() { render() {
const LAYOUT_WIDTH = 400;
const { loadingCls, loadingText, successCls, successText, failCls, failText, retryText } = this.options; const { loadingCls, loadingText, successCls, successText, failCls, failText, retryText } = this.options;
return { return {
@ -51,7 +55,7 @@ export class TestStatus extends BI.Widget {
cls: 'bi-card', cls: 'bi-card',
width: 450, width: 450,
height: 250, height: 250,
single: true, // single: true,
showIndex: this.model.status, showIndex: this.model.status,
ref: (_ref: Tab) => { ref: (_ref: Tab) => {
this.tab = _ref; this.tab = _ref;
@ -70,6 +74,12 @@ export class TestStatus extends BI.Widget {
tipCls: failCls, tipCls: failCls,
tipText: failText, tipText: failText,
retryText, retryText,
ref: (_ref: TipFail) => {
this.failMaskers = _ref;
if (BI.isEmptyString(this.failMessage.getText())) {
this.failMaskers.populateFail(BI.i18nText('Dec-Conn-ect-Failed'), false);
}
},
listeners: [ listeners: [
{ {
eventName: TipFail.EVENT_RELOAD, eventName: TipFail.EVENT_RELOAD,
@ -116,10 +126,17 @@ export class TestStatus extends BI.Widget {
scrolly: true, scrolly: true,
height: 75, height: 75,
items: [ items: [
{
type: BI.VerticalLayout.xtype,
width: LAYOUT_WIDTH,
ref: (_ref: VerticalLayout) => {
this.extraContainer = _ref;
}
},
{ {
type: BI.Label.xtype, type: BI.Label.xtype,
whiteSpace: 'normal', whiteSpace: 'normal',
width: 400, width: LAYOUT_WIDTH,
textAlign: 'left', textAlign: 'left',
text: '', text: '',
ref: (_ref: Label) => { ref: (_ref: Label) => {
@ -168,7 +185,7 @@ export class TestStatus extends BI.Widget {
this.store.setStatus(TEST_STATUS.SUCCESS); this.store.setStatus(TEST_STATUS.SUCCESS);
} }
setFail(message: string, driver = '', link = '') { setFail(message: string = '', driver = '', link = '') {
this.store.setStatus(TEST_STATUS.FAIL); this.store.setStatus(TEST_STATUS.FAIL);
this.failMessage.setText(message); this.failMessage.setText(message);
this.failDriverMessage.setVisible(!!driver); this.failDriverMessage.setVisible(!!driver);
@ -182,4 +199,14 @@ export class TestStatus extends BI.Widget {
setLoading() { setLoading() {
this.store.setStatus(TEST_STATUS.LOADING); this.store.setStatus(TEST_STATUS.LOADING);
} }
/**
*
*/
setExtraContainer(container: Obj) {
BI.createWidget({
...container,
element: this.extraContainer,
});
}
} }

21
src/modules/components/test_status/tip_icon/tip_fail.ts

@ -1,5 +1,5 @@
import { shortcut, store } from '@core/core'; import { shortcut, store } from '@core/core';
import { Button } from '@fui/core'; import { Button, Label } from '@fui/core';
import { TipFailModel } from './tip_fail.model'; import { TipFailModel } from './tip_fail.model';
@shortcut() @shortcut()
@ -21,7 +21,7 @@ export class TipFail extends BI.Widget {
store: TipFailModel['store']; store: TipFailModel['store'];
detailButton: Button; detailButton: Button;
failText:Label;
watch = { watch = {
isCollapse: (isCollapse: boolean) => { isCollapse: (isCollapse: boolean) => {
this.detailButton.setText(isCollapse ? this.detailButton.setText(isCollapse ?
@ -29,6 +29,10 @@ export class TipFail extends BI.Widget {
BI.i18nText('Dec-Dcm_Connection_Detailed_Information')); BI.i18nText('Dec-Dcm_Connection_Detailed_Information'));
}, },
} }
populateFail(text:string,isVisible:boolean){
this.failText.setText(text);
this.detailButton.setVisible(isVisible);
}
render() { render() {
const { tipCls, tipText, retryText } = this.options; const { tipCls, tipText, retryText } = this.options;
@ -50,18 +54,20 @@ export class TipFail extends BI.Widget {
}], }],
}, { }, {
type: BI.Label.xtype, type: BI.Label.xtype,
height: 14, _bgap: 10,
bgap: 10,
text: tipText, text: tipText,
ref:(_ref:Label)=>{
this.failText=_ref;
}
}, },
{ {
type: BI.VerticalAdaptLayout.xtype, type: BI.VerticalAdaptLayout.xtype,
hgap: 5, hgap: 12,
items: [ items: [
{ {
type: BI.Button.xtype, type: BI.Button.xtype,
text: BI.i18nText('Dec-Dcm_Connection_Detailed_Information'), text: BI.i18nText('Dec-Dcm_Connection_Detailed_Information'),
level: 'ignore', clear: true,
ref: (_ref: Button) => { ref: (_ref: Button) => {
this.detailButton = _ref; this.detailButton = _ref;
}, },
@ -72,8 +78,8 @@ export class TipFail extends BI.Widget {
}, },
{ {
type: BI.Button.xtype, type: BI.Button.xtype,
light: true,
text: BI.i18nText('Dec-Dcm_Back'), text: BI.i18nText('Dec-Dcm_Back'),
level: 'ignore',
handler: () => { handler: () => {
this.fireEvent(TipFail.EVENT_CLOSE); this.fireEvent(TipFail.EVENT_CLOSE);
}, },
@ -82,6 +88,7 @@ export class TipFail extends BI.Widget {
type: BI.Button.xtype, type: BI.Button.xtype,
text: retryText, text: retryText,
handler: () => { handler: () => {
this.store.setIsCollapse(false);
this.fireEvent(TipFail.EVENT_RELOAD); this.fireEvent(TipFail.EVENT_RELOAD);
}, },
}, },

44
src/modules/components/text_checker/text_checker.ts

@ -3,40 +3,43 @@ import { Label, TextEditor } from '@fui/core';
@shortcut() @shortcut()
export class TextChecker extends BI.Widget { export class TextChecker extends BI.Widget {
static xtype = 'dec.dcm.components.text_checker'; public static xtype = 'dec.dcm.components.text_checker';
props = { public props = {
width: 300, width: 300,
allowBlank: true, allowBlank: true,
value: '', value: '',
watermark: '', watermark: '',
inputType: 'text',
autocomplete: '',
validationChecker: [] as { validationChecker: [] as {
errorText: string; errorText: string;
checker: (value: string) => boolean; checker: (value: string) => boolean;
autoFix?: boolean; autoFix?: boolean;
}[], }[],
$value: '', $value: '',
} };
textEditor: TextEditor; public textEditor: TextEditor;
errorLabel: Label; public errorLabel: Label;
private isError: boolean; private isError: boolean;
private value: string; private value: string;
private errorChecker: { private errorChecker: {
errorText: string; errorText: string;
checker: (value: string) => boolean; checker: (value: string) => boolean;
autoFix?: boolean; autoFix?: boolean;
} };
render() { public render() {
const { width, allowBlank, value, watermark, validationChecker, $value } = this.options; const { width, allowBlank, value, watermark, inputType, autocomplete, validationChecker, $value } = this.options;
this.value = value; this.value = value;
return { return {
type: BI.AbsoluteLayout.xtype, type: BI.AbsoluteLayout.xtype,
width, width,
height: 20, height: 20,
items: [{ items: [
{
el: { el: {
type: BI.TextEditor.xtype, type: BI.TextEditor.xtype,
$value, $value,
@ -44,15 +47,18 @@ export class TextChecker extends BI.Widget {
allowBlank, allowBlank,
value, value,
watermark, watermark,
inputType,
autocomplete,
ref: (_ref: TextEditor) => { ref: (_ref: TextEditor) => {
this.textEditor = _ref; this.textEditor = _ref;
}, },
listeners: [{ listeners: [
{
eventName: BI.Editor.EVENT_CHANGE, eventName: BI.Editor.EVENT_CHANGE,
action: () => { action: () => {
const value = this.getValue(); const value = this.getValue();
if (value) { if (value) {
this.errorChecker = validationChecker.find(item => item.checker && !item.checker(value)); this.errorChecker = validationChecker.find((item) => item.checker && !item.checker(value));
this.errorLabel.setText(BI.get(this.errorChecker, 'errorText')); this.errorLabel.setText(BI.get(this.errorChecker, 'errorText'));
this.isError = !!BI.get(this.errorChecker, 'errorText'); this.isError = !!BI.get(this.errorChecker, 'errorText');
} else { } else {
@ -64,7 +70,8 @@ export class TextChecker extends BI.Widget {
} }
this.fireEvent(BI.Editor.EVENT_CHANGE); this.fireEvent(BI.Editor.EVENT_CHANGE);
}, },
}, { },
{
eventName: BI.TextEditor.EVENT_BLUR, eventName: BI.TextEditor.EVENT_BLUR,
action: () => { action: () => {
if (BI.get(this.errorChecker, 'autoFix')) { if (BI.get(this.errorChecker, 'autoFix')) {
@ -72,9 +79,11 @@ export class TextChecker extends BI.Widget {
this.errorLabel.setText(''); this.errorLabel.setText('');
} }
}, },
}],
}, },
}, { ],
},
},
{
el: { el: {
type: BI.Label.xtype, type: BI.Label.xtype,
cls: 'bi-error', cls: 'bi-error',
@ -83,7 +92,8 @@ export class TextChecker extends BI.Widget {
}, },
}, },
top: -15, top: -15,
}], },
],
}; };
} }
@ -98,4 +108,8 @@ export class TextChecker extends BI.Widget {
public setError(value: string) { public setError(value: string) {
this.errorLabel.setText(value); this.errorLabel.setText(value);
} }
public setWatermark(value: string) {
this.textEditor.setWaterMark(value);
}
} }

41
src/modules/components/tips_combo/tips_combo.ts

@ -0,0 +1,41 @@
import { shortcut } from '@core/core';
import { BubbleCombo, BubblePopupView, IconButton } from '@fui/core';
@shortcut()
export class TipsCombo extends BI.Widget {
public static xtype = 'dec.dcm.tips.combo';
public props: BubblePopupView['props'] & IconButton['props'] = {
trigger: 'hover',
direction: 'top'
};
private bubbleCombo: BubbleCombo;
private bubbleComboPopup: BubblePopupView;
public render() {
const { direction, trigger, el } = this.options;
return {
type: BI.BubbleCombo.xtype,
trigger,
direction,
el: {
type: BI.IconButton.xtype,
cls: "detail-font",
},
popup: {
type: BI.BubblePopupView.xtype,
ref: (_ref: BubblePopupView) => {
this.bubbleComboPopup = _ref;
},
el,
},
listeners: [],
ref: (_ref: BubbleCombo) => {
this.bubbleCombo = _ref;
}
}
}
}

110
src/modules/constants/constant.ts

@ -5,6 +5,11 @@ export const PAGE_INDEX = {
POOL: 'pool', POOL: 'pool',
}; };
export const DATABASE_TYPE = {
SAP_HANA: "sap-hana",
STAR_ROCKS :'starrocks',
};
export const OTHER_JDBC = 'otherJDBC'; export const OTHER_JDBC = 'otherJDBC';
export const DEFAULT_HELP_LINK = 'databaseHelpLink'; export const DEFAULT_HELP_LINK = 'databaseHelpLink';
@ -279,7 +284,7 @@ export const DATA_BASE_TYPES = [
text: 'ClickHouse', text: 'ClickHouse',
databaseType: 'clickhouse', databaseType: 'clickhouse',
driver: 'ru.yandex.clickhouse.ClickHouseDriver', driver: 'ru.yandex.clickhouse.ClickHouseDriver',
url: 'jdbc:clickhouse://hostname:port', url: 'jdbc:clickhouse://hostname:port/database',
commonly: false, commonly: false,
internal: true, internal: true,
type: 'jdbc', type: 'jdbc',
@ -459,6 +464,7 @@ export const DATA_BASE_TYPES = [
text: 'KINGBASE', text: 'KINGBASE',
databaseType: 'kingbase', databaseType: 'kingbase',
driver: 'com.kingbase.Driver', driver: 'com.kingbase.Driver',
versions: ['KingbaseES 7.0'],
url: 'jdbc:kingbase://hostname:port/database', url: 'jdbc:kingbase://hostname:port/database',
commonly: false, commonly: false,
internal: true, internal: true,
@ -537,7 +543,7 @@ export const DATA_BASE_TYPES = [
kerberos: false, kerberos: false,
urls: { urls: {
'org.postgresql.Driver': 'jdbc:postgresql://hostname:port/dbname', 'org.postgresql.Driver': 'jdbc:postgresql://hostname:port/dbname',
'com.pivotal.jdbc.GreenplumDriver': 'jdbc:pivotal:greenplum://hostname:port;dbname', 'com.pivotal.jdbc.GreenplumDriver': 'jdbc:pivotal:greenplum://hostname:port;DatabaseName=dbname',
}, },
}, { }, {
text: 'Postgresql', text: 'Postgresql',
@ -572,6 +578,28 @@ export const DATA_BASE_TYPES = [
type: 'jdbc', type: 'jdbc',
hasSchema: false, hasSchema: false,
kerberos: false, kerberos: false,
}, {
text: BI.i18nText('Dec-Dcm_Connection_Database_DM'),
databaseType: 'dm',
driver: 'dm.jdbc.driver.DmDriver',
drivers: ['dm.jdbc.driver.DmDriver'],
url: 'jdbc:dm://hostname:port',
commonly: false,
internal: true,
type: 'jdbc',
hasSchema: true,
kerberos: true,
}, {
text: 'dremio',
databaseType: 'dremio',
driver: 'com.dremio.jdbc.Driver',
drivers: ['com.dremio.jdbc.Driver'],
url: 'jdbc:dremio:direct=hostname:31010',
commonly: false,
internal: true,
type: 'jdbc',
hasSchema: true,
kerberos: false,
}, { }, {
text: 'Presto', text: 'Presto',
databaseType: 'presto', databaseType: 'presto',
@ -586,7 +614,7 @@ export const DATA_BASE_TYPES = [
text: 'SAP HANA', text: 'SAP HANA',
databaseType: 'sap-hana', databaseType: 'sap-hana',
driver: 'com.sap.db.jdbc.Driver', driver: 'com.sap.db.jdbc.Driver',
url: 'jdbc:sap://hostname:port?reconnect=true', url: 'jdbc:sap://hostname:port?databaseName=database&reconnect=true',
commonly: false, commonly: false,
internal: true, internal: true,
type: 'jdbc', type: 'jdbc',
@ -670,6 +698,42 @@ export const DATA_BASE_TYPES = [
'org.sqlite.JDBC': 'jdbc:sqlite:[PATH_TO_DB_FILES]', 'org.sqlite.JDBC': 'jdbc:sqlite:[PATH_TO_DB_FILES]',
}, },
}, },
{
text: 'trino',
databaseType: 'trino',
driver: 'io.trino.jdbc.TrinoDriver',
url: 'jdbc:trino://hostname:port/database',
commonly: false,
internal: true,
type: 'jdbc',
hasSchema: true,
kerberos: false,
},
{
text: 'TDSQL',
databaseType: 'tdsql',
driver: 'org.postgresql.Driver',
url: 'jdbc:postgresql://hostname:port/database',
versions: ['pgsql'],
commonly: false,
internal: true,
type: 'jdbc',
hasSchema: true,
kerberos: false,
fetchSize: 10000,
},
{
text: BI.i18nText('StarRocks'),
databaseType: 'starrocks',
driver: 'com.mysql.jdbc.Driver',
drivers: ['com.mysql.jdbc.Driver'],
url: 'jdbc:mysql://hostname:port/default_catalog.database',
commonly: false,
internal: true,
type: 'jdbc',
hasSchema: false,
kerberos: false,
}
]; ];
@ -712,6 +776,28 @@ export const CONNECT_CHARSET = [
}, },
]; ];
export const CONNECT_SSH_TYPE = [
{
text: BI.i18nText('Dec-Dcm_Connection_Form_Password'),
value: 'NORMAL',
privateKeyPathFormVisible: false,
secretFormName: BI.i18nText('Dec-Dcm_Connection_Form_Password'),
},
{
text: BI.i18nText('Dec-Dcm_Connection_Form_PublicKey'),
value: 'KEY',
privateKeyPathFormVisible: true,
secretFormName: BI.i18nText('Dec-Dcm_Connection_Form_Passphrase'),
},
];
export const CONNECT_SSL_TYPE = [
{
text: BI.i18nText('Dec-Dcm_Connection_Form_Password'),
value: 'NORMAL',
},
];
export const TEST_STATUS = { export const TEST_STATUS = {
LOADING: 'loading', LOADING: 'loading',
SUCCESS: 'success', SUCCESS: 'success',
@ -748,15 +834,18 @@ export const DEFAULT_JDBC_POOL = {
minIdle: 0, minIdle: 0,
maxWait: 10000, maxWait: 10000,
testOnBorrow: true, testOnBorrow: true,
keepAlive: true,
testOnReturn: false, testOnReturn: false,
testWhileIdle: false, testWhileIdle: false,
timeBetweenEvictionRunsMillis: -1, timeBetweenEvictionRunsMillis: 60000,
numTestsPerEvictionRun: 3, numTestsPerEvictionRun: 3,
minEvictableIdleTimeMillis: 1800, minEvictableIdleTimeMillis: 1800,
maxEvictableIdleTimeMillis: 25200,
keepAliveBetweenTimeMillis: 120000,
}; };
export const CONNECTION_LAYOUT = { export const CONNECTION_LAYOUT = {
hgap: 5, hgap: 10,
vgap: 15, vgap: 15,
labelHeight: 24, labelHeight: 24,
}; };
@ -787,3 +876,14 @@ export const JNDI_FACTORYS = [
export const PAGE_SIZE = 50; export const PAGE_SIZE = 50;
export const INT_MAX_VALUE = 2147483647; export const INT_MAX_VALUE = 2147483647;
export const INT_MIN_VALUE = -2147483648; export const INT_MIN_VALUE = -2147483648;
export const YES_OR_NO = [
{
text: BI.i18nText('Dec-Basic_Yes'),
value: 1,
},
{
text: BI.i18nText('Dec-Basic_No'),
value: 0,
}
]

52
src/modules/core/checkIllegalStrings/checkIllegalStrings.ts

@ -0,0 +1,52 @@
/*
https://work.fineres.com/browse/REPORT-91724 用于参数统一校验
*/
import { ILLEGAL_STRINGS } from "./constant";
export type CheckResult = {
legal: boolean,
errorMsg: string,
}
export const CHECK_CORRECT: CheckResult = {
legal: true,
errorMsg: "",
};
/**
*
* @param value
*/
export function checkIllegalStrings(value: string): CheckResult {
// 后端传入的校验开关,如果没传,那也默认开启
const enabled = Dec.system.enableParameterVerify ?? true;
let result = CHECK_CORRECT;
if (enabled) {
// 关键字不区分大小写
ILLEGAL_STRINGS.every(s => {
const sIndex = value.toLowerCase().indexOf(s);
if (sIndex !== -1) {
result = {
legal: false,
errorMsg: `${BI.i18nText("Dec-Basic_Check_Illegal_Strings")}${value.substr(sIndex, s.length)}`,
};
return false;
}
return true;
});
return result;
}
return result;
}
export function checkIllegalStringsInWidgetAndShowError(widget: any) {
const value = widget.getValue();
const result = checkIllegalStrings(value);
if (!result.legal) {
widget.showError(result.errorMsg);
}
return result.legal;
}

15
src/modules/core/checkIllegalStrings/constant.ts

@ -0,0 +1,15 @@
/**
*
*/
export const ILLEGAL_STRINGS = [
"\"",
"<",
">",
"&",
"/script",
"javascript:",
"onblur",
"getruntime",
"processbuilder",
"java.lang.processimpl",
];

1
src/modules/core/index.ts

@ -0,0 +1 @@
export { checkIllegalStringsInWidgetAndShowError, checkIllegalStrings } from "./checkIllegalStrings/checkIllegalStrings"

17
src/modules/crud/api.ts

@ -5,6 +5,7 @@ import {
ConnectionPoolType, ConnectionPoolType,
SocketResult, SocketResult,
ResultType, ResultType,
checkDriverStatusParams,
} from './crud.typings'; } from './crud.typings';
export interface Api { export interface Api {
@ -46,6 +47,17 @@ export interface Api {
*/ */
testConnection(data: Connection): Promise<TestRequest>; testConnection(data: Connection): Promise<TestRequest>;
/**
*
*/
getDriverLoadPath(data: Connection): Promise<ResultType<string>>;
/**
*
* @param data
*/
checkDriverStatus(data: checkDriverStatusParams): Promise<ResultType<boolean>>;
/** /**
* *
* @param name * @param name
@ -93,4 +105,9 @@ export interface Api {
* *
*/ */
getHyperlink(name: string): string; getHyperlink(name: string): string;
/**
* JNDI数据库类型可用状态
*/
getJNDIDatabaseStatus(): Promise<{ data?: boolean }>;
} }

6
src/modules/crud/crud.service.ts

@ -15,7 +15,7 @@ export function requestGet(url: string, data?: any): Promise<ResultType> {
export function requestPost(url: string, data = {}): Promise<ResultType> { export function requestPost(url: string, data = {}): Promise<ResultType> {
return new Promise(resolve => { return new Promise(resolve => {
Dec.reqPost(getFullUrl(url), data, re => { Dec.reqByEncrypt("POST", getFullUrl(url), data, re => {
resolve(re); resolve(re);
}); });
}); });
@ -23,7 +23,7 @@ export function requestPost(url: string, data = {}): Promise<ResultType> {
export function requestDelete(url: string, data = {}) { export function requestDelete(url: string, data = {}) {
return new Promise(resolve => { return new Promise(resolve => {
Dec.reqDelete(getFullUrl(url), data, re => { Dec.reqByEncrypt("DELETE", getFullUrl(url), data, re => {
resolve(re); resolve(re);
}); });
}); });
@ -31,7 +31,7 @@ export function requestDelete(url: string, data = {}) {
export function requestPut(url: string, data = {}) { export function requestPut(url: string, data = {}) {
return new Promise(resolve => { return new Promise(resolve => {
Dec.reqPut(getFullUrl(url), data, re => { Dec.reqByEncrypt("PUT", getFullUrl(url), data, re => {
resolve(re); resolve(re);
}); });
}); });

237
src/modules/crud/crud.typings.d.ts vendored

@ -1,3 +1,7 @@
export interface CrudParams {
[key: string]: string | number | { [key: string]: any };
}
export interface CrudReqOpts { export interface CrudReqOpts {
url?: string; url?: string;
type?: 'GET' | 'POST' | 'DELETE' | 'PUT'; type?: 'GET' | 'POST' | 'DELETE' | 'PUT';
@ -9,28 +13,116 @@ export interface CrudReqOpts {
params?: CrudParams; params?: CrudParams;
} }
export interface CrudParams { export interface ConnectionLicInfo {
[key: string]: string | number | { [key: string]: any }; currentConnectionNum: number;
maxConnectionNum: number;
} }
export interface Connection { export interface ConnectionPoolType {
connectionId: string; maxActive: number;
connectionType: string; maxIdle: number;
connectionName: string; numActive: number;
creator?: string; numIdle: number;
connectionData: ConnectionJDBC | ConnectionJNDI | ConnectionPlugin | string;
privilegeDetailBeanList?: {
privilegeType: number;
privilegeValue: number;
}[];
} }
export interface ConnectionLicInfo { type ConnectionDataOfSSH = {
currentConnectionNum: number; usingSsh: boolean; // 使用SSH通道
maxConnectionNum: number; sshIp: string; // 主机
sshPort: number; // 端口
sshUser: string; // 用户名
redirectPort: number;
redirectIp: string;
sshTimeOut: number;
sshKeepAlive: number;
} & (
| {
sshType: 'NORMAL'; // 验证方法:密码
sshPrivateKeyPath: ''; // 没啥意义,该验证方法下为空字符串
sshSecret: string; // 密码
}
| {
sshType: 'KEY'; // 验证方法:公钥
sshPrivateKeyPath: string; // 私钥
sshSecret: string; // 密码短语
} }
);
type ConnectionDataOfSSL = {
usingSsl: boolean; // 使用SSL通道
sslType: 'NORMAL'; // SSL类型,只有NORMAL一种
caCertificate: string; // CA证书
verifyCa: boolean; // 验证针对CA的服务器证书
sslClientPrivateKey: string; // 客户端密钥
sslClientCertificate: string; // 客户端证书
};
export interface ConnectionPoolJDBC {
/**
*
*/
initialSize?: number;
/**
*
*/
maxActive?: number;
/**
*
*/
maxIdle?: number;
/**
*
*/
minIdle?: number;
/**
*
*/
maxWait?: number;
/**
* sql查询
*/
validationQuery?: string;
/**
*
*/
testOnBorrow?: boolean;
/**
*
*/
keepAlive?: boolean;
/**
*
*/
testOnReturn?: boolean;
export interface ConnectionJDBC { /**
*
*/
testWhileIdle?: boolean;
/**
* 线
*/
timeBetweenEvictionRunsMillis?: number;
/**
*
*/
numTestsPerEvictionRun?: number;
/**
*
*/
minEvictableIdleTimeMillis?: number;
/**
*
*/
maxEvictableIdleTimeMillis?: number;
/**
*
*/
keepAliveBetweenTimeMillis?: number;
}
export type ConnectionJDBC = {
/** /**
* *
*/ */
@ -44,6 +136,10 @@ export interface ConnectionJDBC {
* *
*/ */
driver: string; driver: string;
/**
*
*/
driverSource: 'default' | 'custom';
/** /**
* url * url
*/ */
@ -108,6 +204,10 @@ export interface ConnectionJDBC {
* *
*/ */
keyPath?: string; keyPath?: string;
/**
* krb5.conf文件
*/
krb5Path?: string;
/** /**
* fetchSize * fetchSize
*/ */
@ -118,71 +218,45 @@ export interface ConnectionJDBC {
identity?: string; identity?: string;
connectionPoolAttr: ConnectionPoolJDBC; connectionPoolAttr: ConnectionPoolJDBC;
}
export interface ConnectionPoolJDBC {
/**
*
*/
initialSize?: number;
/**
*
*/
maxActive?: number;
/**
*
*/
maxIdle?: number;
/** /**
* *
*/ */
minIdle?: number; parallelLoad?: IParallelLoad;
/** /**
* * HDFS
*/ */
maxWait?: number; hdfs?: {
/** /**
* sql查询 * HDFS地址
*/ */
validationQuery?: string; hdfsAddress?: string;
};
} & ConnectionDataOfSSH & ConnectionDataOfSSL;
/** /**
* *
*/ */
testOnBorrow?: boolean; export interface IParallelLoad {
/** /**
* *
*/ */
testOnReturn?: boolean; serverAddress?: string;
/** /**
* *
*/ */
testWhileIdle?: boolean; serverAddressItems?: string[];
/** /**
* 线 *
*/ */
timeBetweenEvictionRunsMillis?: number; reuseTemporaryTable?: string;
/** /**
* *
*/ */
numTestsPerEvictionRun?: number; filePiecesLimit?: string;
/** /**
* *
*/ */
minEvictableIdleTimeMillis?: number; fileSizeLimit?: string
}
export interface ConnectionJNDI {
jndiName: string;
/**
*
*/
originalCharsetName: string;
newCharsetName: string;
creator?: string;
contextHashtable: ContextHashtable;
} }
export interface ContextHashtable { export interface ContextHashtable {
@ -203,33 +277,54 @@ export interface ContextHashtable {
'java.naming.applet': string; 'java.naming.applet': string;
} }
export interface ConnectionJNDI {
jndiName: string;
/**
*
*/
originalCharsetName: string;
newCharsetName: string;
creator?: string;
contextHashtable: ContextHashtable;
}
export interface ConnectionPlugin { export interface ConnectionPlugin {
pluginType: 'json'; pluginType: 'json';
creator: ''; creator: '';
pluginData: any; pluginData: any;
} }
export interface Connection {
connectionId: string;
connectionType: string;
connectionName: string;
creator?: string;
connectionData: ConnectionJDBC | ConnectionJNDI | ConnectionPlugin | string;
privilegeDetailBeanList?: {
privilegeType: number;
privilegeValue: number;
}[];
}
export interface TestRequest { export interface TestRequest {
data?: string[]; data?: string[];
errorCode?: string; errorCode?: string;
errorMsg?: string; errorMsg?: string;
} }
export interface ConnectionPoolType {
maxActive: number;
maxIdle: number;
numActive: number;
numIdle: number;
}
export interface SocketResult { export interface SocketResult {
data?: string; data?: string;
errorCode?: string; errorCode?: string;
errorMsg?: string; errorMsg?: string;
} }
export interface ResultType { export interface ResultType<T = any> {
data?: any; data?: T;
errorCode?: string; errorCode?: string;
errorMsg?: string; errorMsg?: string;
} }
export type checkDriverStatusParams = {
path: string;
driver: ConnectionJDBC['driver'];
}

48
src/modules/crud/decision.api.ts

@ -1,5 +1,5 @@
import { Api } from './api'; import { Api } from './api';
import { Connection, TestRequest, ConnectionPoolType, SocketResult, ConnectionLicInfo } from './crud.typings'; import { Connection, TestRequest, ConnectionPoolType, SocketResult, ConnectionLicInfo, ResultType, checkDriverStatusParams } from './crud.typings';
import { requestGet, requestDelete, requestPost, requestPut } from './crud.service'; import { requestGet, requestDelete, requestPost, requestPut } from './crud.service';
import { editStatusEvent, errorCode } from '@constants/env'; import { editStatusEvent, errorCode } from '@constants/env';
@ -48,6 +48,27 @@ export class DecisionApi implements Api {
return requestPost('test', form); return requestPost('test', form);
} }
/**
*
* @returns
*/
getDriverLoadPath(data: Connection): Promise<ResultType<string>> {
const form = {
...data,
connectionData: JSON.stringify(data.connectionData),
};
return requestPost('driver/path', form);
}
/**
*
* @param data
*/
checkDriverStatus(data: checkDriverStatusParams): Promise<ResultType<boolean>> {
return requestGet(Dec.Utils.getEncodeURL('test/driver/conflict', '', data));
}
getConnectionPool(name: string): Promise<{ data?: ConnectionPoolType }> { getConnectionPool(name: string): Promise<{ data?: ConnectionPoolType }> {
return requestGet(`pool/info?connectionName=${encodeURIComponent(name)}`, {}); return requestGet(`pool/info?connectionName=${encodeURIComponent(name)}`, {});
} }
@ -108,18 +129,39 @@ export class DecisionApi implements Api {
getCipher(password: string) { getCipher(password: string) {
return BI.Providers.getProvider('dec.provider.cipher') return BI.Providers.getProvider('dec.provider.cipher')
.getCipher(password); .getCompleteCipher(password);
} }
getPlain(cipher: string) { getPlain(cipher: string) {
return BI.Providers.getProvider('dec.provider.cipher') return BI.Providers.getProvider('dec.provider.cipher')
.getPlain(cipher); .getCompletePlain(cipher);
} }
getHyperlink(name: string) { getHyperlink(name: string) {
return Dec.system[DecCst.Hyperlink.DECISION_HYPERLINK_CONFIG][name]; return Dec.system[DecCst.Hyperlink.DECISION_HYPERLINK_CONFIG][name];
} }
changePrincipal(value: any) {
return requestPost(`switch/principal`, value);
}
getPrincipals(keytab: string) {
return requestGet(`/principals?keytabPath=${keytab}`, {});
}
getTimeOut(): Promise<{ data?: any }> {
return requestGet('kdc/timeout', {});
}
putTimeOut(value: number) {
return requestPut(`kdc/timeout?timeout=${value}`, {})
}
// 获取当前lic是否可以使用JNDI数据库类型
getJNDIDatabaseStatus(): Promise<{ data?: boolean }> {
return requestGet('databasetype/limit', {});
}
private sendEditStatusEvent(name: string, type: string): Promise<SocketResult> { private sendEditStatusEvent(name: string, type: string): Promise<SocketResult> {
return new Promise(resolve => { return new Promise(resolve => {
if (Dec && Dec.socket.connected) { if (Dec && Dec.socket.connected) {

27
src/modules/crud/design.api.ts

@ -1,5 +1,5 @@
import { Api } from './api'; import { Api } from './api';
import { Connection, TestRequest, ConnectionPoolType, SocketResult, ConnectionLicInfo } from './crud.typings'; import { Connection, TestRequest, ConnectionPoolType, SocketResult, ConnectionLicInfo, ResultType, ConnectionJDBC, checkDriverStatusParams } from './crud.typings';
import { requestGet } from './crud.service'; import { requestGet } from './crud.service';
// TODO: 此页面的接口等待设计器提供相应的方法 // TODO: 此页面的接口等待设计器提供相应的方法
@ -39,6 +39,27 @@ export class DesignApi implements Api {
}); });
} }
/**
*
* @param name
* @returns
*/
getDriverLoadPath(data: Connection): Promise<ResultType<string>> {
return new Promise(resolve => {
resolve({ data: '' });
});
}
/**
*
* @param data
*/
checkDriverStatus(data: checkDriverStatusParams): Promise<ResultType<boolean>> {
return new Promise(resolve => {
resolve({ data: false });
});
}
getConnectionPool(name: string): Promise<{ data: ConnectionPoolType }> { getConnectionPool(name: string): Promise<{ data: ConnectionPoolType }> {
return new Promise(resolve => { return new Promise(resolve => {
resolve({ resolve({
@ -88,4 +109,8 @@ export class DesignApi implements Api {
// 设计器获取超链 // 设计器获取超链
return ''; return '';
} }
getJNDIDatabaseStatus() {
return Promise.resolve({ data: true });
}
} }

24
src/modules/pages/__point__/connect.point.ts

@ -0,0 +1,24 @@
BI.point("dec.dcm.model.connection", "createNewConnection", () => {
Dec.Utils.saveFocusPoint({
id: "E73325",
title: "新建数据连接",
});
});
BI.point("dec.dcm.model.title_maintain", "setTestEvent", () => {
Dec.Utils.saveFocusPoint({
id: "E73328",
title: "测试数据连接",
});
});
BI.point("dec.dcm.model.maintain_form", "addConnection", function () {
Dec.Utils.saveFocusPoint({
id: "E8827",
title: "保存数据连接",
body: {
datebaseType: this.model.datebaseTypeSelected,
databaseName: this.model.connectionSelected,
},
});
});

9
src/modules/pages/connection/connection.model.ts

@ -13,13 +13,14 @@ export class ConnectionModel extends Model<{
connectionSelected: AppModel['TYPE']['connectionSelected']; connectionSelected: AppModel['TYPE']['connectionSelected'];
connectionSelectedOne: AppModel['TYPE']['connectionSelectedOne']; connectionSelectedOne: AppModel['TYPE']['connectionSelectedOne'];
datebaseTypeSelected: AppModel['TYPE']['datebaseTypeSelected']; datebaseTypeSelected: AppModel['TYPE']['datebaseTypeSelected'];
noTestConnection: AppModel['TYPE']['noTestConnection'];
}, },
childContext: ConnectionModel['childContext']; childContext: ConnectionModel['childContext'];
context: ConnectionModel['context']; context: ConnectionModel['context'];
}> { }> {
static xtype = 'dec.dcm.model.connection'; static xtype = 'dec.dcm.model.connection';
context = <const>['pageIndex', 'connectionSelected', 'connectionSelectedOne', 'datebaseTypeSelected', 'connectionLicInfo']; context = <const>['pageIndex', 'connectionSelected', 'connectionSelectedOne', 'datebaseTypeSelected', 'connectionLicInfo', 'noTestConnection'];
actions = { actions = {
initConnectionLicInfo: (cb: Function) => { initConnectionLicInfo: (cb: Function) => {
@ -53,8 +54,14 @@ export class ConnectionModel extends Model<{
this.model.connectionSelected = name; this.model.connectionSelected = name;
}, },
getConnectionStatus() { getConnectionStatus() {
if (this.model.connectionSelectedOne.pluginConnection) {
return Promise.resolve();
}
return api.getConnectionStatus(this.model.connectionSelected); return api.getConnectionStatus(this.model.connectionSelected);
}, },
setNoTestConnection(value: boolean) {
this.model.noTestConnection = value;
},
checkConnectionLic() { checkConnectionLic() {
return this.model.connectionLicInfo.currentConnectionNum > this.model.connectionLicInfo.maxConnectionNum; return this.model.connectionLicInfo.currentConnectionNum > this.model.connectionLicInfo.maxConnectionNum;
}, },

84
src/modules/pages/connection/connection.ts

@ -24,24 +24,17 @@ export class Connection extends BI.Widget {
title: HTapeLayout; title: HTapeLayout;
watch = { watch = {
connectionSelected: (name: string) => { connectionSelectedOne: {
if (name) { immediate: true,
const canEdit = connectionCanEdit(this.model.connectionSelectedOne); handler: (v: Connection) => {
const type = this.getSelectConnectionType(); BI.nextTick(() => {
this.connectionTitleWidget.setText(`${name}${getTextByDatabaseType(type)}`); const connectionName = v.connectionName;
this.connectionEditWidget.setVisible(canEdit);
const hasRegistered = this.hasRegistered(); connectionName
this.title.setVisible(hasRegistered); ? this.renderConnectionListView(connectionName)
if (!hasRegistered) { : this.renderEmptyListView();
this.listView.populate(BI.createItems(this.renderNoRegistered())); });
} else { },
this.listView.populate(BI.createItems(this.renderItems()));
}
} else {
this.listView.populate(BI.createItems(this.renderEmpty()));
this.connectionTitleWidget.setText('');
this.connectionEditWidget.setVisible(false);
}
}, },
}; };
@ -50,8 +43,6 @@ export class Connection extends BI.Widget {
} }
render() { render() {
this.store.setConnectionSelected('');
return { return {
type: BI.HTapeLayout.xtype, type: BI.HTapeLayout.xtype,
hgap: 10, hgap: 10,
@ -71,6 +62,9 @@ export class Connection extends BI.Widget {
{ {
type: BI.Button.xtype, type: BI.Button.xtype,
text: BI.i18nText('Dec-Dcm_Connection_New'), text: BI.i18nText('Dec-Dcm_Connection_New'),
title: BI.i18nText('Dec-Dcm_Connection_New'),
minWidth: 0,
width: 98,
handler: () => { handler: () => {
this.store.createNewConnection(); this.store.createNewConnection();
}, },
@ -79,7 +73,7 @@ export class Connection extends BI.Widget {
right: [ right: [
{ {
type: 'dec.connection.driver.entry', type: 'dec.connection.driver.entry',
invisible: true, invisible: !BI.Services.getService('dec.service.global').isAdmin(),
from: '.dec-dcm', from: '.dec-dcm',
listeners: [ listeners: [
{ {
@ -134,16 +128,17 @@ export class Connection extends BI.Widget {
}, },
handler: () => { handler: () => {
this.store.getConnectionStatus() this.store.getConnectionStatus()
.then(re => { .then(() => {
this.store.setPageIndex(PAGE_INDEX.MAINTAIN); const databaseType = this.model.connectionSelectedOne.connectionType;
this.store.setDatebaseTypeSelected(''); const database = BI.find(getAllDatabaseTypes(), (_index, value) => value.databaseType === databaseType);
this.setMaintainPage();
this.store.setNoTestConnection(database.isHideConnection);
}) })
.catch(() => { .catch(() => {
}); });
}, },
}], }],
}, },
width: 90,
}, },
], ],
}, },
@ -210,12 +205,6 @@ export class Connection extends BI.Widget {
}]; }];
} }
private renderEmpty() {
return [{
type: BI.Layout.xtype,
}];
}
private hasRegistered() { private hasRegistered() {
const allDatabaseTypes = getAllDatabaseTypes(); const allDatabaseTypes = getAllDatabaseTypes();
switch (this.model.connectionSelectedOne.connectionType) { switch (this.model.connectionSelectedOne.connectionType) {
@ -237,4 +226,37 @@ export class Connection extends BI.Widget {
return databaseType; return databaseType;
} }
private setMaintainPage() {
this.store.setPageIndex(PAGE_INDEX.MAINTAIN);
this.store.setDatebaseTypeSelected('');
}
private renderConnectionListView(name: string) {
const canEdit = connectionCanEdit(this.model.connectionSelectedOne),
type = this.getSelectConnectionType(),
hasRegistered = this.hasRegistered();
this.connectionTitleWidget.setText(`${name}${getTextByDatabaseType(type)}`);
this.connectionEditWidget.setVisible(canEdit);
this.title.setVisible(hasRegistered);
hasRegistered
? this.listView.populate(BI.createItems(this.renderItems()))
: this.listView.populate(BI.createItems(this.renderNoRegistered()));
}
private renderEmptyListView() {
this.listView.populate(
BI.createItems([
{
type: BI.Layout.xtype,
}
])
);
this.connectionTitleWidget.setText('');
this.connectionEditWidget.setVisible(false);
}
} }

270
src/modules/pages/connection/connection_jdbc/connection_jdbc.ts

@ -4,7 +4,7 @@ import { Collapse, EVENT_CHANGE } from 'src/modules/components/collapse/collapse
import { ConnectionJdecModel } from './connection_jdbc.model'; import { ConnectionJdecModel } from './connection_jdbc.model';
import { ConnectionJDBC } from 'src/modules/crud/crud.typings'; import { ConnectionJDBC } from 'src/modules/crud/crud.typings';
import { getAllDatabaseTypes, getJdbcDatabaseType, resolveUrlInfo } from '../../../app.service'; import { getAllDatabaseTypes, getJdbcDatabaseType, resolveUrlInfo } from '../../../app.service';
import { CONNECTION_LAYOUT } from '@constants/constant'; import { CONNECTION_LAYOUT, CONNECT_SSH_TYPE } from '@constants/constant';
import { VerticalLayout } from '@fui/core'; import { VerticalLayout } from '@fui/core';
import { ApiFactory } from '../../../crud/apiFactory'; import { ApiFactory } from '../../../crud/apiFactory';
@ -15,10 +15,14 @@ const api = new ApiFactory().create();
export class ConnectionJdbc extends BI.Widget { export class ConnectionJdbc extends BI.Widget {
static xtype = 'dec.dcm.connection_jdbc'; static xtype = 'dec.dcm.connection_jdbc';
advancedSet: any;
model: ConnectionJdecModel['model']; model: ConnectionJdecModel['model'];
allDatabaseTypes = getAllDatabaseTypes(); allDatabaseTypes = getAllDatabaseTypes();
sshSet: VerticalLayout;
sslSet: VerticalLayout;
advancedSet: VerticalLayout;
parallelLoadSet: VerticalLayout;
render() { render() {
const connectionData = this.model.connectionSelectedOne.connectionData as ConnectionJDBC; const connectionData = this.model.connectionSelectedOne.connectionData as ConnectionJDBC;
const { const {
@ -33,9 +37,28 @@ export class ConnectionJdbc extends BI.Widget {
principal, principal,
url, url,
fetchSize, fetchSize,
// ssh
usingSsh,
sshIp,
sshPort,
sshUser,
sshType,
sshSecret,
sshPrivateKeyPath,
// ssl
usingSsl,
caCertificate,
verifyCa,
sslClientPrivateKey,
sslClientCertificate,
// 并行装载
parallelLoad,
// HDFS
hdfs,
} = connectionData; } = connectionData;
const databaseType = getJdbcDatabaseType(database, driver); const databaseType = getJdbcDatabaseType(database, driver);
const { host, port, databaseName } = resolveUrlInfo(url, database); const { host, port, catalog, databaseName, version } = resolveUrlInfo(url, database);
this.version = !BI.isUndefined(databaseType.versions) ? (version ?? databaseType.versions[0]) : version;
const { hgap, vgap } = CONNECTION_LAYOUT; const { hgap, vgap } = CONNECTION_LAYOUT;
return { return {
@ -45,9 +68,22 @@ export class ConnectionJdbc extends BI.Widget {
items: [ items: [
{ {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Basic_Version'),
invisible: BI.isUndefined(this.version),
value: BI.i18nText('Dec-Migration_Database_Version', this.version),
},
{
type: FormItem.xtype,
_tgap: BI.isUndefined(this.version) ? vgap : 0,
name: BI.i18nText('Dec-Dcm_Connection_Form_Driver'), name: BI.i18nText('Dec-Dcm_Connection_Form_Driver'),
value: BI.isKey(driverSource) ? `${driver} (${driverSource})` : driver, value: BI.isKey(driverSource) ? `${driver} (${driverSource})` : driver,
}, },
{
type: FormItem.xtype,
name: 'catalog',
invisible: database !== 'starrocks',
value: catalog,
},
{ {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Name'), name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Name'),
@ -63,12 +99,13 @@ export class ConnectionJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Port'), name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Port'),
value: port, value: port,
}, },
authType ? authType
{ ? {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_AuthType'), name: BI.i18nText('Dec-Dcm_Connection_Form_AuthType'),
value: authType, value: authType,
} : { }
: {
type: BI.Layout.xtype, type: BI.Layout.xtype,
}, },
{ {
@ -86,6 +123,59 @@ export class ConnectionJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_OriginalCharsetName'), name: BI.i18nText('Dec-Dcm_Connection_Form_OriginalCharsetName'),
value: originalCharsetName ? originalCharsetName : BI.i18nText('Dec-Dcm_Connection_Form_Default'), value: originalCharsetName ? originalCharsetName : BI.i18nText('Dec-Dcm_Connection_Form_Default'),
}, },
// HDFS设置
{
type: FormItem.xtype,
invisible: BI.isNull(hdfs),
name: BI.i18nText('Dec-Dcm_Connection_Address', 'HDFS'),
value: hdfs?.hdfsAddress,
},
// 并行装载设置
{
type: Collapse.xtype,
invisible: BI.isNull(parallelLoad),
name: BI.i18nText('Dec-Dcm_Connection_Setting', BI.i18nText('Dec-Dcm_Connection_Parallel_Load')),
listeners: [
{
eventName: EVENT_CHANGE,
action: (isCollapse: boolean) => {
this.parallelLoadSet.setVisible(!isCollapse);
},
},
],
},
{
type: BI.VerticalLayout.xtype,
invisible: true,
ref: (_ref: VerticalLayout) => {
this.parallelLoadSet = _ref;
},
items: [
{
type: FormItem.xtype,
_bgap: vgap,
name: `${BI.i18nText('Dec-Dcm_Connection_Server_Address')}-${BI.i18nText('Dec-Memory_Detection_Server_Cluster_Node', '1')}`,
value: parallelLoad?.serverAddress,
},
{
type: FormItem.xtype,
_bgap: vgap,
name: BI.i18nText('Dec-Dcm_Connection_Reuse_Temporary_Table'),
value: parallelLoad?.reuseTemporaryTable,
},
{
type: FormItem.xtype,
_bgap: vgap,
name: BI.i18nText('Dec-Dcm_Connection_Temporary_File_Pieces_Limit'),
value: parallelLoad?.filePiecesLimit,
},
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Temporary_File_Size_Limit'),
value: parallelLoad?.fileSizeLimit,
},
],
},
{ {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Pattern'), name: BI.i18nText('Dec-Dcm_Connection_Form_Pattern'),
@ -97,63 +187,170 @@ export class ConnectionJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_URL'), name: BI.i18nText('Dec-Dcm_Connection_Form_Database_URL'),
value: url, value: url,
}, },
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Max_Active'),
value: connectionPoolAttr.maxActive,
},
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Test_On_Borrow'),
value: connectionPoolAttr.testOnBorrow ? BI.i18nText('Dec-Dcm_Yes') : BI.i18nText('Dec-Dcm_No'),
},
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Regular_Check_On_Borrow'),
value: connectionPoolAttr.keepAlive ? BI.i18nText('Dec-Dcm_Yes') : BI.i18nText('Dec-Dcm_No'),
},
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_SQL_Validation_Query'),
value: api.getPlain(connectionPoolAttr.validationQuery || ''),
},
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Max_Wait'),
value: connectionPoolAttr.maxWait,
unit: BI.i18nText('Dec-Dcm_Millisecond'),
},
// ssh设置
{ {
type: Collapse.xtype, type: Collapse.xtype,
width: 70, width: 100,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Advanced_Setting'), invisible: !usingSsh,
name: BI.i18nText('Dec-Dcm_Connection_Setting', 'SSH'),
listeners: [ listeners: [
{ {
eventName: EVENT_CHANGE, eventName: EVENT_CHANGE,
action: (isCollapse: boolean) => { action: (isCollapse: boolean) => {
this.advancedSet.setVisible(!isCollapse); this.sshSet.setVisible(!isCollapse);
}, },
}, },
], ],
}, },
{ {
el: {
type: BI.VerticalLayout.xtype, type: BI.VerticalLayout.xtype,
tgap: -15, bgap: vgap,
vgap,
invisible: true, invisible: true,
ref: (_ref: VerticalLayout) => { ref: (_ref: VerticalLayout) => {
this.advancedSet = _ref; this.sshSet = _ref;
}, },
items: [ items: [
{ {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Initial_Size'), name: BI.i18nText('Dec-Dcm_Connection_Form_Host'),
value: connectionPoolAttr.initialSize, value: sshIp,
}, },
{ {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Max_Active'), name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Port'),
value: connectionPoolAttr.maxActive, value: sshPort,
}, },
{ {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Max_Idle'), name: BI.i18nText('Dec-Dcm_Connection_Form_UserName'),
value: connectionPoolAttr.maxIdle, value: sshUser,
}, },
{ {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Min_Idle'), name: BI.i18nText('Dec-Dcm_Connection_Form_VerifyType'),
value: connectionPoolAttr.minIdle, value: CONNECT_SSH_TYPE.find((SSH_TYPE) => sshType === SSH_TYPE.value).text,
}, },
{ {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Max_Wait'), invisible: sshType !== 'KEY',
value: connectionPoolAttr.maxWait, name: BI.i18nText('Dec-Dcm_Connection_Form_PrivateKey'),
unit: BI.i18nText('Dec-Dcm_Millisecond'), value: sshPrivateKeyPath,
}, },
{ {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Validation_Query'), name: CONNECT_SSH_TYPE.find((SSH_TYPE) => sshType === SSH_TYPE.value).secretFormName,
value: api.getPlain(connectionPoolAttr.validationQuery || ''), value: sshSecret,
},
],
},
},
// ssl设置
{
type: Collapse.xtype,
width: 100,
invisible: !usingSsl,
name: BI.i18nText('Dec-Dcm_Connection_Setting', 'SSL'),
listeners: [
{
eventName: EVENT_CHANGE,
action: (isCollapse: boolean) => {
this.sslSet.setVisible(!isCollapse);
},
},
],
},
{
el: {
type: BI.VerticalLayout.xtype,
bgap: vgap,
invisible: true,
ref: (_ref: VerticalLayout) => {
this.sslSet = _ref;
}, },
items: [
{ {
type: FormItem.xtype, type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Test_On_Borrow'), name: BI.i18nText('Dec-Dcm_Connection_Form_CA_Certificate'),
value: connectionPoolAttr.testOnBorrow ? BI.i18nText('Dec-Dcm_Yes') : BI.i18nText('Dec-Dcm_No'), value: caCertificate,
},
{
type: FormItem.xtype,
invisible: !caCertificate,
name: BI.i18nText('Dec-Dcm_Connection_Form_Verify_CA_Certificate'),
value: verifyCa ? BI.i18nText('Dec-Dcm_Yes') : BI.i18nText('Dec-Dcm_No'),
},
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Client') + BI.i18nText('Dec-Dcm_Connection_Form_SecretKey'),
value: sslClientPrivateKey,
},
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Client') + BI.i18nText('Dec-Dcm_Connection_Form_Certificate'),
value: sslClientCertificate,
},
],
},
},
// 更多设置
{
type: Collapse.xtype,
width: 100,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_More_Setting'),
listeners: [
{
eventName: EVENT_CHANGE,
action: (isCollapse: boolean) => {
this.advancedSet.setVisible(!isCollapse);
},
},
],
},
{
el: {
type: BI.VerticalLayout.xtype,
bgap: vgap,
invisible: true,
ref: (_ref: VerticalLayout) => {
this.advancedSet = _ref;
},
items: [
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Initial_Size'),
value: connectionPoolAttr.initialSize,
},
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Min_Idle'),
value: connectionPoolAttr.minIdle,
}, },
{ {
type: FormItem.xtype, type: FormItem.xtype,
@ -181,14 +378,27 @@ export class ConnectionJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Min_Evictable_Idle_Time_Millis'), name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Min_Evictable_Idle_Time_Millis'),
value: connectionPoolAttr.minEvictableIdleTimeMillis, value: connectionPoolAttr.minEvictableIdleTimeMillis,
unit: BI.i18nText('BI-Basic_Seconds'), unit: BI.i18nText('BI-Basic_Seconds'),
}, { },
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Max_Evictable_Idle_Time_Millis'),
value: connectionPoolAttr.maxEvictableIdleTimeMillis,
unit: BI.i18nText('BI-Basic_Seconds'),
},
{
type: FormItem.xtype,
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Regular_Check_On_Borrow_Threshold'),
value: connectionPoolAttr.keepAliveBetweenTimeMillis,
unit: BI.i18nText('Dec-Dcm_Millisecond'),
},
{
type: FormItem.xtype, type: FormItem.xtype,
invisible: fetchSize < 0 && fetchSize !== -2,
name: 'Fetchsize', name: 'Fetchsize',
value: fetchSize === -2 ? '' : fetchSize, value: fetchSize,
}, },
], ],
}, },
},
], ],
}; };
} }

1
src/modules/pages/connection/list/list.constant.ts

@ -0,0 +1 @@
BI.constant('dec.constant.connection.list', []);

28
src/modules/pages/connection/list/list.model.ts

@ -1,6 +1,7 @@
import { model, Model } from '@core/core'; import { model, Model } from '@core/core';
import { ApiFactory } from '../../..//crud/apiFactory'; import { ApiFactory } from '../../..//crud/apiFactory';
import { AppModel } from '../../../app.model'; import { AppModel } from '../../../app.model';
import type { ConnectionJDBC } from '../../../crud/crud.typings';
const api = new ApiFactory().create(); const api = new ApiFactory().create();
@model() @model()
export class ConnectionListModel extends Model<{ export class ConnectionListModel extends Model<{
@ -20,20 +21,39 @@ export class ConnectionListModel extends Model<{
actions = { actions = {
setConnections: (): Promise<void> => api.getConnectionList().then(data => { setConnections: (): Promise<void> => api.getConnectionList().then(data => {
data.data.push(...BI.Constants.getConstant('dec.constant.connection.list'));
if (BI.size(data.data) > 0) { if (BI.size(data.data) > 0) {
this.model.connections = data.data; this.model.connections = data.data;
let defaultDatabaseName,
defaultDatabaseId = BI.Services.getService("dec.service.global")
.getHashSearchParams("databaseId");
this.model.connections.forEach(item => { this.model.connections.forEach(item => {
// REPORT-111534 有些环境存在脏数据,补下容错
if (BI.isNull(item.connectionData)) return;
// 后端传过来的是字符串,转为对象 // 后端传过来的是字符串,转为对象
item.connectionData = JSON.parse(item.connectionData as string); BI.isString(item.connectionData) && (item.connectionData = JSON.parse(item.connectionData as string));
// 目前只有jdbc存在identity,后期拓展
if ((item.connectionData as ConnectionJDBC).identity === defaultDatabaseId) {
defaultDatabaseName = item.connectionName;
}
}); });
this.model.connectionSelected = data.data[0].connectionName;
} else { // 仅首次进入时从url中读取参数,其他情况保留选中状态
this.model.connectionSelected = ''; defaultDatabaseName ||= data.data[0].connectionName;
this.setSelectedConnection(defaultDatabaseName);
} }
return new Promise(resolve => { return new Promise(resolve => {
resolve(); resolve();
}); });
}), }),
setSelectedConnection(name: string) {
this.model.connectionSelected = name;
}
} }
} }

2
src/modules/pages/connection/list/list.ts

@ -3,6 +3,7 @@ import { ListItem } from './list_item/list_item';
import { ConnectionListModel } from './list.model'; import { ConnectionListModel } from './list.model';
import { getDatabaseType } from './list.service'; import { getDatabaseType } from './list.service';
import { Tab } from '@fui/core'; import { Tab } from '@fui/core';
import './list.constant'
@shortcut() @shortcut()
@store(ConnectionListModel) @store(ConnectionListModel)
@ -91,6 +92,7 @@ export class ConnectionList extends BI.Pane {
creator: item.creator, creator: item.creator,
databaseType: getDatabaseType(item), databaseType: getDatabaseType(item),
selected: this.model.connectionSelected ? this.model.connectionSelected === item.connectionName : index === 0, selected: this.model.connectionSelected ? this.model.connectionSelected === item.connectionName : index === 0,
pluginConnection: item.pluginConnection,
}; };
}); });
} }

3
src/modules/pages/connection/list/list_item/list_item.model.ts

@ -139,8 +139,9 @@ export class ListItemModel extends Model<{
// 后端传过来的是字符串,转为对象 // 后端传过来的是字符串,转为对象
item.connectionData = JSON.parse(item.connectionData as string); item.connectionData = JSON.parse(item.connectionData as string);
}); });
if (name === this.model.connectionSelected) { if (name === this.model.connectionSelected) {
this.model.connectionSelected = BI.size(this.model.connections) > 0 ? this.model.connections[0].connectionName : ''; this.setConnectionSelected(this.model.connections?.[0]?.connectionName || '');
} }
api.shutdownConnectionStatus(name); api.shutdownConnectionStatus(name);
}); });

33
src/modules/pages/connection/list/list_item/list_item.ts

@ -6,6 +6,10 @@ import { hasRegistered } from '../list.service';
import { connectionCanEdit, getTextByDatabaseType, getChartLength } from '../../../../app.service'; import { connectionCanEdit, getTextByDatabaseType, getChartLength } from '../../../../app.service';
import { testConnection } from '../../../maintain/forms/form.server'; import { testConnection } from '../../../maintain/forms/form.server';
import { DownListCombo, Label, SignEditor } from '@fui/core'; import { DownListCombo, Label, SignEditor } from '@fui/core';
import { ApiFactory } from '../../../../crud/apiFactory';
import { checkIllegalStrings } from "@core/index";
const api = new ApiFactory().create();
@shortcut() @shortcut()
@store(ListItemModel) @store(ListItemModel)
@ -16,6 +20,7 @@ export class ListItem extends BI.BasicButton {
name: '', name: '',
creator: '', creator: '',
databaseType: '', databaseType: '',
pluginConnection: false,
height: 25, height: 25,
baseCls: 'dec-dcm-connection-list-item bi-list-item-active2', baseCls: 'dec-dcm-connection-list-item bi-list-item-active2',
$testId: 'dec-dcm-connection-list-item', $testId: 'dec-dcm-connection-list-item',
@ -39,7 +44,7 @@ export class ListItem extends BI.BasicButton {
}; };
render() { render() {
const { name, databaseType } = this.options; const { name, databaseType, pluginConnection } = this.options;
return { return {
type: BI.HTapeLayout.xtype, type: BI.HTapeLayout.xtype,
@ -86,6 +91,17 @@ export class ListItem extends BI.BasicButton {
return; return;
} }
const result = checkIllegalStrings(newName);
if (!result.legal) {
BI.Msg.toast(result.errorMsg, {
level: 'error',
});
this.store.setIsEdit(false, name);
this.nameLabel.setText(name);
this.nameEditor.setValue(name);
return;
}
this.store.changeName(name, newName).then(re => { this.store.changeName(name, newName).then(re => {
this.store.setIsEdit(false, name); this.store.setIsEdit(false, name);
if (re.errorCode) { if (re.errorCode) {
@ -103,7 +119,7 @@ export class ListItem extends BI.BasicButton {
}, },
], ],
}, { }, {
el: databaseType ? { el: databaseType && !pluginConnection ? {
type: BI.DownListCombo.xtype, type: BI.DownListCombo.xtype,
cls: 'link-item-icon', cls: 'link-item-icon',
stopPropagation: true, stopPropagation: true,
@ -206,8 +222,17 @@ export class ListItem extends BI.BasicButton {
} }
private testConnectionAction() { private testConnectionAction() {
const { name } = this.options; // 接口返回的内容是对称加密的,前端要先解密再用新加密传回去
testConnection(this.model.connections.find(item => item.connectionName === name)); const connection = BI.cloneDeep(this.model.connections
.find(item => item.connectionName === this.options.name));
if (BI.isNull(connection)) return;
const validationQuery = connection?.connectionData?.connectionPoolAttr?.validationQuery || '';
BI.set(connection, 'connectionData.connectionPoolAttr.validationQuery', api.getCipher(api.getPlain(validationQuery)));
testConnection(connection);
} }
private itemActionCalculate() { private itemActionCalculate() {

17
src/modules/pages/database/database.constant.ts

@ -0,0 +1,17 @@
import { DATEBASE_FILTER_TYPE } from "@constants/constant";
BI.constant('dec.constant.database.filter.type', [
{
text: BI.i18nText('Dec-Dcm_Connection_Commonly'),
value: DATEBASE_FILTER_TYPE.COMMONLY,
selected: true,
},
{
text: BI.i18nText('Dec-Dcm_Connection_All'),
value: DATEBASE_FILTER_TYPE.ALL,
},
{
text: BI.i18nText('Dec-Dcm_Connection_Other'),
value: DATEBASE_FILTER_TYPE.OTHER,
},
]);

15
src/modules/pages/database/database.model.ts

@ -2,6 +2,8 @@ import { model, Model } from '@core/core';
import { AppModel } from 'src/modules/app.model'; import { AppModel } from 'src/modules/app.model';
import { getAllDatabaseTypes } from '../../app.service'; import { getAllDatabaseTypes } from '../../app.service';
import { DatabaseType } from '../../app.typings'; import { DatabaseType } from '../../app.typings';
import { connectionType } from '@constants/env';
import { OTHER_JDBC } from '@constants/constant';
@model() @model()
export class DatebaseModel extends Model<{ export class DatebaseModel extends Model<{
@ -20,8 +22,18 @@ export class DatebaseModel extends Model<{
isInternal: true, isInternal: true,
isPlugin: true, isPlugin: true,
datebaseTypes: getAllDatabaseTypes().filter(item => item.commonly), datebaseTypes: getAllDatabaseTypes().filter(item => item.commonly),
isJNDILimit: false,
}; };
} }
computed = {
otherDatabases: () => {
return this.model.isJNDILimit
? [OTHER_JDBC]
: [OTHER_JDBC, connectionType.JNDI];
}
}
actions = { actions = {
setSearch: (search: string) => { setSearch: (search: string) => {
this.model.search = search; this.model.search = search;
@ -42,5 +54,8 @@ export class DatebaseModel extends Model<{
setDatebaseTypeSelected(datebaseType: string) { setDatebaseTypeSelected(datebaseType: string) {
this.model.datebaseTypeSelected = datebaseType; this.model.datebaseTypeSelected = datebaseType;
}, },
setJNDILimit: (v: boolean) => {
this.model.isJNDILimit = v;
},
} }
} }

46
src/modules/pages/database/database.ts

@ -6,6 +6,11 @@ import { connectionType } from '@constants/env';
import { DatebaseType } from './database_type/database_type'; import { DatebaseType } from './database_type/database_type';
import { getAllDatabaseTypes } from '../../app.service'; import { getAllDatabaseTypes } from '../../app.service';
import { ButtonGroup, MultiSelectItem, SearchEditor } from '@fui/core'; import { ButtonGroup, MultiSelectItem, SearchEditor } from '@fui/core';
import { ApiFactory } from 'src/modules/crud/apiFactory';
import './database.constant'
const api = new ApiFactory().create();
@shortcut() @shortcut()
@store(DatebaseModel) @store(DatebaseModel)
export class Datebase extends BI.Widget { export class Datebase extends BI.Widget {
@ -65,6 +70,7 @@ export class Datebase extends BI.Widget {
mounted() { mounted() {
this.store.setFilter(DATEBASE_FILTER_TYPE.COMMONLY); this.store.setFilter(DATEBASE_FILTER_TYPE.COMMONLY);
this.store.setDatebaseTypeSelected(''); this.store.setDatebaseTypeSelected('');
this.getDatabaseTypeLimit();
} }
render() { render() {
@ -116,24 +122,12 @@ export class Datebase extends BI.Widget {
ref: (_ref: ButtonGroup) => { ref: (_ref: ButtonGroup) => {
this.filter = _ref; this.filter = _ref;
}, },
items: [ items: () => BI.map(BI.Constants.getConstant('dec.constant.database.filter.type'), (_, value) => {
{ return {
type: Filter.xtype,
text: BI.i18nText('Dec-Dcm_Connection_Commonly'),
value: DATEBASE_FILTER_TYPE.COMMONLY,
selected: true,
},
{
type: Filter.xtype,
text: BI.i18nText('Dec-Dcm_Connection_All'),
value: DATEBASE_FILTER_TYPE.ALL,
},
{
type: Filter.xtype, type: Filter.xtype,
text: BI.i18nText('Dec-Dcm_Connection_Other'), ...value,
value: DATEBASE_FILTER_TYPE.OTHER, }
}, }),
],
}, },
width: 200, width: 200,
}, },
@ -142,20 +136,18 @@ export class Datebase extends BI.Widget {
items: [ items: [
{ {
el: { el: {
type: BI.HTapeLayout.xtype, type: BI.VerticalAdaptLayout.xtype,
hgap: 20, hgap: 20,
invisible: true, invisible: true,
items: [ items: [
{ {
type: BI.Label.xtype, type: BI.Label.xtype,
width: 70,
textAlign: 'left', textAlign: 'left',
text: BI.i18nText('Dec-Dcm_Connection_Type_Filter'), text: BI.i18nText('Dec-Dcm_Connection_Type_Filter'),
title: BI.i18nText('Dec-Dcm_Connection_Type_Filter'), title: BI.i18nText('Dec-Dcm_Connection_Type_Filter'),
}, },
{ {
type: BI.MultiSelectItem.xtype, type: BI.MultiSelectItem.xtype,
width: 80,
selected: this.model.isInternal, selected: this.model.isInternal,
text: BI.i18nText('Dec-Dcm_Connection_Support_Inner'), text: BI.i18nText('Dec-Dcm_Connection_Support_Inner'),
title: BI.i18nText('Dec-Dcm_Connection_Support_Inner'), title: BI.i18nText('Dec-Dcm_Connection_Support_Inner'),
@ -168,7 +160,6 @@ export class Datebase extends BI.Widget {
}, },
{ {
type: BI.MultiSelectItem.xtype, type: BI.MultiSelectItem.xtype,
width: 80,
selected: this.model.isPlugin, selected: this.model.isPlugin,
text: BI.i18nText('Dec-Dcm_Connection_Support_Plugin'), text: BI.i18nText('Dec-Dcm_Connection_Support_Plugin'),
title: BI.i18nText('Dec-Dcm_Connection_Support_Plugin'), title: BI.i18nText('Dec-Dcm_Connection_Support_Plugin'),
@ -250,11 +241,20 @@ export class Datebase extends BI.Widget {
this.store.setDatebaseTypes(this.allDatabaseTypes.filter(item => item.commonly)); this.store.setDatebaseTypes(this.allDatabaseTypes.filter(item => item.commonly));
break; break;
case DATEBASE_FILTER_TYPE.OTHER: case DATEBASE_FILTER_TYPE.OTHER:
this.store.setDatebaseTypes(this.allDatabaseTypes.filter(item => item.type === connectionType.JNDI || item.type === OTHER_JDBC)); this.store.setDatebaseTypes(this.allDatabaseTypes.filter(item => this.model.otherDatabases.includes(item.type)));
break; break;
default: case DATEBASE_FILTER_TYPE.ALL:
this.store.setDatebaseTypes(this.allDatabaseTypes.filter(item => item.type !== connectionType.JNDI && item.type !== OTHER_JDBC)); this.store.setDatebaseTypes(this.allDatabaseTypes.filter(item => item.type !== connectionType.JNDI && item.type !== OTHER_JDBC));
break; break;
default:
this.store.setDatebaseTypes(this.allDatabaseTypes.filter(item => item.marker && (item.marker === filter)));
break;
} }
} }
// 获取JNDI
private async getDatabaseTypeLimit() {
const result = await api.getJNDIDatabaseStatus();
this.store.setJNDILimit(result.data);
}
} }

7
src/modules/pages/database/database_type/database_type.model.ts

@ -6,11 +6,13 @@ export class DatebaseTypeModel extends Model<
types: { types: {
datebaseTypeSelected: AppModel['TYPE']['datebaseTypeSelected']; datebaseTypeSelected: AppModel['TYPE']['datebaseTypeSelected'];
pageIndex: AppModel['TYPE']['pageIndex']; pageIndex: AppModel['TYPE']['pageIndex'];
noTestConnection: AppModel['TYPE']['noTestConnection'];
datebaseTypeSelectedOne: AppModel['TYPE']['datebaseTypeSelectedOne'];
}, },
context: DatebaseTypeModel['context']; context: DatebaseTypeModel['context'];
}> { }> {
static xtype = 'dec.dcm.model.datebase.type'; static xtype = 'dec.dcm.model.datebase.type';
context = <const>['datebaseTypeSelected', 'pageIndex']; context = <const>['datebaseTypeSelected', 'pageIndex', 'noTestConnection', 'datebaseTypeSelectedOne'];
actions = { actions = {
setDatebaseTypeSelected: (datebaseTypeSelected: string) => { setDatebaseTypeSelected: (datebaseTypeSelected: string) => {
@ -19,5 +21,8 @@ export class DatebaseTypeModel extends Model<
setPageIndex: (index: string) => { setPageIndex: (index: string) => {
this.model.pageIndex = index; this.model.pageIndex = index;
}, },
setNoTestConnection: (value: boolean) => {
this.model.noTestConnection = value;
}
} }
} }

4
src/modules/pages/database/database_type/database_type.ts

@ -70,6 +70,7 @@ export class DatebaseType extends BI.BasicButton {
const { value } = this.options; const { value } = this.options;
this.store.setDatebaseTypeSelected(value); this.store.setDatebaseTypeSelected(value);
this.store.setPageIndex(PAGE_INDEX.MAINTAIN); this.store.setPageIndex(PAGE_INDEX.MAINTAIN);
this.store.setNoTestConnection(this.model.datebaseTypeSelectedOne.isHideConnection);
} }
mounted() { mounted() {
@ -88,6 +89,9 @@ export class DatebaseType extends BI.BasicButton {
if (url.startsWith('/')) { if (url.startsWith('/')) {
return `${PluginImgPrefix}${url}`; return `${PluginImgPrefix}${url}`;
} }
if (url.startsWith('http')) {
return url;
}
return `${PluginImgPrefix}/${url}`; return `${PluginImgPrefix}/${url}`;
} }

17
src/modules/pages/maintain/components/driverselector/driverselector.model.ts

@ -67,7 +67,8 @@ export class DriverSelectorModel extends Model {
this.model.customDriver.driver = driver; this.model.customDriver.driver = driver;
this.model.customDrivers.some(customDriver => { this.model.customDrivers.some(customDriver => {
if (customDriver.driverClass === driver) { // DEC-21469 存在driver值相同但driver名不同的场景,因此要用拼接名判断
if (`${customDriver.driverClass} (${customDriver.name})` === value) {
this.model.driverSource = customDriver.name; this.model.driverSource = customDriver.name;
this.model.customDriver.value = `${driver} (${customDriver.name})`; this.model.customDriver.value = `${driver} (${customDriver.name})`;
@ -86,6 +87,12 @@ export class DriverSelectorModel extends Model {
changeDriverSource: driverTypeComboValue => { changeDriverSource: driverTypeComboValue => {
this.model.driverSource = driverTypeComboValue === 'default' ? '' : this.model.driverSource; this.model.driverSource = driverTypeComboValue === 'default' ? '' : this.model.driverSource;
}, },
setDefaultDrivers: version => {
const defaultDrivers = this.getDrivers(version);
this.model.defaultDrivers = defaultDrivers;
this.changeDefaultDriver(defaultDrivers[0]?.value);
}
}; };
private resolveSelectedDriverType = () => { private resolveSelectedDriverType = () => {
@ -96,11 +103,12 @@ export class DriverSelectorModel extends Model {
return [this.options.driverSource, this.options.driver]; return [this.options.driverSource, this.options.driver];
}; };
private getDrivers = () => { private getDrivers = (version?: string) => {
const connectionData = this.options.connectionData as ConnectionJDBC; const connectionData = this.options.connectionData as ConnectionJDBC;
const connectionType = getJdbcDatabaseType(connectionData.database, connectionData.driver); const connectionType = getJdbcDatabaseType(connectionData.database, connectionData.driver);
const selectedVersion = version ?? this.options.version;
const drivers = connectionType.drivers ? const drivers = connectionType.drivers ?
connectionType.drivers.map(item => { (BI.isUndefined(connectionType.versions) ? connectionType.drivers : connectionType.drivers[selectedVersion]).map(item => {
return { return {
text: item, text: item,
value: item, value: item,
@ -110,8 +118,7 @@ export class DriverSelectorModel extends Model {
text: connectionType.driver, text: connectionType.driver,
value: connectionType.driver, value: connectionType.driver,
}]; }];
if (BI.isUndefined(connectionType.versions) && !drivers.some(item => item.text === connectionData.driver)) {
if (!drivers.some(item => item.text === connectionData.driver)) {
return [ return [
{ {
text: connectionData.driver, text: connectionData.driver,

32
src/modules/pages/maintain/components/driverselector/driverselector.ts

@ -24,21 +24,32 @@ export class DriverSelector extends BI.Widget {
driver: '', driver: '',
driverSource: '', driverSource: '',
connectionData: {} as ConnectionJDBC, connectionData: {} as ConnectionJDBC,
version: '',
}; };
defaultDrivers: EditorIconCheckCombo = null; defaultDrivers: EditorIconCheckCombo = null;
customDrivers: SearchTextValueCombo = null; customDrivers: SearchTextValueCombo = null;
beforeRender(cb: Function) {
this.store.initDriverClassList(cb);
}
watch = { watch = {
driverClassItems: items => { driverClassItems: items => {
// this.customDrivers.populate(items); this.customDrivers.populate(items);
// this.customDrivers.setValue(this.model.customDriver.value); this.customDrivers.setValue(this.model.customDriver.value);
}, },
driverManageEntryVisible: b => { driverManageEntryVisible: b => {
this.driverManageEntry.setVisible(false); this.driverManageEntry.setVisible(b);
}, },
defaultDrivers: items => {
this.defaultDrivers.populate(items);
this.defaultDrivers.setValue(this.model.defaultDriver.driver);
this.fireEvent('EVENT_CHANGE');
}
}; };
private driverManageEntry = null; private driverManageEntry = null;
@ -55,7 +66,6 @@ export class DriverSelector extends BI.Widget {
type: BI.TextValueCombo.xtype, type: BI.TextValueCombo.xtype,
width: 86, width: 86,
value: this.model.selectedDriverType, value: this.model.selectedDriverType,
invisible: true,
items: [ items: [
{ {
text: BI.i18nText('Dec-Basic_Default'), text: BI.i18nText('Dec-Basic_Default'),
@ -95,7 +105,7 @@ export class DriverSelector extends BI.Widget {
this.defaultDrivers = _ref; this.defaultDrivers = _ref;
}, },
invisible: this.model.driverSource !== '', invisible: this.model.driverSource !== '',
width: 300, width: 204,
items: this.model.defaultDrivers, items: this.model.defaultDrivers,
value: this.model.defaultDriver.driver, value: this.model.defaultDriver.driver,
listeners: [ listeners: [
@ -116,13 +126,13 @@ export class DriverSelector extends BI.Widget {
ref: _ref => { ref: _ref => {
this.customDrivers = _ref; this.customDrivers = _ref;
}, },
invisible: true, invisible: this.model.driverSource === '',
width: 204, width: 204,
watermark: BI.i18nText('Dec-Please_Input'), watermark: BI.i18nText('Dec-Please_Input'),
items: this.model.driverClassItems, items: this.model.driverClassItems,
value: this.model.customDriver.value, value: this.model.customDriver.value,
text: () => this.model.customDriver.value || '', text: () => this.model.customDriver.value || '',
defaultText: BI.i18nText('Dec-Please_Select'), defaultText: BI.i18nText('Dec-Please_Select_One'),
warningTitle: BI.i18nText('Dec-Dcm-Driver_Driver_File_Lost'), warningTitle: BI.i18nText('Dec-Dcm-Driver_Driver_File_Lost'),
listeners: [ listeners: [
{ {
@ -146,7 +156,7 @@ export class DriverSelector extends BI.Widget {
text: BI.i18nText('Dec-Dcm_Create_New_Driver'), text: BI.i18nText('Dec-Dcm_Create_New_Driver'),
}, },
from: '.dec-dcm', from: '.dec-dcm',
invisible: true, invisible: !this.model.driverManageEntryVisible,
listeners: [ listeners: [
{ {
eventName: 'EVENT_CLOSE', eventName: 'EVENT_CLOSE',
@ -175,8 +185,12 @@ export class DriverSelector extends BI.Widget {
getValue() { getValue() {
return { return {
// driverSource: this.model.driverSource, driverSource: this.model.driverSource,
driver: this.model.driverSource === '' ? this.model.defaultDriver.driver : this.model.customDriver.driver, driver: this.model.driverSource === '' ? this.model.defaultDriver.driver : this.model.customDriver.driver,
}; };
} }
setDefaultDrivers(version: string) {
this.store.setDefaultDrivers(version);
}
} }

16
src/modules/pages/maintain/components/form_item/form_item.ts

@ -1,4 +1,5 @@
import { shortcut } from '@core/core'; import { shortcut } from '@core/core';
import { Label } from '@fui/core';
import { CONNECTION_LAYOUT } from '@constants/constant'; import { CONNECTION_LAYOUT } from '@constants/constant';
@shortcut() @shortcut()
@ -11,7 +12,9 @@ export class FormItem extends BI.Widget {
nameWidth: 140, nameWidth: 140,
isBold: true, isBold: true,
$testId: 'dec-dcm-maintain-form-item', $testId: 'dec-dcm-maintain-form-item',
} };
nameLabel: Label;
render() { render() {
return { return {
@ -19,6 +22,9 @@ export class FormItem extends BI.Widget {
items: [ items: [
{ {
type: BI.Label.xtype, type: BI.Label.xtype,
ref: (ref: Label) => {
this.nameLabel = ref;
},
cls: this.options.isBold ? 'bi-font-bold' : '', cls: this.options.isBold ? 'bi-font-bold' : '',
width: this.options.nameWidth, width: this.options.nameWidth,
textAlign: 'left', textAlign: 'left',
@ -29,4 +35,12 @@ export class FormItem extends BI.Widget {
], ],
}; };
} }
/**
*
* @param name
*/
setName(name: string) {
this.nameLabel.setText(name);
}
} }

1559
src/modules/pages/maintain/forms/components/form.jdbc.ts

File diff suppressed because it is too large Load Diff

4
src/modules/pages/maintain/forms/components/form.plugin.ts

@ -37,4 +37,8 @@ export class FormPlugin extends BI.Widget {
connectionData: <ConnectionPlugin>BI.extend({}, connectionData, this.plugin.getValue()), connectionData: <ConnectionPlugin>BI.extend({}, connectionData, this.plugin.getValue()),
}; };
} }
public getSaveFn() {
return this.plugin.save;
}
} }

5
src/modules/pages/maintain/forms/form.model.ts

@ -17,6 +17,7 @@ export class MaintainFormModel extends Model<{
pageIndex: AppModel['TYPE']['pageIndex']; pageIndex: AppModel['TYPE']['pageIndex'];
connections: AppModel['TYPE']['connections']; connections: AppModel['TYPE']['connections'];
isCopy: AppModel['TYPE']['isCopy']; isCopy: AppModel['TYPE']['isCopy'];
connectionSelected: AppModel['TYPE']['connectionSelected'];
}, },
context: MaintainFormModel['context']; context: MaintainFormModel['context'];
}> { }> {
@ -31,6 +32,7 @@ export class MaintainFormModel extends Model<{
'testEvent', 'testEvent',
'connections', 'connections',
'isCopy', 'isCopy',
'connectionSelected',
]; ];
actions = { actions = {
@ -51,5 +53,8 @@ export class MaintainFormModel extends Model<{
goFirstPage() { goFirstPage() {
this.model.pageIndex = PAGE_INDEX.CONNECTION; this.model.pageIndex = PAGE_INDEX.CONNECTION;
}, },
setConnectionSelected(name: string) {
this.model.connectionSelected = name;
}
} }
} }

58
src/modules/pages/maintain/forms/form.server.ts

@ -5,6 +5,7 @@ import { TestStatus } from '../../../components/test_status/test_status';
import { getJdbcDatabaseType } from '../../../app.service'; import { getJdbcDatabaseType } from '../../../app.service';
import { ApiFactory } from '../../../crud/apiFactory'; import { ApiFactory } from '../../../crud/apiFactory';
const api = new ApiFactory().create(); const api = new ApiFactory().create();
export function testConnection(value: Connection): Promise<string[]> { export function testConnection(value: Connection): Promise<string[]> {
return new Promise(resolve => { return new Promise(resolve => {
let testStatus = null; let testStatus = null;
@ -15,11 +16,17 @@ export function testConnection(value: Connection): Promise<string[]> {
return false; return false;
} }
const id = BI.UUID(); const id = BI.UUID();
const testConnection = () => { const testConnection = () => {
const formValue = value; const formValue = value;
api.testConnection(formValue).then(re => { api.testConnection(formValue).then(re => {
if (re && re.errorCode) { if (re && re.errorCode) {
if (re.errorCode === DecCst.ErrorCode.NO_IP_AUTHORIZED) {
testStatus.setFail();
return;
}
// 判断是否是缺少驱动,如果缺少驱动则显示下载驱动的连接 // 判断是否是缺少驱动,如果缺少驱动则显示下载驱动的连接
if (api.isDriverError(re.errorCode)) { if (api.isDriverError(re.errorCode)) {
if (formValue.connectionType === connectionType.JDBC) { if (formValue.connectionType === connectionType.JDBC) {
@ -40,7 +47,11 @@ export function testConnection(value: Connection): Promise<string[]> {
} else if (re.errorCode === errorCode.DUPLICATE_NAMES) { } else if (re.errorCode === errorCode.DUPLICATE_NAMES) {
testStatus.setFail(BI.i18nText(re.errorMsg)); testStatus.setFail(BI.i18nText(re.errorMsg));
} else { } else {
// 不缺少驱动,但连接失败,打印出当前驱动加载路径,并显示检测驱动按钮
testStatus.setFail(re.errorMsg); testStatus.setFail(re.errorMsg);
api.getDriverLoadPath(formValue).then(res => {
testStatus.setExtraContainer(createDriverTestContainer(res.data));
})
} }
} else if (re.data) { } else if (re.data) {
testStatus.setSuccess(); testStatus.setSuccess();
@ -55,7 +66,54 @@ export function testConnection(value: Connection): Promise<string[]> {
BI.Maskers.remove(id); BI.Maskers.remove(id);
} }
}); });
/**
*
*/
function createDriverTestContainer(path: string) {
return {
type: BI.VerticalLayout.xtype,
vgap: 5,
items: [
{
type: BI.Label.xtype,
text: BI.i18nText('Dec-Connection_Driver_Current_Load_Path', path),
textAlign: 'left',
whiteSpace: 'normal',
},
{
type: BI.TextButton.xtype,
cls: 'bi-high-light',
text: BI.i18nText('Dec-Connection_Driver_Check'),
textAlign: 'left',
handler: () => {
api.checkDriverStatus({
driver: (formValue.connectionData as ConnectionJDBC).driver,
path,
}).then(res => {
const isDriverConflict = res.data;
testStatus.setExtraContainer({
type: BI.VerticalLayout.xtype,
items: [
{
type: BI.Label.xtype,
textAlign: 'left',
text: isDriverConflict
? BI.i18nText('Dec-Connection_Driver_Has_Confilt_Tip')
: BI.i18nText('Dec-Connection_Driver_No_Confilt_Tip'),
cls: isDriverConflict ? 'bi-error' : '',
}
]
})
});
}
}
]
}
}
}; };
BI.Maskers.create(id, null, { BI.Maskers.create(id, null, {
render: { render: {
type: TestStatus.xtype, type: TestStatus.xtype,

101
src/modules/pages/maintain/forms/form.ts

@ -6,13 +6,15 @@ import { FormPlugin } from './components/form.plugin';
import { connectionType, errorCode } from '@constants/env'; import { connectionType, errorCode } from '@constants/env';
import { ConnectionJDBC, Connection, ResultType } from 'src/modules/crud/crud.typings'; import { ConnectionJDBC, Connection, ResultType } from 'src/modules/crud/crud.typings';
import { DEFAULT_JNDI_DATA, DEFAULT_JDBC_POOL, DATEBASE_FILTER_TYPE } from '@constants/constant'; import { DEFAULT_JNDI_DATA, DEFAULT_JDBC_POOL, DATEBASE_FILTER_TYPE } from '@constants/constant';
import { getJdbcDatabaseType, getChartLength } from '../../../app.service'; import { getJdbcDatabaseType, getChartLength, getAllDatabaseTypes } from '../../../app.service';
import { NAME_MAX_LENGTH } from '../../../app.constant'; import { NAME_MAX_LENGTH } from '../../../app.constant';
import { checkIllegalStrings } from "@core/index";
@shortcut() @shortcut()
@store(MaintainFormModel) @store(MaintainFormModel)
export class MaintainForm extends BI.Widget { export class MaintainForm extends BI.Widget {
static xtype = 'dec.dcm.maintain.form'; static xtype = 'dec.dcm.maintain.form';
static EVENT_TESTCONNECTION = 'EVENT_TEST_CONNECTION';
props = { props = {
connectionType: '', connectionType: '',
@ -28,29 +30,37 @@ export class MaintainForm extends BI.Widget {
watch = { watch = {
saveEvent: () => { saveEvent: () => {
if (!this.testValue()) { const sonSave = this.form.getSaveFn?.();
return; if (sonSave) {
sonSave().then((success: boolean) => {
if (success) {
this.store.goFirstPage();
BI.Msg.toast(BI.i18nText("Dec-Basic_Save_Success"), {
level: "success",
});
} else {
BI.Msg.toast(BI.i18nText("Dec-Basic_Save_Fail"), {
level: "error",
});
} }
if (this.connectionName && !this.model.isCopy) { });
const value = this.form.getSubmitValue();
(value.connectionData as ConnectionJDBC).creator = BI.get(this.getFormData(), 'creator');
// DEC-10155 为了适配插件的数据连接,在外层也加一个creator字段
value.creator = BI.get(this.getFormData(), 'creator');
this.store.updateConnection(this.connectionName, value).then(result => {
if (result.errorCode) {
this.showError(result);
//只有外来插件才可以使用是否不执行平台的保存逻辑
if (this.model.datebaseTypeSelected) {
const isPluginDatabase = BI.some(BI.Providers.getProvider('dec.connection.provider.datebase').customDatabaseType, (_index, value) => value.databaseType === this.model.datebaseTypeSelected);
if (isPluginDatabase && this.model.datebaseTypeSelectedOne.isNoSave) {
return; return;
} }
this.store.goFirstPage();
});
} else { } else {
const form = this.form.getSubmitValue(); const databaseType = this.model.connectionSelectedOne.connectionType;
form.connectionId = this.connectionName; const database = BI.find(getAllDatabaseTypes(), (_index, value) => value.databaseType === databaseType);
// DEC-10155 为了适配插件的数据连接,在外层也加一个creator字段 if (this.model.connectionSelectedOne.pluginConnection && database?.isNoSave) {
form.creator = Dec ? Dec.personal.username : ''; return;
this.addConnection(form); }
}
} }
this.save();
}, },
testEvent: () => { testEvent: () => {
this.testConnection(); this.testConnection();
@ -71,7 +81,7 @@ export class MaintainForm extends BI.Widget {
this.form = _ref; this.form = _ref;
}, },
listeners: [{ listeners: [{
eventName: 'EVENT_TEST_CONNECTION', eventName: MaintainForm.EVENT_TESTCONNECTION,
action: () => { action: () => {
this.testConnection(); this.testConnection();
}, },
@ -116,15 +126,16 @@ export class MaintainForm extends BI.Widget {
let editConnection: Connection; let editConnection: Connection;
let connectionData: ConnectionJDBC; let connectionData: ConnectionJDBC;
if (this.model.datebaseTypeSelected) { if (this.model.datebaseTypeSelected) {
const { databaseType: database, fetchSize } = this.model.datebaseTypeSelectedOne;
connectionData = { connectionData = {
driver: this.model.datebaseTypeSelectedOne.driver, ...this.model.datebaseTypeSelectedOne,
url: this.model.datebaseTypeSelectedOne.url, database,
database: this.model.datebaseTypeSelectedOne.databaseType,
connectionName, connectionName,
connectionPoolAttr: DEFAULT_JDBC_POOL, connectionPoolAttr: DEFAULT_JDBC_POOL,
port: '', port: '',
host: 'localhost', host: 'localhost',
fetchSize: this.model.datebaseTypeSelectedOne.fetchSize ?? -1, fetchSize: fetchSize ?? -1,
identity: BI.UUID(), identity: BI.UUID(),
}; };
editConnection = { editConnection = {
@ -203,6 +214,12 @@ export class MaintainForm extends BI.Widget {
if (this.form.validation && !this.form.validation()) { if (this.form.validation && !this.form.validation()) {
return false; return false;
} }
const result = checkIllegalStrings(value.connectionName);
if (!result.legal) {
this.setFromError(result.errorMsg);
return false;
}
return true; return true;
} }
@ -253,6 +270,11 @@ export class MaintainForm extends BI.Widget {
private addConnection(form: Connection) { private addConnection(form: Connection) {
this.store.addConnection(form).then(result => { this.store.addConnection(form).then(result => {
if (result.errorCode) { if (result.errorCode) {
if (result.errorCode === DecCst.ErrorCode.NO_IP_AUTHORIZED) {
BI.Msg.toast(BI.i18nText("Dec-Basic_Save_Fail"), {
level: "error",
});
}
if (result.errorCode === errorCode.DUPLICATE_NAMES) { if (result.errorCode === errorCode.DUPLICATE_NAMES) {
if (form.connectionType !== connectionType.JDBC && form.connectionType !== connectionType.JNDI) { if (form.connectionType !== connectionType.JDBC && form.connectionType !== connectionType.JNDI) {
// 如果不是jdbc或jndi,即如果是插件,名称重复的时候需要修改名字重新提交给后台 // 如果不是jdbc或jndi,即如果是插件,名称重复的时候需要修改名字重新提交给后台
@ -273,8 +295,41 @@ export class MaintainForm extends BI.Widget {
return; return;
} }
// 新增之后connections待更新,connectionSelected先置空
this.store.setConnectionSelected('');
this.store.goFirstPage(); this.store.goFirstPage();
this.store.setIsCopy(false); this.store.setIsCopy(false);
}); });
} }
private save() {
if (!this.testValue()) {
return;
}
if (this.connectionName && !this.model.isCopy) {
const value = this.form.getSubmitValue();
(value.connectionData as ConnectionJDBC).creator = BI.get(this.getFormData(), 'creator');
// DEC-10155 为了适配插件的数据连接,在外层也加一个creator字段
value.creator = BI.get(this.getFormData(), 'creator');
this.store.updateConnection(this.connectionName, value).then(result => {
if (result.errorCode) {
if (result.errorCode === DecCst.ErrorCode.NO_IP_AUTHORIZED) {
BI.Msg.toast(BI.i18nText("Dec-Basic_Save_Fail"), {
level: "error",
});
}
this.showError(result);
return;
}
this.store.goFirstPage();
});
} else {
const form = this.form.getSubmitValue();
form.connectionId = this.connectionName;
// DEC-10155 为了适配插件的数据连接,在外层也加一个creator字段
form.creator = Dec ? Dec.personal.username : '';
this.addConnection(form);
}
}
} }

12
src/modules/pages/maintain/maintain.ts

@ -9,7 +9,7 @@ import './maintain.less';
import { connectionType } from '@constants/env'; import { connectionType } from '@constants/env';
import { getJdbcDatabaseType, getTextByDatabaseType } from '../../app.service'; import { getJdbcDatabaseType, getTextByDatabaseType } from '../../app.service';
import { ConnectionJDBC } from 'src/modules/crud/crud.typings'; import { ConnectionJDBC } from 'src/modules/crud/crud.typings';
import { ListView } from '@fui/core'; import { ButtonGroup } from '@fui/core';
@shortcut() @shortcut()
@store(MaintainModel) @store(MaintainModel)
@ -19,7 +19,7 @@ export class Maintain extends BI.Widget {
model: MaintainModel['model']; model: MaintainModel['model'];
store: MaintainModel['store']; store: MaintainModel['store'];
listView: ListView; buttonGroup: ButtonGroup;
socketTip: LinkButton; socketTip: LinkButton;
render() { render() {
@ -28,7 +28,7 @@ export class Maintain extends BI.Widget {
return { return {
type: BI.VTapeLayout.xtype, type: BI.VTapeLayout.xtype,
hgap: 5, hgap: 16,
items: [ items: [
{ {
type: BI.VerticalAdaptLayout.xtype, type: BI.VerticalAdaptLayout.xtype,
@ -64,9 +64,9 @@ export class Maintain extends BI.Widget {
], ],
}, },
{ {
type: BI.ListView.xtype, type: BI.ButtonGroup.xtype,
ref: (_ref: ListView) => { ref: (_ref: ButtonGroup) => {
this.listView = _ref; this.buttonGroup = _ref;
}, },
items: this.renderItems(), items: this.renderItems(),
}, },

96
src/modules/pages/setting/setting.ts

@ -0,0 +1,96 @@
import { shortcut } from '@core/core';
import { ApiFactory } from 'src/modules/crud/apiFactory';
const api = new ApiFactory().create();
@shortcut()
export class TimeOutSetting extends BI.Widget {
public static xtype = 'dec.dcm.page.timeout.setting';
public props = {
value: 0,
};
beforeRender(cb: Function) {
const self = this;
api.getTimeOut().then(res => {
self.props.value = res.data.count;
cb();
});
}
public render() {
const { value } = this.props;
const self = this;
return {
type: 'bi.vtape',
cls: 'bi-background',
items: [{
type: 'dec.setting.header',
height: 40,
listeners: [{
eventName: 'EVENT_CANCEL',
action: function () {
self.fireEvent('EVENT_CHANGE');
},
}, {
eventName: 'EVENT_SAVE',
action: function () {
api.putTimeOut(Number(self.editor.getValue()));
self.fireEvent('EVENT_CHANGE');
},
}],
}, {
type: 'bi.vertical',
cls: 'bi-card',
vgap: 10,
items: [
{
el: {
type: 'bi.vertical_adapt',
cls: 'bi-border-bottom',
height: 40,
items: [{
type: 'bi.label',
textAlign: 'left',
width: 120,
cls: 'dec-font-weight-bold',
text: BI.i18nText('Dec-Dcm_Connection_Timeout_Detection'),
}]
}, tgap: -10, hgap: 16,
},
{
type: 'bi.vertical_adapt',
hgap: 16,
items: [{
type: 'dec.label.editor.item',
text: BI.i18nText('Dec-Over_Time'),
textWidth: 100,
editorWidth: 80,
allowBlank: false,
value: value,
validationChecker: function(v) {
return BI.isPositiveInteger(v);
},
errorText: BI.i18nText('BI-Please_Input_Positive_Integer'),
ref: function (_ref) {
self.editor = _ref;
},
}, {
el: {
type: 'bi.label',
text: BI.i18nText('Dec-Dcm_Connection_Timeout_Millisecond'),
},
lgap: 10,
}]
},
]
}],
ref: function (_ref) {
self.setting = _ref;
},
};
}
}

11
src/modules/title/title.ts

@ -11,7 +11,7 @@ export class Title extends BI.Widget {
static xtype = 'dec.dcm.title'; static xtype = 'dec.dcm.title';
props = { props = {
baseCls: 'bi-card', baseCls: '',
} }
tab: Tab; tab: Tab;
linearSegment: LinearSegment; linearSegment: LinearSegment;
@ -31,6 +31,14 @@ export class Title extends BI.Widget {
type: BI.LeftRightVerticalAdaptLayout.xtype, type: BI.LeftRightVerticalAdaptLayout.xtype,
items: { items: {
left: [ left: [
{
type: 'bi.icon_button',
cls: 'setting-font',
_lgap: 15,
handler: () => {
this.fireEvent('EVENT_CLICK_SETTING');
},
},
{ {
type: BI.LinearSegment.xtype, type: BI.LinearSegment.xtype,
cls: 'bi-font-bold', cls: 'bi-font-bold',
@ -70,6 +78,7 @@ export class Title extends BI.Widget {
type: BI.Tab.xtype, type: BI.Tab.xtype,
height: 40, height: 40,
showIndex: this.model.pageIndex, showIndex: this.model.pageIndex,
width:200,
ref: (_ref: Tab) => { ref: (_ref: Tab) => {
this.tab = _ref; this.tab = _ref;
}, },

5
src/modules/title/title_database/title_datebase.ts

@ -25,13 +25,13 @@ export class TitleDatabase extends BI.Widget {
items: [{ items: [{
type: BI.VerticalAdaptLayout.xtype, type: BI.VerticalAdaptLayout.xtype,
height: 40, height: 40,
rgap: 5, rgap: 16,
items: [ items: [
{ {
type: BI.Button.xtype, type: BI.Button.xtype,
$value: 'title-database-cancel', $value: 'title-database-cancel',
text: BI.i18nText('BI-Basic_Cancel'), text: BI.i18nText('BI-Basic_Cancel'),
level: 'ignore', light: true,
handler: () => { handler: () => {
this.store.setPageIndex(PAGE_INDEX.CONNECTION); this.store.setPageIndex(PAGE_INDEX.CONNECTION);
}, },
@ -49,6 +49,7 @@ export class TitleDatabase extends BI.Widget {
}, },
}, },
], ],
_rgap: -16,
}], }],
}; };
} }

3
src/modules/title/title_maintain/title_maintain.model.ts

@ -11,12 +11,13 @@ export class TitleMaintainModel extends Model<{
connectionSelected: AppModel['TYPE']['connectionSelected']; connectionSelected: AppModel['TYPE']['connectionSelected'];
testEvent: AppModel['TYPE']['testEvent']; testEvent: AppModel['TYPE']['testEvent'];
isCopy: AppModel['TYPE']['isCopy']; isCopy: AppModel['TYPE']['isCopy'];
noTestConnection: AppModel['TYPE']['noTestConnection'];
}, },
context: TitleMaintainModel['context']; context: TitleMaintainModel['context'];
}> { }> {
static xtype = 'dec.dcm.model.title_maintain'; static xtype = 'dec.dcm.model.title_maintain';
context = <const>['pageIndex', 'saveEvent', 'testEvent', 'connectionSelected', 'isCopy']; context = <const>['pageIndex', 'saveEvent', 'testEvent', 'connectionSelected', 'isCopy', 'noTestConnection'];
actions = { actions = {
setPageIndex: (index: string) => { setPageIndex: (index: string) => {

14
src/modules/title/title_maintain/title_maintain.ts

@ -1,6 +1,7 @@
import { shortcut, store } from '@core/core'; import { shortcut, store } from '@core/core';
import { TitleMaintainModel } from './title_maintain.model'; import { TitleMaintainModel } from './title_maintain.model';
import { PAGE_INDEX } from '@constants/constant'; import { PAGE_INDEX } from '@constants/constant';
import { Button } from '@fui/core';
@shortcut() @shortcut()
@store(TitleMaintainModel) @store(TitleMaintainModel)
@ -9,19 +10,20 @@ export class TitleMaintain extends BI.Widget {
store: TitleMaintainModel['store']; store: TitleMaintainModel['store'];
model: TitleMaintainModel['model']; model: TitleMaintainModel['model'];
render() { render() {
return { return {
type: BI.FloatRightLayout.xtype, type: BI.FloatRightLayout.xtype,
items: [{ items: [{
type: BI.VerticalAdaptLayout.xtype, type: BI.VerticalAdaptLayout.xtype,
height: 40, height: 40,
rgap: 5,
items: [ items: [
{ {
type: BI.Button.xtype, type: BI.Button.xtype,
$value: 'title-maintain-cancel', $value: 'title-maintain-cancel',
text: BI.i18nText('BI-Basic_Cancel'), text: BI.i18nText('BI-Basic_Cancel'),
level: 'ignore', clear: true,
_rgap: 16,
handler: () => { handler: () => {
this.store.setIsCopy(false); this.store.setIsCopy(false);
this.store.setPageIndex(PAGE_INDEX.CONNECTION); this.store.setPageIndex(PAGE_INDEX.CONNECTION);
@ -30,15 +32,21 @@ export class TitleMaintain extends BI.Widget {
}, },
{ {
type: BI.Button.xtype, type: BI.Button.xtype,
ref: (_ref) => {
this.testConnectionBtn = _ref;
},
invisible: () => this.model.noTestConnection,
_rgap: 16,
$value: 'title-maintain-connection-test', $value: 'title-maintain-connection-test',
text: BI.i18nText('Dec-Dcm_Connection_Test'), text: BI.i18nText('Dec-Dcm_Connection_Test'),
level: 'ignore', light: true,
handler: () => { handler: () => {
this.store.setTestEvent(); this.store.setTestEvent();
}, },
}, },
{ {
type: BI.Button.xtype, type: BI.Button.xtype,
_rgap: 16,
$value: 'title-maintain-save', $value: 'title-maintain-save',
text: BI.i18nText('BI-Basic_Save'), text: BI.i18nText('BI-Basic_Save'),
handler: () => { handler: () => {

24
tsconfig.json

@ -19,13 +19,23 @@
// "noUnusedParameters": true, // "noUnusedParameters": true,
// "noImplicitReturns": true, // "noImplicitReturns": true,
"noFallthroughCasesInSwitch": true, "noFallthroughCasesInSwitch": true,
"skipLibCheck": true, "skipLibCheck": false,
"paths": { "paths": {
"ui": ["./src/ui"], "ui": [
"ReportCst": ["./private/constants"], "./src/ui"
"types": ["./types/index.d.ts"], ],
"@core/*": ["./src/modules/core/*"], "ReportCst": [
"@constants/*": ["./src/modules/constants/*"] "./private/constants"
],
"types": [
"./types/index.d.ts"
],
"@core/*": [
"./src/modules/core/*"
],
"@constants/*": [
"./src/modules/constants/*"
]
} }
}, },
"include": [ "include": [
@ -33,6 +43,6 @@
"src/**/*.ts", "src/**/*.ts",
"private/*.ts", "private/*.ts",
"private/**/*.ts", "private/**/*.ts",
"types/globals.d.ts" "types"
] ]
} }

22
types/globals.d.ts vendored

@ -2,6 +2,8 @@ interface Obj {
[key: string]: any; [key: string]: any;
} }
type RequestFunction = (url: string, data: any, callback: (re: any) => void) => void;
declare let BI: Obj & import('@fui/core').BI & import('@fui/materials').BI; declare let BI: Obj & import('@fui/core').BI & import('@fui/materials').BI;
declare const Fix: Obj; declare const Fix: Obj;
declare const DecCst: Obj; declare const DecCst: Obj;
@ -10,15 +12,21 @@ declare const Dec: {
socket: { socket: {
connected: boolean; connected: boolean;
}; };
system: { system: {};
};
personal: { personal: {
username: string; username: string;
}; };
Utils: Obj;
reqByEncrypt: (method: AxiosType.X_Method, url: string, data?: any, config?: AxiosType.X_AxiosRequestConfig) => {},
socketEmit: (type: string, name: string, callback: (re: any) => void) => void; socketEmit: (type: string, name: string, callback: (re: any) => void) => void;
reqGet: (url: string, data: any, callback: (re: any) => void) => void; // req
reqPost: (url: string, data: any, callback: (re: any) => void) => void; reqGet: RequestFunction;
reqPut: (url: string, data: any, callback: (re: any) => void) => void; reqPost: RequestFunction;
reqDelete: (url: string, data: any, callback: (re: any) => void) => void; reqPut: RequestFunction;
reqDelete: RequestFunction;
// reqHandle
reqGetHandle: RequestFunction;
reqPostHandle: RequestFunction;
reqPutHandle: RequestFunction;
reqDeleteHandle: RequestFunction;
}; };

9
types/request.d.ts vendored

@ -0,0 +1,9 @@
import { Method, AxiosRequestConfig } from 'axios';
declare namespace AxiosType {
type X_Method = Method
interface X_AxiosRequestConfig extends AxiosRequestConfig { }
}
export = AxiosType;
export as namespace AxiosType;
Loading…
Cancel
Save