|
|
@@ -97,9 +97,10 @@ export default class LoggingLanguageProvider extends LanguageProvider {
|
|
|
|
|
|
if (history && history.length > 0) {
|
|
|
const historyItems = _.chain(history)
|
|
|
- .uniqBy('query.expr')
|
|
|
- .take(HISTORY_ITEM_COUNT)
|
|
|
.map(h => h.query.expr)
|
|
|
+ .filter()
|
|
|
+ .uniq()
|
|
|
+ .take(HISTORY_ITEM_COUNT)
|
|
|
.map(wrapLabel)
|
|
|
.map(item => addHistoryMetadata(item, history))
|
|
|
.value();
|
|
|
@@ -194,17 +195,24 @@ export default class LoggingLanguageProvider extends LanguageProvider {
|
|
|
|
|
|
// Keep only labels that exist on origin and target datasource
|
|
|
await this.start(); // fetches all existing label keys
|
|
|
- const commonLabels = {};
|
|
|
- for (const key in labels) {
|
|
|
- const existingKeys = this.labelKeys[EMPTY_SELECTOR];
|
|
|
- if (existingKeys && existingKeys.indexOf(key) > -1) {
|
|
|
- // Should we check for label value equality here?
|
|
|
- commonLabels[key] = labels[key];
|
|
|
+ const existingKeys = this.labelKeys[EMPTY_SELECTOR];
|
|
|
+ let labelsToKeep = {};
|
|
|
+ if (existingKeys && existingKeys.length > 0) {
|
|
|
+ // Check for common labels
|
|
|
+ for (const key in labels) {
|
|
|
+ if (existingKeys && existingKeys.indexOf(key) > -1) {
|
|
|
+ // Should we check for label value equality here?
|
|
|
+ labelsToKeep[key] = labels[key];
|
|
|
+ }
|
|
|
}
|
|
|
+ } else {
|
|
|
+ // Keep all labels by default
|
|
|
+ labelsToKeep = labels;
|
|
|
}
|
|
|
- const labelKeys = Object.keys(commonLabels).sort();
|
|
|
+
|
|
|
+ const labelKeys = Object.keys(labelsToKeep).sort();
|
|
|
const cleanSelector = labelKeys
|
|
|
- .map(key => `${key}${commonLabels[key].operator}${commonLabels[key].value}`)
|
|
|
+ .map(key => `${key}${labelsToKeep[key].operator}${labelsToKeep[key].value}`)
|
|
|
.join(',');
|
|
|
|
|
|
return ['{', cleanSelector, '}'].join('');
|