From b9d8c0fe44112dc7d5d65424ef930c9b5627aceb Mon Sep 17 00:00:00 2001 From: Zsolt Viczian Date: Sat, 22 Jan 2022 20:13:57 +0100 Subject: [PATCH] Added new script --- ea-scripts/Add Next Step in Process.md | 67 +++++++++++++++++++++++++ ea-scripts/index.md | 20 +++++--- images/scripts-add-process-step.jpg | Bin 0 -> 18141 bytes 3 files changed, 81 insertions(+), 6 deletions(-) create mode 100644 ea-scripts/Add Next Step in Process.md create mode 100644 images/scripts-add-process-step.jpg diff --git a/ea-scripts/Add Next Step in Process.md b/ea-scripts/Add Next Step in Process.md new file mode 100644 index 0000000..2ada614 --- /dev/null +++ b/ea-scripts/Add Next Step in Process.md @@ -0,0 +1,67 @@ +/* +![](https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/images/scripts-add-process-step.jpg) + +This script will prompt you for the title of the process step, then will create a stick note with the text. If an element is selected then the script will connect this new step with an arrow to the previous step (the selected element). If no element is selected, then the script assumes this is the first step in the process and will only output the sticky note with the text that was entered. + +```javascript +*/ +const textPadding = 10; +const gapBetweenElements = 50; +const wrapLineLen = 25; +const text = await utils.inputPrompt("Text?"); +const elements = ea.getViewSelectedElements(); +const isFirst = (!elements || elements.length === 0); + +if(!isFirst) { + const fromElement = ea.getLargestElement(elements); + ea.copyViewElementsToEAforEditing([fromElement]); + + const previousTextElements = elements.filter((el)=>el.type==="text"); + if(previousTextElements.length>0) { + const el = previousTextElements[0]; + ea.style.strokeColor = el.strokeColor; + ea.style.fontSize = el.fontSize; + ea.style.fontFamily = el.fontFamily; + ea.style.strokeWidth = el.strokeWidth; + ea.style.strokeStyle = el.strokeStyle; + ea.style.strokeSharpness = el.strokeSharpness; + } + + const id = ea.addText( + fromElement.x, + fromElement.y+fromElement.height+gapBetweenElements, + text, + { + wrapAt: wrapLineLen, + textAlign: "center", + box: "rectangle", + boxPadding: textPadding + } + ); + + ea.connectObjects( + fromElement.id, + null, + id, + null, + { + endArrowHead: "triangle", + startArrowHead: null, + numberOfPoints: 0 + } + ); + ea.addElementsToView(false); +} else { + ea.addText( + 0, + 0, + text, + { + wrapAt: wrapLineLen, + textAlign: "center", + box: "rectangle", + boxPadding: textPadding + } + ); + ea.addElementsToView(true); +} diff --git a/ea-scripts/index.md b/ea-scripts/index.md index 6d01f68..c6dcf1b 100644 --- a/ea-scripts/index.md +++ b/ea-scripts/index.md @@ -26,6 +26,7 @@ I would love to include your contribution in the script library. If you have a s # List of available scripts - [[#Add Connector Point]] +- [[#Add Next Step in Process]] - [[#Box Each Selected Groups]] - [[#Box Selected Elements]] - [[#Connect elements]] @@ -60,7 +61,14 @@ I would love to include your contribution in the script library. If you have a s ```excalidraw-script-install https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Add%20Connector%20Point.md ``` -
Author@zsviczian
SourceFile on GitHub
DescriptionThis script will add a small circle to the top left of each text element in the selection and add the text and the "connector point" to a group. You can use the connector points to link text elements with an arrow (in for example a Wardley Map).
+
Author@zsviczian
SourceFile on GitHub
DescriptionThis script will add a small circle to the top left of each text element in the selection and add the text and the "connector point" to a group. You can use the connector points to link text elements with an arrow (in for example a Wardley Map).
+ +## Add Next Step in Process +```excalidraw-script-install +https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Add%20Next%20Step%20in%20Process.md +``` +
Author@zsviczian
SourceFile on GitHub
DescriptionThis script will prompt you for the title of the process step, then will create a stick note with the text. If an element is selected then the script will connect this new step with an arrow to the previous step (the selected element). If no element is selected, then the script assumes this is the first step in the process and will only output the sticky note with the text that was entered.
+ ## Box Each Selected Groups ```excalidraw-script-install @@ -186,19 +194,19 @@ https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea ```excalidraw-script-install https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Set%20Dimensions.md ``` -
Author@zsviczian
SourceFile on GitHub
DescriptionCurrently there is no way to specify the exact location and size of objects in Excalidraw. You can bridge this gap with the following simple script.
+
Author@zsviczian
SourceFile on GitHub
DescriptionCurrently there is no way to specify the exact location and size of objects in Excalidraw. You can bridge this gap with the following simple script.
## Set Font Family ```excalidraw-script-install https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Set%20Font%20Family.md ``` -
Author@zsviczian
SourceFile on GitHub
DescriptionSets font family of the text block (Virgil, Helvetica, Cascadia). Useful if you want to set a keyboard shortcut for selecting font family.
+
Author@zsviczian
SourceFile on GitHub
DescriptionSets font family of the text block (Virgil, Helvetica, Cascadia). Useful if you want to set a keyboard shortcut for selecting font family.
## Set Grid ```excalidraw-script-install https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Set%20Grid.md ``` -
Author@zsviczian
SourceFile on GitHub
DescriptionThe default grid size in Excalidraw is 20. Currently there is no way to change the grid size via the user interface. This script offers a way to bridge this gap.
+
Author@zsviczian
SourceFile on GitHub
DescriptionThe default grid size in Excalidraw is 20. Currently there is no way to change the grid size via the user interface. This script offers a way to bridge this gap.
## Set Link Alias ```excalidraw-script-install @@ -210,13 +218,13 @@ https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea ```excalidraw-script-install https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Set%20Stroke%20Width%20of%20Selected%20Elements.md ``` -
Author@zsviczian
SourceFile on GitHub
DescriptionThis script will set the stroke width of selected elements. This is helpful, for example, when you scale freedraw sketches and want to reduce or increase their line width.
+
Author@zsviczian
SourceFile on GitHub
DescriptionThis script will set the stroke width of selected elements. This is helpful, for example, when you scale freedraw sketches and want to reduce or increase their line width.
## Set Text Alignment ```excalidraw-script-install https://raw.githubusercontent.com/zsviczian/obsidian-excalidraw-plugin/master/ea-scripts/Set%20Text%20Alignment.md ``` -
Author@zsviczian
SourceFile on GitHub
DescriptionSets text alignment of text block (cetner, right, left). Useful if you want to set a keyboard shortcut for selecting text alignment.
+
Author@zsviczian
SourceFile on GitHub
DescriptionSets text alignment of text block (cetner, right, left). Useful if you want to set a keyboard shortcut for selecting text alignment.
## Split text by lines ```excalidraw-script-install diff --git a/images/scripts-add-process-step.jpg b/images/scripts-add-process-step.jpg new file mode 100644 index 0000000000000000000000000000000000000000..144e3d9fb7da51769c77b285ffbfb00a9dc23fd1 GIT binary patch literal 18141 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 literal 0 HcmV?d00001