From 6754c8394bc877979fdc97019a5fcbc21f238f79 Mon Sep 17 00:00:00 2001 From: alan Date: Thu, 9 May 2019 14:38:53 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E4=BC=98=E5=8C=96=E6=88=90=E5=8A=9F?= =?UTF-8?q?=E5=92=8C=E5=A4=B1=E8=B4=A5=E7=9A=84=E6=8F=90=E7=A4=BA=EF=BC=8C?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0loading?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .eslintrc.js | 1 - src/app/app.component.scss | 49 ++++++ src/app/link_set/link-set.model.ts | 26 ++- src/img/error.png | Bin 0 -> 8649 bytes src/img/loading.gif | Bin 0 -> 28283 bytes src/img/success.png | Bin 0 -> 9842 bytes src/shared/crud/crud.request.ts | 6 +- src/shared/service/dialog.service.ts | 242 +++++++++++++++++++++++---- 8 files changed, 282 insertions(+), 42 deletions(-) create mode 100644 src/img/error.png create mode 100644 src/img/loading.gif create mode 100644 src/img/success.png diff --git a/.eslintrc.js b/.eslintrc.js index f65f39e..e8772fa 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -169,7 +169,6 @@ module.exports = { // "one-var": ["error", "never"], // 变量统一声明 // 比较运算符 & 相等运算符 "eqeqeq": "error", // 使用 === 和 !== 代替 == 和 != - "no-case-declarations": "error", // 禁止在 case 或 default 子句中出现变量声明 "no-nested-ternary": "error", // 禁止混合的三目运算符 "no-unneeded-ternary": "error", //禁止可以在有更简单的可替代的表达式时使用三元操作符 // 条件 diff --git a/src/app/app.component.scss b/src/app/app.component.scss index 41b7f5a..41b53cb 100644 --- a/src/app/app.component.scss +++ b/src/app/app.component.scss @@ -248,6 +248,55 @@ } } +.popover-notitle{ + .bi-header-background{ + display: none; + } + .bi-absolute-layout{ + top:0px !important; + } +} +.bi-custom-show{ + .show-content{ + text-align: center; + .loading-icon{ + display: block; + background: url(../img/loading.gif) center center no-repeat; + background-size: contain; + margin: 0 auto; + margin-bottom: 18px; + } + .success-icon{ + display: block; + background: url(../img/success.png) center center no-repeat; + background-size: contain; + margin: 0 auto; + margin-bottom: 18px; + } + .error-icon{ + display: block; + background: url(../img/error.png) center center no-repeat; + background-size: contain; + margin: 0 auto; + margin-bottom: 18px; + } + .buttons{ + margin-top: 18px; + div{ + margin: 0 4px; + } + } + } + .show-more{ + text-align: left !important; + height: 73px; + background: #F2F4F7; + margin-bottom: 10px; + padding: 5px; + margin-top: 10px; + } +} + .link-font .b-font:before { content: "\e759"; color: inherit; diff --git a/src/app/link_set/link-set.model.ts b/src/app/link_set/link-set.model.ts index 92581d5..7fae384 100644 --- a/src/app/link_set/link-set.model.ts +++ b/src/app/link_set/link-set.model.ts @@ -1,8 +1,8 @@ import {ModelType} from '@ui/index'; import {LinkType} from '@ui/type'; -import {deleteConnection, getConnectionStatus} from '@shared/crud/crud.request'; +import {deleteConnection, testConnection} from '@shared/crud/crud.request'; import {databaseTyle, getCnnectionName} from './select/select.service'; -import {confirm} from '@shared/service/dialog.service'; +import dialog from '@shared/service/dialog.service'; import {saveConnection} from './link-set.service'; const className = 'fr.model.linkset'; @@ -15,7 +15,7 @@ const Model: ModelType = { */ setLinkSelected(name: string) { if (this.model.linkSelected && this.model.linkSelected.isSelected) { - confirm('当前设置尚未保存,是否保存?', (isConfirm: boolean) => { + dialog.confirm('当前设置尚未保存,是否保存?', (isConfirm: boolean) => { if (isConfirm) { saveConnection(this.model.linkUpdate).then(() => { this.setEdit(false); @@ -50,9 +50,7 @@ const Model: ModelType = { }); break; case '测试连接': - getConnectionStatus(id, (res: any) => { - - }); + this._textLink(id); break; case '复制': this.copyLink(id); @@ -61,6 +59,20 @@ const Model: ModelType = { break; } }, + _textLink(id: string) { + const loadingId = dialog.loading('正在测试连接,请稍候...'); + const link = this.model.linkList.find((item: LinkType) => item.connectionId === id); + testConnection(link, (res: any) => { + dialog.close(loadingId); + if (res && res.errorCode) { + dialog.linkFail(`${link.connectionName}测试连接失败`, res.errorMsg, () => { + this._textLink(id); + }); + } else { + dialog.success('连接成功'); + } + }); + }, copyLink(id: string) { const name = getCnnectionName(this.model.linkList); let data = {}; @@ -121,7 +133,7 @@ const Model: ModelType = { }, setNewLink(value: string) { if (this.model.linkSelected && this.model.linkSelected.isSelected) { - confirm('当前设置尚未保存,是否保存?', (isConfirm: boolean) => { + dialog.confirm('当前设置尚未保存,是否保存?', (isConfirm: boolean) => { if (isConfirm) { saveConnection(this.model.linkUpdate).then(() => { this.setEdit(true); diff --git a/src/img/error.png b/src/img/error.png new file mode 100644 index 0000000000000000000000000000000000000000..ebbd147bcab58e29a0e78f4b5b9e134e1d00716e GIT binary patch literal 8649 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ⅅ6Yp2B;<3J{2`5ZW04i5czxGIac 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 { - cb(res.data); + cb(res); }); } else { - cb('success'); + setTimeout(() => { + cb({errorCode:'500', errorMsg:'createConnectionThread not start!'}); + }, 2000); } } diff --git a/src/shared/service/dialog.service.ts b/src/shared/service/dialog.service.ts index dcc172b..deb4935 100644 --- a/src/shared/service/dialog.service.ts +++ b/src/shared/service/dialog.service.ts @@ -1,40 +1,218 @@ -export const confirm = (message: string, onConfirm: Function): void => { - const id = BI.UUID(); - BI.Popovers.create(id, { - type: 'bi.bar_popover', - size: 'normal', - header: '提示', - width: 450, - height: 220, - body: { - type: 'bi.left', - cls: 'comfirm-content', - items: [ +import {Label, Vertical, Left, Button, Layout} from '@ui/index'; +class Dialog { + /** + * 提示 + * @param message + * @param onConfirm + */ + public confirm(message: string, onConfirm: Function): string { + const id = BI.UUID(); + BI.Popovers.create(id, { + type: 'bi.bar_popover', + size: 'normal', + header: '提示', + width: 450, + height: 220, + body: { + type: 'bi.left', + cls: 'comfirm-content', + items: [ + { + type: 'bi.layout', + cls: 'comfirm-icon', + width: 50, + height: 50, + }, + { + type: 'bi.label', + text: message, + }, + ], + }, + listeners: [ { - type: 'bi.layout', - cls: 'comfirm-icon', - width: 50, - height: 50, + eventName: 'EVENT_CONFIRM', + action () { + onConfirm ? onConfirm(true) : null; + }, }, { - type: 'bi.label', - text: message, + eventName: 'EVENT_CANCEL', + action () { + onConfirm ? onConfirm(false) : null; + }, }, ], - }, - listeners: [ - { - eventName: 'EVENT_CONFIRM', - action () { - onConfirm ? onConfirm(true) : null; + }).open(id); + + return id; + } + public loading(message: string): string { + const body = { + type: 'bi.center_adapt', + cls: 'show-content', + items: [ + { + type: Vertical, + items:[ + { + type: 'bi.layout', + cls: 'loading-icon', + width: 100, + height: 100, + }, + { + type: Label, + text: message, + }, + ], }, - }, - { - eventName: 'EVENT_CANCEL', - action () { - onConfirm ? onConfirm(false) : null; + ], + }; + + return this.show(body); + } + + public success(message: string): string { + const body = { + type: 'bi.center_adapt', + cls: 'show-content', + items: [ + { + type: Vertical, + items:[ + { + type: 'bi.layout', + cls: 'success-icon', + width: 100, + height: 100, + }, + { + type: Label, + text: message, + }, + ], + }, + ], + }; + + return this.show(body, 1000); + } + + public linkFail(text: string, more: string, cb?: Function): string { + let Popover: any = null; + let More: any = null; + const id = BI.UUID(); + const that = this; + const body = { + type: Vertical, + items: [ + { + type: 'bi.center_adapt', + cls: 'show-content', + tgap:10, + items: [ + { + type: Vertical, + items:[ + { + type: Layout, + cls: 'error-icon', + width: 100, + height: 100, + }, + { + type: Label, + text, + }, + { + type: Left, + cls:'buttons', + items:[ + { + type: Button, + text:'详细信息', + level: 'ignore', + handler() { + const isHide = this.getText() === '详细信息'; + Popover.element.css({ + height: isHide ? '290' : '220', + }); + More.setVisible(isHide); + this.setText(isHide ? '收起信息' : '详细信息'); + }, + }, + { + type: Button, + text:'返回', + level: 'ignore', + handler() { + that.close(id); + }, + }, + { + type: Button, + text:'重新连接', + handler() { + that.close(id); + cb ? cb() : null; + }, + }, + ], + }, + + ], + }, + ], + }, { + type: Label, + cls:'show-more', + text:more, + invisible: true, + ref(ref: any) { + More = ref; + }, }, + ], + }; + BI.Popovers.create(id, { + type: 'bi.popover', + cls:'popover-notitle', + extraCls:'bi-custom-show', + size: 'normal', + width: 450, + height: 220, + body, + ref(ref: any) { + Popover = ref; }, - ], - }).open(id); -}; + }).open(id); + + return id; + } + + public close(id: string): void{ + BI.Popovers.close(id); + } + public show(body: any, autoClose = 0): string { + const id = BI.UUID(); + BI.Popovers.create(id, { + type: 'bi.popover', + cls:'popover-notitle', + extraCls:'bi-custom-show', + size: 'normal', + width: 450, + height: 220, + body, + }).open(id); + if (autoClose > 0) { + setTimeout(() => { + this.close(id); + }, autoClose); + } + + return id; + } +} + +export default new Dialog();