function Query()

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);
}