-
this.switchTab('series')}>Series
+
this.switchTab('data')}>Data
this.switchTab('options')}>Panel Options
diff --git a/src/core_plugins/metrics/public/components/vis_editor/vis_config/markdown.js b/src/core_plugins/metrics/public/components/vis_editor/vis_config/markdown.js
index b2333cebf61ef..f50564a48d1bb 100644
--- a/src/core_plugins/metrics/public/components/vis_editor/vis_config/markdown.js
+++ b/src/core_plugins/metrics/public/components/vis_editor/vis_config/markdown.js
@@ -60,7 +60,7 @@ export default React.createClass({
let view;
if (selectedTab === 'markdown') {
view = (
);
- } else if (selectedTab === 'series') {
+ } else if (selectedTab === 'data') {
view = (
);
} else {
view = (
@@ -120,8 +120,8 @@ export default React.createClass({
this.switchTab('markdown')}>Markdown
-
this.switchTab('series')}>Variables
+
this.switchTab('data')}>Data
this.switchTab('options')}>Panel Options
diff --git a/src/core_plugins/metrics/public/components/vis_editor/vis_config/metric.js b/src/core_plugins/metrics/public/components/vis_editor/vis_config/metric.js
index bb9939ecd16b1..1abf24688b88d 100644
--- a/src/core_plugins/metrics/public/components/vis_editor/vis_config/metric.js
+++ b/src/core_plugins/metrics/public/components/vis_editor/vis_config/metric.js
@@ -20,7 +20,7 @@ export default React.createClass({
},
getInitialState() {
- return { selectedTab: 'series' };
+ return { selectedTab: 'data' };
},
switchTab(selectedTab) {
@@ -37,7 +37,7 @@ export default React.createClass({
{ label: 'Left', value: 'left' }
];
let view;
- if (selectedTab === 'series') {
+ if (selectedTab === 'data') {
view = (
);
} else {
view = (
@@ -70,8 +70,8 @@ export default React.createClass({
return (
-
this.switchTab('series')}>Series
+
this.switchTab('data')}>Data
this.switchTab('options')}>Panel Options
diff --git a/src/core_plugins/metrics/public/components/vis_editor/vis_config/timeseries.js b/src/core_plugins/metrics/public/components/vis_editor/vis_config/timeseries.js
index 4ae533b0aa547..d03497c6d6323 100644
--- a/src/core_plugins/metrics/public/components/vis_editor/vis_config/timeseries.js
+++ b/src/core_plugins/metrics/public/components/vis_editor/vis_config/timeseries.js
@@ -9,7 +9,7 @@ import ColorPicker from '../color_picker';
import YesNo from 'plugins/metrics/components/yes_no';
export default React.createClass({
getInitialState() {
- return { selectedTab: 'series' };
+ return { selectedTab: 'data' };
},
switchTab(selectedTab) {
@@ -31,7 +31,7 @@ export default React.createClass({
{ label: 'Bottom', value: 'bottom' }
];
let view;
- if (selectedTab === 'series') {
+ if (selectedTab === 'data') {
view = (
);
} else {
view = (
@@ -102,8 +102,8 @@ export default React.createClass({
return (
-
this.switchTab('series')}>Series
+
this.switchTab('data')}>Data
this.switchTab('options')}>Panel Options
diff --git a/src/core_plugins/metrics/public/components/vis_editor/vis_config/top_n.js b/src/core_plugins/metrics/public/components/vis_editor/vis_config/top_n.js
index 629da1dd1590d..93461b39c6fea 100644
--- a/src/core_plugins/metrics/public/components/vis_editor/vis_config/top_n.js
+++ b/src/core_plugins/metrics/public/components/vis_editor/vis_config/top_n.js
@@ -25,7 +25,7 @@ export default React.createClass({
},
getInitialState() {
- return { selectedTab: 'series' };
+ return { selectedTab: 'data' };
},
switchTab(selectedTab) {
@@ -42,7 +42,7 @@ export default React.createClass({
{ label: 'Left', value: 'left' }
];
let view;
- if (selectedTab === 'series') {
+ if (selectedTab === 'data') {
view = (
);
} else {
view = (
@@ -92,8 +92,8 @@ export default React.createClass({
return (
-
this.switchTab('series')}>Series
+
this.switchTab('data')}>Data
this.switchTab('options')}>Panel Options
diff --git a/src/core_plugins/metrics/public/lib/fetch_fields.js b/src/core_plugins/metrics/public/lib/fetch_fields.js
index ace916964b568..3c002f2fb061e 100644
--- a/src/core_plugins/metrics/public/lib/fetch_fields.js
+++ b/src/core_plugins/metrics/public/lib/fetch_fields.js
@@ -6,7 +6,10 @@ export default (
return $scope => (indexPattern = '*') => {
$http.get(`../api/metrics/fields?index=${indexPattern}`)
.success(resp => {
- $scope.fields = resp;
+ if (!$scope.fields) $scope.fields = {};
+ if (resp.length && indexPattern) {
+ $scope.fields[indexPattern] = resp;
+ }
})
.error(resp => {
$scope.visData = {};
diff --git a/src/core_plugins/metrics/public/vis/editor_controller.js b/src/core_plugins/metrics/public/vis/editor_controller.js
index 3daa6b993029c..b4365277fb09b 100644
--- a/src/core_plugins/metrics/public/vis/editor_controller.js
+++ b/src/core_plugins/metrics/public/vis/editor_controller.js
@@ -36,7 +36,7 @@ app.controller('MetricsEditorController', (
trailing: true
});
- const debouncedFetchFields = _.debounce(() => fetchFields($scope)($scope.model.index_pattern), 300, {
+ const debouncedFetchFields = _.debounce(fetchFields($scope), 300, {
leading: false,
trailing: true
});
@@ -51,7 +51,15 @@ app.controller('MetricsEditorController', (
const visAppScope = angular.element($('visualize-app')).scope();
visAppScope.stageEditableVis();
debouncedFetch();
- if (newValue.index_pattern !== oldValue.index_pattern) debouncedFetchFields();
+
+ // Fetch any missing index patterns
+ if (!$scope.fields[newValue.index_pattern]) debouncedFetchFields(newValue.index_pattern);
+ newValue.series.forEach(series => {
+ if (series.override_index_pattern &&
+ !$scope.fields[series.series_index_pattern]) {
+ debouncedFetchFields(series.series_index_pattern);
+ }
+ });
});
// If the model doesn't exist we need to either intialize it with a copy from
diff --git a/src/core_plugins/metrics/server/lib/bucket_transform.js b/src/core_plugins/metrics/server/lib/bucket_transform.js
index a707a7baf0685..381219fe6a18d 100644
--- a/src/core_plugins/metrics/server/lib/bucket_transform.js
+++ b/src/core_plugins/metrics/server/lib/bucket_transform.js
@@ -93,7 +93,7 @@ module.exports = {
}
};
if (bucket.gap_policy) body.derivative.gap_policy = bucket.gap_policy;
- if (bucket.unit) body.derivative.unit = /\d+\w/.test(bucket.unit) ? bucket.unit : bucketSize;
+ if (bucket.unit) body.derivative.unit = /^([\d]+)([shmdwMy]|ms)$/.test(bucket.unit) ? bucket.unit : bucketSize;
return body;
},