From f771db5915335c88d7b12bb1fb306339e8076f9d Mon Sep 17 00:00:00 2001 From: Michael Shanks Date: Thu, 2 Apr 2020 06:55:11 +0100 Subject: [PATCH] bugfix: records&indexs badly named in UI (due to previous collectionName change) --- .../builder/src/accessLevels/AccessLevelView.svelte | 6 ++++-- packages/builder/src/common/core.js | 1 + packages/core/src/templateApi/createNodes.js | 6 ++++++ packages/core/src/templateApi/hierarchy.js | 6 ++++++ .../core/test/templateApi.constructHeirarchy.spec.js | 12 ++++++++++++ .../src/Templates/recordForm.js | 2 +- 6 files changed, 30 insertions(+), 3 deletions(-) diff --git a/packages/builder/src/accessLevels/AccessLevelView.svelte b/packages/builder/src/accessLevels/AccessLevelView.svelte index e5423db018..9936fba566 100644 --- a/packages/builder/src/accessLevels/AccessLevelView.svelte +++ b/packages/builder/src/accessLevels/AccessLevelView.svelte @@ -5,7 +5,7 @@ import ButtonGroup from "../common/ButtonGroup.svelte" import Button from "../common/Button.svelte" import ActionButton from "../common/ActionButton.svelte" - import { validateAccessLevels } from "../common/core" + import { validateAccessLevels, nodeNameFromNodeKey } from "../common/core" import ErrorsBox from "../common/ErrorsBox.svelte" export let level @@ -38,7 +38,9 @@ ) const getPermissionName = perm => - perm.nodeKey ? `${perm.type} - ${perm.nodeKey}` : perm.type + perm.nodeKey + ? `${perm.type} - ${nodeNameFromNodeKey(hierarchy, perm.nodeKey)}` + : perm.type const save = () => { const newLevels = isNew diff --git a/packages/builder/src/common/core.js b/packages/builder/src/common/core.js index 78be9aaa4b..3304b00231 100644 --- a/packages/builder/src/common/core.js +++ b/packages/builder/src/common/core.js @@ -79,6 +79,7 @@ export const getPotentialReferenceIndexes = (hierarchy, record) => export const isIndex = hierarchyFunctions.isIndex export const isRecord = hierarchyFunctions.isRecord +export const nodeNameFromNodeKey = hierarchyFunctions.nodeNameFromNodeKey export const getDefaultTypeOptions = type => !type ? {} : allTypes[type].getDefaultOptions() diff --git a/packages/core/src/templateApi/createNodes.js b/packages/core/src/templateApi/createNodes.js index 804445b4e9..a9a45617a2 100644 --- a/packages/core/src/templateApi/createNodes.js +++ b/packages/core/src/templateApi/createNodes.js @@ -48,6 +48,11 @@ const nodeKeyMaker = node => () => [defaultCase, n => joinKey(node.parent().nodeKey(), n.name)] )(node) +const nodeNameMaker = node => () => + isRoot(node) + ? "/" + : joinKey(node.parent().nodeName(), node.name) + const validate = parent => node => { if ( isIndex(node) && @@ -71,6 +76,7 @@ const validate = parent => node => { const construct = parent => node => { node.nodeKey = nodeKeyMaker(node) + node.nodeName = nodeNameMaker(node) node.pathRegx = pathRegxMaker(node) node.parent = constant(parent) node.isRoot = () => diff --git a/packages/core/src/templateApi/hierarchy.js b/packages/core/src/templateApi/hierarchy.js index 25e5162ff0..3843da79df 100644 --- a/packages/core/src/templateApi/hierarchy.js +++ b/packages/core/src/templateApi/hierarchy.js @@ -244,6 +244,11 @@ export const fieldReversesReferenceToIndex = indexNode => field => intersection(field.typeOptions.reverseIndexNodeKeys)([indexNode.nodeKey()]) .length > 0 +export const nodeNameFromNodeKey = (hierarchy, nodeKey) => { + const node = getNode(hierarchy, nodeKey) + return node ? node.nodeName() : "" +} + export default { getLastPartInKey, getNodesInPath, @@ -281,4 +286,5 @@ export default { getFlattenedHierarchy, isTopLevelIndex, isTopLevelRecord, + nodeNameFromNodeKey, } diff --git a/packages/core/test/templateApi.constructHeirarchy.spec.js b/packages/core/test/templateApi.constructHeirarchy.spec.js index 1435f5dbec..1bd238e224 100644 --- a/packages/core/test/templateApi.constructHeirarchy.spec.js +++ b/packages/core/test/templateApi.constructHeirarchy.spec.js @@ -13,6 +13,7 @@ describe("hierarchy node creation", () => { expect(root.parent).toBeDefined() expect(root.isRoot()).toBeTruthy() expect(root.indexes).toEqual([]) + expect(root.nodeName()).toBe("/") }) it("> getNewRecordTemplate > should be initialise with correct members", async () => { @@ -33,6 +34,7 @@ describe("hierarchy node creation", () => { expect(record.collectionNodeKey()).toBe("/records") expect(record.collectionPathRegx()).toBe("/records") expect(record.nodeKey()).toBe(`/records/${record.nodeId}-{id}`) + expect(record.nodeName()).toBe(`/${record.name}`) expect(record.pathRegx()).toBe(`/records/${record.nodeId}-[a-zA-Z0-9_\-]+`) }) @@ -60,6 +62,16 @@ describe("hierarchy node creation", () => { expect(parentRecord.children[0]).toBe(record) }) + it("> getNewrecordTemplate > child should get correct nodeName ", async () => { + const { templateApi } = await getMemoryTemplateApi() + const root = templateApi.getNewRootLevel() + const parentRecord = templateApi.getNewRecordTemplate(root) + parentRecord.name = "parent" + const record = templateApi.getNewRecordTemplate(parentRecord) + record.name = "child" + expect(record.nodeName()).toBe(`/${parentRecord.name}/${record.name}`) + }) + it("> getNewrecordTemplate > should add itself to parents's default index allowedNodeIds", async () => { const { templateApi } = await getMemoryTemplateApi() const root = templateApi.getNewRootLevel() diff --git a/packages/materialdesign-components/src/Templates/recordForm.js b/packages/materialdesign-components/src/Templates/recordForm.js index 70354a5e4d..38ab602a8e 100644 --- a/packages/materialdesign-components/src/Templates/recordForm.js +++ b/packages/materialdesign-components/src/Templates/recordForm.js @@ -1,6 +1,6 @@ export default ({ records }) => records.map(r => ({ - name: `Form for Record: ${r.nodeKey()}`, + name: `Form for Record: ${r.nodeName()}`, props: outerContainer(r), }))