mirror of
https://github.com/grafana/grafana.git
synced 2025-02-15 01:53:33 -06:00
* Moving more angular parts * Moving more angular stuff * Moving components * Move more things
75 lines
1.6 KiB
TypeScript
75 lines
1.6 KiB
TypeScript
import { clone } from 'lodash';
|
|
|
|
export class SqlPartDef {
|
|
type: string;
|
|
style: string;
|
|
label: string;
|
|
params: any[];
|
|
defaultParams: any[];
|
|
wrapOpen: string;
|
|
wrapClose: string;
|
|
separator: string;
|
|
|
|
constructor(options: any) {
|
|
this.type = options.type;
|
|
if (options.label) {
|
|
this.label = options.label;
|
|
} else {
|
|
this.label = this.type[0].toUpperCase() + this.type.substring(1) + ':';
|
|
}
|
|
this.style = options.style;
|
|
if (this.style === 'function') {
|
|
this.wrapOpen = '(';
|
|
this.wrapClose = ')';
|
|
this.separator = ', ';
|
|
} else {
|
|
this.wrapOpen = ' ';
|
|
this.wrapClose = ' ';
|
|
this.separator = ' ';
|
|
}
|
|
this.params = options.params;
|
|
this.defaultParams = options.defaultParams;
|
|
}
|
|
}
|
|
|
|
export class SqlPart {
|
|
part: any;
|
|
def: SqlPartDef;
|
|
params: any[];
|
|
label: string;
|
|
name: string;
|
|
datatype: string;
|
|
|
|
constructor(part: any, def: any) {
|
|
this.part = part;
|
|
this.def = def;
|
|
if (!this.def) {
|
|
throw { message: 'Could not find sql part ' + part.type };
|
|
}
|
|
|
|
this.datatype = part.datatype;
|
|
|
|
if (part.name) {
|
|
this.name = part.name;
|
|
this.label = def.label + ' ' + part.name;
|
|
} else {
|
|
this.name = '';
|
|
this.label = def.label;
|
|
}
|
|
|
|
part.params = part.params || clone(this.def.defaultParams);
|
|
this.params = part.params;
|
|
}
|
|
|
|
updateParam(strValue: string, index: number) {
|
|
// handle optional parameters
|
|
if (strValue === '' && this.def.params[index].optional) {
|
|
this.params.splice(index, 1);
|
|
} else {
|
|
this.params[index] = strValue;
|
|
}
|
|
|
|
this.part.params = this.params;
|
|
}
|
|
}
|