diff options
author | Tatiana Ovchinnikova <t.v.ovtchinnikova@gmail.com> | 2022-11-08 14:40:13 -0600 |
---|---|---|
committer | Tatiana Ovchinnikova <t.v.ovtchinnikova@gmail.com> | 2022-11-09 13:40:04 -0600 |
commit | 892080ec0ff6174d5fd5de221ec4802bd21371a6 (patch) | |
tree | c964f7042f0a49def6866bfc59c7e6162533c636 /horizon | |
parent | c319118d7d18a34bd73584b750fe40f3ccafb965 (diff) | |
download | horizon-892080ec0ff6174d5fd5de221ec4802bd21371a6.tar.gz |
Make readonly metadata properties unable to edit
Image metadata properties os_hash_algo and os_hash_value are
readonly, and attempts to edit them fail with unclear message.
This patch makes these fields readonly in update metadata form.
Also, if the existing metadata property is null, Horizon should
consider it optional too, in addition to empty field fix:
https://review.opendev.org/c/openstack/horizon/+/812009
Change-Id: I892465ca4688fce9f7123682d02f11c92c7d2c5c
Diffstat (limited to 'horizon')
-rw-r--r-- | horizon/static/framework/widgets/metadata/tree/metadata-tree-item.controller.js | 8 | ||||
-rw-r--r-- | horizon/static/framework/widgets/metadata/tree/tree.service.js | 2 |
2 files changed, 10 insertions, 0 deletions
diff --git a/horizon/static/framework/widgets/metadata/tree/metadata-tree-item.controller.js b/horizon/static/framework/widgets/metadata/tree/metadata-tree-item.controller.js index 27ab57d29..c4f8fb5af 100644 --- a/horizon/static/framework/widgets/metadata/tree/metadata-tree-item.controller.js +++ b/horizon/static/framework/widgets/metadata/tree/metadata-tree-item.controller.js @@ -16,6 +16,8 @@ (function () { 'use strict'; + var READONLY_PROPERTIES = ['os_hash_algo', 'os_hash_value']; + angular .module('horizon.framework.widgets.metadata.tree') .controller('MetadataTreeItemController', MetadataTreeItemController); @@ -33,6 +35,12 @@ ctrl.opened = false; this.$onInit = function init() { + if ('item' in ctrl && 'leaf' in ctrl.item && + READONLY_PROPERTIES.includes(ctrl.item.leaf.name)) { + ctrl.item.leaf.readonly = true; + ctrl.item.leaf.required = false; + } + if ('item' in ctrl && 'leaf' in ctrl.item && ctrl.item.leaf.type === 'array') { ctrl.values = ctrl.item.leaf.items.enum.filter(filter).sort(); diff --git a/horizon/static/framework/widgets/metadata/tree/tree.service.js b/horizon/static/framework/widgets/metadata/tree/tree.service.js index 1256985f5..47ba1a844 100644 --- a/horizon/static/framework/widgets/metadata/tree/tree.service.js +++ b/horizon/static/framework/widgets/metadata/tree/tree.service.js @@ -71,6 +71,8 @@ Property.prototype.setValue = function (value) { if (value === null) { this.value = this.type !== 'array' ? null : []; + // if the existing property is null, make the field not required + this.required = false; return; } |