You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
192 lines
8.6 KiB
192 lines
8.6 KiB
import { shortcut, store } from '@core/core'; |
|
import { TestStatusModel } from './test_status.model'; |
|
import { TEST_STATUS } from '@constants/constant'; |
|
import { TipIcon } from './tip_icon/tip_icon'; |
|
import { TipFail } from './tip_icon/tip_fail'; |
|
import { FloatLeftLayout, Label, Tab, VerticalLayout } from '@fui/core'; |
|
@shortcut() |
|
@store(TestStatusModel) |
|
export class TestStatus extends BI.Widget { |
|
static xtype = 'dec.dcm.components.test_status'; |
|
static EVENT_CLOSE = 'EVENT_CLOSE'; |
|
static EVENT_RELOAD = 'EVENT_RELOAD'; |
|
|
|
props = { |
|
loadingCls: '', |
|
loadingText: '', |
|
successCls: '', |
|
successText: '', |
|
failCls: '', |
|
failText: '', |
|
retryText: '', |
|
} |
|
|
|
model: TestStatusModel['model']; |
|
store: TestStatusModel['store']; |
|
|
|
tab: Tab; |
|
failMessage: Label; |
|
failDriverMessage: Label; |
|
driverLink: FloatLeftLayout; |
|
detail: VerticalLayout; |
|
failMaskers:any; |
|
|
|
watch = { |
|
status: (status: string) => { |
|
this.tab.setSelect(status); |
|
}, |
|
} |
|
|
|
render() { |
|
const { loadingCls, loadingText, successCls, successText, failCls, failText, retryText } = this.options; |
|
var self=this; |
|
return { |
|
type: BI.CenterAdaptLayout.xtype, |
|
cls: 'bi-z-index-mask', |
|
items: [ |
|
{ |
|
type: BI.VerticalLayout.xtype, |
|
items: [ |
|
{ |
|
type: BI.Tab.xtype, |
|
cls: 'bi-card', |
|
width: 450, |
|
height: 250, |
|
// single: true, |
|
showIndex: this.model.status, |
|
ref: (_ref: Tab) => { |
|
this.tab = _ref; |
|
}, |
|
cardCreator: (index: string) => { |
|
switch (index) { |
|
case TEST_STATUS.SUCCESS: |
|
return { |
|
type: TipIcon.xtype, |
|
tipCls: successCls, |
|
tipText: successText, |
|
}; |
|
case TEST_STATUS.FAIL: |
|
return { |
|
type: TipFail.xtype, |
|
tipCls: failCls, |
|
tipText: failText, |
|
retryText, |
|
ref:(_ref:any)=>{ |
|
self.failMaskers=_ref; |
|
if(this.failMessage.getText()===''){ |
|
this.failMaskers.populateFail(BI.i18nText("Dec-Conn-ect-Failed"),false); |
|
} |
|
}, |
|
listeners: [ |
|
{ |
|
eventName: TipFail.EVENT_RELOAD, |
|
action: () => { |
|
this.fireEvent(TestStatus.EVENT_RELOAD); |
|
this.detail.setVisible(false); |
|
}, |
|
}, |
|
{ |
|
eventName: TipFail.EVENT_CLOSE, |
|
action: () => { |
|
this.fireEvent(TestStatus.EVENT_CLOSE); |
|
}, |
|
}, |
|
{ |
|
eventName: TipFail.EVENT_DETAIL, |
|
action: (isCollapse: boolean) => { |
|
this.tab.setHeight(isCollapse ? 250 : 200); |
|
this.detail.setVisible(!isCollapse); |
|
}, |
|
}, |
|
], |
|
}; |
|
default: |
|
return { |
|
type: TipIcon.xtype, |
|
tipCls: loadingCls, |
|
tipText: loadingText, |
|
}; |
|
} |
|
}, |
|
}, |
|
{ |
|
type: BI.VerticalLayout.xtype, |
|
cls: 'bi-card', |
|
invisible: true, |
|
bgap: 10, |
|
items: [ |
|
{ |
|
type: BI.VerticalLayout.xtype, |
|
cls: 'bi-header-background', |
|
vgap: 5, |
|
hgap: 10, |
|
scrolly: true, |
|
height: 75, |
|
items: [ |
|
{ |
|
type: BI.Label.xtype, |
|
whiteSpace: 'normal', |
|
width: 400, |
|
textAlign: 'left', |
|
text: '', |
|
ref: (_ref: Label) => { |
|
this.failMessage = _ref; |
|
}, |
|
}, |
|
{ |
|
type: BI.Label.xtype, |
|
textAlign: 'left', |
|
invisible: true, |
|
ref: (_ref: Label) => { |
|
this.failDriverMessage = _ref; |
|
}, |
|
}, |
|
{ |
|
type: BI.FloatLeftLayout.xtype, |
|
invisible: true, |
|
items: [ |
|
{ |
|
type: BI.TextButton.xtype, |
|
cls: 'bi-high-light bi-high-light-border-bottom', |
|
text: BI.i18nText('Dec-Dcm_Connection_Download_Driver'), |
|
handler: () => { |
|
window.open(this.model.link); |
|
}, |
|
}, |
|
], |
|
ref: (_ref: FloatLeftLayout) => { |
|
this.driverLink = _ref; |
|
}, |
|
}, |
|
], |
|
}, |
|
], |
|
ref: (_ref: VerticalLayout) => { |
|
this.detail = _ref; |
|
}, |
|
}, |
|
], |
|
}, |
|
], |
|
}; |
|
} |
|
|
|
setSuccess() { |
|
this.store.setStatus(TEST_STATUS.SUCCESS); |
|
} |
|
|
|
setFail(message: string='', driver = '', link = '') { |
|
this.store.setStatus(TEST_STATUS.FAIL); |
|
this.failMessage.setText(message); |
|
this.failDriverMessage.setVisible(!!driver); |
|
this.driverLink.setVisible(!!driver); |
|
if (driver) { |
|
this.failDriverMessage.setText(BI.i18nText('Dec-Dcm_Connection_Lack_Driver', driver)); |
|
this.store.setLink(link); |
|
} |
|
} |
|
|
|
setLoading() { |
|
this.store.setStatus(TEST_STATUS.LOADING); |
|
} |
|
}
|
|
|