Merge pull request #7797 from Bargs/scriptSyntax

Update script syntax for scripted fields
This commit is contained in:
Matt Bargar 2016-07-22 12:07:04 -04:00 committed by GitHub
commit 05fbc74070
12 changed files with 48 additions and 36 deletions

View file

@ -57,7 +57,7 @@ export default function FieldAggParamFactory(Private) {
if (field.scripted) {
output.params.script = {
script: field.script,
inline: field.script,
lang: field.lang,
};
} else {

View file

@ -58,7 +58,10 @@ describe('SearchSource#normalizeSortRequest', function () {
sortState[fieldName] = direction;
normalizedSort = {
_script: {
script: indexField.script,
script: {
inline: indexField.script,
lang: indexField.lang
},
type: indexField.type,
order: direction
}

View file

@ -34,7 +34,10 @@ export default function normalizeSortRequest(config) {
sortField = '_script';
sortValue = {
script: indexField.script,
script: {
inline: indexField.script,
lang: indexField.lang
},
type: indexField.type,
order: direction
};

View file

@ -24,7 +24,7 @@ describe('Filter Bar Directive', function () {
it('should return the key and value for matching filters', function (done) {
let filter = {
meta: { index: 'logstash-*', field: 'script number' },
script: { script: 'doc["script number"].value * 5', params: { value: 35}}
script: {script: { inline: 'doc["script number"].value * 5', params: { value: 35}}}
};
mapScript(filter).then(function (result) {
expect(result).to.have.property('key', 'script number');
@ -51,10 +51,12 @@ describe('Filter Bar Directive', function () {
field: 'script number'
},
script: {
params: {
gte: 1000,
lt: 2000,
value: '>=1,000.00 <2,000.00'
script: {
params: {
gte: 1000,
lt: 2000,
value: '>=1,000.00 <2,000.00'
}
}
}
};

View file

@ -14,7 +14,7 @@ define(function () {
if (filter.meta.formattedValue) {
value = filter.meta.formattedValue;
} else {
value = filter.script.params.value;
value = filter.script.script.params.value;
value = field.format.convert(value);
}

View file

@ -119,9 +119,11 @@ describe('Filter Manager', function () {
checkAddFilters(1, [{
meta: {index: 'myIndex', negate: false, field: 'scriptedField'},
script: {
script: '(' + scriptedField.script + ') == value',
lang: scriptedField.lang,
params: {value: 1}
script: {
inline: '(' + scriptedField.script + ') == value',
lang: scriptedField.lang,
params: {value: 1}
}
}
}], 4);
expect(appState.filters).to.have.length(3);

View file

@ -28,7 +28,7 @@ export default function (Private) {
}
if (filter.script) {
return filter.meta.field === fieldName && filter.script.params.value === value;
return filter.meta.field === fieldName && filter.script.script.params.value === value;
}
});
@ -57,10 +57,12 @@ export default function (Private) {
filter = {
meta: { negate: negate, index: index, field: fieldName },
script: {
script: '(' + field.script + ') == value',
lang: field.lang,
params: {
value: value
script: {
inline: '(' + field.script + ') == value',
lang: field.lang,
params: {
value: value
}
}
}
};

View file

@ -32,13 +32,13 @@ describe('Filter Manager', function () {
it('should return a script filter when passed a scripted field', function () {
expected.meta.field = 'script number';
expected.script = {
script: '(' + indexPattern.fields.byName['script number'].script + ') == value',
_.set(expected, 'script.script', {
inline: '(' + indexPattern.fields.byName['script number'].script + ') == value',
lang: 'expression',
params: {
value: 5,
}
};
});
expect(fn(indexPattern.fields.byName['script number'], 5, indexPattern)).to.eql(expected);
});
});

View file

@ -30,16 +30,16 @@ describe('Filter Manager', function () {
it('should return a script filter when passed a scripted field', function () {
expected.meta.field = 'script number';
expected.script = {
_.set(expected, 'script.script', {
lang: 'expression',
script: '(' + indexPattern.fields.byName['script number'].script + ')>=gte && (' +
indexPattern.fields.byName['script number'].script + ')<=lte',
inline: '(' + indexPattern.fields.byName['script number'].script + ')>=gte && (' +
indexPattern.fields.byName['script number'].script + ')<=lte',
params: {
value: '>=1 <=3',
gte: 1,
lte: 3
}
};
});
expect(fn(indexPattern.fields.byName['script number'], {gte: 1, lte: 3}, indexPattern)).to.eql(expected);
});
@ -58,9 +58,9 @@ describe('Filter Manager', function () {
params[key] = 5;
let filter = fn(indexPattern.fields.byName['script number'], params, indexPattern);
expect(filter.script.script).to.be('(' + indexPattern.fields.byName['script number'].script + ')' + operator + key);
expect(filter.script.params[key]).to.be(5);
expect(filter.script.params.value).to.be(operator + 5);
expect(filter.script.script.inline).to.be('(' + indexPattern.fields.byName['script number'].script + ')' + operator + key);
expect(filter.script.script.params[key]).to.be(5);
expect(filter.script.script.params.value).to.be(operator + 5);
});
});
@ -77,16 +77,16 @@ describe('Filter Manager', function () {
});
it('contain a param for the finite side', function () {
expect(filter.script.params).to.have.property('gte', 0);
expect(filter.script.script.params).to.have.property('gte', 0);
});
it('does not contain a param for the infinite side', function () {
expect(filter.script.params).not.to.have.property('lt');
expect(filter.script.script.params).not.to.have.property('lt');
});
it('does not contain a script condition for the infinite side', function () {
const script = indexPattern.fields.byName['script number'].script;
expect(filter.script.script).to.equal(`(${script})>=gte`);
expect(filter.script.script.inline).to.equal(`(${script})>=gte`);
});
});
});

View file

@ -3,13 +3,13 @@ export default function buildPhraseFilter(field, value, indexPattern) {
let filter = { meta: { index: indexPattern.id} };
if (field.scripted) {
filter.script = {
script: '(' + field.script + ') == value',
_.set(filter, 'script.script', {
inline: '(' + field.script + ') == value',
lang: field.lang,
params: {
value: value
}
};
});
filter.meta.field = field.name;
} else {
filter.query = { match: {} };

View file

@ -41,8 +41,8 @@ export default function buildRangeFilter(field, params, indexPattern, formattedV
return operators[key] + field.format.convert(val);
}).join(' ');
filter.script = { script: script, params: params, lang: field.lang };
filter.script.params.value = value;
_.set(filter, 'script.script', { inline: script, params: params, lang: field.lang });
filter.script.script.params.value = value;
filter.meta.field = field.name;
} else {
filter.range = {};

View file

@ -11,7 +11,7 @@ export default function () {
_.each(self.getScriptedFields(), function (field) {
scriptFields[field.name] = {
script: {
script: field.script,
inline: field.script,
lang: field.lang
}
};