summaryrefslogtreecommitdiff
path: root/lisp/webapps/resume/clojurescript
diff options
context:
space:
mode:
Diffstat (limited to 'lisp/webapps/resume/clojurescript')
-rw-r--r--lisp/webapps/resume/clojurescript/resume/src/resume/core.clj93
-rw-r--r--lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs31
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)