mirror of
https://github.com/rabbibotton/clog.git
synced 2025-12-06 02:30:42 -08:00
event drop down now shows if events exist or not
This commit is contained in:
parent
a9e778c965
commit
4e539c7303
4 changed files with 113 additions and 79 deletions
|
|
@ -170,6 +170,15 @@ after attachment is changed to one unique to this session."))
|
|||
attribute-name (escape-string value)))
|
||||
value)
|
||||
|
||||
(defgeneric has-attribute (clog-element attribute-name)
|
||||
(:documentation "Returns t if ATTRIBUTE-NAME exists on CLOG-ELEMENT"))
|
||||
|
||||
(defmethod has-attribute ((obj clog-element) attribute-name)
|
||||
(when (equal (jquery-query obj (format nil "attr('~A')!==undefined"
|
||||
attribute-name))
|
||||
"true")
|
||||
t))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Placement - clog-element
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
|
|
|||
|
|
@ -1083,11 +1083,18 @@ optionally fill in with contents of data-list."))
|
|||
;;;;;;;;;;;;;;;;;
|
||||
|
||||
(defgeneric select-text (clog-obj)
|
||||
(:documentation "Returns the text of selected item."))
|
||||
(:documentation "Get/Setf the text of selected item."))
|
||||
|
||||
(defmethod select-text ((obj clog-obj))
|
||||
(clog-connection:query (connection-id obj)
|
||||
(format nil "$('#~A option:selected').text()" (html-id obj))))
|
||||
(js-query obj (format nil "$('#~A option:selected').text()" (html-id obj))))
|
||||
|
||||
(defgeneric (setf select-text) (value clog-obj)
|
||||
(:documentation "Setf the text of selected item."))
|
||||
|
||||
(defmethod (setf select-text) (value (obj clog-obj))
|
||||
(js-execute obj (format nil "$('#~A option:selected').text('~A')"
|
||||
(html-id obj)
|
||||
(escape-string value))))
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; Implementation - clog-option
|
||||
|
|
|
|||
|
|
@ -202,6 +202,7 @@ embedded in a native template application.)"
|
|||
(set-styles generic-function)
|
||||
(attribute generic-function)
|
||||
(remove-attribute generic-function)
|
||||
(has-attribute generic-function)
|
||||
|
||||
"CLOG-Element - Properties"
|
||||
(access-key generic-function)
|
||||
|
|
|
|||
|
|
@ -760,36 +760,59 @@ not a temporary attached one when using select-control."
|
|||
|
||||
(defun on-populate-control-events-win (obj)
|
||||
"Populate the control events for the current control"
|
||||
;; obj if current-control is nil must be content
|
||||
(let* ((app (connection-data-item obj "builder-app-data"))
|
||||
(event-win (control-events-win app))
|
||||
(elist (events-list app))
|
||||
(control (if (current-control app)
|
||||
(current-control app)
|
||||
obj)))
|
||||
(control (current-control app)))
|
||||
(when event-win
|
||||
(setf (inner-html elist) "")
|
||||
(remove-attribute elist "data-current-event")
|
||||
(set-on-blur (event-editor app) nil)
|
||||
(set-on-change elist nil)
|
||||
(let ((info (control-info (attribute control "data-clog-type"))))
|
||||
(add-select-option elist "" "Select Event")
|
||||
(setf (inner-html elist) "")
|
||||
(remove-attribute elist "data-current-event")
|
||||
(setf (text-value (event-editor app)) "")
|
||||
(labels ((on-blur (obj)
|
||||
(when control
|
||||
(let ((info (control-info (attribute control "data-clog-type"))))
|
||||
(labels ((populate-options (&key (current ""))
|
||||
(set-on-change elist nil)
|
||||
(setf (inner-html elist) "")
|
||||
(add-select-option elist "" "Select Event")
|
||||
(dolist (event (getf info :events))
|
||||
(let ((attr (format nil "data-~A" (getf event :name))))
|
||||
(add-select-option elist
|
||||
(getf event :name)
|
||||
(format nil "~A ~A (panel ~A)"
|
||||
(if (has-attribute control attr)
|
||||
"■ "
|
||||
"□ ")
|
||||
(getf event :name)
|
||||
(getf event :parameters))
|
||||
:selected (equal attr current))))
|
||||
(set-on-change elist #'on-change))
|
||||
(on-blur (obj)
|
||||
(declare (ignore obj))
|
||||
(set-on-blur (event-editor app) nil)
|
||||
(let ((attr (attribute elist "data-current-event")))
|
||||
(unless (equalp attr "undefined")
|
||||
(let ((txt (text-value (event-editor app))))
|
||||
(let ((opt (select-text elist))
|
||||
(txt (text-value (event-editor app))))
|
||||
(setf (char opt 0) #\space)
|
||||
(setf opt (string-left-trim "#\space" opt))
|
||||
(cond ((or (equal txt "")
|
||||
(equalp txt "undefined"))
|
||||
(setf (select-text elist) (format nil "~A ~A" (code-char 9633) opt))
|
||||
(remove-attribute control attr))
|
||||
(t
|
||||
(setf (select-text elist) (format nil "~A ~A" (code-char 9632) opt))
|
||||
(setf (attribute control attr) (text-value (event-editor app))))))
|
||||
(jquery-execute (get-placer control) "trigger('clog-builder-snap-shot')")))))
|
||||
(set-on-change elist (lambda (obj)
|
||||
(jquery-execute (get-placer control) "trigger('clog-builder-snap-shot')")))
|
||||
(set-on-blur (event-editor app) #'on-blur))
|
||||
(on-change (obj)
|
||||
(declare (ignore obj))
|
||||
(set-on-blur (event-editor app) nil)
|
||||
(let ((event (select-value elist "clog-events")))
|
||||
(cond ((equal event "")
|
||||
(set-on-blur (event-editor app) nil)
|
||||
(remove-attribute elist "data-current-event")
|
||||
(setf (text-value (event-editor app)) ""))
|
||||
(t
|
||||
(let* ((attr (format nil "data-~A" event))
|
||||
|
|
@ -799,21 +822,15 @@ not a temporary attached one when using select-control."
|
|||
""
|
||||
txt))
|
||||
(setf (attribute elist "data-current-event") attr)
|
||||
(focus (event-editor app))
|
||||
(set-on-blur (event-editor app) #'on-blur))))))))
|
||||
(dolist (event (getf info :events))
|
||||
(add-select-option elist
|
||||
(getf event :name)
|
||||
(format nil "~A (panel ~A)"
|
||||
(getf event :name)
|
||||
(getf event :parameters))))))))
|
||||
(set-on-blur (event-editor app) #'on-blur)))))))
|
||||
(populate-options)))))))
|
||||
|
||||
(defun on-populate-control-properties-win (obj &key win)
|
||||
"Populate the control properties for the current control"
|
||||
;; obj if current-control is nil must be content
|
||||
(with-sync-event (obj)
|
||||
(let ((app (connection-data-item obj "builder-app-data")))
|
||||
(on-populate-control-events-win obj)
|
||||
(let ((app (connection-data-item obj "builder-app-data")))
|
||||
(let* ((prop-win (control-properties-win app))
|
||||
(control (if (current-control app)
|
||||
(current-control app)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue