mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-06 02:30:42 -08:00
default form values
This commit is contained in:
parent
f925d720de
commit
9fe95bbc5e
3 changed files with 61 additions and 23 deletions
|
|
@ -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>~
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue