Browse Source

Pull request #189: 无jira任务, release/10.0 合 feature/10.0

Merge in DEC/decision-webui-dcm from release/10.0 to feature/10.0

* commit '973fe5ca553d117b92c014152f879e3322a30419':
  KERNEL-4727 refactor: 【平台】使用babel-preset-fineui插件配置babel
  KERNEL-4727 refactor: 【平台】使用babel-preset-fineui插件配置babel
  fix: 添加判断
  DEC-14009 1.8以上版本JDK支持ODBC连接
  fix:调整名称
  DEC-13832 fix: 调整id
  DEC-13832 chore:覆盖数据连接id
  BI-66943 fix: 【513】全局更新设置定时更新,明细频率执行,应该只有选项前面的选项是勾选状态,整一行没有蓝色选中
  DEC-13518 fix: 数据连接高级属性,单独修改“开启空闲回收器检验”不生效
  无JIRA 修复husky pre-push报错
  DEC-13363 feat: 加载动画统一
research/11.0
ju.ju 4 years ago
parent
commit
661866b36b
  1. 2
      .npmrc
  2. 30
      babel.config.js
  3. 2
      config/jest.environment.js
  4. 50
      index.html
  5. 15
      package.json
  6. 2
      src/less/lib/background.less
  7. 1
      src/modules/components/collapse/collapse.ts
  8. 6
      src/modules/components/test_status/tip_icon/tip_fail.ts
  9. 6
      src/modules/components/test_status/tip_icon/tip_icon.ts
  10. 3
      src/modules/components/text_checker/text_checker.ts
  11. 3
      src/modules/constants/constant.ts
  12. 5
      src/modules/crud/api.ts
  13. 4
      src/modules/crud/decision.api.ts
  14. 5
      src/modules/crud/design.api.ts
  15. 1
      src/modules/pages/connection/components/form_item/form_item.ts
  16. 1
      src/modules/pages/connection/connection.ts
  17. 1
      src/modules/pages/connection/connection_jndi/connection_jndi.ts
  18. 21
      src/modules/pages/connection/list/list_item/list_item.ts
  19. 3
      src/modules/pages/connection_pool/list_item/list_item.ts
  20. 9
      src/modules/pages/connection_pool/pool/pool.ts
  21. 7
      src/modules/pages/database/database.ts
  22. 2
      src/modules/pages/database/database_type/database_type.less
  23. 3
      src/modules/pages/database/database_type/database_type.ts
  24. 6
      src/modules/pages/database/filter/filter.less
  25. 6
      src/modules/pages/database/filter/filter.ts
  26. 1
      src/modules/pages/maintain/components/form_item/form_item.ts
  27. 33
      src/modules/pages/maintain/forms/components/form.jdbc.ts
  28. 19
      src/modules/pages/maintain/forms/components/form.jndi.ts
  29. 8
      src/modules/pages/maintain/forms/form.server.ts
  30. 1
      src/modules/pages/maintain/maintain.ts
  31. 2
      src/modules/title/title.ts
  32. 2
      src/modules/title/title_database/title_datebase.ts
  33. 3
      src/modules/title/title_maintain/title_maintain.ts
  34. 2
      webpack/webpack.dev.js

2
.npmrc

@ -0,0 +1,2 @@
puppeteer_download_host=https://npm.taobao.org/mirrors
@fui:registry=https://npm.fineres.com/

30
babel.config.js

