summaryrefslogtreecommitdiff
path: root/lisp
diff options
context:
space:
mode:
authorckonstanski <kostcarl@isu.edu>2026-07-31 15:02:43 -0600
committerckonstanski <kostcarl@isu.edu>2026-07-31 15:02:43 -0600
commitac958899c897fd0aec9169660526a44eca360c81 (patch)
tree758ec059b527a35733951081a4697343099287c8 /lisp
parent36413ccbb8b76ec1a6076876f518831613c5dcb8 (diff)
stuff
Diffstat (limited to 'lisp')
-rw-r--r--lisp/service/resume-service.lisp120
-rw-r--r--lisp/webapps/resume/clojurescript/resume/src/resume/core.cljs161
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")