From eaeca7f8c30ea013eb620fcac8e313a3035ebd61 Mon Sep 17 00:00:00 2001 From: Josha von Gizycki Date: Thu, 17 Jan 2019 15:40:14 +0100 Subject: [PATCH] new visualisation namespace --- src/wanijo/framework/view.clj | 20 ++++++++++++------- src/wanijo/handler.clj | 4 +++- src/wanijo/instance/routes.clj | 8 +------- src/wanijo/instance/view.clj | 2 +- src/wanijo/visualisation/routes.clj | 14 +++++++++++++ .../{instance => visualisation}/viz.clj | 4 ++-- 6 files changed, 34 insertions(+), 18 deletions(-) create mode 100644 src/wanijo/visualisation/routes.clj rename src/wanijo/{instance => visualisation}/viz.clj (95%) diff --git a/src/wanijo/framework/view.clj b/src/wanijo/framework/view.clj index 339db66..3f2f887 100644 --- a/src/wanijo/framework/view.clj +++ b/src/wanijo/framework/view.clj @@ -60,13 +60,19 @@ "header-content__link")])] [:nav (when authed? - [:section.schemas - [:h2 [:span.__icon "▤"] "Schemas"] - [:ul - (for [schema (:schemas session)] - [:li [:a {:href (path :instance-list - {:schema-uuid (:uuid schema)})} - (h (:name schema))]])]])] + (list + [:section.schemas + [:h2 [:span.__icon "▤"] "Schemas"] + [:ul + (for [schema (:schemas session)] + [:li [:a {:href (path :instance-list + {:schema-uuid (:uuid schema)})} + (h (:name schema))]])]] + [:section + [:h2 [:span.__icon "▤"] "Visualisation"] + [:ul + [:li [:a {:href ""} + "All Instances"]]]]))] (into [:main (for [msg (:flash request)] (flash-error msg))] diff --git a/src/wanijo/handler.clj b/src/wanijo/handler.clj index b40f582..ea4fc53 100644 --- a/src/wanijo/handler.clj +++ b/src/wanijo/handler.clj @@ -12,6 +12,7 @@ [wanijo.user.routes :as user-routes] [wanijo.attribute.routes :as attr-routes] [wanijo.instance.routes :as instance-routes] + [wanijo.visualisation.routes :as vis-routes] [wanijo.framework.auth :as auth] [wanijo.framework.devmode :as devmode] [wanijo.framework.routing :refer [path]])) @@ -29,7 +30,8 @@ schema-routes/routes user-routes/routes attr-routes/routes - instance-routes/routes)) + instance-routes/routes + vis-routes/routes)) (route/not-found "Not Found")) (def app diff --git a/src/wanijo/instance/routes.clj b/src/wanijo/instance/routes.clj index c8f5a92..0915b70 100644 --- a/src/wanijo/instance/routes.clj +++ b/src/wanijo/instance/routes.clj @@ -6,8 +6,7 @@ [wanijo.instance [view :as view] [domain :as domain] - [forms :as forms-inst] - [viz :as viz]] + [forms :as forms-inst]] [wanijo.schema [domain :as domain-schema] [middleware :as middleware-schema]] @@ -119,11 +118,6 @@ (DELETE (register! :instance-delete "/instance/:uuid") [uuid :as req] (delete! uuid req)) - (GET (register! :instance-link-viz - "/instance/:uuid/link/viz") - [uuid :as req] - {:body (viz/as-svg (instance! uuid)) - :headers {"Content-Type" "image/svg+xml"}}) (GET (register! :instance-link-selection "/instance/:uuid/link/:schema-uuid") [uuid schema-uuid :as req] diff --git a/src/wanijo/instance/view.clj b/src/wanijo/instance/view.clj index 23536fc..c2a37a9 100644 --- a/src/wanijo/instance/view.clj +++ b/src/wanijo/instance/view.clj @@ -71,7 +71,7 @@ (seq (:links-in instance))) [:section.visualisation [:h2 "Visualisation"] - [:image {:src (path :instance-link-viz instance) + [:image {:src (path :vis-single-instance instance) :alt "SVG Visualisation"}]]) (when (seq (:links-out instance)) [:section.links-out diff --git a/src/wanijo/visualisation/routes.clj b/src/wanijo/visualisation/routes.clj new file mode 100644 index 0000000..7cc7e5b --- /dev/null +++ b/src/wanijo/visualisation/routes.clj @@ -0,0 +1,14 @@ +(ns wanijo.visualisation.routes + (:require [compojure.core :refer [defroutes wrap-routes + GET POST DELETE]] + [ring.util.response :as resp] + [wanijo.framework.routing :refer [register! path]] + [wanijo.instance.domain :as domain-instance] + [wanijo.visualisation.viz :as viz])) + +(defroutes routes + (GET (register! :vis-single-instance "/visualisation/instance/:uuid") + [uuid] + {:body (viz/single-instance + (domain-instance/full-instance-by-uuid! uuid)) + :headers {"Content-Type" "image/svg+xml"}})) diff --git a/src/wanijo/instance/viz.clj b/src/wanijo/visualisation/viz.clj similarity index 95% rename from src/wanijo/instance/viz.clj rename to src/wanijo/visualisation/viz.clj index c9daf0a..ec8ed3d 100644 --- a/src/wanijo/instance/viz.clj +++ b/src/wanijo/visualisation/viz.clj @@ -1,9 +1,9 @@ -(ns wanijo.instance.viz +(ns wanijo.visualisation.viz (:require [dorothy [core :as dot] [jvm :as doro-jvm]])) -(defn as-svg [instance] +(defn single-instance [instance] (let [out-nodes (map #(vector (-> % :target :uuid) {:label (-> % :target :name)}) (:links-out instance))