@ -1,29 +1,3 @@
module.exports = function(api) {
api.cache(true);
const presets = [
[
'@babel/preset-env',
{
targets: {
ie: 9,
chrome: 47,
},
},
],
'@babel/preset-typescript',
];
const plugins = [
[
'@babel/plugin-proposal-decorators',
{
legacy: true,
},
],
'@babel/plugin-proposal-class-properties',
];
return {
presets,
plugins,
};
module.exports = function (api) {
return require("@fui/babel-preset-fineui").configs.base(api)
};

2
config/jest.environment.js

@ -12,7 +12,7 @@ class FineUiEnvironment extends JsdomEnvironment {
[
'../node_modules/fineui/dist/fineui.js',
'../node_modules/fineui-materials/docs/materials.js',
'../node_modules/@fui/materials/docs/materials.js',
'../config/fineui.prepare.js',
'./fineui.setup.js',
].forEach(scriptRelativePath => {

50
index.html

@ -1,34 +1,22 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<title>Fine Report</title>
<!--核心css文件-->
<link
rel="preload"
href="./node_modules/fineui/dist/font/iconfont.woff"
as="font"
type="font/woff"
crossorigin=""
/>
<link
rel="stylesheet"
type="text/css"
href="./node_modules/fineui/dist/fineui.min.css"
/>
<link
rel="stylesheet"
type="text/css"
href="./node_modules/fineui-materials/docs/materials.css"
/>
</head>
<body id="body">
<div id="wrapper"></div>
<script src="./node_modules/fineui/dist/fineui.min.js"></script>
<script src="./node_modules/fineui/i18n/i18n.cn.js"></script>
<script src="./node_modules/fineui-materials/docs/materials.js"></script>
<script src="./assets/scripts/dec.js"></script>
<script src="./redis.js"></script>
</body>
</html>
<head>
<meta charset="UTF-8" />
<title>Fine Report</title>
<!--核心css文件-->
<link rel="preload" href="./node_modules/fineui/dist/font/iconfont.woff" as="font" type="font/woff" crossorigin="" />
<link rel="stylesheet" type="text/css" href="./node_modules/fineui/dist/fineui.css" />
<link rel="stylesheet" type="text/css" href="./node_modules/@fui/materials/docs/materials.css" />
</head>
<body id="body">
<div id="wrapper"></div>
<script src="./node_modules/fineui/dist/fineui.js"></script>
<script src="./node_modules/fineui/dist/utils.js"></script>
<script src="./node_modules/@fui/materials/docs/materials.js"></script>
<script src="./assets/scripts/dec.js"></script>
<script src="./redis.js"></script>
</body>
</html>

15
package.json

@ -16,12 +16,6 @@
"nprogress": "0.2.0"
},
"devDependencies": {
"@babel/core": "7.4.5",
"@babel/plugin-proposal-class-properties": "^7.5.0",
"@babel/plugin-proposal-decorators": "7.4.4",
"@babel/polyfill": "^7.8.3",
"@babel/preset-env": "7.4.5",
"@babel/preset-typescript": "7.3.3",
"@types/jest": "24.0.11",
"@typescript-eslint/eslint-plugin": "1.7.0",
"@typescript-eslint/parser": "1.7.0",
@ -57,12 +51,11 @@
"webpack-cli": "3.3.5",
"webpack-dev-server": "3.7.2",
"webpack-merge": "4.2.1",
"ydoc": "4.1.0",
"ydoc-plugin-jsdoc": "0.0.3"
"@fui/babel-preset-fineui": "^1.0.0"
},
"optionalDependencies": {
"fineui": "git+ssh://git@cloud.finedevelop.com:7999/visual/fineui.git",
"fineui-materials": "git+ssh://git@cloud.finedevelop.com:7999/fui/fineui-materials.git#release/10.0"
"fineui": "^2.0.0",
"@fui/materials": "10.0.0-release - 10.0.0-release.99999999999999"
},
"scripts": {
"dev": "cross-env NODE_ENV=mock webpack-dev-server -p --progress --config=webpack/webpack.dev.js --mode development --open",
@ -79,4 +72,4 @@
"pre-push": "npm run eslint && npm run test"
}
}
}
}

2
src/less/lib/background.less

@ -1,5 +1,5 @@
@background-data-connection: "background/data-connection-tip.png";
@icon-upload-loading: "icon/upload_loading.gif";
@icon-upload-loading: "icon/wave_loading.gif";
@icon-upload-fail: "icon/upload_fail.png";
@icon-upload-success: "icon/upload_success.png";
@background-error-page: "background/error_page.png";

1
src/modules/components/collapse/collapse.ts

