diff options
-rw-r--r-- | sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts | 13 | ||||
-rw-r--r-- | sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx | 21 |
2 files changed, 25 insertions, 9 deletions
diff --git a/sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts b/sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts index 2846dba06..37583787f 100644 --- a/sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts +++ b/sdnr/wt/odlux/apps/configurationApp/src/actions/deviceActions.ts @@ -374,11 +374,12 @@ export const updateViewActionAsyncCreator = (vPath: string) => async (dispatch: } extractList = true; } else { - // normal case - dataPath += `/${property}${key ? `=${key.replace(/\//ig, "%2F")}` : ""}`; - + // normal case // in case of the root element the required namespace will be added later, // while extracting the data + + dataPath += `/${property}${key ? `=${key.replace(/\%2C/g, ",").replace(/\//ig, "%2F")}` : ""}`; + dataMember = namespace === defaultNS ? viewElement.label : `${namespace}:${viewElement.label}`; @@ -518,8 +519,10 @@ export const updateDataActionAsyncCreator = (vPath: string, data: any) => async dispatch(new SetCollectingSelectionData(false)); throw new Error("No key for list [" + property + "]"); } else if (vPath.endsWith("[]") && pathParts.length - 1 === ind) { - // handle new element - key = viewElement.key && String(data[viewElement.key]) || ""; + // handle new element with any number of arguments + let keyList = viewElement.key?.split(" "); + let dataPathParam = keyList?.map(id => data[id]).join(","); + key = viewElement.key && String(dataPathParam) || ""; isNew = key; if (!key) { dispatch(new SetCollectingSelectionData(false)); diff --git a/sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx b/sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx index 12815a517..0e2ddb395 100644 --- a/sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx +++ b/sdnr/wt/odlux/apps/configurationApp/src/views/configurationApplication.tsx @@ -628,8 +628,15 @@ class ConfigurationApplicationComponent extends React.Component<ConfigurationApp e.stopPropagation(); e.preventDefault(); confirm({ title: "Do you really want to delete this element ?", description: "This action is permanent!", confirmationButtonProps: { color: "secondary" }, cancellationButtonProps: { color:"inherit" } }) - .then(() => removeElement(`${this.props.vPath}[${props.rowData[listKeyProperty]}]`)) - .then(props.onReload); + .then(() => { + let keyId = ""; + if (listKeyProperty && listKeyProperty.split(" ").length > 1) { + keyId += listKeyProperty.split(" ").map(id => props.rowData[id]).join(","); + } else { + keyId = props.rowData[listKeyProperty]; + } + return removeElement(`${this.props.vPath}[${keyId}]`) + }).then(props.onReload); }} size="large"> <RemoveIcon /> @@ -667,7 +674,13 @@ class ConfigurationApplicationComponent extends React.Component<ConfigurationApp }]) } onHandleClick={(ev, row) => { ev.preventDefault(); - listKeyProperty && navigate(`[${encodeURIComponent(row[listKeyProperty])}]`); // Do not navigate without key. + let keyId = "" + if (listKeyProperty && listKeyProperty.split(" ").length > 1) { + keyId += listKeyProperty.split(" ").map(id => row[id]).join(","); + } else { + keyId = row[listKeyProperty]; + } + listKeyProperty && navigate(`[${encodeURIComponent(keyId)}]`); // Do not navigate without key. }} ></SelectElementTable> ); } @@ -776,7 +789,7 @@ class ConfigurationApplicationComponent extends React.Component<ConfigurationApp onClick={(ev: React.MouseEvent<HTMLElement>) => { ev.preventDefault(); this.props.history.push(keyPath); - }}>{`[${key}]`}</Link> || null + }}>{`[${key && key.replace(/\%2C/g, ",")}]`}</Link> || null } </span> ); |