diff --git a/package.json b/package.json index aac15d0384f334..951ae51c215a3f 100644 --- a/package.json +++ b/package.json @@ -234,6 +234,7 @@ "rxjs": "^6.2.1", "script-loader": "0.7.2", "semver": "^5.5.0", + "set-value": "^3.0.2", "stream-stream": "^1.2.6", "style-loader": "0.23.1", "tar": "2.2.0", diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/index.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/index.js index f5159d8b2bf43b..9ed785ca03c2ad 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/index.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/index.js @@ -31,6 +31,8 @@ import mapBucket from './map_bucket'; import parseSettings from './parse_settings'; import unitToSeconds from './unit_to_seconds'; +export { overwrite } from './overwrite'; + export default { bucketTransform, getAggValue, diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/overwrite.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/overwrite.js new file mode 100644 index 00000000000000..e82d1de44f8241 --- /dev/null +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/helpers/overwrite.js @@ -0,0 +1,31 @@ +/* + * Licensed to Elasticsearch B.V. under one or more contributor + * license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright + * ownership. Elasticsearch B.V. licenses this file to you under + * the Apache License, Version 2.0 (the "License"); you may + * not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ + +import set from 'set-value'; + +/** + * Set path in obj. Behaves like lodash `set` + * @param obj The object to mutate + * @param path The path of the sub-property to set + * @param val The value to set the sub-property to + */ +export function overwrite(obj, path, val) { + set(obj, path, undefined); + set(obj, path, val); +} \ No newline at end of file diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/annotations/date_histogram.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/annotations/date_histogram.js index 323d5b4911b27f..892fed71ace206 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/annotations/date_histogram.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/annotations/date_histogram.js @@ -17,16 +17,17 @@ * under the License. */ -import _ from 'lodash'; import getBucketSize from '../../helpers/get_bucket_size'; import getTimerange from '../../helpers/get_timerange'; +import { overwrite } from '../../helpers'; + export default function dateHistogram(req, panel, annotation) { return next => doc => { const timeField = annotation.time_field; const { bucketSize, intervalString } = getBucketSize(req, 'auto'); const { from, to } = getTimerange(req); const { timezone } = req.payload.timerange; - _.set(doc, `aggs.${annotation.id}.date_histogram`, { + overwrite(doc, `aggs.${annotation.id}.date_histogram`, { field: timeField, interval: intervalString, min_doc_count: 0, diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/annotations/top_hits.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/annotations/top_hits.js index 4d394f270bd909..be537947b51a2e 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/annotations/top_hits.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/annotations/top_hits.js @@ -17,12 +17,12 @@ * under the License. */ -import _ from 'lodash'; +import { overwrite } from '../../helpers'; export default function topHits(req, panel, annotation) { return next => doc => { const fields = annotation.fields && annotation.fields.split(/[,\s]+/) || []; const timeField = annotation.time_field; - _.set(doc, `aggs.${annotation.id}.aggs.hits.top_hits`, { + overwrite(doc, `aggs.${annotation.id}.aggs.hits.top_hits`, { sort: [ { [timeField]: { order: 'desc' } diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/date_histogram.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/date_histogram.js index b760ef20da053d..a36514b65d1e22 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/date_histogram.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/date_histogram.js @@ -20,7 +20,7 @@ import getBucketSize from '../../helpers/get_bucket_size'; import offsetTime from '../../offset_time'; import getIntervalAndTimefield from '../../get_interval_and_timefield'; -import { set } from 'lodash'; +import { overwrite } from '../../helpers'; export default function dateHistogram(req, panel, series) { return next => doc => { const { timeField, interval } = getIntervalAndTimefield(panel, series); @@ -28,7 +28,7 @@ export default function dateHistogram(req, panel, series) { const { from, to } = offsetTime(req, series.offset_time); const { timezone } = req.payload.timerange; - set(doc, `aggs.${series.id}.aggs.timeseries.date_histogram`, { + overwrite(doc, `aggs.${series.id}.aggs.timeseries.date_histogram`, { field: timeField, interval: intervalString, min_doc_count: 0, @@ -38,7 +38,7 @@ export default function dateHistogram(req, panel, series) { max: to.valueOf() } }); - set(doc, `aggs.${series.id}.meta`, { + overwrite(doc, `aggs.${series.id}.meta`, { timeField, intervalString, bucketSize diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/filter_ratios.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/filter_ratios.js index 8b8ccd24ba3807..b3774bf507fef4 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/filter_ratios.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/filter_ratios.js @@ -20,15 +20,15 @@ /* eslint max-len:0 */ const filter = metric => metric.type === 'filter_ratio'; import bucketTransform from '../../helpers/bucket_transform'; -import _ from 'lodash'; +import { overwrite } from '../../helpers'; export default function ratios(req, panel, series) { return next => doc => { if (series.metrics.some(filter)) { series.metrics.filter(filter).forEach(metric => { - _.set(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}-numerator.filter`, { + overwrite(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}-numerator.filter`, { query_string: { query: metric.numerator || '*', analyze_wildcard: true } }); - _.set(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}-denominator.filter`, { + overwrite(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}-denominator.filter`, { query_string: { query: metric.denominator || '*', analyze_wildcard: true } }); @@ -46,13 +46,13 @@ export default function ratios(req, panel, series) { metricAgg = {}; } const aggBody = { metric: metricAgg }; - _.set(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}-numerator.aggs`, aggBody); - _.set(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}-denominator.aggs`, aggBody); + overwrite(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}-numerator.aggs`, aggBody); + overwrite(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}-denominator.aggs`, aggBody); numeratorPath = `${metric.id}-numerator>metric`; denominatorPath = `${metric.id}-denominator>metric`; } - _.set(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}`, { + overwrite(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}`, { bucket_script: { buckets_path: { numerator: numeratorPath, diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/metric_buckets.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/metric_buckets.js index ed96bebc9c68cd..d067d78e4edbf8 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/metric_buckets.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/metric_buckets.js @@ -17,10 +17,11 @@ * under the License. */ -import _ from 'lodash'; import getBucketSize from '../../helpers/get_bucket_size'; import bucketTransform from '../../helpers/bucket_transform'; import getIntervalAndTimefield from '../../get_interval_and_timefield'; +import { overwrite } from '../../helpers'; + export default function metricBuckets(req, panel, series) { return next => doc => { const { @@ -36,7 +37,7 @@ export default function metricBuckets(req, panel, series) { if (fn) { try { const bucket = fn(metric, series.metrics, intervalString); - _.set(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}`, bucket); + overwrite(doc, `aggs.${series.id}.aggs.timeseries.aggs.${metric.id}`, bucket); } catch (e) { // meh } diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/sibling_buckets.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/sibling_buckets.js index 9f2bc1d4cba0f5..3e341dcb041715 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/sibling_buckets.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/sibling_buckets.js @@ -17,7 +17,7 @@ * under the License. */ -import _ from 'lodash'; +import { overwrite } from '../../helpers'; import getBucketSize from '../../helpers/get_bucket_size'; import bucketTransform from '../../helpers/bucket_transform'; import getIntervalAndTimefield from '../../get_interval_and_timefield'; @@ -36,7 +36,7 @@ export default function siblingBuckets(req, panel, series) { if (fn) { try { const bucket = fn(metric, series.metrics, bucketSize); - _.set(doc, `aggs.${series.id}.aggs.${metric.id}`, bucket); + overwrite(doc, `aggs.${series.id}.aggs.${metric.id}`, bucket); } catch (e) { // meh } diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_everything.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_everything.js index b36605ff9745f1..0ebedb268a7e2a 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_everything.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_everything.js @@ -17,13 +17,13 @@ * under the License. */ -import _ from 'lodash'; +import { overwrite } from '../../helpers'; export default function splitByEverything(req, panel, series) { return next => doc => { if (series.split_mode === 'everything' || (series.split_mode === 'terms' && !series.terms_field)) { - _.set(doc, `aggs.${series.id}.filter.match_all`, {}); + overwrite(doc, `aggs.${series.id}.filter.match_all`, {}); } return next(doc); }; diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_filter.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_filter.js index 7e1915c79c6b50..2701bc402d00a0 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_filter.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_filter.js @@ -17,12 +17,12 @@ * under the License. */ -import _ from 'lodash'; +import { overwrite } from '../../helpers'; export default function splitByFilter(req, panel, series) { return next => doc => { if (series.split_mode !== 'filter') return next(doc); - _.set(doc, `aggs.${series.id}.filter.query_string.query`, series.filter || '*'); - _.set(doc, `aggs.${series.id}.filter.query_string.analyze_wildcard`, true); + overwrite(doc, `aggs.${series.id}.filter.query_string.query`, series.filter || '*'); + overwrite(doc, `aggs.${series.id}.filter.query_string.analyze_wildcard`, true); return next(doc); }; } diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_filters.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_filters.js index c6ebaa4b6744d3..cc5ec5a05b47aa 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_filters.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_filters.js @@ -17,13 +17,13 @@ * under the License. */ -import _ from 'lodash'; +import { overwrite } from '../../helpers'; export default function splitByFilter(req, panel, series) { return next => doc => { if (series.split_mode === 'filters' && series.split_filters) { series.split_filters.forEach(filter => { - _.set(doc, `aggs.${series.id}.filters.filters.${filter.id}.query_string.query`, filter.filter || '*'); - _.set(doc, `aggs.${series.id}.filters.filters.${filter.id}.query_string.analyze_wildcard`, true); + overwrite(doc, `aggs.${series.id}.filters.filters.${filter.id}.query_string.query`, filter.filter || '*'); + overwrite(doc, `aggs.${series.id}.filters.filters.${filter.id}.query_string.analyze_wildcard`, true); }); } return next(doc); diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_terms.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_terms.js index 733ccb7cf98993..16891a1f4995b7 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_terms.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/series/split_by_terms.js @@ -17,7 +17,7 @@ * under the License. */ -import _ from 'lodash'; +import { overwrite } from '../../helpers'; import basicAggs from '../../../../../common/basic_aggs'; import getBucketsPath from '../../helpers/get_buckets_path'; import bucketTransform from '../../helpers/bucket_transform'; @@ -26,20 +26,20 @@ export default function splitByTerm(req, panel, series) { return next => doc => { if (series.split_mode === 'terms' && series.terms_field) { const direction = series.terms_direction || 'desc'; - _.set(doc, `aggs.${series.id}.terms.field`, series.terms_field); - _.set(doc, `aggs.${series.id}.terms.size`, series.terms_size); + overwrite(doc, `aggs.${series.id}.terms.field`, series.terms_field); + overwrite(doc, `aggs.${series.id}.terms.size`, series.terms_size); const metric = series.metrics.find(item => item.id === series.terms_order_by); if (metric && metric.type !== 'count' && ~basicAggs.indexOf(metric.type)) { const sortAggKey = `${series.terms_order_by}-SORT`; const fn = bucketTransform[metric.type]; const bucketPath = getBucketsPath(series.terms_order_by, series.metrics) .replace(series.terms_order_by, sortAggKey); - _.set(doc, `aggs.${series.id}.terms.order`, { [bucketPath]: direction }); - _.set(doc, `aggs.${series.id}.aggs`, { [sortAggKey]: fn(metric) }); + overwrite(doc, `aggs.${series.id}.terms.order`, { [bucketPath]: direction }); + overwrite(doc, `aggs.${series.id}.aggs`, { [sortAggKey]: fn(metric) }); } else if (['_term', '_count'].includes(series.terms_order_by)) { - _.set(doc, `aggs.${series.id}.terms.order`, { [series.terms_order_by]: direction }); + overwrite(doc, `aggs.${series.id}.terms.order`, { [series.terms_order_by]: direction }); } else { - _.set(doc, `aggs.${series.id}.terms.order`, { _count: direction }); + overwrite(doc, `aggs.${series.id}.terms.order`, { _count: direction }); } } return next(doc); diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/date_histogram.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/date_histogram.js index c792a9ec5efca7..d430575099bfc8 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/date_histogram.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/date_histogram.js @@ -17,7 +17,7 @@ * under the License. */ -import { set } from 'lodash'; +import { overwrite } from '../../helpers'; import getBucketSize from '../../helpers/get_bucket_size'; import getIntervalAndTimefield from '../../get_interval_and_timefield'; import getTimerange from '../../helpers/get_timerange'; @@ -30,7 +30,7 @@ export default function dateHistogram(req, panel) { const { from, to } = getTimerange(req); panel.series.forEach(column => { const aggRoot = calculateAggRoot(doc, column); - set(doc, `${aggRoot}.timeseries.date_histogram`, { + overwrite(doc, `${aggRoot}.timeseries.date_histogram`, { field: timeField, interval: intervalString, min_doc_count: 0, @@ -39,7 +39,7 @@ export default function dateHistogram(req, panel) { max: to.valueOf() } }); - set(doc, aggRoot.replace(/\.aggs$/, '.meta'), { + overwrite(doc, aggRoot.replace(/\.aggs$/, '.meta'), { timeField, intervalString, bucketSize diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/filter_ratios.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/filter_ratios.js index dcafbe39cd153f..de9eb2eb0e253b 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/filter_ratios.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/filter_ratios.js @@ -20,7 +20,7 @@ /* eslint max-len:0 */ const filter = metric => metric.type === 'filter_ratio'; import bucketTransform from '../../helpers/bucket_transform'; -import _ from 'lodash'; +import { overwrite } from '../../helpers'; import { calculateAggRoot } from './calculate_agg_root'; export default function ratios(req, panel) { return () => doc => { @@ -28,10 +28,10 @@ export default function ratios(req, panel) { const aggRoot = calculateAggRoot(doc, column); if (column.metrics.some(filter)) { column.metrics.filter(filter).forEach(metric => { - _.set(doc, `${aggRoot}.timeseries.aggs.${metric.id}-numerator.filter`, { + overwrite(doc, `${aggRoot}.timeseries.aggs.${metric.id}-numerator.filter`, { query_string: { query: metric.numerator || '*', analyze_wildcard: true } }); - _.set(doc, `${aggRoot}.timeseries.aggs.${metric.id}-denominator.filter`, { + overwrite(doc, `${aggRoot}.timeseries.aggs.${metric.id}-denominator.filter`, { query_string: { query: metric.denominator || '*', analyze_wildcard: true } }); @@ -45,13 +45,13 @@ export default function ratios(req, panel) { field: metric.field }) }; - _.set(doc, `${aggRoot}.timeseries.aggs.${metric.id}-numerator.aggs`, aggBody); - _.set(doc, `${aggBody}.timeseries.aggs.${metric.id}-denominator.aggs`, aggBody); + overwrite(doc, `${aggRoot}.timeseries.aggs.${metric.id}-numerator.aggs`, aggBody); + overwrite(doc, `${aggBody}.timeseries.aggs.${metric.id}-denominator.aggs`, aggBody); numeratorPath = `${metric.id}-numerator>metric`; denominatorPath = `${metric.id}-denominator>metric`; } - _.set(doc, `${aggRoot}.timeseries.aggs.${metric.id}`, { + overwrite(doc, `${aggRoot}.timeseries.aggs.${metric.id}`, { bucket_script: { buckets_path: { numerator: numeratorPath, diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/metric_buckets.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/metric_buckets.js index 082ff319b5ee4a..8928ddf6297c51 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/metric_buckets.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/metric_buckets.js @@ -17,7 +17,7 @@ * under the License. */ -import _ from 'lodash'; +import { overwrite } from '../../helpers'; import getBucketSize from '../../helpers/get_bucket_size'; import bucketTransform from '../../helpers/bucket_transform'; import getIntervalAndTimefield from '../../get_interval_and_timefield'; @@ -35,7 +35,7 @@ export default function metricBuckets(req, panel) { if (fn) { try { const bucket = fn(metric, column.metrics, intervalString); - _.set(doc, `${aggRoot}.timeseries.aggs.${metric.id}`, bucket); + overwrite(doc, `${aggRoot}.timeseries.aggs.${metric.id}`, bucket); } catch (e) { // meh } diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/pivot.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/pivot.js index d533ff38442dbe..e1e150001aee26 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/pivot.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/pivot.js @@ -17,8 +17,8 @@ * under the License. */ -import { get, set, last } from 'lodash'; - +import { get, last } from 'lodash'; +import { overwrite } from '../../helpers'; import basicAggs from '../../../../../common/basic_aggs'; import getBucketsPath from '../../helpers/get_buckets_path'; import bucketTransform from '../../helpers/bucket_transform'; @@ -27,26 +27,26 @@ export default function pivot(req, panel) { return next => doc => { const { sort } = req.payload.state; if (panel.pivot_id) { - set(doc, 'aggs.pivot.terms.field', panel.pivot_id); - set(doc, 'aggs.pivot.terms.size', panel.pivot_rows); + overwrite(doc, 'aggs.pivot.terms.field', panel.pivot_id); + overwrite(doc, 'aggs.pivot.terms.size', panel.pivot_rows); if (sort) { const series = panel.series.find(item => item.id === sort.column); const metric = series && last(series.metrics); if (metric && metric.type === 'count') { - set(doc, 'aggs.pivot.terms.order', { _count: sort.order }); + overwrite(doc, 'aggs.pivot.terms.order', { _count: sort.order }); } else if (metric && basicAggs.includes(metric.type)) { const sortAggKey = `${metric.id}-SORT`; const fn = bucketTransform[metric.type]; const bucketPath = getBucketsPath(metric.id, series.metrics) .replace(metric.id, sortAggKey); - set(doc, `aggs.pivot.terms.order`, { [bucketPath]: sort.order }); - set(doc, `aggs.pivot.aggs`, { [sortAggKey]: fn(metric) }); + overwrite(doc, `aggs.pivot.terms.order`, { [bucketPath]: sort.order }); + overwrite(doc, `aggs.pivot.aggs`, { [sortAggKey]: fn(metric) }); } else { - set(doc, 'aggs.pivot.terms.order', { _term: get(sort, 'order', 'asc') }); + overwrite(doc, 'aggs.pivot.terms.order', { _term: get(sort, 'order', 'asc') }); } } } else { - set(doc, 'aggs.pivot.filter.match_all', {}); + overwrite(doc, 'aggs.pivot.filter.match_all', {}); } return next(doc); }; diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/sibling_buckets.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/sibling_buckets.js index 9cd1af9898053b..1b44b1e7e9ee27 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/sibling_buckets.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/sibling_buckets.js @@ -17,7 +17,7 @@ * under the License. */ -import _ from 'lodash'; +import { overwrite } from '../../helpers'; import getBucketSize from '../../helpers/get_bucket_size'; import bucketTransform from '../../helpers/bucket_transform'; import getIntervalAndTimefield from '../../get_interval_and_timefield'; @@ -35,7 +35,7 @@ export default function siblingBuckets(req, panel) { if (fn) { try { const bucket = fn(metric, column.metrics, bucketSize); - _.set(doc, `${aggRoot}.${metric.id}`, bucket); + overwrite(doc, `${aggRoot}.${metric.id}`, bucket); } catch (e) { // meh } diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/split_by_everything.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/split_by_everything.js index 1a400f288e9854..0b5e8712ce6cdf 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/split_by_everything.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/split_by_everything.js @@ -17,15 +17,15 @@ * under the License. */ -import _ from 'lodash'; +import { overwrite } from '../../helpers'; export default function splitByEverything(req, panel) { return next => doc => { panel.series.filter(c => !(c.aggregate_by && c.aggregate_function)).forEach(column => { if (column.filter) { - _.set(doc, `aggs.pivot.aggs.${column.id}.filter.query_string.query`, column.filter); - _.set(doc, `aggs.pivot.aggs.${column.id}.filter.query_string.analyze_wildcard`, true); + overwrite(doc, `aggs.pivot.aggs.${column.id}.filter.query_string.query`, column.filter); + overwrite(doc, `aggs.pivot.aggs.${column.id}.filter.query_string.analyze_wildcard`, true); } else { - _.set(doc, `aggs.pivot.aggs.${column.id}.filter.match_all`, {}); + overwrite(doc, `aggs.pivot.aggs.${column.id}.filter.match_all`, {}); } }); return next(doc); diff --git a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/split_by_terms.js b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/split_by_terms.js index ad0e63a7079516..4b67822fd243ff 100644 --- a/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/split_by_terms.js +++ b/src/legacy/core_plugins/metrics/server/lib/vis_data/request_processors/table/split_by_terms.js @@ -17,16 +17,16 @@ * under the License. */ -import _ from 'lodash'; +import { overwrite } from '../../helpers'; export default function splitByTerm(req, panel) { return next => doc => { panel.series.filter(c => c.aggregate_by && c.aggregate_function).forEach(column => { - _.set(doc, `aggs.pivot.aggs.${column.id}.terms.field`, column.aggregate_by); - _.set(doc, `aggs.pivot.aggs.${column.id}.terms.size`, 100); + overwrite(doc, `aggs.pivot.aggs.${column.id}.terms.field`, column.aggregate_by); + overwrite(doc, `aggs.pivot.aggs.${column.id}.terms.size`, 100); if (column.filter) { - _.set(doc, `aggs.pivot.aggs.${column.id}.column_filter.filter.query_string.query`, column.filter); - _.set(doc, `aggs.pivot.aggs.${column.id}.column_filter.filter.query_string.analyze_wildcard`, true); + overwrite(doc, `aggs.pivot.aggs.${column.id}.column_filter.filter.query_string.query`, column.filter); + overwrite(doc, `aggs.pivot.aggs.${column.id}.column_filter.filter.query_string.analyze_wildcard`, true); } }); return next(doc); diff --git a/yarn.lock b/yarn.lock index bd4c4311dcb3a7..835890fadfecc4 100644 --- a/yarn.lock +++ b/yarn.lock @@ -19846,6 +19846,13 @@ set-value@^2.0.0: is-plain-object "^2.0.3" split-string "^3.0.1" +set-value@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/set-value/-/set-value-3.0.2.tgz#74e8ecd023c33d0f77199d415409a40f21e61b90" + integrity sha512-npjkVoz+ank0zjlV9F47Fdbjfj/PfXyVhZvGALWsyIYU/qrMzpi6avjKW3/7KeSU2Df3I46BrN1xOI1+6vW0hA== + dependencies: + is-plain-object "^2.0.4" + setimmediate@^1.0.4, setimmediate@^1.0.5: version "1.0.5" resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285"