diff --git a/apps/obsidian/README.md b/apps/obsidian/README.md index 31c4ca1c2..11f7556de 100644 --- a/apps/obsidian/README.md +++ b/apps/obsidian/README.md @@ -16,7 +16,6 @@ For more information about Discourse Graphs, check out our website at [https://d ![BRAT](/apps/obsidian/docs/media/BRAT.png) 4. Install BRAT and enable it - #### Install DataCore via BRAT 1. Open Obsidian Settings @@ -51,8 +50,25 @@ For more information about Discourse Graphs, check out our website at [https://d - Under "Node Types," click "Add Node Type" - Enter a name for your node type (e.g., "Claim", "Evidence", "Question") - Add the format for your node type. eg a claim node will have page title "CLM - {content}" - ![add node types](/apps/obsidian/docs/media/add-node-types.png) - - Click "Save Changes" + - **Template (Optional)**: Select a template from the dropdown to automatically apply template content when creating nodes of this type + - Templates are sourced from Obsidian's core Templates plugin + - Ensure you have the Templates plugin enabled and configured with a template folder + - The dropdown will show all available template files from your configured template folder + + ![add node types with template](/apps/obsidian/docs/media/choose-template.png) + - Click "Save Changes" + + +- To create a new template: + + Create new folder to store templates + ![new folder](/apps/obsidian/docs/media/new-folder.png) + + + Specify template folder location in plugin settings menu + ![template](/apps/obsidian/docs/media/template.png) + + + Create new file in template folder (A) and add text to file (B) + ![create template file](/apps/obsidian/docs/media/create-template-file.png) + #### Edit Relation Types - Under "Relation Types," click "Add Relationship Type" - A relation type is a kind of relationship that can exist between any two node types diff --git a/apps/obsidian/docs/media/choose-template.png b/apps/obsidian/docs/media/choose-template.png new file mode 100644 index 000000000..ade30ce81 Binary files /dev/null and b/apps/obsidian/docs/media/choose-template.png differ diff --git a/apps/obsidian/docs/media/create-template-file.png b/apps/obsidian/docs/media/create-template-file.png new file mode 100644 index 000000000..5c7417524 Binary files /dev/null and b/apps/obsidian/docs/media/create-template-file.png differ diff --git a/apps/obsidian/docs/media/new-folder.png b/apps/obsidian/docs/media/new-folder.png new file mode 100644 index 000000000..bbf9045d0 Binary files /dev/null and b/apps/obsidian/docs/media/new-folder.png differ diff --git a/apps/obsidian/docs/media/template.png b/apps/obsidian/docs/media/template.png new file mode 100644 index 000000000..02d06f5a8 Binary files /dev/null and b/apps/obsidian/docs/media/template.png differ diff --git a/apps/obsidian/src/components/NodeTypeSettings.tsx b/apps/obsidian/src/components/NodeTypeSettings.tsx index 0e3a00d79..d875716de 100644 --- a/apps/obsidian/src/components/NodeTypeSettings.tsx +++ b/apps/obsidian/src/components/NodeTypeSettings.tsx @@ -1,4 +1,4 @@ -import { useState } from "react"; +import { useState, useEffect } from "react"; import { validateAllNodes, validateNodeFormat, @@ -9,6 +9,7 @@ import { Notice } from "obsidian"; import generateUid from "~/utils/generateUid"; import { DiscourseNode } from "~/types"; import { ConfirmationModal } from "./ConfirmationModal"; +import { getTemplateFiles, getTemplatePluginInfo } from "~/utils/templates"; const NodeTypeSettings = () => { const plugin = usePlugin(); @@ -17,6 +18,19 @@ const NodeTypeSettings = () => { ); const [formatErrors, setFormatErrors] = useState>({}); const [hasUnsavedChanges, setHasUnsavedChanges] = useState(false); + const [templateFiles, setTemplateFiles] = useState([]); + const [templateConfig, setTemplateConfig] = useState({ + isEnabled: false, + folderPath: "", + }); + + useEffect(() => { + const config = getTemplatePluginInfo(plugin.app); + setTemplateConfig(config); + + const files = getTemplateFiles(plugin.app); + setTemplateFiles(files); + }, [plugin.app]); const updateErrors = ( index: number, @@ -44,7 +58,12 @@ const NodeTypeSettings = () => { const updatedNodeTypes = [...nodeTypes]; if (!updatedNodeTypes[index]) { const newId = generateUid("node"); - updatedNodeTypes[index] = { id: newId, name: "", format: "" }; + updatedNodeTypes[index] = { + id: newId, + name: "", + format: "", + template: "", + }; } updatedNodeTypes[index][field] = value; @@ -69,6 +88,7 @@ const NodeTypeSettings = () => { id: newId, name: "", format: "", + template: "", }, ]; setNodeTypes(updatedNodeTypes); @@ -153,6 +173,27 @@ const NodeTypeSettings = () => { } className="flex-1" /> +