@ -10,6 +10,7 @@ export class Collapse extends BI.BasicButton {
props = {
name: '',
isCollapse: true,
$testId: 'dec-dcm-components-collapse',
}
rightFont: any;

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

@ -29,7 +29,7 @@ export class TipFail extends BI.Widget {
render() {
const { tipCls, tipText, retryText } = this.options;
return {
type: CenterAdapt,
items: [
@ -42,8 +42,8 @@ export class TipFail extends BI.Widget {
bgap: 20,
items: [{
type: 'bi.icon',
width: 96,
height: 96,
width: 60,
height: 60,
}],
}, {
type: Label,

6
src/modules/components/test_status/tip_icon/tip_icon.ts

@ -9,7 +9,7 @@ export class TipIcon extends BI.Widget {
}
render() {
const { tipCls, tipText } = this.options;
return {
type: CenterAdapt,
items: [
@ -22,8 +22,8 @@ export class TipIcon extends BI.Widget {
bgap: 20,
items: [{
type: 'bi.icon',
width: 96,
height: 96,
width: 60,
height: 60,
}],
}, {
type: Label,

3
src/modules/components/text_checker/text_checker.ts

@ -26,7 +26,7 @@ export class TextChecker extends BI.Widget {
}
render() {
const { width, allowBlank, value, watermark, validationChecker } = this.options;
const { width, allowBlank, value, watermark, validationChecker, $value } = this.options;
this.value = value;
return {
@ -36,6 +36,7 @@ export class TextChecker extends BI.Widget {
items: [{
el: {
type: TextEditor,
$value,
width,
allowBlank,
value,

3
src/modules/constants/constant.ts

@ -9,6 +9,9 @@ export const PAGE_INDEX = {
export const OTHER_JDBC = 'otherJDBC';
export const JDBC_ODBC_DRIVER = 'sun.jdbc.odbc.JdbcOdbcDriver';
export const JDBC_ODBC_DRIVER_HELP_LINK = DecCst && DecCst.Hyperlink ? DecCst.Hyperlink.Database.OTHER_ODBC : '';
export const DATEBASE_FILTER_TYPE = {
COMMONLY: 'commonly',
ALL: 'all',

5
src/modules/crud/api.ts

@ -61,4 +61,9 @@ export interface Api {
*
*/
isDriverError(errorCode: string): boolean;
/**
*
*/
getCipher(password: string): string;
}

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

@ -93,6 +93,10 @@ export class DecisionApi implements Api {
return false;
}
getCipher(password: string) {
return BI.Providers.getProvider('dec.provider.cipher').getCipher(password);
}
private sendEditStatusEvent(name: string, type: string): Promise<SocketResult> {
return new Promise(resolve => {
if (Dec && Dec.socket.connected) {

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

@ -66,4 +66,9 @@ export class DesignApi implements Api {
// 设计器暂不校验
return false;
}
getCipher(password: string) {
// 设计器加密方法
return password;
}
}

1
src/modules/pages/connection/components/form_item/form_item.ts

@ -9,6 +9,7 @@ export class FormItem extends BI.Widget {
unit: '',
isBold: true,
nameWidth: 140,
$testId: 'dec-dcm-connection-form-item',
}
render () {

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

@ -102,6 +102,7 @@ export class Connection extends BI.Widget {
type: VerticalAdapt,
items: [{
type: Button,
$value: 'connection-edit',
invisible: true,
text: BI.i18nText('Dec-Dcm_Edit'),
ref: (_ref: any) => {

1
src/modules/pages/connection/connection_jndi/connection_jndi.ts

@ -21,6 +21,7 @@ export class ConnectionJdbc extends BI.Widget {
return {
type: Vertical,
$testId: 'dec-dcm-connection-jndi',
hgap,
vgap,
items: [

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

@ -16,7 +16,8 @@ export class ListItem extends BI.BasicButton {
creator: '',
databaseType: '',
height: 25,
baseCls: 'dec-dcm-connection-list-item bi-list-item-active',
baseCls: 'dec-dcm-connection-list-item bi-list-item-active2',
$testId: 'dec-dcm-connection-list-item',
}
store: ListItemModel['store'];
@ -39,9 +40,10 @@ export class ListItem extends BI.BasicButton {
render() {
const { name, databaseType } = this.options;
return {
type: Htape,
$scope: name,
items: [{
el: {
type: IconLabel,
@ -64,6 +66,7 @@ export class ListItem extends BI.BasicButton {
},
{
type: SignEditor,
$value: 'connection-name',
value: name,
invisible: !this.model.isEdit,
ref: (_ref: any) => {
@ -80,7 +83,7 @@ export class ListItem extends BI.BasicButton {
this.store.setIsEdit(false, name);
this.nameLabel.setText(name);
this.nameEditor.setValue(name);
return;
}
this.store.changeName(name, newName).then(re => {
@ -107,6 +110,7 @@ export class ListItem extends BI.BasicButton {
hgap: 8,
el: {
type: IconButton,
$value: 'other-edit',
cls: 'dcm-link-other-font icon-size-16',
},
items: this.renderDownList(),
@ -124,7 +128,7 @@ export class ListItem extends BI.BasicButton {
this.downListCombo.setValue('');
},
}],
} : {
type: Layout,
},
@ -153,34 +157,39 @@ export class ListItem extends BI.BasicButton {
if (!isRegistered) {
return [otherIcons];
}
return [
[
{
text: BI.i18nText('Dec-Dcm_Test_Connection'),
$testId: 'dec-dcm-connection-list-btn',
cls: 'dcm-test-font',
value: 'test',
},
{
text: BI.i18nText('Dec-Dcm_Edit'),
$testId: 'dec-dcm-connection-list-btn',
cls: 'dcm-link-edit-font',
value: 'edit',
invisible: !canEdit,
},
{
text: BI.i18nText('Dec-Dcm_Change_Name'),
$testId: 'dec-dcm-connection-list-btn',
cls: 'dcm-change-name-font',
value: 'changeName',
invisible: !canEdit,
},
{
text: BI.i18nText('Dec-Dcm_Copy'),
$testId: 'dec-dcm-connection-list-btn',
cls: 'copy-font',
value: 'copy',
invisible: !canEdit,
},
{
text: BI.i18nText('Dec-Dcm_Delete'),
$testId: 'dec-dcm-connection-list-btn',
cls: 'dcm-delete-font',
value: 'delete',
invisible: !canEdit,
@ -211,7 +220,7 @@ export class ListItem extends BI.BasicButton {
this.store.setPageIndex(PAGE_INDEX.MAINTAIN);
this.store.setDatebaseTypeSelected('');
})
.catch(() => {});
.catch(() => { });
},
changeName: () => {
this.store.setIsEdit(true, name);

3
src/modules/pages/connection_pool/list_item/list_item.ts

@ -8,7 +8,8 @@ export class ListItem extends BI.BasicButton {
props = {
name: '',
height: 25,
baseCls: 'dec-dcm-connection-pool-list-item bi-list-item-active',
baseCls: 'dec-dcm-connection-pool-list-item bi-list-item-active2',
$testId: 'dec-dcm-connection-pool-list-item',
}
store: ListItemModel['store'];

9
src/modules/pages/connection_pool/pool/pool.ts

@ -10,6 +10,7 @@ export const PoolXtype = 'dec.dcm.connection_pool.pool';
export class Pool extends BI.Widget {
props = {
baseCls: 'dec-dcm-connection-pool',
$testId: 'dec-dcm-connection-pool',
}
model: PoolModel['model'];
@ -54,6 +55,8 @@ export class Pool extends BI.Widget {
items: [
{
type: Label,
$testId: 'dec-dcm-pool-status-number',
$value: 'active',
cls: 'bi-high-light card-font-heighlight',
ref: (_ref: any) => {
this.numActive = _ref;
@ -65,6 +68,8 @@ export class Pool extends BI.Widget {
},
{
type: Label,
$testId: 'dec-dcm-pool-status-max',
$value: 'active',
ref: (_ref: any) => {
this.maxActive = _ref;
},
@ -98,6 +103,8 @@ export class Pool extends BI.Widget {
items: [
{
type: Label,
$testId: 'dec-dcm-pool-status-number',
$value: 'idle',
cls: 'bi-high-light card-font-heighlight',
ref: (_ref: any) => {
this.numIdle = _ref;
@ -109,6 +116,8 @@ export class Pool extends BI.Widget {
},
{
type: Label,
$testId: 'dec-dcm-pool-status-max',
$value: 'idle',
ref: (_ref: any) => {
this.maxIdle = _ref;
},

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

@ -1,4 +1,4 @@
import { SearchEditor, Vtape, Right, Htape, Vertical, ButtonGroup, Left, VerticalAdapt, Label, MultiSelectItem, CenterAdapt } from 'ui';
import { SearchEditor, Vtape, Right, Htape, Vertical, ButtonGroup, Left, Label, MultiSelectItem, CenterAdapt } from 'ui';
import { shortcut, store } from '@core/core';
import { FilterXtype } from './filter/filter';
import { DatebaseModel, DatebaseModelXtype } from './database.model';
@ -45,7 +45,7 @@ export class Datebase extends BI.Widget {
datebaseTypes: () => {
this.datebaseType.populate(this.renderDatebaseType());
},
'isInternal || isPlugin' : () => {
'isInternal || isPlugin': () => {
this.internalWidget.setSelected(this.model.isInternal);
this.pluginWidget.setSelected(this.model.isPlugin);
if (this.model.filter === DATEBASE_FILTER_TYPE.ALL) {
@ -81,6 +81,7 @@ export class Datebase extends BI.Widget {
items: [
{
type: SearchEditor,
$value: 'database-type',
width: 300,
watermark: BI.i18nText('BI-Basic_Search'),
ref: (_ref: any) => {
@ -215,7 +216,7 @@ export class Datebase extends BI.Widget {
if (this.model.datebaseTypes.length === 0) {
return this.renderNoResult();
}
return this.model.datebaseTypes.map(item => {
return {
type: DatebaseTypeXtype,

2
src/modules/pages/database/database_type/database_type.less

@ -1,6 +1,6 @@
@import '../../../../less/index.less';
.dec-dcm-datebase-type{
.dec-dcm-database-type{
.bi-list-item-active{
&:hover{
.box-shadow(0 1px 5px 0, fade(@color-bi-background-black, 20));

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

@ -18,7 +18,8 @@ export class DatebaseType extends BI.BasicButton {
keyword: '',
databaseType: '',
iconUrl: '',
baseCls: 'dec-dcm-datebase-type',
baseCls: 'dec-dcm-database-type',
$testId: 'dec-dcm-database-type',
}
img: any;

6
src/modules/pages/database/filter/filter.less

@ -1,6 +0,0 @@
@import "../../../../less/index.less";
.bi-list-item-active{
&:active, &.active {
background-color: @color-bi-light-blue-60;
}
}

6
src/modules/pages/database/filter/filter.ts

@ -1,7 +1,6 @@
import { shortcut, store } from '@core/core';
import { Label } from 'ui';
import { FilterModel, FilterModelXtype } from './filter.model';
import './filter.less';
export const FilterXtype = 'dec.dcm.datebase.filter';
@shortcut(FilterXtype)
@ -11,12 +10,13 @@ export class Filter extends BI.BasicButton {
props = {
text: '',
value: '',
baseCls: 'bi-list-item-active',
baseCls: 'bi-list-item-active2',
$testId: 'dec-dcm-database-filter',
}
render() {
const { text } = this.options;
return {
type: Label,
textAlign: 'left',

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

@ -9,6 +9,7 @@ export class FormItem extends BI.Widget {
forms: '',
nameWidth: 140,
isBold: true,
$testId: 'dec-dcm-maintain-form-item',
}
render () {

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

@ -7,6 +7,9 @@ import { connectionType } from '@constants/env';
import { CONNECT_CHARSET, CONNECTION_LAYOUT, INT_MAX_VALUE, INT_MIN_VALUE } from '@constants/constant';
import { getAllDatabaseTypes, getJdbcDatabaseType, resolveUrlInfo, splitUrl } from '../../../../app.service';
import { TextCheckerXtype } from '../../../../components/text_checker/text_checker';
import { ApiFactory } from 'src/modules/crud/apiFactory';
const api = new ApiFactory().create();
export const FormJdbcXtype = 'dec.dcm.maintain.form.jdbc';
@shortcut(FormJdbcXtype)
export class FormJdbc extends BI.Widget {
@ -78,6 +81,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Name'),
forms: [{
type: TextCheckerXtype,
$value: 'connection-name',
width: 300,
value: connectionName,
allowBlank: true,
@ -92,6 +96,8 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Driver'),
forms: [{
type: EdirotIconCheckCombo,
$testId: 'dec-editor-icon-check-combo',
$value: 'driver',
width: 300,
value: driver,
ref: (_ref: any) => {
@ -119,6 +125,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Name'),
forms: [{
type: TextEditor,
$value: 'database-name',
width: 300,
allowBlank: true,
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Database_Name'),
@ -139,6 +146,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Host'),
forms: [{
type: TextEditor,
$value: 'database-host',
width: 300,
allowBlank: true,
value: host,
@ -159,6 +167,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Port'),
forms: [{
type: TextCheckerXtype,
$value: 'database-port',
width: 300,
allowBlank: true,
value: port,
@ -185,6 +194,7 @@ export class FormJdbc extends BI.Widget {
invisible: !databaseType.kerberos,
forms: [{
type: TextValueCombo,
$value: 'auth-type',
width: 300,
value: authType,
ref: (_ref: any) => {
@ -224,6 +234,7 @@ export class FormJdbc extends BI.Widget {
},
forms: [{
type: TextEditor,
$value: 'username',
width: 300,
allowBlank: true,
value: user,
@ -242,6 +253,7 @@ export class FormJdbc extends BI.Widget {
},
forms: [{
type: Editor,
$value: 'password',
cls: 'bi-border bi-border-radius',
width: 300,
height: 20,
@ -263,6 +275,7 @@ export class FormJdbc extends BI.Widget {
},
forms: [{
type: TextEditor,
$value: 'principal',
width: 300,
allowBlank: true,
value: principal,
@ -281,6 +294,7 @@ export class FormJdbc extends BI.Widget {
},
forms: [{
type: Editor,
$value: 'key-path',
cls: 'bi-border',
width: 300,
height: 20,
@ -307,6 +321,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_OriginalCharsetName'),
forms: [{
type: TextValueCombo,
$value: 'original-charset-name',
width: 300,
value: originalCharsetName ? originalCharsetName : '',
items: CONNECT_CHARSET,
@ -339,6 +354,7 @@ export class FormJdbc extends BI.Widget {
}],
}, {
type: TextValueCombo,
$value: 'schema',
width: 300,
vgap: 15,
disabled: true,
@ -360,6 +376,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_URL'),
forms: [{
type: TextEditor,
$value: 'database-url',
width: 300,
allowBlank: true,
value: url,
@ -407,6 +424,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Initial_Size'),
forms: [{
type: TextCheckerXtype,
$value: 'initial-size',
width: 300,
allowBlank: false,
value: initialSize,
@ -426,6 +444,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Max_Active'),
forms: [{
type: TextCheckerXtype,
$value: 'max-active',
width: 300,
allowBlank: false,
value: maxActive,
@ -445,6 +464,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Max_Idle'),
forms: [{
type: TextCheckerXtype,
$value: 'max-idle',
width: 300,
allowBlank: false,
value: maxIdle,
@ -464,6 +484,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Min_Idle'),
forms: [{
type: TextCheckerXtype,
$value: 'min-idle',
width: 300,
allowBlank: false,
value: minIdle,
@ -484,6 +505,7 @@ export class FormJdbc extends BI.Widget {
forms: [
{
type: TextCheckerXtype,
$value: 'max-wait',
width: 300,
allowBlank: false,
value: maxWait,
@ -510,6 +532,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_SQL_Validation_Query'),
forms: [{
type: TextAreaEditor,
$value: 'validation-query',
cls: 'bi-border',
allowBlank: true,
watermark: BI.i18nText('Dec-Dcm_Connection_Form_Place_Input'),
@ -526,6 +549,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Connection-Check'),
forms: [{
type: TextValueCombo,
$value: 'check',
width: 300,
allowBlank: true,
value: testOnBorrow,
@ -541,6 +565,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Test_On_Return'),
forms: [{
type: TextValueCombo,
$value: 'test-on-return',
width: 300,
allowBlank: true,
value: testOnReturn,
@ -556,6 +581,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Test_While_Idle'),
forms: [{
type: TextValueCombo,
$value: 'test-while-idle',
width: 300,
allowBlank: true,
value: testWhileIdle,
@ -572,6 +598,7 @@ export class FormJdbc extends BI.Widget {
forms: [
{
type: TextCheckerXtype,
$value: 'test-between-evicition-millis',
width: 300,
allowBlank: false,
value: timeBetweenEvictionRunsMillis,
@ -598,6 +625,7 @@ export class FormJdbc extends BI.Widget {
name: BI.i18nText('Dec-Dcm_Connection_Form_Database_Tests_PerEviction_Run_Num'),
forms: [{
type: TextCheckerXtype,
$value: 'test-pereviction-run-num',
width: 300,
allowBlank: false,
value: numTestsPerEvictionRun,
@ -618,6 +646,7 @@ export class FormJdbc extends BI.Widget {
forms: [
{
type: TextCheckerXtype,
$value: 'min-evictable-idle-time-millis',
width: 300,
allowBlank: false,
value: minEvictableIdleTimeMillis,
@ -742,7 +771,7 @@ export class FormJdbc extends BI.Widget {
driver: this.form.driver.getValue(),
url: this.form.url.getValue(),
user: this.form.user.getValue(),
password: this.oldPassword === this.form.password.getValue() ? this.oldPassword : BI.Providers.getProvider('dec.provider.cipher').getCipher(this.form.password.getValue()),
password: this.oldPassword === this.form.password.getValue() ? this.oldPassword : api.getCipher(this.form.password.getValue()),
queryType: '',
newCharsetName: originalCharsetName ? 'gbk' : '', // 后台要求,originalCharsetName不为空时,newCharsetName为gbk
originalCharsetName,
@ -761,7 +790,7 @@ export class FormJdbc extends BI.Widget {
validationQuery: this.form.validationQuery.getValue(),
testOnBorrow: BI.size(this.form.testOnBorrow.getValue()) > 0 ? this.form.testOnBorrow.getValue()[0] : connectionPoolAttr.testOnBorrow,
testOnReturn: BI.size(this.form.testOnReturn.getValue()) > 0 ? this.form.testOnReturn.getValue()[0] : connectionPoolAttr.testOnReturn,
testWhileIdle: BI.size(this.form.testOnReturn.getValue()) > 0 ? this.form.testWhileIdle.getValue()[0] : connectionPoolAttr.testWhileIdle,
testWhileIdle: BI.size(this.form.testWhileIdle.getValue()) > 0 ? this.form.testWhileIdle.getValue()[0] : connectionPoolAttr.testWhileIdle,
timeBetweenEvictionRunsMillis: this.form.timeBetweenEvictionRunsMillis.getValue(),
numTestsPerEvictionRun: this.form.numTestsPerEvictionRun.getValue(),
minEvictableIdleTimeMillis: this.form.minEvictableIdleTimeMillis.getValue(),

19
src/modules/pages/maintain/forms/components/form.jndi.ts

@ -51,6 +51,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextCheckerXtype,
$value: 'connection-name',
width: 300,
value: connectionName,
ref: (_ref: any) => {
@ -64,6 +65,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'jdni-name',
width: 300,
allowBlank: true,
value: jndiName,
@ -102,6 +104,8 @@ export class FormJndi extends BI.Widget {
isBold: false,
forms: [{
type: EdirotIconCheckCombo,
$testId: 'dec-editor-icon-check-combo',
$value: 'initial',
width: 300,
value: contextHashtable['java.naming.factory.initial'],
ref: (_ref: any) => {
@ -130,6 +134,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'provider-url',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.provider.url'],
@ -145,6 +150,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'security-principal',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.security.principal'],
@ -160,6 +166,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'security-credentials',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.security.credentials'],
@ -185,6 +192,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextValueCombo,
$value: 'new-charset-name',
width: 300,
value: newCharsetName ? newCharsetName : '',
items: CONNECT_CHARSET,
@ -221,6 +229,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'factory-object',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.factory.object'],
@ -235,6 +244,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'factory-state',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.factory.state'],
@ -249,6 +259,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'factory-url-pkgs',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.factory.url.pkgs'],
@ -263,6 +274,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'dns-url',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.dns.url'],
@ -277,6 +289,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'authoritative',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.authoritative'],
@ -291,6 +304,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'batchsize',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.batchsize'],
@ -305,6 +319,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'referral',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.referral'],
@ -319,6 +334,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'security-protocol',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.security.protocol'],
@ -333,6 +349,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'security-authentication',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.security.authentication'],
@ -347,6 +364,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'language',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.language'],
@ -361,6 +379,7 @@ export class FormJndi extends BI.Widget {
nameWidth: 200,
forms: [{
type: TextEditor,
$value: 'applet',
width: 300,
allowBlank: true,
value: contextHashtable['java.naming.applet'],

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

@ -1,6 +1,6 @@
import { Connection, ConnectionJDBC } from '../../../crud/crud.typings';
import { connectionType, errorCode } from '@constants/env';
import { DATA_BASE_DRIVER_LINK } from '@constants/constant';
import { DATA_BASE_DRIVER_LINK, JDBC_ODBC_DRIVER, JDBC_ODBC_DRIVER_HELP_LINK } from '@constants/constant';
import { TestStatusXtype, EVENT_RELOAD, EVENT_CLOSE } from '../../../components/test_status/test_status';
import { ApiFactory } from '../../../crud/apiFactory';
const api = new ApiFactory().create();
@ -23,6 +23,12 @@ export function testConnection(value: Connection): Promise<string[]> {
if (api.isDriverError(re.errorCode)) {
if (formValue.connectionType === connectionType.JDBC) {
const driver = (formValue.connectionData as ConnectionJDBC).driver;
// DEC-14009 1.8以上版本JDK支持ODBC连接
if (driver === JDBC_ODBC_DRIVER) {
testStatus.setFail(re.errorMsg, driver, Dec.system[DecCst.Hyperlink.DECISION_HYPERLINK_CONFIG][JDBC_ODBC_DRIVER_HELP_LINK]);
return;
}
const databaseType = (formValue.connectionData as ConnectionJDBC).database;
const databaseLink = BI.get(DATA_BASE_DRIVER_LINK.find(item => item.databaseType === databaseType), 'link');
testStatus.setFail(re.errorMsg, driver, Dec.system[DecCst.Hyperlink.DECISION_HYPERLINK_CONFIG][databaseLink]);

1
src/modules/pages/maintain/maintain.ts

@ -35,6 +35,7 @@ export class Maintain extends BI.Widget {
items: [
{
type: IconButton,
$value: 'back-databases',
cls: 'dcm-back-font',
height: 15,
invisible: this.model.isCopy || isEdit,

2
src/modules/title/title.ts

@ -44,12 +44,14 @@ export class Title extends BI.Widget {
items: [
{
text: BI.i18nText('Dec-Dcm_Connection_Management'),
$testId: 'dec-dcm-connection-tab',
selected: true,
value: PAGE_INDEX.CONNECTION,
hgap: 15,
},
{
text: BI.i18nText('Dec-Dcm_Pool_Connection_Management'),
$testId: 'dec-dcm-connection-tab',
value: PAGE_INDEX.POOL,
hgap: 15,
},

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

@ -29,6 +29,7 @@ export class TitleDatabaseWidget extends BI.Widget {
items: [
{
type: Button,
$value: 'title-database-cancel',
text: BI.i18nText('BI-Basic_Cancel'),
level: 'ignore',
handler: () => {
@ -37,6 +38,7 @@ export class TitleDatabaseWidget extends BI.Widget {
},
{
type: Button,
$value: 'title-database-save',
text: BI.i18nText('BI-Basic_Save'),
disabled: !this.model.datebaseTypeSelected,
ref: (_ref: any) => {

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

@ -19,6 +19,7 @@ export class TitleMaintainWidget extends BI.Widget {
items: [
{
type: Button,
$value: 'title-maintain-cancel',
text: BI.i18nText('BI-Basic_Cancel'),
level: 'ignore',
handler: () => {
@ -29,6 +30,7 @@ export class TitleMaintainWidget extends BI.Widget {
},
{
type: Button,
$value: 'title-maintain-connection-test',
text: BI.i18nText('Dec-Dcm_Connection_Test'),
level: 'ignore',
handler: () => {
@ -37,6 +39,7 @@ export class TitleMaintainWidget extends BI.Widget {
},
{
type: Button,
$value: 'title-maintain-save',
text: BI.i18nText('BI-Basic_Save'),
handler: () => {
this.store.setSaveEvent();

2
webpack/webpack.dev.js

@ -36,7 +36,7 @@ chokidar
module.exports = merge(common, {
devtool: 'eval-source-map',
entry: {
show: ['babel-polyfill', './src/i18n.ts', './src/request.ts', './src/index.ts'],
show: ['./src/i18n.ts', './src/request.ts', './src/index.ts'],
},
output: {
path: dirs.DEST,

Loading…
Cancel
Save