diff --git a/web/siteplan/src/components/FeatureService.vue b/web/siteplan/src/components/FeatureService.vue index 4d7e657b5f..4c5f1a3aa0 100644 --- a/web/siteplan/src/components/FeatureService.vue +++ b/web/siteplan/src/components/FeatureService.vue @@ -114,7 +114,6 @@ export default class FeatureService extends Vue { unsubscribe: SubscribeOptions | undefined map: Map = store.state.map model: SiteplanModel | null = null - developmentOptions = false svgService: SvgService = new SvgService(axios) listFeature: ILageplanFeature[] = [] inLODView = false @@ -122,7 +121,6 @@ export default class FeatureService extends Vue { mounted (): void { this.createLayers() - this.developmentOptions = Configuration.developmentMode() this.loadModel() store.subscribe((m, s) => { if (m.type === 'setSheetCutCRS') { @@ -232,38 +230,30 @@ export default class FeatureService extends Vue { .flat() .map(feature => featureClass.setFeatureColor(feature)) case TableType.DIFF:{ - if (Configuration.developmentMode()) { - // Temporary demo: Only show red/yellow in development mode - const compareState = featureClass.compareChangedState( - model.changedInitialState, - model.changedFinalState - ) - return [ - featureClass - .getFeatures(model.commonState) - .map(feature => featureClass.setFeatureColor(feature)), - compareState, - featureClass - .getFeatures(model.finalState) - .map(feature => - featureClass.setFeatureColor( - feature, - SiteplanColorValue.COLOR_ADDED - )), - featureClass - .getFeatures(model.initialState) - .map(feature => - featureClass.setFeatureColor( - feature, - SiteplanColorValue.COLOR_REMOVED - )) - ].flat() - } - - return [model.commonState, model.finalState, model.changedInitialState] - .map(state => featureClass.getFeatures(state)) - .flat() - .map(feature => featureClass.setFeatureColor(feature)) + const compareState = featureClass.compareChangedState( + model.changedInitialState, + model.changedFinalState + ) + return [ + featureClass + .getFeatures(model.commonState) + .map(feature => featureClass.setFeatureColor(feature)), + compareState, + featureClass + .getFeatures(model.finalState) + .map(feature => + featureClass.setFeatureColor( + feature, + SiteplanColorValue.COLOR_ADDED + )), + featureClass + .getFeatures(model.initialState) + .map(feature => + featureClass.setFeatureColor( + feature, + SiteplanColorValue.COLOR_REMOVED + )) + ].flat() } } } catch (e) { diff --git a/web/siteplan/src/feature/LageplanFeature.ts b/web/siteplan/src/feature/LageplanFeature.ts index d7e1be4af0..875cb84409 100644 --- a/web/siteplan/src/feature/LageplanFeature.ts +++ b/web/siteplan/src/feature/LageplanFeature.ts @@ -320,6 +320,12 @@ export default abstract class LageplanFeature implemen return final } + resetFeatureColor (feature: Feature): Feature { + const object = getFeatureData(feature) as SiteplanObject + object.objectColors = [] + return feature + } + // Default implementation setFeatureColor (feature: Feature, color?: number[], partID?: string): Feature { this.setObjectColor( @@ -356,6 +362,12 @@ export default abstract class LageplanFeature implemen const objColor = { id, color } if (!object.objectColors) { object.objectColors = [objColor] + return + } + + const existingObjectColor = object.objectColors.find(objectColor => objectColor.id === id) + if (existingObjectColor) { + existingObjectColor.color = color } else { object.objectColors.push(objColor) } diff --git a/web/siteplan/src/feature/SignalFeature.ts b/web/siteplan/src/feature/SignalFeature.ts index 478f49d055..8e4bbc1dfa 100644 --- a/web/siteplan/src/feature/SignalFeature.ts +++ b/web/siteplan/src/feature/SignalFeature.ts @@ -90,24 +90,32 @@ export default class SignalFeature extends LageplanFeature { } setFeatureColor (feature: Feature, color?: number[], partID?: string): Feature { - if (color) { + if (!color && !partID) { + this.resetFeatureColor(feature) + } else if (partID) { super.setFeatureColor(feature, color, partID) } else { Object.values(SignalPart).forEach(part => { - this.setFeatureRegionColor(feature, part) + this.setFeatureRegionColor(feature, part, color) }) } return feature } - protected setFeatureRegionColor (feature: Feature, objectPart?: string | undefined): Feature { + protected setFeatureRegionColor ( + feature: Feature, + objectPart?: string | undefined, + color?: number[] + ): Feature { const signalModel = getFeatureData(feature) as SignalMount // IMPROVE: Because at the moment Signal Additive doesn't have GUID, // you can't set region color for this. switch (objectPart) { + case SignalPart.Label: + case SignalPart.RouteMarker: case SignalPart.Mast: { - this.setObjectColor(signalModel, objectPart, this.getRegionColor(feature)) + this.setObjectColor(signalModel, objectPart, color ?? this.getRegionColor(feature)) break } case SignalPart.Schirm: { @@ -115,11 +123,11 @@ export default class SignalFeature extends LageplanFeature { this.setObjectColor( signalModel, objectPart, - this.getRegionColor(feature, signalModel.attachedSignals[0].guid) + color ?? this.getRegionColor(feature, signalModel.attachedSignals[0].guid) ) } else { signalModel.attachedSignals.forEach(signal => { - const regionColor = this.getRegionColor(feature, signal.guid) + const regionColor = color ?? this.getRegionColor(feature, signal.guid) this.setObjectColor(signalModel, `${objectPart}_${signal.guid}`, regionColor) }) } diff --git a/web/siteplan/src/feature/SignalRouteMarkerFeature.ts b/web/siteplan/src/feature/SignalRouteMarkerFeature.ts index 6d1e729586..87da259109 100644 --- a/web/siteplan/src/feature/SignalRouteMarkerFeature.ts +++ b/web/siteplan/src/feature/SignalRouteMarkerFeature.ts @@ -53,7 +53,7 @@ export default class SignalRouteMarkerFeature extends LageplanFeature { @@ -71,7 +71,7 @@ export default class SignalRouteMarkerFeature extends LageplanFeature