in grafana/templates/query.js [42:92]
function Query(query, opts) {
opts = opts || {};
var self = this;
this.state = {
query: query,
name: opts.name,
datasource: opts.datasource,
type: 'query',
includeAll: true,
allFormat: 'wildcard',
allValue: null,
refresh: false,
multi: false,
options: [],
current: {},
};
this._required = [
'name',
'datasource'
];
this._overridable = [
'includeAll',
'allFormat',
'allValue',
'multi',
'multiFormat',
'refresh',
'regex',
'tag'
];
// Override overridable values
Object.keys(opts).forEach(function eachOpt(opt) {
if (self._overridable.indexOf(opt) !== -1) {
self.state[opt] = opts[opt];
}
});
// assert required state has been populated
this._required.forEach(function eachRequired(reqOpt) {
if (!self.state[reqOpt]) {
throw new Error('Missing Requirement: ' + reqOpt);
}
});
// make state immutable after this point
Object.freeze(this.state);
}