From f892a44735021ce484ffa66dea59e7d9dee3363f Mon Sep 17 00:00:00 2001 From: Andrew Suzuki Date: Wed, 8 Jun 2016 17:02:04 -0400 Subject: [PATCH] workspace duplication --- src/cljs/ulysses/handlers.cljs | 25 +++++++++++++++++++++++++ src/cljs/ulysses/pages/builder.cljs | 3 ++- 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/cljs/ulysses/handlers.cljs b/src/cljs/ulysses/handlers.cljs index 6427f6b..00be926 100644 --- a/src/cljs/ulysses/handlers.cljs +++ b/src/cljs/ulysses/handlers.cljs @@ -243,6 +243,31 @@ ; TODO db)) +(register-handler + :workspace-new-duplicate + (fn [db _] + (if-let [op (:builder-grant-op db)] + (if-let [current (:builder-workspace db)] + (let [id (-> db :workspaces new-id)] + (dispatch [:workspace-switch id]) + ; NOTE TEMP transfer faculty one by one + (doseq [faculty-id (:builder-workspace-faculties db)] + (dispatch [:add-working-faculty faculty-id])) + (-> db + (update :workspaces + (fn [ws] + (conj ws + ; modify current with new id and name mod + (-> current + (assoc :id id) + (update :name #(str % " (dup)")))))))) + ; on the default ws + (do + (dispatch [:workspace-new-default]) + db)) + ; no grant op + db))) + ; rename current workspace (register-handler :workspace-rename diff --git a/src/cljs/ulysses/pages/builder.cljs b/src/cljs/ulysses/pages/builder.cljs index 19b1a47..d8d3145 100644 --- a/src/cljs/ulysses/pages/builder.cljs +++ b/src/cljs/ulysses/pages/builder.cljs @@ -159,7 +159,8 @@ [:h3 "Working Team"] [:div.workspace-actions [hink #(dispatch [:workspace-new-blank]) btn-attrs "New Blank"] - [hink #(dispatch [:workspace-new-default]) btn-attrs "New from Default"]]] + [hink #(dispatch [:workspace-new-default]) btn-attrs "New from Default"] + [hink #(dispatch [:workspace-new-duplicate]) btn-attrs "Duplicate"]]] [workspace-header-tabs workspaces workspace-current]])) (defn workspace-rename [workspace-current]