default form values

This commit is contained in:
David Botton 2021-02-25 12:14:28 -05:00
parent f925d720de
commit 9fe95bbc5e
3 changed files with 61 additions and 23 deletions

View file

@ -1425,11 +1425,28 @@ Calls on-input with t if confirmed or nil if canceled."
(width 400) (height 500)
(client-movement nil)
(html-id nil))
"Create a form dialog box with CONTENT followed by FIELDS centered.
Fields is an a-list of field names to field descriptions, a third element
can be added to state field is :filename followed by default dir or
is a select followed by an a-list of option Text to Value. Calls on-input
with a-list of field name to value if confirmed or nil if canceled."
"Create a form dialog box with CONTENT followed by FIELDS.
Fields is a list of lists each list has:
(1) Field name - Used for (name attribute)
(2) Field description - Used for label
(3) Field type - Optional (defaults to :text)
(4) Field type options - Optional
Special field types
Field Type Field Type Options
============= ==================
:filename default dir -- NOTE: This is _server_ side!
:checkbox t if checked
:radiobox a-list ((label name))
:select a-list ((label name))
:text value
(any text input types also work :email, :tel, etc.
see FORM-ELEMENT-TYPE)
Calls on-input after OK or Cancel with a-list of field name to value
if confirmed or nil if canceled."
(unless html-id
(setf html-id (clog-connection:generate-id)))
(let* ((body (connection-data-item obj "clog-body"))
@ -1465,19 +1482,26 @@ with a-list of field name to value if confirmed or nil if canceled."
((eq (third l) :checkbox)
(format nil
"<div><input class='w3-check' type='checkbox' ~
name='~A-~A' id='~A-~A'> ~
name='~A-~A' id='~A-~A' ~A> ~
<label class='w3-text-black' for='~A-~A'>~
<b>~A</b></label>~
</div>"
html-id (second l) html-id (second l)
(if (fourth l)
"checked"
"")
html-id (second l)
(first l)))
((third l)
(format nil
"<div><label class='w3-text-black'><b>~A</b></label>~
<input class='w3-input w3-border' type='~A' name='~A-~A' id='~A-~A'></div>"
<input class='w3-input w3-border' type='~A'~
name='~A-~A' id='~A-~A' value='~A'></div>"
(first l) (third l)
html-id (second l) html-id (second l)))
html-id (second l) html-id (second l)
(if (fourth l)
(fourth l)
"")))
(t
(format nil
"<div><label class='w3-text-black'><b>~A</b></label>~

View file

@ -54,23 +54,27 @@
(setf (db-connection app) nil))
(setf (title (html-document (body app))) "CLOG DB Admin")))
(defun results-window (app sql &key (title nil))
(defun results-window (app sql &key (title nil) (on-click-row nil))
(unless title
(setf title sql))
(let* ((prep (sqlite:prepare-statement (db-connection app) sql))
(st (sqlite:execute-to-list (db-connection app) sql))
(win (create-gui-window (body app)
:width 500
:height 400
:title title))
(body (window-content win))
(rt (create-table body :class "w3-table-all"))
(th (create-table-head rt :class "w3-green"))
(let* ((prep (sqlite:prepare-statement (db-connection app) sql))
(st (sqlite:execute-to-list (db-connection app) sql))
(win (create-gui-window (body app)
:width 500
:height 400
:title title))
(body (window-content win))
(rt (create-table body :class "w3-table-all w3-hover"))
(th (create-table-head rt :class "w3-green"))
(names (sqlite:statement-column-names prep))
(cr))
(dolist (name (sqlite:statement-column-names prep))
(dolist (name names)
(create-table-heading th :content name))
(dolist (row st)
(setf cr (create-table-row rt))
(when on-click-row
(set-on-click cr (lambda (obj)
(funcall on-click-row obj names row))))
(dolist (value row)
(create-table-column cr :content value)))))
@ -96,11 +100,21 @@
(results-window app "select changes()" :title (cadr (assoc :db-query results)))))
:title "Run Database Query" :height 200))))
(defun edit-record (obj names data)
(defun on-query-tables (obj)
(let ((app (connection-data-item obj "app-data")))
(when (db-connection app)
(results-window app "select tbl_name as 'Table', sql as SQL from sqlite_master where type='table'"
:title "Double Click for Table"))))
:title "Click for Table"
:on-click-row (lambda (obj names data)
(results-window app
(format nil "select rowid,* from ~A"
(car data))
:title (format nil "Click to Edit Row of ~A"
(car data))
:on-click-row #'edit-record))))))
(defun on-help-about (obj)
(let ((about (create-gui-window obj

View file

@ -82,8 +82,8 @@
("Brown" "brown")
("Green" "green")
("Other" "other")))
("Send Mail" "send-mail" :checkbox)
("Name" "name")
("Send Mail" "send-mail" :checkbox t)
("Name" "name" :text "Real Name")
("Address" "address")
("City" "city")
("State" "st")