about summary refs log tree commit diff
diff options
context:
space:
mode:
authorGriffin Smith <grfn@gws.fyi>2022-01-06T16·19-0500
committergrfn <grfn@gws.fyi>2022-01-20T14·32+0000
commitc364b1273b880d71f7c975bde74aff34a078c241 (patch)
treeff4d99896e93bb3c02bfb9c61fe2d0ad26a29649
parent86496ca4cd162f50dd1f1401dbfaac2fb817b387 (diff)
feat(grfn/bbbg): Add delete event button r/3643
Change-Id: I763e7a6b367ea5b474ab3aa13c7ff21e99db34af
Reviewed-on: https://cl.tvl.fyi/c/depot/+/5023
Reviewed-by: grfn <grfn@gws.fyi>
Autosubmit: grfn <grfn@gws.fyi>
Tested-by: BuildkiteCI
-rw-r--r--users/grfn/bbbg/resources/public/main.js10
-rw-r--r--users/grfn/bbbg/src/bbbg/handlers/events.clj19
-rw-r--r--users/grfn/bbbg/src/bbbg/styles.clj34
3 files changed, 50 insertions, 13 deletions
diff --git a/users/grfn/bbbg/resources/public/main.js b/users/grfn/bbbg/resources/public/main.js
index 2308ca5957..87c0b64d0a 100644
--- a/users/grfn/bbbg/resources/public/main.js
+++ b/users/grfn/bbbg/resources/public/main.js
@@ -58,10 +58,16 @@ window.onload = () => {
   }
 
   document.querySelectorAll("form").forEach((form) => {
-    form.onsubmit = (e) => {
+    form.addEventListener("submit", (e) => {
       if (e.target.attributes.disabled) {
         e.preventDefault();
       }
-    };
+
+      const confirmMessage = e.target.dataset.confirm;
+      if (confirmMessage != null && !confirm(confirmMessage)) {
+        e.stopImmediatePropagation();
+        e.preventDefault();
+      }
+    });
   });
 };
diff --git a/users/grfn/bbbg/src/bbbg/handlers/events.clj b/users/grfn/bbbg/src/bbbg/handlers/events.clj
index d41caec39b..6f6d6f3585 100644
--- a/users/grfn/bbbg/src/bbbg/handlers/events.clj
+++ b/users/grfn/bbbg/src/bbbg/handlers/events.clj
@@ -89,8 +89,15 @@
    [:div.page-header
     [:h1 (format-date (::event/date event)
                       FormatStyle/FULL)]
-    [:a {:href (str "/signup-forms/" (::event/id event) )}
-     "Go to Signup Form"]]
+    [:div.spacer]
+    [:a.button {:href (str "/signup-forms/" (::event/id event) )}
+     "Go to Signup Form"]
+    [:form#delete-event
+     {:method :post
+      :action (str "/events/" (::event/id event) "/delete")
+      :data-confirm "Are you sure you want to delete this event?"}
+     [:input.error {:type "submit"
+                    :value "Delete Event"}]]]
    [:div.stats
     [:p (pluralize (:num-rsvps event) "RSVP")]
     [:p (num-attendees event)]]
@@ -220,6 +227,14 @@
                           :attendees attendees})))
           (not-found "Event Not Found")))
 
+      (POST "/delete" []
+        (db/delete! db :event_attendee [:= :event-id id])
+        (db/delete! db :event [:= :id id])
+        (-> (redirect "/events")
+            (flash/add-flash
+             #:flash {:type :success
+                      :message "Successfully deleted event"})))
+
       (GET "/attendees/import" []
         (if-let [event (db/get db :event id)]
           (page-response
diff --git a/users/grfn/bbbg/src/bbbg/styles.clj b/users/grfn/bbbg/src/bbbg/styles.clj
index f10bf04f09..a860ae6076 100644
--- a/users/grfn/bbbg/src/bbbg/styles.clj
+++ b/users/grfn/bbbg/src/bbbg/styles.clj
@@ -80,15 +80,15 @@
      :color black
      :text-decoration :none}
 
-     [(& hover)
-      {:color blue}]]
+    [(& hover)
+     {:color blue}]]
 
    [:li.active
     {:font-weight "bold"
-     :border-bottom [["1px" "solid" black]]}]
+     :border-bottom [["1px" "solid" black]]}]]
 
-   [:.spacer
-    {:flex 1}]])
+  [:.spacer
+   {:flex 1}])
 
 (def link-conditional-styles
   (list
@@ -165,18 +165,29 @@
     :border [[(px 1) "solid" (color/lighten blue 30)]]
     :cursor :pointer
     :display :inline-block}
+
    [(& hover)
     {:border-color blue
      :text-decoration :none
      :box-shadow [[0 "1px" "5px" "rgba(0,0,0,0.075)"]]}
-    [(& :a)
+    [(:a &)
      {:text-decoration :none}]]
+
    [(& active)
     {:background-color blue
      :color :white
      :box-shadow :none}
     [(& :a)
-     {:text-decoration :none}]]]
+     {:text-decoration :none}]]
+
+   (for [[context color] contextual-colors]
+     [(& (keyword (str "." (name context))))
+      {:background-color (color/lighten color 30)
+       :border-color (color/lighten color 30)
+       :color black}
+
+      [(& hover)
+       {:border-color color}]])]
 
   [:label
    {:font-weight 600
@@ -377,8 +388,13 @@
     :padding-bottom "0.7rem"
     :margin-bottom "1rem"
     :border-bottom [["1px" "solid" silver]]
-    :align-items :center
-    :justify-content :space-between}]
+    :align-items :center}
+
+   [:*+*
+    {:margin-left "0.5rem"}]
+
+   [:form
+    {:margin-block-end 0}]]
 
   [(attr= "role" "button")
    {:cursor :pointer}]