mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-06 10:40:45 -08:00
Use text areas for events
This commit is contained in:
parent
89c923b8f8
commit
312400d0d6
4 changed files with 31 additions and 12 deletions
|
|
@ -357,7 +357,12 @@ the displayed option."
|
||||||
;; Implementation - clog-db-table
|
;; Implementation - clog-db-table
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
||||||
(defclass clog-db-table (clog-one-row clog-table)()
|
(defclass clog-db-table (clog-one-row clog-table)
|
||||||
|
((on-header
|
||||||
|
:accessor on-header
|
||||||
|
:initform nil
|
||||||
|
:documentation "on-header event, called after get-row and
|
||||||
|
before outputing rows. (private)"))
|
||||||
(:documentation "CLOG Database Table View Object"));
|
(:documentation "CLOG Database Table View Object"));
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;
|
||||||
|
|
@ -395,6 +400,8 @@ the displayed option."
|
||||||
;; loop through fetches
|
;; loop through fetches
|
||||||
(setf (rowid obj) nil)
|
(setf (rowid obj) nil)
|
||||||
(setf (inner-html obj) "")
|
(setf (inner-html obj) "")
|
||||||
|
(when (on-header obj)
|
||||||
|
(funcall (on-header obj) obj))
|
||||||
(loop
|
(loop
|
||||||
(let ((row (dbi:fetch (queryid obj))))
|
(let ((row (dbi:fetch (queryid obj))))
|
||||||
(unless row
|
(unless row
|
||||||
|
|
@ -414,3 +421,10 @@ the displayed option."
|
||||||
(defmethod clear-row ((obj clog-db-table) panel)
|
(defmethod clear-row ((obj clog-db-table) panel)
|
||||||
(setf (inner-html obj) "")
|
(setf (inner-html obj) "")
|
||||||
(call-next-method))
|
(call-next-method))
|
||||||
|
|
||||||
|
(defgeneric set-on-header (clog-db-table on-header-handler)
|
||||||
|
(:documentation "Set the ON-HEADER-HANDLER for CLOG-DB-TABLE. If ON-HEADER-HANDLER
|
||||||
|
is nil unbind the event. The on-header event is called before the first row is output
|
||||||
|
after the table is cleared to all adding a header information to the table."))
|
||||||
|
(defmethod set-on-header ((obj clog-db-table) on-header-handler)
|
||||||
|
(setf (on-header obj) on-header-handler))
|
||||||
|
|
|
||||||
|
|
@ -572,7 +572,8 @@ embedded in a native template application.)"
|
||||||
(option-field generic-function)
|
(option-field generic-function)
|
||||||
|
|
||||||
(clog-db-table class)
|
(clog-db-table class)
|
||||||
(create-db-table generic-function))
|
(create-db-table generic-function)
|
||||||
|
(set-on-header generic-function))
|
||||||
|
|
||||||
(defsection @clog-panels (:title "CLOG Panels")
|
(defsection @clog-panels (:title "CLOG Panels")
|
||||||
"CLOG-Panel - CLOG Panels"
|
"CLOG-Panel - CLOG Panels"
|
||||||
|
|
|
||||||
|
|
@ -1615,6 +1615,8 @@
|
||||||
(attribute control "data-clog-one-row-columns"))))
|
(attribute control "data-clog-one-row-columns"))))
|
||||||
:events ((:name "on-fetch"
|
:events ((:name "on-fetch"
|
||||||
:parameters "target")
|
:parameters "target")
|
||||||
|
(:name "on-header"
|
||||||
|
:parameters "target")
|
||||||
,@*events-element*)
|
,@*events-element*)
|
||||||
:properties ((:name "table name"
|
:properties ((:name "table name"
|
||||||
:attr "data-clog-one-row-table")
|
:attr "data-clog-one-row-table")
|
||||||
|
|
|
||||||
|
|
@ -646,28 +646,30 @@ not a temporary attached one when using select-control."
|
||||||
,(getf event :parameters)
|
,(getf event :parameters)
|
||||||
,(getf event :setup)
|
,(getf event :setup)
|
||||||
,(lambda (obj)
|
,(lambda (obj)
|
||||||
(let ((txt (text obj)))
|
(let ((txt (text-value obj)))
|
||||||
(if (or (equal txt "")
|
(if (or (equal txt "")
|
||||||
(equalp txt "undefined"))
|
(equalp txt "undefined"))
|
||||||
(remove-attribute control attr)
|
(remove-attribute control attr)
|
||||||
(setf (attribute control attr) (text obj))))))
|
(setf (attribute control attr) (text-value obj))))))
|
||||||
events)))
|
events)))
|
||||||
(dolist (item events)
|
(dolist (item events)
|
||||||
(let* ((tr (create-table-row table))
|
(let* ((tr (create-table-row table))
|
||||||
(td1 (create-table-column tr :content (first item)))
|
(td1 (create-table-column tr :content (first item)))
|
||||||
(td2 (if (second item)
|
(td2 (create-table-column tr))
|
||||||
(create-table-column tr :content (second item))
|
(editor nil))
|
||||||
(create-table-column tr))))
|
|
||||||
(setf (width td1) "30%")
|
(setf (width td1) "30%")
|
||||||
(setf (width td2) "70%")
|
(setf (width td2) "70%")
|
||||||
(set-border td1 "1px" :dotted :black)
|
(set-border td1 "1px" :dotted :black)
|
||||||
(setf (spellcheckp td2) nil)
|
|
||||||
(setf (advisory-title td1) (format nil "params: panel ~A" (third item)))
|
(setf (advisory-title td1) (format nil "params: panel ~A" (third item)))
|
||||||
(cond ((fourth item)
|
(cond ((fourth item)
|
||||||
|
(setf editor td2)
|
||||||
(setf (editablep td2) (funcall (fourth item) control td1 td2)))
|
(setf (editablep td2) (funcall (fourth item) control td1 td2)))
|
||||||
(t
|
(t
|
||||||
(setf (editablep td2) t)))
|
(setf editor (create-text-area td2))
|
||||||
(set-on-blur td2
|
(setf (spellcheckp editor) nil)
|
||||||
|
(setf (width editor) "95%"))) ; leave space for scroll bar
|
||||||
|
(setf (text-value editor) (second item))
|
||||||
|
(set-on-blur editor
|
||||||
(lambda (obj)
|
(lambda (obj)
|
||||||
(funcall (fifth item) obj)))))))))
|
(funcall (fifth item) obj)))))))))
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue