redis数据集插件。
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.
 
 
 
 
 
 

85 lines
2.8 KiB

import { shortcut, store } from '@core/core';
import { DatabaseIndexModel } from './database_index.model';
import { openFormulaPopover } from './database_index.service';
@shortcut()
@store(DatabaseIndexModel)
export class DatabaseIndex extends BI.Widget {
static xtype = 'plugin.report.redis.components.database_index'
databaseIndexTab: any;
textEditor: any;
formulaPane: any;
model: DatabaseIndexModel['model']
store: DatabaseIndexModel['store']
props = {
value: '',
inputType: 'int',
}
render() {
const { value, inputType } = this.options;
this.store.setInpueValue(value);
this.store.setInputType(inputType);
return {
type: BI.Tab.xtype,
single: true,
showIndex: this.model.inputType,
ref: (_ref: any) => {
this.databaseIndexTab = _ref;
},
cardCreator: (index: 'int'|'formula') => {
if (index === 'int') {
return {
type: BI.TextEditor.xtype,
warningTitle: '',
value: parseInt(this.model.inputValue as string, 10) || 0,
validationChecker: (v: string) => this.checkInteger(v),
errorText: BI.i18nText('Plugin-Redis_Check_Integer'),
listeners: [{
eventName: 'EVENT_CHANGE',
action: () => {
this.store.setInpueValue(parseInt(this.textEditor.getValue(), 10));
},
}],
ref: (_ref: any) => {
this.textEditor = _ref;
},
};
}
return {
type: BI.TextEditor.xtype,
allowBlank: true,
value: this.model.inputValue,
ref: (_ref: any) => {
this.formulaPane = _ref;
},
};
},
};
}
private checkInteger(value: string) {
return /^[\d]+$/.test(value);
}
public setSelect(value: string) {
this.databaseIndexTab.setSelect(value);
this.store.setInputType(value);
if (value === 'formula') {
openFormulaPopover({
formula: this.model.inputValue === 0 ? '' : this.model.inputValue as string,
}, BI.ComplexFormulaInserter.xtype).then(value => {
this.store.setInpueValue(value.formula);
this.formulaPane.setValue(value.formula);
});
}
}
public getValue() {
return this.model.inputType === 'int' ? parseInt(`${this.model.inputValue}`, 10) : this.model.inputValue;
}
}