From 717b860f135105c1195902592f3e4c05c56954f5 Mon Sep 17 00:00:00 2001 From: Smidy13 <77650800+Smidy13@users.noreply.github.com> Date: Sun, 7 Nov 2021 21:26:56 +1300 Subject: [PATCH] Improvement: Create Reference Left Menu Icon and Function --- .../menu/create-reference.svg | 258 ++++++++++++++++++ .../Foundations/Icons/create-reference.png | Bin 0 -> 23225 bytes .../UI/Spaces/Floating-Space/ListSelector.js | 42 ++- .../Floating-Space/UiObjectConstructor.js | 29 +- .../UI/Function-Libraries/PluginsFunctions.js | 2 +- .../UI/Function-Libraries/ActionSwitch.js | 5 + .../ReferenceAttachDetach.js | 32 ++- 7 files changed, 354 insertions(+), 14 deletions(-) create mode 100644 Projects/Foundations/Icons-SVG-Sources/menu/create-reference.svg create mode 100644 Projects/Foundations/Icons/create-reference.png diff --git a/Projects/Foundations/Icons-SVG-Sources/menu/create-reference.svg b/Projects/Foundations/Icons-SVG-Sources/menu/create-reference.svg new file mode 100644 index 000000000..0ef162664 --- /dev/null +++ b/Projects/Foundations/Icons-SVG-Sources/menu/create-reference.svg @@ -0,0 +1,258 @@ + +image/svg+xml + + + + + + + + + + + + + + + + + + + diff --git a/Projects/Foundations/Icons/create-reference.png b/Projects/Foundations/Icons/create-reference.png new file mode 100644 index 0000000000000000000000000000000000000000..beed8f3e4c2e08631557a3b3d29413d151727956 GIT binary patch literal 23225 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 optionsList.length - Math.ceil(VISIBLE_LABELS / 2)) { selected = optionsList.length - Math.ceil(VISIBLE_LABELS / 2) } + if (selected < 0) { selected = 0 } + if (selected > optionsList.length - VISIBLE_LABELS) { selected = optionsList.length - VISIBLE_LABELS } if (selected !== lastSelected) { lastSelected = selected @@ -180,7 +189,7 @@ function newListSelector() { if (pPoint.y >= upperBoundary && pPoint.y <= lowerBoundary) { - let clickedValue = (i - Math.floor(VISIBLE_LABELS / 2) + selected) + let clickedValue = (i + selected) let event = { point: pPoint, @@ -261,6 +270,7 @@ function newListSelector() { } } } + function drawForeground() { if (thisObject.visible === true) { @@ -271,10 +281,19 @@ function newListSelector() { for (let i = 0; i < VISIBLE_LABELS; i++) { - let index = i - Math.floor(VISIBLE_LABELS / 2) + selected + let index = i + selected let label = '' if (index >= 0 && index < optionsList.length) { - label = optionsList[index] + if (typeof(optionsList[index]) !== "string") { + label = optionsList[index].name + + if (optionsList[index].payload.uiObject.icon !== undefined) { + icon = optionsList[index].payload.uiObject.icon + } + + } else { + label = optionsList[index] + } } fontColor = UI_COLOR.BLACK fontSize = FONT_SIZE @@ -311,9 +330,14 @@ function newListSelector() { browserCanvasContext.fill(); let middleValue = Math.floor(VISIBLE_LABELS / 2) + let evenOffset = 0 - UI.projects.foundations.utilities.drawPrint.drawIcon(icon, 1 / 2, 1 / 2, - offset + SIZE, (i - middleValue) * rowHeight, SIZE, thisObject.container) - UI.projects.foundations.utilities.drawPrint.drawLabel(label, 1 / 2, 1 / 2, 0, (SIZE - fontSize) / 2 + (i - middleValue) * rowHeight, fontSize, thisObject.container, fontColor, undefined, undefined, opacity) + if (VISIBLE_LABELS % 2 === 0) { + evenOffset = rowHeight / 2 + } + + UI.projects.foundations.utilities.drawPrint.drawIcon(icon, 1 / 2, 1 / 2, - offset + SIZE, (i - middleValue) * rowHeight + evenOffset, SIZE, thisObject.container) + UI.projects.foundations.utilities.drawPrint.drawLabel(label, 1 / 2, 1 / 2, 0, (SIZE - fontSize) / 2 + (i - middleValue) * rowHeight + evenOffset, fontSize, thisObject.container, fontColor, undefined, undefined, opacity) } } } diff --git a/Projects/Foundations/UI/Spaces/Floating-Space/UiObjectConstructor.js b/Projects/Foundations/UI/Spaces/Floating-Space/UiObjectConstructor.js index 855aa10b7..9d0e92797 100644 --- a/Projects/Foundations/UI/Spaces/Floating-Space/UiObjectConstructor.js +++ b/Projects/Foundations/UI/Spaces/Floating-Space/UiObjectConstructor.js @@ -224,7 +224,7 @@ function newUiObjectConstructor() { return } - function addLeftIcons(menuItemsInitialValues, floatingObject, isPersonalData) { + function addLeftIcons(menuItemsInitialValues, floatingObject, schemaDocument) { menuItemsInitialValues.push( { action: 'Pin / Unpin', @@ -348,7 +348,7 @@ function newUiObjectConstructor() { ring: 2 } ) - if (isPersonalData !== true) { + if (schemaDocument.isPersonalData !== true) { menuItemsInitialValues.push( { action: 'Share', @@ -431,6 +431,23 @@ function newUiObjectConstructor() { ring: 3 } ) + if (schemaDocument.referencingRules !== undefined) { + menuItemsInitialValues.push( + { + action: 'Create Reference', + actionFunction: floatingObject.payload.executeAction, + actionProject: 'Visual-Scripting', + label: undefined, + visible: true, + iconPathOn: 'create-reference', + iconPathOff: 'create-reference', + rawRadius: 12, + targetRadius: 0, + currentRadius: 0, + ring: 3 + } + ) + } menuItemsInitialValues.push( { @@ -486,8 +503,14 @@ function newUiObjectConstructor() { uiObject.conditionEditor.initialize() } } + if (schemaDocument.referencingRules !== undefined) { + uiObject.listSelector = newListSelector() + uiObject.listSelector.isVisibleFunction = uiObject.isVisibleFunction + uiObject.listSelector.container.connectToParent(uiObject.container, false, false, true, true, false, false, false, false) + uiObject.listSelector.initialize() + } if (schemaDocument.addLeftIcons === true) { - addLeftIcons(menuItemsInitialValues, floatingObject, schemaDocument.isPersonalData) + addLeftIcons(menuItemsInitialValues, floatingObject, schemaDocument) } if (schemaDocument.isPinned === true) { floatingObject.isPinned = true diff --git a/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js b/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js index 2eaf1b188..ccf09dd35 100644 --- a/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js +++ b/Projects/Governance/UI/Function-Libraries/PluginsFunctions.js @@ -29,7 +29,7 @@ function newGovernanceFunctionLibraryPluginsFunctions() { } function addSpecifiedUserProfile(node, rootNodes) { - let action = { node: node} + let action = { node: node } let projectName = UI.projects.communityPlugins.utilities.plugins.getProjectName(node) if (projectName === "" || projectName === undefined) { diff --git a/Projects/Visual-Scripting/UI/Function-Libraries/ActionSwitch.js b/Projects/Visual-Scripting/UI/Function-Libraries/ActionSwitch.js index 785bb7a46..c6c900d8a 100644 --- a/Projects/Visual-Scripting/UI/Function-Libraries/ActionSwitch.js +++ b/Projects/Visual-Scripting/UI/Function-Libraries/ActionSwitch.js @@ -193,6 +193,11 @@ function newVisualScriptingActionSwitch() { UI.projects.visualScripting.functionLibraries.attachDetach.referenceDetachNode(action.node) } break + case 'Create Reference': + { + UI.projects.visualScripting.functionLibraries.attachDetach.createReference(action.node, action.rootNodes) + } + break default: { console.log("[WARN] Action sent to Visual-Scripting Action Switch does not belong here. Verify at the App Schema file of the node that triggered this action that the actionProject is pointing to the right project. -> Action = " + action.name + " -> Action Node Name = " + action.node.name) diff --git a/Projects/Visual-Scripting/UI/Function-Libraries/ReferenceAttachDetach.js b/Projects/Visual-Scripting/UI/Function-Libraries/ReferenceAttachDetach.js index 0a685a711..477f051f4 100644 --- a/Projects/Visual-Scripting/UI/Function-Libraries/ReferenceAttachDetach.js +++ b/Projects/Visual-Scripting/UI/Function-Libraries/ReferenceAttachDetach.js @@ -2,7 +2,8 @@ function newVisualScriptingFunctionLibraryReferenceAttachDetach() { let thisObject = { referenceDetachNode: referenceDetachNode, - referenceAttachNode: referenceAttachNode + referenceAttachNode: referenceAttachNode, + createReference: createReference } return thisObject @@ -18,6 +19,35 @@ function newVisualScriptingFunctionLibraryReferenceAttachDetach() { completeAttachment(node, attachToNode) } + function createReference(node, rootNodes) { + + let action = { node: node } + let allNodesFound = [] + + let schemaDocument = getSchemaDocument(node) + let workspaceRootNodes = UI.projects.foundations.spaces.designSpace.workspace.workspaceNode.rootNodes + + let compatibleTypes = schemaDocument.referencingRules.compatibleTypes.split('->').filter(i => i) + + for (let i = 0; i < compatibleTypes.length; i++) { + for (let j = 0; j < workspaceRootNodes.length; j++) { + let rootNode = workspaceRootNodes[j] + if (rootNode !== null) { + let nodeArray = UI.projects.visualScripting.utilities.branches.nodeBranchToArray(rootNode, compatibleTypes[i]) + allNodesFound = allNodesFound.concat(nodeArray) + } + } + } + + let eventSubscriptionId = node.payload.uiObject.container.eventHandler.listenToEvent('listSelectorClicked', onListSelect) + node.payload.uiObject.listSelector.activate(action, allNodesFound, eventSubscriptionId) + + function onListSelect(event) { + referenceAttachNode(node, event.selectedNode) + node.payload.uiObject.container.eventHandler.stopListening('listSelectorClicked') + } + } + // Store the path to the reference parent to make restoring it possible if the reference parent is updated and given a new id function storeAttachNodePath(node, attachToNode) { if (node === undefined) { return }