Canvas: Fix crash when trying to add wind turbine element (#84962)

This commit is contained in:
Nathan Marrs
2024-03-22 09:31:27 -06:00
committed by GitHub
parent 5c146c7832
commit 7df8d6e8cb

View File

@@ -148,11 +148,11 @@ export function getDataLinks(
// Text config // Text config
const isTextTiedToFieldData = const isTextTiedToFieldData =
elementConfig.text?.field && elementConfig?.text?.field &&
visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig.text?.field); visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig?.text?.field);
const isTextColorTiedToFieldData = const isTextColorTiedToFieldData =
elementConfig.color?.field && elementConfig?.color?.field &&
visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig.color?.field); visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig?.color?.field);
// General element config // General element config
const isElementBackgroundColorTiedToFieldData = const isElementBackgroundColorTiedToFieldData =
@@ -167,36 +167,38 @@ export function getDataLinks(
// Icon config // Icon config
const isIconSVGTiedToFieldData = const isIconSVGTiedToFieldData =
elementConfig.path?.field && elementConfig?.path?.field &&
visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig.path?.field); visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig?.path?.field);
const isIconColorTiedToFieldData = const isIconColorTiedToFieldData =
elementConfig.fill?.field && elementConfig?.fill?.field &&
visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig.fill?.field); visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig?.fill?.field);
// Wind turbine config (maybe remove / not support this?) // Wind turbine config (maybe remove / not support this?)
const isWindTurbineRPMTiedToFieldData = const isWindTurbineRPMTiedToFieldData =
elementConfig.rpm?.field && elementConfig?.rpm?.field &&
visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig.rpm?.field); visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig?.rpm?.field);
// Server config // Server config
const isServerBlinkRateTiedToFieldData = const isServerBlinkRateTiedToFieldData =
elementConfig.blinkRate?.field && elementConfig?.blinkRate?.field &&
visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig.blinkRate?.field); visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig?.blinkRate?.field);
const isServerStatusColorTiedToFieldData = const isServerStatusColorTiedToFieldData =
elementConfig.statusColor?.field && elementConfig?.statusColor?.field &&
visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig.statusColor?.field); visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig?.statusColor?.field);
const isServerBulbColorTiedToFieldData = const isServerBulbColorTiedToFieldData =
elementConfig.bulbColor?.field && elementConfig?.bulbColor?.field &&
visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig.bulbColor?.field); visibleFields.some((field) => getFieldDisplayName(field, frame) === elementConfig?.bulbColor?.field);
if (isTextTiedToFieldData) { if (isTextTiedToFieldData) {
const field = visibleFields.filter((field) => getFieldDisplayName(field, frame) === elementConfig.text?.field)[0]; const field = visibleFields.filter(
(field) => getFieldDisplayName(field, frame) === elementConfig?.text?.field
)[0];
addDataLinkForField(field, data, linkLookup, links); addDataLinkForField(field, data, linkLookup, links);
} }
if (isTextColorTiedToFieldData) { if (isTextColorTiedToFieldData) {
const field = visibleFields.filter( const field = visibleFields.filter(
(field) => getFieldDisplayName(field, frame) === elementConfig.color?.field (field) => getFieldDisplayName(field, frame) === elementConfig?.color?.field
)[0]; )[0];
addDataLinkForField(field, data, linkLookup, links); addDataLinkForField(field, data, linkLookup, links);
} }
@@ -223,37 +225,41 @@ export function getDataLinks(
} }
if (isIconSVGTiedToFieldData) { if (isIconSVGTiedToFieldData) {
const field = visibleFields.filter((field) => getFieldDisplayName(field, frame) === elementConfig.path?.field)[0]; const field = visibleFields.filter(
(field) => getFieldDisplayName(field, frame) === elementConfig?.path?.field
)[0];
addDataLinkForField(field, data, linkLookup, links); addDataLinkForField(field, data, linkLookup, links);
} }
if (isIconColorTiedToFieldData) { if (isIconColorTiedToFieldData) {
const field = visibleFields.filter((field) => getFieldDisplayName(field, frame) === elementConfig.fill?.field)[0]; const field = visibleFields.filter(
(field) => getFieldDisplayName(field, frame) === elementConfig?.fill?.field
)[0];
addDataLinkForField(field, data, linkLookup, links); addDataLinkForField(field, data, linkLookup, links);
} }
if (isWindTurbineRPMTiedToFieldData) { if (isWindTurbineRPMTiedToFieldData) {
const field = visibleFields.filter((field) => getFieldDisplayName(field, frame) === elementConfig.rpm?.field)[0]; const field = visibleFields.filter((field) => getFieldDisplayName(field, frame) === elementConfig?.rpm?.field)[0];
addDataLinkForField(field, data, linkLookup, links); addDataLinkForField(field, data, linkLookup, links);
} }
if (isServerBlinkRateTiedToFieldData) { if (isServerBlinkRateTiedToFieldData) {
const field = visibleFields.filter( const field = visibleFields.filter(
(field) => getFieldDisplayName(field, frame) === elementConfig.blinkRate?.field (field) => getFieldDisplayName(field, frame) === elementConfig?.blinkRate?.field
)[0]; )[0];
addDataLinkForField(field, data, linkLookup, links); addDataLinkForField(field, data, linkLookup, links);
} }
if (isServerStatusColorTiedToFieldData) { if (isServerStatusColorTiedToFieldData) {
const field = visibleFields.filter( const field = visibleFields.filter(
(field) => getFieldDisplayName(field, frame) === elementConfig.statusColor?.field (field) => getFieldDisplayName(field, frame) === elementConfig?.statusColor?.field
)[0]; )[0];
addDataLinkForField(field, data, linkLookup, links); addDataLinkForField(field, data, linkLookup, links);
} }
if (isServerBulbColorTiedToFieldData) { if (isServerBulbColorTiedToFieldData) {
const field = visibleFields.filter( const field = visibleFields.filter(
(field) => getFieldDisplayName(field, frame) === elementConfig.bulbColor?.field (field) => getFieldDisplayName(field, frame) === elementConfig?.bulbColor?.field
)[0]; )[0];
addDataLinkForField(field, data, linkLookup, links); addDataLinkForField(field, data, linkLookup, links);
} }