summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--components/config.ts4
-rw-r--r--components/tweaks.tsx32
-rw-r--r--org-roam-ui.el36
-rw-r--r--pages/index.tsx11
4 files changed, 49 insertions, 34 deletions
diff --git a/components/config.ts b/components/config.ts
index 3331288..d6c2296 100644
--- a/components/config.ts
+++ b/components/config.ts
@@ -16,7 +16,9 @@ export const initialPhysics = {
enabled: true,
charge: -350,
collision: true,
- collisionStrength: 0,
+ collisionStrength: 20,
+ centering: true,
+ centeringStrength: 0.05,
linkStrength: 0.1,
linkIts: 1,
particles: false,
diff --git a/components/tweaks.tsx b/components/tweaks.tsx
index bfb932c..f9c58a1 100644
--- a/components/tweaks.tsx
+++ b/components/tweaks.tsx
@@ -207,11 +207,12 @@ export const Tweaks = (props: TweakProps) => {
onChange={() => setPhysics({ ...physics, collision: !physics.collision })}
>
<SliderWithInfo
- value={physics.collisionStrength * 10}
+ value={physics.collisionStrength / 5}
onChange={(value) =>
- setPhysics({ ...physics, collisionStrength: value / 10 })
+ setPhysics({ ...physics, collisionStrength: value * 5 })
}
- label="Strength"
+ label="Collision Radius"
+ infoText="Easy with this one, high values can lead to a real jiggly mess"
/>
</EnableSection>
<SliderWithInfo
@@ -251,21 +252,28 @@ export const Tweaks = (props: TweakProps) => {
color="gray.800"
>
<SliderWithInfo
- label="Iterations per tick"
- min={1}
- max={10}
- step={1}
- value={physics.iterations}
- onChange={(v) => setPhysics({ ...physics, iterations: v })}
- infoText="Number of times the physics simulation iterates per simulation step"
- />
- <SliderWithInfo
label="Stabilization rate"
value={physics.alphaDecay * 50}
onChange={(value) =>
setPhysics({ ...physics, alphaDecay: value / 50 })
}
/>
+ <EnableSection
+ label="Keeps nodes centered"
+ value={physics.centering}
+ onChange={() =>
+ setPhysics({ ...physics, centering: !physics.centering })
+ }
+ infoText="Keeps the nodes in the center of the viewport. If disabled you can drag the nodes anywhere you want."
+ >
+ <SliderWithInfo
+ label="Centering Strength"
+ value={physics.centeringStrength}
+ max={2}
+ step={0.1}
+ onChange={(v) => setPhysics({ ...physics, centeringStrength: v })}
+ />
+ </EnableSection>
</VStack>
</AccordionPanel>
</AccordionItem>
diff --git a/org-roam-ui.el b/org-roam-ui.el
index c218aee..12a1623 100644
--- a/org-roam-ui.el
+++ b/org-roam-ui.el
@@ -105,20 +105,20 @@ This serves the web-build and API over HTTP."
(websocket-server
35903
:host 'local
- :on-open (lambda (ws) (progn (setq oru-ws ws) (org-roam-ui--send-graphdata) (message "Connection established with org-roam-ui")))
+ :on-open (lambda (ws) (progn (setq oru-ws ws) (org-roam-ui--send-graphdata) (org-roam-ui-sync-theme--advice) (message "Connection established with org-roam-ui")))
:on-close (lambda (_websocket) (setq oru-ws nil) (message "Connection with org-roam-ui closed succesfully."))))
- (if (boundp 'counsel-load-theme
+ (if (boundp 'counsel-load-theme)
(advice-add 'counsel-load-theme :after #'org-roam-ui-sync-theme--advice)
- (advice-add 'load-theme :after #'org-roam-ui-sync-theme-manually)))
+ (advice-add 'load-theme :after #'org-roam-ui-sync-theme-manually))
(add-hook 'post-command-hook #'org-roam-ui--update-current-node)
(add-hook 'post-command-hook #'org-roam-ui-update))
(t
(progn
(remove-hook 'post-command-hook #'org-roam-ui-update)
(remove-hook 'post-command-hook #'org-roam-ui--update-current-node)
- (if (boundp 'counsel-load-theme
+ (if (boundp 'counsel-load-theme)
(advice-remove 'counsel-load-theme #'org-roam-ui-sync-theme--advice)
- (advice-remove 'load-theme #'org-roam-ui-sync-theme--advice)))
+ (advice-remove 'load-theme #'org-roam-ui-sync-theme--advice))
(websocket-server-close org-roam-ui-ws)
(delete-process org-roam-ui-ws)
(httpd-stop)))))
@@ -240,19 +240,19 @@ This function is added to `post-command-hook'."
))
-(defservlet* theme text/stream ()
- (progn)
- (if org-roam-ui-sync-theme
- (if (boundp 'doom-themes--colors)
- (let*
- ((colors (butlast doom-themes--colors (- (length doom-themes--colors) 25))) ui-theme (list nil))
- (progn
- (dolist (color colors) (push (cons (car color) (car (cdr color))) ui-theme))
- ui-theme)))))
- (insert (format "data: %s\n\n" (json-encode (org-roam-ui-get-theme)))))
- (when org-roam-ui-custom-theme
- (insert (format "data %s\n\n" (json-encode org-roam-ui-custom-theme)))))
- (httpd-send-header t "text/event-stream" 200 :Access-Control-Allow-Origin "*"))
+;; (defservlet* theme text/stream ()
+;; (progn)
+;; (if org-roam-ui-sync-theme
+;; (if (boundp 'doom-themes--colors)
+;; (let*
+;; ((colors (butlast doom-themes--colors (- (length doom-themes--colors) 25))) ui-theme (list nil))
+;; (progn
+;; (dolist (color colors) (push (cons (car color) (car (cdr color))) ui-theme))
+;; ui-theme))
+;; (insert (format "data: %s\n\n" (json-encode (org-roam-ui-get-theme)))))
+;; (when org-roam-ui-custom-theme
+;; (insert (format "data %s\n\n" (json-encode org-roam-ui-custom-theme)))))
+;; (httpd-send-header t "text/event-stream" 200 :Access-Control-Allow-Origin "*"))
(provide 'org-roam-ui)
;;; org-roam-ui.el ends here
diff --git a/pages/index.tsx b/pages/index.tsx
index db925da..e330b91 100644
--- a/pages/index.tsx
+++ b/pages/index.tsx
@@ -360,11 +360,16 @@ export const Graph = function (props: GraphProps) {
fg.d3Force('y', null)
threeDim ? fg.d3Force('z', null) : null
}
-
+ physics.centering
+ ? fg.d3Force('center', d3.forceCenter().strength(physics.centeringStrength))
+ : fg.d3Force('center', null)
physics.linkStrength && fg.d3Force('link').strength(physics.linkStrength)
physics.linkIts && fg.d3Force('link').iterations(physics.linkIts)
physics.charge && fg.d3Force('charge').strength(physics.charge)
- fg.d3Force('collide', physics.collision ? d3.forceCollide().radius(20) : null)
+ fg.d3Force(
+ 'collide',
+ physics.collision ? d3.forceCollide().radius(physics.collisionStrength) : null,
+ )
})()
})
@@ -585,7 +590,7 @@ export const Graph = function (props: GraphProps) {
}))
},
onNodeHover: (node) => {
- if (!physics.hover) {
+ if (!physics.highlight) {
return
}
setHoverNode(node)