From 49d2910e393e92eb06c2a78cfe5e2fd4b286ac10 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Torkel=20=C3=96degaard?= Date: Wed, 1 Apr 2020 09:44:57 +0200 Subject: [PATCH] Variables: Do not update variable from url when value is the same (#23220) --- public/app/features/templating/variable_srv.ts | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/public/app/features/templating/variable_srv.ts b/public/app/features/templating/variable_srv.ts index b3036c79004..f117179656a 100644 --- a/public/app/features/templating/variable_srv.ts +++ b/public/app/features/templating/variable_srv.ts @@ -330,9 +330,12 @@ export class VariableSrv { for (const v of this.variables) { const key = `var-${v.name}`; if (vars.hasOwnProperty(key)) { - update.push(v.setValueFromUrl(vars[key])); + if (this.isVariableUrlValueDifferentFromCurrent(v, vars[key])) { + update.push(v.setValueFromUrl(vars[key])); + } } } + if (update.length) { Promise.all(update).then(() => { this.dashboard.templateVariableValueUpdated(); @@ -341,6 +344,11 @@ export class VariableSrv { } } + isVariableUrlValueDifferentFromCurrent(variable: any, urlValue: any) { + // lodash _.isEqual handles array of value equality checks as well + return !_.isEqual(variable.current.value, urlValue); + } + updateUrlParamsWithCurrentVariables() { // update url const params = this.$location.search();