more tweaks on dialogs

This commit is contained in:
David Botton 2021-02-23 20:45:36 -05:00
parent 62833822e7
commit 97e1e61004
3 changed files with 35 additions and 79 deletions

View file

@ -1209,8 +1209,6 @@ interactions. Use window-end-modal to undo."))
;; Implementation - Dialog Boxes ;; Implementation - Dialog Boxes
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;; to add - form by list
(defun alert-dialog (obj content &key (modal t) (defun alert-dialog (obj content &key (modal t)
(title "About") (title "About")
(left nil) (top nil) (left nil) (top nil)
@ -1246,6 +1244,7 @@ interactions. Use window-end-modal to undo."))
(setf (visiblep win) t) (setf (visiblep win) t)
(when modal (when modal
(window-make-modal win)) (window-make-modal win))
(focus btn)
(set-on-click btn (lambda (obj) (set-on-click btn (lambda (obj)
(declare (ignore obj)) (declare (ignore obj))
(window-end-modal win) (window-end-modal win)
@ -1301,6 +1300,7 @@ Calls on-input with input box contents or nil if canceled."
(setf (visiblep win) t) (setf (visiblep win) t)
(when modal (when modal
(window-make-modal win)) (window-make-modal win))
(focus input)
(set-on-click cancel (lambda (obj) (set-on-click cancel (lambda (obj)
(declare (ignore obj)) (declare (ignore obj))
(window-close win)) (window-close win))
@ -1363,6 +1363,7 @@ Calls on-input with t if confirmed or nil if canceled."
(setf (visiblep win) t) (setf (visiblep win) t)
(when modal (when modal
(window-make-modal win)) (window-make-modal win))
(focus ok)
(set-on-click cancel (lambda (obj) (set-on-click cancel (lambda (obj)
(declare (ignore obj)) (declare (ignore obj))
(window-close win)) (window-close win))
@ -1417,7 +1418,7 @@ with a-list of field name to value if confirmed or nil if canceled."
:title title :title title
:content (format nil :content (format nil
"<div class='w3-panel'> "<div class='w3-panel'>
<center>~A</center><br> ~A
<form class='w3-container' onSubmit='return false;'> <form class='w3-container' onSubmit='return false;'>
~A ~A
<br><center> <br><center>
@ -1425,7 +1426,9 @@ with a-list of field name to value if confirmed or nil if canceled."
<button class='w3-button w3-black' style='width:7em' id='~A-cancel'>~A</button> <button class='w3-button w3-black' style='width:7em' id='~A-cancel'>~A</button>
</center> </center>
</form> </form>
</div>" content </div>" (if content
(format nil "<center>~A</center><br>" content)
"")
fls fls
html-id ok-text ; ok html-id ok-text ; ok
html-id cancel-text) ; cancel html-id cancel-text) ; cancel
@ -1447,6 +1450,9 @@ with a-list of field name to value if confirmed or nil if canceled."
(setf (visiblep win) t) (setf (visiblep win) t)
(when modal (when modal
(window-make-modal win)) (window-make-modal win))
(js-execute obj (format nil "$('[name=~A-~A]').focus()"
html-id
(cadar fields)))
(set-on-click cancel (lambda (obj) (set-on-click cancel (lambda (obj)
(declare (ignore obj)) (declare (ignore obj))
(window-close win)) (window-close win))

View file

@ -14,89 +14,38 @@
:documentation "Access to database connection"))) :documentation "Access to database connection")))
(defun on-db-open (obj) (defun on-db-open (obj)
(let* ((app (connection-data-item obj "app-data")) (let* ((app (connection-data-item obj "app-data")))
(win (create-gui-window obj (form-dialog obj nil
:title "Open Database" '(("Database Type" :db-type (("SQLite3" :sqlite3)))
:content ("Database Name" :db-name))
"<form id=odb-form class='w3-container' onSubmit='return false;'> (lambda (results)
<label class='w3-text-black'><b>Database Type</b></label> (when results
<select class='w3-select w3-border' name='db-type'> (format t "open db : ~A" (cadr (assoc :db-name results)))
<option value='sqlite3'>SQLite3</option> (setf (db-connection app)
<option disabled value='mysql'>MySQL</option> (sqlite:connect (cadr (assoc :db-name results))))
<option disabled value='postgres'>Postgres</option> (setf (title (html-document (body app)))
</select> (format nil "CLOG DB Admin - ~A" (cadr (assoc :db-name results))))))
:title "Open Database" :height 250)))
<label class='w3-text-black'><b>Database Name</b></label>
<input class='w3-input w3-border' type='text' name='db-name'>
<label class='w3-text-black'><b>User Name</b></label>
<input class='w3-input w3-border' type='text' name='db-user' disabled>
<label class='w3-text-black'><b>Password</b></label>
<input class='w3-input w3-border' type='password' name='db-pass' disabled>
<label class='w3-text-black'><b>Host</b></label>
<input class='w3-input w3-border' type='password' name='db-host' disabled>
<label class='w3-text-black'><b>Port</b></label>
<input class='w3-input w3-border' type='password' name='db-port' disabled>
<button class='w3-btn w3-black' id=odb-open >Open</button>
<button class='w3-btn w3-black' id=odb-cancel>Cancel</button>
</form>"
:width 400
:height 450
:hidden t)))
(window-center win)
(setf (visiblep win) t)
(set-on-click (attach-as-child obj "odb-open")
(lambda (obj)
(format t "open db : ~A" (name-value obj "db-name"))
(setf (db-connection app)
(sqlite:connect (name-value obj "db-name")))
(setf (title (html-document (body app)))
(format nil "CLOG DB Admin - ~A" (name-value obj "db-name")))
(window-close win))
:one-time t)
(set-on-click (attach-as-child obj "odb-cancel") (lambda (obj)
(window-close win)))))
(defun on-db-close (obj) (defun on-db-close (obj)
(let ((app (connection-data-item obj "app-data"))) (let ((app (connection-data-item obj "app-data")))
(when (db-connection app) (when (db-connection app)
(sqlite:disconnect (db-connection app))) (sqlite:disconnect (db-connection app))
(setf (db-connection app) nil))
(print "db disconnected") (print "db disconnected")
(setf (title (html-document (body app))) "CLOG DB Admin"))) (setf (title (html-document (body app))) "CLOG DB Admin")))
(defun on-query-results (obj) (defun on-query-results (obj)
(let ((app (connection-data-item obj "app-data")) (let ((app (connection-data-item obj "app-data")))
(win (create-gui-window obj (form-dialog obj nil
:title "Enter query:" '(("Query" :db-query))
:content (lambda (results)
"<form id=odb-form class='w3-container' onSubmit='return false;'> (when results
(format t "open query : ~A~%~%" (cadr (assoc :db-query results)))
<label class='w3-text-black'><b>Query</b></label>
<input class='w3-input w3-border' type='text' name='db-query'>
<button class='w3-btn w3-black' id=odb-open >Open</button>
<button class='w3-btn w3-black' id=odb-cancel>Cancel</button>
</form>"
:width 400
:height 200
:hidden t)))
(window-center win)
(setf (visiblep win) t)
(set-on-click (attach-as-child obj "odb-open")
(lambda (obj)
(format t "open query : ~A~%~%" (name-value obj "db-query"))
(print (sqlite:execute-to-list (print (sqlite:execute-to-list
(db-connection app) (db-connection app)
(name-value obj "db-query"))) (cadr (assoc :db-query results))))))
(window-close win))) :title "Run Database Query" :height 200)))
(set-on-click (attach-as-child obj "odb-cancel") (lambda (obj)
(window-close win)))))
(defun on-help-about (obj) (defun on-help-about (obj)
(let ((about (create-gui-window obj (let ((about (create-gui-window obj

View file

@ -83,7 +83,8 @@
("State" "st") ("State" "st")
("Zip" "zip")) ("Zip" "zip"))
(lambda (results) (lambda (results)
(alert-dialog obj results)))) (alert-dialog obj results))
:height 550))
(defun on-help-about (obj) (defun on-help-about (obj)
(let* ((about (create-gui-window obj (let* ((about (create-gui-window obj