diff options
Diffstat (limited to 'lisp/webapps/resume')
| -rw-r--r-- | lisp/webapps/resume/clojurescript/resume/src/resume/core.clj | 93 | ||||
| -rw-r--r-- | lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs | 31 |
2 files changed, 105 insertions, 19 deletions
diff --git a/lisp/webapps/resume/clojurescript/resume/src/resume/core.clj b/lisp/webapps/resume/clojurescript/resume/src/resume/core.clj index 829fa66..146fa6c 100644 --- a/lisp/webapps/resume/clojurescript/resume/src/resume/core.clj +++ b/lisp/webapps/resume/clojurescript/resume/src/resume/core.clj @@ -1,12 +1,13 @@ (ns resume.core (:require [clojure.string :as str])) -(defmacro define-resume-component [component] +(defmacro define-resume-component [component & [links]] `(do (declare ~(symbol (str "reset-" component "-state"))) (declare ~(symbol (str "reset-" component "-view-state"))) (declare ~(symbol (str "reset-" component "-add-state"))) (declare ~(symbol (str "reset-" component "-modify-state"))) + (declare ~(symbol (str "reset-" component "-link-state"))) (declare ~(symbol (str "comp-" component))) (declare ~(symbol (str "handler-" component))) (declare ~(symbol (str "render-" component))) @@ -27,6 +28,27 @@ (declare ~(symbol (str "on-" component "-modify-submit-clicked"))) (declare ~(symbol (str "handler-" component "-modify-submit"))) (declare ~(symbol (str "render-" component "-modify-submit"))) + (declare ~(symbol (str "on-" component "-modify-clicked"))) + (declare ~(symbol (str "comp-" component "-modify"))) + (declare ~(symbol (str "handler-" component "-modify"))) + (declare ~(symbol (str "render-" component "-modify"))) + (declare ~(symbol (str "on-" component "-modify-submit-clicked"))) + (declare ~(symbol (str "handler-" component "-modify-submit"))) + (declare ~(symbol (str "render-" component "-modify-submit"))) + (declare ~(symbol (str "on-" component "-link-clicked"))) + (declare ~(symbol (str "comp-" component "-link"))) + (declare ~(symbol (str "handler-" component "-link"))) + (declare ~(symbol (str "render-" component "-link"))) + (declare ~(symbol (str "on-" component "-link-submit-clicked"))) + (declare ~(symbol (str "handler-" component "-link-submit"))) + (declare ~(symbol (str "render-" component "-link-submit"))) + (declare ~(symbol (str "on-" component "-link-clicked"))) + (declare ~(symbol (str "comp-" component "-link"))) + (declare ~(symbol (str "handler-" component "-link"))) + (declare ~(symbol (str "render-" component "-link"))) + (declare ~(symbol (str "on-" component "-link-submit-clicked"))) + (declare ~(symbol (str "handler-" component "-link-submit"))) + (declare ~(symbol (str "render-" component "-link-submit"))) (declare ~(symbol (str "on-" component "-delete-clicked"))) (declare ~(symbol (str "handler-" component "-delete"))) (declare ~(symbol (str "render-" component "-delete"))) @@ -35,6 +57,7 @@ (def ~(symbol (str component "-view-state")) (r/atom {})) (def ~(symbol (str component "-add-state")) (r/atom {})) (def ~(symbol (str component "-modify-state")) (r/atom {})) + (def ~(symbol (str component "-link-state")) (r/atom {})) (defn ~(symbol (str "reset-" component "-state")) [jsonobj#] (reset! ~(symbol (str component "-state")) jsonobj#)) @@ -48,6 +71,9 @@ (defn ~(symbol (str "reset-" component "-modify-state")) [jsonobj#] (reset! ~(symbol (str component "-modify-state")) jsonobj#)) + (defn ~(symbol (str "reset-" component "-link-state")) [jsonobj#] + (reset! ~(symbol (str component "-link-state")) jsonobj#)) + (defn ~(symbol (str "comp-" component)) [] [:div {:style {:display (cond (or (= @location-state ~(str "/resume/" component))) "block" :else "none")}} [:h3 {:style {:text-align "center"}} (get (deref ~(symbol (str component "-state"))) "title")] @@ -59,7 +85,7 @@ [:div {:class "modal-dialog modal-lg"} [:div {:class "modal-content"} [:div {:class "modal-header"} - [:h5 (get (deref ~(symbol (str component "-state"))) "title")] + [:h5 (get (deref ~(symbol (str component "-add-state"))) "title")] [:button {:type "button" :class "close" :data-dismiss "modal"} @@ -80,7 +106,7 @@ [:div {:class "modal-dialog modal-lg"} [:div {:class "modal-content"} [:div {:class "modal-header"} - [:h5 (get (deref ~(symbol (str component "-state"))) "title")] + [:h5 (get (deref ~(symbol (str component "-modify-state"))) "title")] [:button {:type "button" :class "close" :data-dismiss "modal"} @@ -93,6 +119,27 @@ :class "btn btn-danger btn-default" :data-dismiss "modal"} [:span {:class "glyphicon glyphicon-remove"}] + "Cancel"]]]]] + [:div {:id (str "modal-" ~component "-link") + :class "modal fade" + :role "dialog" + :tab-index "-1"} + [:div {:class "modal-dialog modal-lg"} + [:div {:class "modal-content"} + [:div {:class "modal-header"} + [:h5 (get (deref ~(symbol (str component "-link-state"))) "title")] + [:button {:type "button" + :class "close" + :data-dismiss "modal"} + "X"]] + [:div {:class "modal-body" + :style {:height "460px;"}} + [~(symbol (str "comp-" component "-link"))]] + [:div {:class "modal-footer"} + [:button {:type "submit" + :class "btn btn-danger btn-default" + :data-dismiss "modal"} + [:span {:class "glyphicon glyphicon-remove"}] "Cancel"]]]]]]) (defn ~(symbol (str "handler-" component)) [response#] @@ -130,7 +177,7 @@ (for [rec# results#] (let [tr-attributes# (atom {:id (str "tr-" ~component "-" (get rec# "id")) :key (str "tr-" ~component "-" (get rec# "id"))}) - td-attributes# (atom {:on-click #(print "yourmom")})] + td-attributes# (atom {:on-click #(~(symbol (str "on-" component "-link-clicked")) (get rec# "id"))})] [:tr @tr-attributes# (for [key# (filter #(not (str/includes? % "_id")) keys#)] [:td @td-attributes# @@ -218,6 +265,44 @@ :params (form-fields-to-map (str "#" ~component "-modify-form :input")) :handler ~(symbol (str "handler-" component "-modify-submit"))})) + (defn ~(symbol (str "on-" component "-link-clicked")) [id#] + (~(symbol (str "render-" component "-link")) id#)) + + (defn ~(symbol (str "comp-" component "-link")) [] + [:div {:dangerouslySetInnerHTML (r/unsafe-html (ck-form/template-generic-form (get (deref ~(symbol (str component "-link-state"))) "form") (namespace ::x)))}]) + + (defn ~(symbol (str "handler-" component "-link")) [response#] + (let [jsonobj# (cljs.core/js->clj (js/JSON.parse response#))] + (~(symbol (str "reset-" component "-link-state")) jsonobj#) + (.modal (jquery (str "#modal-" ~component "-link"))))) + + (defn ~(symbol (str "render-" component "-link")) [id#] + (ajax.core/POST ~(str "/resume/" component "/link") + {:format :raw + :params {:id id#} + :handler ~(symbol (str "handler-" component "-link"))})) + + (defn ~(symbol (str "on-" component "-link-submit-clicked")) [] + (when (-> (jquery ~(str "#" component "-link-form")) + (.get "0") + (.checkValidity)) + (.modal (jquery (str "#modal-" ~component "-link")) "hide") + (~(symbol (str "render-" component "-link-submit"))))) + + (defn ~(symbol (str "handler-" component "-link-submit")) [response#] + (let [jsonobj# (cljs.core/js->clj (js/JSON.parse response#))] + (auth-notifications jsonobj#) + (~(symbol (str "render-" component "-view"))))) + + (defn ~(symbol (str "render-" component "-link-submit")) [] + (ajax.core/POST (str "/resume/" ~component "/link/submit") + {:format :raw + :params (into (form-fields-to-map (str "#" ~component "-link-form :input")) + (for [link# ~links] + {link# + (reduce-checkboxes (str "[id^='" ~component "_link_form-chk_" ~component "_" link# "_link_']"))})) + :handler ~(symbol (str "handler-" component "-link-submit"))})) + (defn ~(symbol (str "on-" component "-delete-clicked")) [id#] (when (js/confirm (str "Are you sure you want to delete " id# "? This action cannot be undone.")) (~(symbol (str "render-" component "-delete")) id#))) diff --git a/lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs b/lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs index 35ea5aa..5283292 100644 --- a/lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs +++ b/lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs @@ -265,16 +265,17 @@ `chk_something-more'. The important thing is the underscore separating the throwaway prefix and the remaining useful bit. `selector' will likely be something like: [id^='chk_']" - (reduce (fn [x y] - (cond (and (not (empty? x)) (not (empty? y))) (str x "|" y) - (and (not (empty? x)) (empty? y)) x - (and (empty? x) (not (empty? y))) y - :else "")) - (map (fn [elem] - (let [this (jquery (str "#" (dommy/attr elem :id)))] - (when (-> this (.prop "checked")) - (last (str/split (-> this (.prop "id")) "_"))))) - (.toArray (jquery selector))))) + (or (reduce (fn [x y] + (cond (and (not (empty? x)) (not (empty? y))) (str x "|" y) + (and (not (empty? x)) (empty? y)) x + (and (empty? x) (not (empty? y))) y + :else "")) + (map (fn [elem] + (let [this (jquery (str "#" (dommy/attr elem :id)))] + (when (-> this (.prop "checked")) + (last (str/split (-> this (.prop "id")) "_"))))) + (.toArray (jquery selector)))) + "")) (defn form-fields-to-map [selector] (let [form-name (str/replace (str/replace-first (first (str/split selector " ")) "#" "") "-" "_")] @@ -1064,12 +1065,12 @@ ;; resume -(define-resume-component "resume") +(define-resume-component "resume" ["contactinfo" "language" "education" "job"]) +(define-resume-component "job" ["skill"]) +(define-resume-component "skill") (define-resume-component "contactinfo") (define-resume-component "education") (define-resume-component "language") -(define-resume-component "skill") -(define-resume-component "job") ;; location @@ -1083,11 +1084,11 @@ (push-menu-hook {:handler "/users" :func #(render-users)}) (push-menu-hook {:handler "/users/register" :func #(render-users)}) (push-menu-hook {:handler "/resume/resume" :func #(render-resume)}) +(push-menu-hook {:handler "/resume/job" :func #(render-job)}) +(push-menu-hook {:handler "/resume/skill" :func #(render-skill)}) (push-menu-hook {:handler "/resume/contactinfo" :func #(render-contactinfo)}) (push-menu-hook {:handler "/resume/education" :func #(render-education)}) (push-menu-hook {:handler "/resume/language" :func #(render-language)}) -(push-menu-hook {:handler "/resume/skill" :func #(render-skill)}) -(push-menu-hook {:handler "/resume/job" :func #(render-job)}) (defn on-menu-clicked [handler] (reset-location handler) |
