diff options
| author | ckonstanski <kostcarl@isu.edu> | 2026-07-31 15:02:43 -0600 |
|---|---|---|
| committer | ckonstanski <kostcarl@isu.edu> | 2026-07-31 15:02:43 -0600 |
| commit | ac958899c897fd0aec9169660526a44eca360c81 (patch) | |
| tree | 758ec059b527a35733951081a4697343099287c8 /lisp | |
| parent | 36413ccbb8b76ec1a6076876f518831613c5dcb8 (diff) | |
stuff
Diffstat (limited to 'lisp')
| -rw-r--r-- | lisp/service/resume-service.lisp | 120 | ||||
| -rw-r--r-- | lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs | 161 |
2 files changed, 11 insertions, 270 deletions
diff --git a/lisp/service/resume-service.lisp b/lisp/service/resume-service.lisp index 53cb554..322ab30 100644 --- a/lisp/service/resume-service.lisp +++ b/lisp/service/resume-service.lisp @@ -38,116 +38,7 @@ ((form :initarg :form :initform nil :accessor form)) - (:documentation "")) - - ;; resume - - (defun resume-json () - (with-auth (instance resume-service "resume-view") - (setf (title instance) "Resumes"))) - - (defclass resume/view-service (resume-service resume) - ((resumes :initarg :resumes - :initform nil - :accessor resumes) - (location-p :initform nil)) - (:documentation "")) - - (defun resume-view-json () - (with-auth (instance resume/view-service "resume-view") - (with-resume-database - (let ((resume-pkg (make-instance 'resume-pkg)) - (user (get-user))) - (setf (resumes instance) (get-records resume-pkg (make-instance 'resume :user_id (id user)) "name asc")))) - (sanitize-rest-json instance) - (loop for resume in (resumes instance) - do (sanitize-json resume)))) - - (defclass resume/add-service (resume/view-service) - ((form :initarg :form - :initform nil - :accessor form)) - (:documentation "")) - - (defun resume-add-json () - (with-auth (instance resume/add-service "resume-modify") - (setf (title instance) "Resume - Add") - (setf (form instance) (make-form "resume-add-form" - nil - t - `((:name "name" :label "Name" :field-type "text" :required "required") - (:label "Add Resume" :field-type "button" :onclick "on_resume_add_submit_clicked()")))))) - - (defun resume-add-submit-json (name) - (declare (special name)) - (with-auth (instance resume/add-service "resume-modify") - (with-resume-database - (handler-case - (let* ((resume-pkg (make-instance 'resume-pkg)) - (user (get-user)) - (resume (make-instance 'resume :user_id (id user)))) - (loop for param in (remove-if (lambda (x) - (intersection `(,x) '(id))) - (sb-introspect:function-lambda-list #'resume-add-submit-json)) - do (setf (slot-value resume param) (symbol-value param))) - (insert-record resume-pkg resume) - (setf (session-value :message) (format nil "Resume \"~a\" created successfully." (name resume)))) - (error (e) - (setf (session-value :errormsg) (format nil "Error creating resume \"~a\". ~a" name e))))))) - - (defclass resume/modify-service (resume/add-service) - () - (:documentation "")) - - (defun resume-modify-json (id) - (with-auth (instance resume/modify-service "resume-modify") - (setf (title instance) "Resume - Modify") - (with-resume-database - (let* ((resume-pkg (make-instance 'resume-pkg)) - (user (get-user)) - (resume (get-record resume-pkg (make-instance 'resume :id id :user_id (id user))))) - (if resume - (setf (form instance) (make-form "resume-modify-form" - nil - t - `((:name "id" :field-type "hidden" :value ,(id resume) :required "required") - (:name "name" :label "Name" :field-type "text" :value ,(name resume) :required "required") - (:label "Modify Resume" :field-type "button" :onclick "on_resume_modify_submit_clicked()")))) - (setf (session-value :errormsg) "Error: could not modify resume. Not found.")))))) - - (defun resume-modify-submit-json (id name) - (declare (special id name)) - (with-auth (instance resume/modify-service "resume-modify") - (setf (title instance) "Resume - Modify") - (with-resume-database - (handler-case - (let* ((resume-pkg (make-instance 'resume-pkg)) - (user (get-user)) - (resume (get-record resume-pkg (make-instance 'resume :id id :user_id (id user))))) - (loop for param in (remove-if (lambda (x) - (intersection `(,x) '(id))) - (sb-introspect:function-lambda-list #'resume-modify-submit-json)) - do (setf (slot-value resume param) (symbol-value param))) - (update-record resume-pkg resume) - (setf (session-value :message) (format nil "Resume \"~a\" modified successfully." (name resume)))) - (error (e) - (setf (session-value :errormsg) (format nil "Error modifying resume \"~a\". ~a" name e))))))) - - (defclass resume/delete-service (resume/add-service) - () - (:documentation "")) - - (defun resume-delete-json (id) - (with-auth (instance resume/delete-service "resume-modify") - (with-resume-database - (let* ((resume-pkg (make-instance 'resume-pkg)) - (user (get-user)) - (resume (get-record resume-pkg (make-instance 'resume :id id :user_id (id user))))) - (if resume - (progn - (delete-resume resume-pkg resume) - (setf (session-value :message) (format nil "Resume \"~a\" deleted successfully." (name resume)))) - (setf (session-value :errormsg) "Error: could not delete resume: not found."))))))) + (:documentation ""))) ;; macros @@ -287,6 +178,15 @@ needs to JOIN with other data." (define-endpoint (,(format nil "/resume/~a/modify/submit" component-lcase) :method :post) (&post (id :parameter-type 'integer) ,@rest-args) ,func-modify-submit-s ,@(append '(id) arg-names)) (define-endpoint (,(format nil "/resume/~a/delete/:id" component-lcase) :method :delete) (&path (id 'integer)) ,func-delete-s id)))) +(define-resume-component (resume + ((name :parameter-type 'string)) + `((:name "name" :label "Name" :field-type "text" :required "required") + (:label "Add RESUME" :field-type "button" :onclick "on_resume_add_submit_clicked()")) + `((:name "id" :field-type "hidden" :value ,(id resume) :required "required") + (:name "name" :label "Name" :field-type "text" :value ,(name resume) :required "required") + (:label "Modify RESUME" :field-type "button" :onclick "on_resume_modify_submit_clicked()")) + "name asc")) + (define-resume-component (contactinfo ((address :parameter-type 'string) (city :parameter-type 'string) (state_id :parameter-type 'integer) (phone :parameter-type 'string) (email :parameter-type 'string) (url :parameter-type 'string) (visastatus_id :parameter-type 'integer)) `((:name "address" :label "Address" :field-type "text" :required "required") diff --git a/lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs b/lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs index 0035ea0..a569f6a 100644 --- a/lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs +++ b/lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs @@ -130,29 +130,6 @@ (declare on-users-delete-clicked) (declare handler-users-delete) (declare render-users-delete) -(declare template-resume) -(declare handler-resume) -(declare render-resume) -(declare template-resume-view) -(declare handler-resume-view) -(declare render-resume-view) -(declare on-resume-add-clicked) -(declare template-resume-add) -(declare handler-resume-add) -(declare render-resume-add) -(declare on-resume-add-submit-clicked) -(declare handler-resume-add-submit) -(declare render-resume-add-submit) -(declare on-resume-modify-clicked) -(declare template-resume-modify) -(declare handler-resume-modify) -(declare render-resume-modify) -(declare on-resume-modify-submit-clicked) -(declare handler-resume-modify-submit) -(declare render-resume-modify-submit) -(declare on-resume-delete-clicked) -(declare handler-resume-delete) -(declare render-resume-delete) (declare on-menu-clicked) (declare handler-location) (declare goto-location) @@ -1095,145 +1072,9 @@ [:span {:class "glyphicon glyphicon-remove"}] "Cancel"]]]]]) -(defn handler-resume [response] - (let [jsonobj (js->clj (js/JSON.parse response))] - (notifications jsonobj) - (dommy/set-html! (dommy/sel1 :#body) (template-resume jsonobj)) - (render-resume-view))) - -(defn render-resume [] - (GET "/resume/resume" {:handler handler-resume})) - -;; resume-view - - -(hiccups/defhtml template-resume-view [jsonobj] - [:div {:style "text-align: right"} - [:img {:src "/static/images/add.png" - :style "cursor:pointer; cursor:hand" - :onclick (str (namespace ::x) ".on_resume_add_clicked()")}]] - [:table {:class "table table-striped table-hover table-sm"} - [:thead - [:tr - [:th {:scope "col"} "Name"] - [:th {:scope "col"} "Mod"] - [:th {:scope "col"} "Del"]]] - [:tbody - (for [resume (get jsonobj "resumes")] - [:tr - [:td (get resume "name")] - [:td {:width "30"} - [:img {:src "/static/images/modify.png" - :onclick (str (namespace ::x) ".on_resume_modify_clicked(" (get resume "id") ")")}]] - [:td {:width "30"} - [:img {:src "/static/images/delete.png" - :onclick (str (namespace ::x) ".on_resume_delete_clicked(" (get resume "id") ", '" (get resume "name") "')")}]]])]]) - -(defn handler-resume-view [response] - (let [jsonobj (js->clj (js/JSON.parse response))] - (dommy/set-html! (dommy/sel1 :#content) (template-resume-view jsonobj)))) - -(defn render-resume-view [] - (GET "/resume/resume/view" {:handler handler-resume-view})) - -;; resume-add - -(defn on-resume-add-clicked [] - (render-resume-add)) - -(hiccups/defhtml template-resume-add [jsonobj] - (ck-form/template-generic-form (get jsonobj "form") (namespace ::x))) - -(defn handler-resume-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-resume-add jsonobj)) - (.modal (jquery "#modify")))) - -(defn render-resume-add [] - (POST "/resume/resume/add" {:handler handler-resume-add})) - -;; resume-add-submit - -(defn on-resume-add-submit-clicked [] - (when (-> (jquery "#resume-add-form") - (.get "0") - (.checkValidity)) - (.modal (jquery "#modify") "hide") - (render-resume-add-submit))) - -(defn handler-resume-add-submit [response] - (let [jsonobj (js->clj (js/JSON.parse response))] - (auth-notifications jsonobj) - (on-menu-clicked "/resume/resume"))) - -(defn render-resume-add-submit [] - (POST "/resume/resume/add/submit" - {:format :raw - :params {:name (dommy/value (dommy/sel1 :#name))} - :handler handler-resume-add-submit})) - -;; resume-modify - -(defn on-resume-modify-clicked [id] - (render-resume-modify id)) - -(hiccups/defhtml template-resume-modify [jsonobj] - (ck-form/template-generic-form (get jsonobj "form") (namespace ::x))) - -(defn handler-resume-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-resume-modify jsonobj)) - (.modal (jquery "#modify")))) - -(defn render-resume-modify [id] - (POST "/resume/resume/modify" - {:format :raw - :params {:id id} - :handler handler-resume-modify})) - -;; resume-modify-submit - -(defn on-resume-modify-submit-clicked [] - (when (-> (jquery "#resume-modify-form") - (.get "0") - (.checkValidity)) - (.modal (jquery "#modify") "hide") - (render-resume-modify-submit))) - -(defn handler-resume-modify-submit [response] - (let [jsonobj (js->clj (js/JSON.parse response))] - (auth-notifications jsonobj) - (on-menu-clicked "/resume/resume"))) - -(defn render-resume-modify-submit [] - (POST "/resume/resume/modify/submit" - {:format :raw - :params {:id (dommy/value (dommy/sel1 :#id)) - :name (dommy/value (dommy/sel1 :#name))} - :handler handler-resume-modify-submit})) - -;; resume-delete - -(defn on-resume-delete-clicked [id name] - (when (js/confirm (str "Are you sure you want to delete " name "? This action cannot be undone.")) - (render-resume-delete id))) - -(defn handler-resume-delete [response] - (let [jsonobj (js->clj (js/JSON.parse response))] - (auth-notifications jsonobj) - (on-menu-clicked "/resume/resume"))) - -(defn render-resume-delete [id] - (DELETE (str "/resume/resume/delete/" id) - {:format :raw - :handler handler-resume-delete})) - ;; components +(define-resume-component "resume") (define-resume-component "contactinfo") (define-resume-component "education") (define-resume-component "language") |
