diff options
Diffstat (limited to 'lisp/webapps/resume/clojurescript')
| -rw-r--r-- | lisp/webapps/resume/clojurescript/resume/src/core.cljs | 209 |
1 files changed, 208 insertions, 1 deletions
diff --git a/lisp/webapps/resume/clojurescript/resume/src/core.cljs b/lisp/webapps/resume/clojurescript/resume/src/core.cljs index d894e7f..532a52b 100644 --- a/lisp/webapps/resume/clojurescript/resume/src/core.cljs +++ b/lisp/webapps/resume/clojurescript/resume/src/core.cljs @@ -195,6 +195,29 @@ (declare on-education-delete-clicked) (declare handler-education-delete) (declare render-education-delete) +(declare template-language) +(declare handler-language) +(declare render-language) +(declare template-language-view) +(declare handler-language-view) +(declare render-language-view) +(declare on-language-add-clicked) +(declare template-language-add) +(declare handler-language-add) +(declare render-language-add) +(declare on-language-add-submit-clicked) +(declare handler-language-add-submit) +(declare render-language-add-submit) +(declare on-language-modify-clicked) +(declare template-language-modify) +(declare handler-language-modify) +(declare render-language-modify) +(declare on-language-modify-submit-clicked) +(declare handler-language-modify-submit) +(declare render-language-modify-submit) +(declare on-language-delete-clicked) +(declare handler-language-delete) +(declare render-language-delete) (declare on-menu-clicked) (declare handler-location) (declare goto-location) @@ -1606,6 +1629,189 @@ {:format :raw :handler handler-education-delete})) +;; language + +(hiccups/defhtml template-language [jsonobj] + [:h3 {:style "text-align: center"} (get jsonobj "title")] + [:div {:id "content"}] + [:div {:id "modify" + :class "modal fade" + :role "dialog" + :tabindex "-1"} + [:div {:class "modal-dialog modal-lg"} + [:div {:class "modal-content"} + [:div {:class "modal-header"} + [:h5 [:span {:id "modify-title"}]] + [:button {:type "button" + :class "close" + :data-dismiss "modal"} + "×"]] + [:div {:id "modify-body" + :class "modal-body" + :style "height: 450px;"}] + [:div {:class "modal-footer"} + [:button {:type "submit" + :class "btn btn-danger btn-default" + :data-dismiss "modal"} + [:span {:class "glyphicon glyphicon-remove"}] + "Cancel"]]]]]) + +(defn handler-language [response] + (let [jsonobj (js->clj (js/JSON.parse response))] + (notifications jsonobj) + (dommy/set-html! (dommy/sel1 :#body) (template-language jsonobj)) + (render-language-view))) + +(defn render-language [] + (GET "/resumes/language" {:handler handler-language})) + +;; language-view + +(hiccups/defhtml template-language-view [jsonobj] + [:div {:style "text-align: right"} + [:img {:src "/static/images/add.png" + :style "cursor:pointer; cursor:hand" + :onclick (str (namespace ::x) ".on_language_add_clicked()")}]] + [:table {:class "table table-striped table-hover table-sm"} + [:thead + [:tr + [:th {:scope "col"} "Name"] + [:th {:scope "col"} "Understanding Listening"] + [:th {:scope "col"} "Understanding Reading"] + [:th {:scope "col"} "Speaking Interaction"] + [:th {:scope "col"} "Speaking Production"] + [:th {:scope "col"} "Writing"] + [:th {:scope "col"} "Mod"] + [:th {:scope "col"} "Del"]]] + [:tbody + (for [language (get jsonobj "languages")] + [:tr + [:td (get language "name")] + [:td (get language "understanding_listening")] + [:td (get language "understanding_reading")] + [:td (get language "speaking_interaction")] + [:td (get language "speaking_production")] + [:td (get language "writing")] + [:td {:width "30"} + [:img {:src "/static/images/modify.png" + :onclick (str (namespace ::x) ".on_language_modify_clicked(" (get language "id") ")")}]] + [:td {:width "30"} + [:img {:src "/static/images/delete.png" + :onclick (str (namespace ::x) ".on_language_delete_clicked(" (get language "id") ", '" (get language "name") "')")}]]])]]) + +(defn handler-language-view [response] + (let [jsonobj (js->clj (js/JSON.parse response))] + (dommy/set-html! (dommy/sel1 :#content) (template-language-view jsonobj)))) + +(defn render-language-view [] + (GET "/resumes/language/view" {:handler handler-language-view})) + +;; language-add + +(defn on-language-add-clicked [] + (render-language-add)) + +(hiccups/defhtml template-language-add [jsonobj] + (ck-form/template-generic-form (get jsonobj "form") (namespace ::x))) + +(defn handler-language-add [response] + (let [jsonobj (js->clj (js/JSON.parse response))] + (auth-notifications jsonobj) + (dommy/set-html! (dommy/sel1 :#modify-title) (get jsonobj "title")) + (dommy/set-html! (dommy/sel1 :#modify-body) (template-language-add jsonobj)) + (.modal (jquery "#modify")))) + +(defn render-language-add [] + (POST "/resumes/language/add" {:handler handler-language-add})) + +;; language-add-submit + +(defn on-language-add-submit-clicked [] + (when (-> (jquery "#language-add-form") + (.get "0") + (.checkValidity)) + (.modal (jquery "#modify") "hide") + (render-language-add-submit))) + +(defn handler-language-add-submit [response] + (let [jsonobj (js->clj (js/JSON.parse response))] + (auth-notifications jsonobj) + (on-menu-clicked "/resumes/language"))) + +(defn render-language-add-submit [] + (POST "/resumes/language/add/submit" + {:format :raw + :params {:name (dommy/value (dommy/sel1 :#name)) + :understanding_listening (dommy/value (dommy/sel1 :#understanding_listening)) + :understanding_reading (dommy/value (dommy/sel1 :#understanding_reading)) + :speaking_interaction (dommy/value (dommy/sel1 :#speaking_interaction)) + :speaking_production (dommy/value (dommy/sel1 :#speaking_production)) + :writing (dommy/value (dommy/sel1 :#writing))} + :handler handler-language-add-submit})) + +;; language-modify + +(defn on-language-modify-clicked [id] + (render-language-modify id)) + +(hiccups/defhtml template-language-modify [jsonobj] + (ck-form/template-generic-form (get jsonobj "form") (namespace ::x))) + +(defn handler-language-modify [response] + (let [jsonobj (js->clj (js/JSON.parse response))] + (auth-notifications jsonobj) + (dommy/set-html! (dommy/sel1 :#modify-title) (get jsonobj "title")) + (dommy/set-html! (dommy/sel1 :#modify-body) (template-language-modify jsonobj)) + (.modal (jquery "#modify")))) + +(defn render-language-modify [id] + (POST "/resumes/language/modify" + {:format :raw + :params {:id id} + :handler handler-language-modify})) + +;; language-modify-submit + +(defn on-language-modify-submit-clicked [] + (when (-> (jquery "#language-modify-form") + (.get "0") + (.checkValidity)) + (.modal (jquery "#modify") "hide") + (render-language-modify-submit))) + +(defn handler-language-modify-submit [response] + (let [jsonobj (js->clj (js/JSON.parse response))] + (auth-notifications jsonobj) + (on-menu-clicked "/resumes/language"))) + +(defn render-language-modify-submit [] + (POST "/resumes/language/modify/submit" + {:format :raw + :params {:id (dommy/value (dommy/sel1 :#id)) + :name (dommy/value (dommy/sel1 :#name)) + :understanding_listening (dommy/value (dommy/sel1 :#understanding_listening)) + :understanding_reading (dommy/value (dommy/sel1 :#understanding_reading)) + :speaking_interaction (dommy/value (dommy/sel1 :#speaking_interaction)) + :speaking_production (dommy/value (dommy/sel1 :#speaking_production)) + :writing (dommy/value (dommy/sel1 :#writing))} + :handler handler-language-modify-submit})) + +;; language-delete + +(defn on-language-delete-clicked [id name] + (when (js/confirm (str "Are you sure you want to delete " name "? This action cannot be undone.")) + (render-language-delete id))) + +(defn handler-language-delete [response] + (let [jsonobj (js->clj (js/JSON.parse response))] + (auth-notifications jsonobj) + (on-menu-clicked "/resumes/language"))) + +(defn render-language-delete [id] + (DELETE (str "/resumes/language/delete/" id) + {:format :raw + :handler handler-language-delete})) + ;; location (defn on-menu-clicked [handler] @@ -1621,7 +1827,8 @@ (= handler "/users") (render-users) (= handler "/resumes") (render-resumes) (= handler "/resumes/contactinfo") (render-contactinfo) - (= handler "/resumes/education") (render-education))) + (= handler "/resumes/education") (render-education) + (= handler "/resumes/language") (render-language))) (defn handler-location [response] (let [jsonobj (js->clj (js/JSON.parse response))] |
