Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (labels ((make-button (&rest options)
- (new (dijit.form.*button (object-from-list options)))))
- (let* ((result-number-node (document.create-text-node "0"))
- (mod-result-value (let ((x 0)) (lambda (modifier) (setf x (modifier x)) (setf result-number-node.node-value (.to-string x))))))
- (creation
- :div
- (list
- (document.create-text-node "(Press some buttons to add math operations and apply them)")
- (table-creation (list (tr (list (td (document.create-text-node "Calculation Accumulator:")) (td (progn result-number-node))))))
- (table-creation
- (append
- (map
- (lambda (op)
- (destructuring-bind (op-string op-func) op
- (let* ((var-table (table-creation (list (tr ))))
- (get-var-table-row (lambda () (aref (slot-value (aref var-table.t-bodies 0) 'rows) 0)))
- (add-button-id (get-new-label))
- (del-button-id (get-new-label))
- (add-button
- (make-button
- :id add-button-id :label "Add"
- :on-click
- (lambda ()
- (let ((num (+ (slot-value (slot-value (get-var-table-row) 'cells) 'length) 1))
- (click-count 0)
- (click-count-text (document.create-text-node "0")))
- (.append-child
- (.insert-cell (get-var-table-row) -1)
- (table-creation
- (list
- (trd (progn click-count-text))
- (trd
- (slot-value
- (make-button
- :label (+ op-string " " (.to-string num))
- :on-click
- (lambda ()
- (mod-result-value (rcurried op-func num))
- (incf click-count)
- (setf click-count-text.node-value (.to-string click-count))))
- 'dom-node))))))
- (.set (dijit.by-id del-button-id) "disabled" (not t)))))
- (del-button (make-button :id del-button-id :disabled t :label "Del" :on-click
- (lambda ()
- (.delete-cell (get-var-table-row) -1)
- (when (== (slot-value (slot-value (get-var-table-row) 'cells) 'length) 0) (.set (dijit.by-id del-button-id) "disabled" t))))))
- (tr
- (list
- (td (document.create-text-node op-string))
- (td (table-creation (list (trd (slot-value add-button 'dom-node)) (trd (slot-value del-button 'dom-node)) #| (trd add-button.dom-node) (trd del-button.dom-node) |# )))
- (td (progn var-table)))))))
- #.`(list ,@(mapcar (lambda (op) `(list ,(string op) (lambda (a b) (,op a b)))) '(+ - * /))))))))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement