mirror of https://github.com/grafana/grafana.git
90 lines
1.7 KiB
Go
90 lines
1.7 KiB
Go
|
|
package schemaversion
|
||
|
|
|
||
|
|
var notPersistedProperties = []string{
|
||
|
|
"events",
|
||
|
|
"isViewing",
|
||
|
|
"isEditing",
|
||
|
|
"isInView",
|
||
|
|
"hasRefreshed",
|
||
|
|
"cachedPluginOptions",
|
||
|
|
"plugin",
|
||
|
|
"queryRunner",
|
||
|
|
"replaceVariables",
|
||
|
|
"configRev",
|
||
|
|
"hasSavedPanelEditChange",
|
||
|
|
"getDisplayTitle",
|
||
|
|
"dataSupport",
|
||
|
|
"key",
|
||
|
|
"isNew",
|
||
|
|
"refreshWhenInView",
|
||
|
|
}
|
||
|
|
|
||
|
|
var mustKeepProperties = []string{
|
||
|
|
"id",
|
||
|
|
"gridPos",
|
||
|
|
"type",
|
||
|
|
"title",
|
||
|
|
"scopedVars",
|
||
|
|
"repeat",
|
||
|
|
"repeatPanelId",
|
||
|
|
"repeatDirection",
|
||
|
|
"repeatedByRow",
|
||
|
|
"minSpan",
|
||
|
|
"collapsed",
|
||
|
|
"panels",
|
||
|
|
"targets",
|
||
|
|
"datasource",
|
||
|
|
"timeFrom",
|
||
|
|
"timeShift",
|
||
|
|
"hideTimeOverride",
|
||
|
|
"description",
|
||
|
|
"links",
|
||
|
|
"fullscreen",
|
||
|
|
"isEditing",
|
||
|
|
"isViewing",
|
||
|
|
"hasRefreshed",
|
||
|
|
"events",
|
||
|
|
"cacheTimeout",
|
||
|
|
"queryCachingTTL",
|
||
|
|
"cachedPluginOptions",
|
||
|
|
"transparent",
|
||
|
|
"pluginVersion",
|
||
|
|
"queryRunner",
|
||
|
|
"transformations",
|
||
|
|
"fieldConfig",
|
||
|
|
"maxDataPoints",
|
||
|
|
"interval",
|
||
|
|
"replaceVariables",
|
||
|
|
"libraryPanel",
|
||
|
|
"getDisplayTitle",
|
||
|
|
"configRev",
|
||
|
|
"key",
|
||
|
|
}
|
||
|
|
|
||
|
|
// getOptionsToRemember returns a map of panel properties that should be remembered
|
||
|
|
// during panel type changes, excluding notPersistedProperties and mustKeepProperties
|
||
|
|
func getOptionsToRemember(panel map[string]interface{}) map[string]interface{} {
|
||
|
|
// Create sets for faster lookup
|
||
|
|
notPersistedSet := make(map[string]bool)
|
||
|
|
for _, prop := range notPersistedProperties {
|
||
|
|
notPersistedSet[prop] = true
|
||
|
|
}
|
||
|
|
|
||
|
|
mustKeepSet := make(map[string]bool)
|
||
|
|
for _, prop := range mustKeepProperties {
|
||
|
|
mustKeepSet[prop] = true
|
||
|
|
}
|
||
|
|
|
||
|
|
// Filter the panel properties
|
||
|
|
result := make(map[string]interface{})
|
||
|
|
for key, value := range panel {
|
||
|
|
// Skip properties that are in notPersistedProperties or mustKeepProperties
|
||
|
|
if notPersistedSet[key] || mustKeepSet[key] {
|
||
|
|
continue
|
||
|
|
}
|
||
|
|
result[key] = value
|
||
|
|
}
|
||
|
|
|
||
|
|
return result
|
||
|
|
}
|