diff --git a/src/plugins/condition/ConditionManager.js b/src/plugins/condition/ConditionManager.js
index a74ff2230f..da9c7535fb 100644
--- a/src/plugins/condition/ConditionManager.js
+++ b/src/plugins/condition/ConditionManager.js
@@ -135,18 +135,7 @@ export default class ConditionManager extends EventEmitter {
}
findConditionById(id) {
- let found;
- for (let i=0, ii=this.conditionClassCollection.length; i < ii; i++) {
- if (this.conditionClassCollection[i].id === id) {
- found = {
- item: this.conditionClassCollection[i],
- index: i
- };
- break;
- }
- }
-
- return found;
+ return this.conditionClassCollection.find(conditionClass => conditionClass.id === id);
}
//this.$set(this.conditionClassCollection, reorderEvent.newIndex, oldConditions[reorderEvent.oldIndex]);
diff --git a/src/plugins/condition/StyleRuleManager.js b/src/plugins/condition/StyleRuleManager.js
index 972e8b58a7..09c2c98172 100644
--- a/src/plugins/condition/StyleRuleManager.js
+++ b/src/plugins/condition/StyleRuleManager.js
@@ -34,7 +34,6 @@ export default class StyleRuleManager extends EventEmitter {
initialize(conditionalStyleConfiguration) {
this.conditionSetIdentifier = conditionalStyleConfiguration.conditionSetIdentifier;
- this.defaultStyle = conditionalStyleConfiguration.defaultStyle;
this.updateConditionStylesMap(conditionalStyleConfiguration.styles || []);
}
@@ -89,7 +88,11 @@ export default class StyleRuleManager extends EventEmitter {
}
destroy() {
- this.currentStyle = this.defaultStyle;
+ if (this.currentStyle) {
+ Object.keys(this.currentStyle).forEach(key => {
+ this.currentStyle[key] = 'inherit';
+ });
+ }
this.updateDomainObjectStyle();
if (this.stopProvidingTelemetry) {
this.stopProvidingTelemetry();
diff --git a/src/plugins/condition/components/inspector/ConditionalStyle.vue b/src/plugins/condition/components/inspector/ConditionalStyle.vue
index 51389ec435..8e762ac575 100644
--- a/src/plugins/condition/components/inspector/ConditionalStyle.vue
+++ b/src/plugins/condition/components/inspector/ConditionalStyle.vue
@@ -1,28 +1,69 @@
diff --git a/src/plugins/condition/components/inspector/ConditionalStylesView.vue b/src/plugins/condition/components/inspector/ConditionalStylesView.vue
index fb4de9a38f..8965b311c5 100644
--- a/src/plugins/condition/components/inspector/ConditionalStylesView.vue
+++ b/src/plugins/condition/components/inspector/ConditionalStylesView.vue
@@ -23,8 +23,8 @@
-
@@ -41,21 +41,33 @@ export default {
},
inject: [
'openmct',
- 'domainObject',
- 'layoutItem'
+ 'domainObject'
],
+ props: {
+ itemId: {
+ type: String,
+ default: ''
+ },
+ initialStyles: {
+ type: Object,
+ default() {
+ return undefined;
+ }
+ }
+ },
data() {
return {
conditionalStyles: []
}
},
mounted() {
- if (this.layoutItem) {
- //TODO: Handle layout items
- }
- if (this.domainObject.configuration) {
- this.defautStyle = this.domainObject.configuration.defaultStyle;
- if (this.domainObject.configuration.conditionalStyle) {
+ if (this.domainObject.configuration && this.domainObject.configuration.conditionalStyle) {
+ if (this.itemId) {
+ let conditionalStyle = this.domainObject.configuration.conditionalStyle[this.itemId];
+ if (conditionalStyle) {
+ this.conditionalStyles = conditionalStyle.styles || [];
+ }
+ } else {
this.conditionalStyles = this.domainObject.configuration.conditionalStyle.styles || [];
}
}
@@ -65,49 +77,86 @@ export default {
//TODO: this.conditionSetIdentifier will be set by the UI before calling this
this.conditionSetIdentifier = {
namespace: '',
- key: 'bb0f61ad-268d-4d3e-bb30-90ca4a2053c4'
+ key: "81088c8a-4b80-41fe-9d07-fda8b22d6f5f"
};
this.initializeConditionalStyles();
},
removeConditionSet() {
+ //TODO: Handle the case where domainObject has items with styles but we're trying to remove the styles on the domainObject itself
this.conditionSetIdentifier = '';
this.conditionalStyles = [];
- this.persist(undefined);
+ let domainObjectConditionalStyle = (this.domainObject.configuration && this.domainObject.configuration.conditionalStyle) || {};
+ if (domainObjectConditionalStyle) {
+ if (this.itemId) {
+ domainObjectConditionalStyle[this.itemId] = undefined;
+ delete domainObjectConditionalStyle[this.itemId];
+ } else {
+ domainObjectConditionalStyle.conditionSetIdentifier = undefined;
+ delete domainObjectConditionalStyle.conditionSetIdentifier;
+ domainObjectConditionalStyle.styles = undefined;
+ delete domainObjectConditionalStyle.styles;
+ }
+ if (_.isEmpty(domainObjectConditionalStyle)) {
+ domainObjectConditionalStyle = undefined;
+ }
+ }
+
+ this.persist(domainObjectConditionalStyle);
+
},
initializeConditionalStyles() {
- const backgroundColors = [{backgroundColor: 'red'},{backgroundColor: 'orange'}, {backgroundColor: 'blue'}];
this.openmct.objects.get(this.conditionSetIdentifier).then((conditionSetDomainObject) => {
conditionSetDomainObject.configuration.conditionCollection.forEach((conditionConfiguration, index) => {
this.conditionalStyles.push({
conditionId: conditionConfiguration.id,
conditionName: conditionConfiguration.name,
- style: backgroundColors[index]
+ style: Object.assign({}, this.initialStyles)
});
});
- this.persist({
- defaultStyle: this.defaultStyle || {backgroundColor: 'inherit'},
+ let domainObjectConditionalStyle = (this.domainObject.configuration && this.domainObject.configuration.conditionalStyle) || {};
+ let conditionalStyle = {
conditionSetIdentifier: this.conditionSetIdentifier,
styles: this.conditionalStyles
- });
+ };
+ if (this.itemId) {
+ this.persist({
+ ...domainObjectConditionalStyle,
+ [this.itemId]: conditionalStyle
+ });
+ } else {
+ this.persist({
+ ...domainObjectConditionalStyle,
+ ...conditionalStyle
+ });
+ }
});
},
findStyleByConditionId(id) {
- for(let i=0, ii=this.conditionalStyles.length; i < ii; i++) {
- if (this.conditionalStyles[i].conditionId === id) {
- return {
- index: i,
- item: this.conditionalStyles[i]
- };
+ return this.conditionalStyles.find(conditionalStyle => conditionalStyle.conditionId === id);
+ },
+ updateConditionalStyle(conditionStyle) {
+ let found = this.findStyleByConditionId(conditionStyle.conditionId);
+ if (found) {
+ found.style = conditionStyle.style;
+ let domainObjectConditionalStyle = this.domainObject.configuration.conditionalStyle || {};
+
+ if (this.itemId) {
+ let itemConditionalStyle = domainObjectConditionalStyle[this.itemId];
+ if (itemConditionalStyle) {
+ this.persist({
+ ...domainObjectConditionalStyle,
+ [this.itemId]: {
+ ...itemConditionalStyle,
+ styles: this.conditionalStyles
+ }
+ });
+ }
+ } else {
+ domainObjectConditionalStyle.styles = this.conditionalStyles;
+ this.persist(domainObjectConditionalStyle);
}
}
},
- updateConditionalStyle(conditionId, style) {
- let found = this.findStyleByConditionId(conditionId);
- if (found) {
- this.conditionalStyles[found.index].style = style;
- }
- this.persist(undefined);
- },
persist(conditionalStyle) {
this.openmct.objects.mutate(this.domainObject, 'configuration.conditionalStyle', conditionalStyle);
}
diff --git a/src/plugins/condition/utils/styleUtils.js b/src/plugins/condition/utils/styleUtils.js
new file mode 100644
index 0000000000..c4c3525e69
--- /dev/null
+++ b/src/plugins/condition/utils/styleUtils.js
@@ -0,0 +1,19 @@
+export const getStyleProp = (key, defaultValue) => {
+ let styleProp = undefined;
+ switch(key) {
+ case 'fill': styleProp = {
+ backgroundColor: defaultValue || 'none'
+ };
+ break;
+ case 'stroke': styleProp = {
+ border: '1px solid ' + defaultValue || 'none'
+ };
+ break;
+ case 'color': styleProp = {
+ color: defaultValue || 'inherit'
+ };
+ break;
+ }
+
+ return styleProp;
+};
diff --git a/src/plugins/displayLayout/components/BoxView.vue b/src/plugins/displayLayout/components/BoxView.vue
index 0214db0287..f1bf880ebd 100644
--- a/src/plugins/displayLayout/components/BoxView.vue
+++ b/src/plugins/displayLayout/components/BoxView.vue
@@ -36,6 +36,7 @@