import {WidgetType, Vertical, MultiSelectItem, TextAreaEditor, Editor, Button, TextValueCombo} from '@ui/index'; import {LinkType} from '@ui/type'; import charset from './right.edit.constant'; import Model from '../../link-set.model'; import FormItem from '@shared/components/form.item.component'; import Title from '@shared/components/title.component'; import {getDrivers} from './right.edit.service'; let ConnectionName: any = null; const className = 'fr.component.right.edit'; const Widget: WidgetType = { _store() { return BI.Models.getModel(Model); }, watch:{ connectionNameErr(msg: string) { if (msg) { BI.Bubbles.show('singleBubble', msg, ConnectionName, { level: 'error', }); } else { BI.Bubbles.hide('singleBubble'); } }, }, render() { const linkSelected: LinkType = this.model.linkSelected; const that = this; return { type: Vertical, cls: 'right-show', items: [ { type: FormItem, text: BI.i18nText('BI-Connection-Form-ConnectionName'), hint: BI.i18nText('BI-Connection-Form-ConnectionName-Change-Confirm'), form:{ type: Editor, cls: 'bi-border', width: 300, value: linkSelected.connectionName, ref(ref: any) { ConnectionName = ref; }, listeners: [{ eventName: BI.Editor.EVENT_CHANGE, action() { that.store.setLinkUpdate({ ...that.model.linkUpdate, connectionName: this.getValue(), }); }, }, { eventName: BI.Editor.EVENT_FOCUS, action() { that.store.setConnectionNameErr(''); }, }], }, }, { type: FormItem, text: BI.i18nText('BI-First_Step'), height: 400, form:{ type: Vertical, cls: 'right-form', items:[ { type: FormItem, text: BI.i18nText('BI-Connection-Form-Driver'), form:{ type: TextValueCombo, cls: 'bi-border', width: 300, text: linkSelected.driver, items: getDrivers(linkSelected), listeners: [{ eventName: BI.TextValueCombo.EVENT_CHANGE, action() { that.store.setLinkUpdate({ ...that.model.linkUpdate, driver: this.getValue()[0], }); }, }], }, }, { type: FormItem, text: BI.i18nText('BI-Connection-Form-URL'), form:{ type: Editor, cls: 'bi-border', watermark:BI.i18nText('BI-Connection-Form-Place-Input'), width: 300, value: linkSelected.url, listeners: [{ eventName: BI.Editor.EVENT_CHANGE, action() { that.store.setLinkUpdate({ ...that.model.linkUpdate, url: this.getValue(), }); }, }], }, }, { type: FormItem, text: BI.i18nText('BI-Connection-Form-OriginalCharsetName'), form:{ type: TextValueCombo, cls: 'bi-border', width: 300, text: linkSelected.originalCharsetName === '' ? BI.i18nText('BI-Connection-Form-Auto') : linkSelected.originalCharsetName, items: BI.Constants.getConstant(charset), listeners: [{ eventName: BI.TextValueCombo.EVENT_CHANGE, action() { that.store.setLinkUpdate({ ...that.model.linkUpdate, originalCharsetName: this.getValue()[0], }); }, }], }, }, { type: FormItem, text: BI.i18nText('BI-Connection-Form-UserName'), form:{ type: Editor, cls: 'bi-border', allowBlank:true, watermark:BI.i18nText('BI-Connection-Form-Place-Input'), width: 300, value: linkSelected.user, listeners: [{ eventName: BI.Editor.EVENT_CHANGE, action() { that.store.setLinkUpdate({ ...that.model.linkUpdate, user: this.getValue(), }); }, }], }, }, { type: FormItem, text: BI.i18nText('BI-Connection-Form-Password'), form:{ type: Editor, cls: 'bi-border', inputType:'password', allowBlank:true, watermark:BI.i18nText('BI-Connection-Form-Place-Input'), width: 300, value: linkSelected.password, listeners: [{ eventName: BI.Editor.EVENT_CHANGE, action() { that.store.setLinkUpdate({ ...that.model.linkUpdate, password: this.getValue(), }); }, }], }, }, { type: Title, text: BI.i18nText('BI-Connection-Form-Pool-Properties'), }, { type: FormItem, text: BI.i18nText('BI-Connection-Form-SQL-Validation-Query'), height: 100, form:{ type: TextAreaEditor, cls: 'bi-border', allowBlank:true, watermark:BI.i18nText('BI-Connection-Form-Place-Input'), width: 300, height:100, value: linkSelected.validationQuery, listeners: [{ eventName: BI.Editor.EVENT_CHANGE, action() { that.store.setLinkUpdate({ ...that.model.linkUpdate, validationQuery: this.getValue(), }); }, }], }, }, { type: FormItem, text: BI.i18nText('BI-Connection-Form-Connection-Check'), form:{ type: MultiSelectItem, text: BI.i18nText('BI-Yes'), selected: linkSelected.testOnBorrow, width: 60, listeners: [{ eventName: BI.Editor.EVENT_CHANGE, action() { that.store.setLinkUpdate({ ...that.model.linkUpdate, testOnBorrow: this.isSelected(), }); }, }], }, }, { type: FormItem, text: BI.i18nText('BI-Connection-Form-Connection-Max-Number'), form:{ type: Editor, cls: 'bi-border', allowBlank:true, watermark:BI.i18nText('BI-Connection-Form-Place-Input'), width: 60, value: linkSelected.maxActive, errorText: BI.i18nText('BI-Connection-Form-Place-Input-Number'), validationChecker (v: string) { if (/^\+?[1-9][0-9]*$/.test(v)) { return true; } return false; }, listeners: [{ eventName: BI.Editor.EVENT_CHANGE, action() { that.store.setLinkUpdate({ ...that.model.linkUpdate, maxActive: this.getValue(), }); }, }], }, }, ], }, }, { type: FormItem, text: BI.i18nText('BI-Second_Step'), form: { type: Button, text: BI.i18nText('BI-Test-Connection'), level: 'ignore', }, }, { type: FormItem, text: BI.i18nText('BI-Third_Step'), form: { type: FormItem, text: BI.i18nText('BI-Connection-Form-Pattern'), form: { type: Editor, cls: 'bi-border', width: 300, disabled: true, }, }, }, ], }; }, }; BI.shortcut(className, BI.inherit(BI.Widget, Widget)); export default className;