clear fields after a delete-row

This commit is contained in:
David Botton 2022-02-24 22:50:23 -05:00
parent aaeb08ca65
commit 50a38113ba
3 changed files with 9 additions and 5 deletions

View file

@ -28,6 +28,8 @@ upper cased before attempting to match it to a slot if :UPCASE-KEY t
(let ((result)) (let ((result))
(loop for (key value) on plist by #'cddr while value (loop for (key value) on plist by #'cddr while value
do do
(when (consp key)
(setf key (second key)))
(let* ((slot-str (format nil "~A" key)) (let* ((slot-str (format nil "~A" key))
(slot-name (if upcase-key (slot-name (if upcase-key
(string-upcase slot-str) (string-upcase slot-str)

View file

@ -178,15 +178,16 @@ on panel will be retrieved from PANEL using DATA-WRITE-PLIST."))
(data-write-plist panel (table-columns obj)) (data-write-plist panel (table-columns obj))
(format nil "~A=~A" (row-id-name obj) (rowid obj))))) (format nil "~A=~A" (row-id-name obj) (rowid obj)))))
(defgeneric delete-row (clog-obj) (defgeneric delete-row (clog-obj panel)
(:documentation "Delete a row from a database table based on (:documentation "Delete a row from a database table based on
current rowid")) current rowid and then call CLEAR-ROW"))
(defmethod delete-row ((obj clog-obj)) (defmethod delete-row ((obj clog-obj) panel)
(dbi:do-sql (database-connection (clog-database obj)) (dbi:do-sql (database-connection (clog-database obj))
(format nil "delete from ~A where ~A=~A" (format nil "delete from ~A where ~A=~A"
(table-name obj) (table-name obj)
(row-id-name obj) (row-id-name obj)
(rowid obj)))) (rowid obj)))
(clear-row obj panel))
(defgeneric clear-row (clog-obj panel) (defgeneric clear-row (clog-obj panel)
(:documentation "Clear current rowid and all fields in PANEL (:documentation "Clear current rowid and all fields in PANEL
@ -197,5 +198,6 @@ using DATA-WRITE-PLIST based on table-columns."))
(push "" result) (push "" result)
(push c result)) (push c result))
(data-load-plist panel result) (data-load-plist panel result)
(setf (last-fetch obj) nil)
(setf (rowid obj) nil))) (setf (rowid obj) nil)))

View file

@ -1 +1 @@
<data id="I3854746030" data-in-package="clog-user" data-custom-slots="" data-clog-next-id="16" data-clog-title="first-db-panel"></data><div data-clog-type="database" data-clog-dbi-dbtype=":sqlite3" data-clog-dbi-dbname=":memory:" data-clog-dbi-dbparams="" data-clog-name="database-1" style="box-sizing: content-box; position: static; left: 92px; top: 46px;" data-on-create="(dbi:do-sql (clog:database-connection target) &quot;create table r (name varchar, nickname varchar,phone varchar)&quot;)(get-row (one-row-2 panel) panel)"><div data-clog-type="one-row" data-clog-one-row-table="r" data-clog-one-row-where="" data-clog-one-row-id-name="rowid" data-clog-one-row-columns="rowid name (nickname nick) phone" data-clog-name="one-row-2" style="box-sizing: content-box; position: static; left: 60px; top: 9px;" data-clog-one-row-limit="" data-clog-one-row-order="name"></div></div><label for="" data-clog-type="label" data-clog-name="label-3" class="" style="box-sizing: content-box; position: absolute; left: 37px; top: 23px;">Name</label><input type="TEXT" value="" data-clog-type="input" data-clog-name="name" style="box-sizing: content-box; position: absolute; left: 89px; top: 20px;"><label for="" data-clog-type="label" data-clog-name="label-14" class="" style="box-sizing: content-box; position: absolute; left: 44px; top: 64px;">Nick</label><input type="TEXT" value="" data-clog-type="input" data-clog-name="nick" style="box-sizing: content-box; position: absolute; left: 90px; top: 60px;"><label for="" data-clog-type="label" data-clog-name="label-5" class="" style="box-sizing: content-box; position: absolute; left: 35px; top: 105px;">Phone</label><input type="TEXT" value="" data-clog-type="input" data-clog-name="phone" style="box-sizing: content-box; position: absolute; left: 91px; top: 102px;"><div data-clog-type="div" data-clog-name="div-11" class="" style="box-sizing: content-box; position: absolute; left: 67px; top: 145px; width: 246px; height: 69px; text-align: center; vertical-align: baseline;"><button data-clog-type="button" data-clog-name="insert-button" class="" style="box-sizing: content-box; position: static; left: 48px; top: 104px;" data-on-click="(insert-row (one-row-2 panel) panel)">Insert</button><button data-clog-type="button" data-clog-name="get-button" style="box-sizing: content-box; position: static; left: 112px; top: 104px;" data-on-click="(get-row (one-row-2 panel) panel)" class="">First</button><button data-clog-type="button" data-clog-name="next-button" class="" style="box-sizing: content-box; position: static; left: 38px; top: 146px;" data-on-click="(next-row (one-row-2 panel) panel)">Next</button><button data-clog-type="button" data-clog-name="update-button" class="" data-on-click="(update-row (one-row-2 panel) panel)" style="box-sizing: content-box; position: static; left: 214px; top: 103px;">Update</button><button data-clog-type="button" data-clog-name="clear-button" class="" style="box-sizing: content-box; position: static; left: 43px; top: 141px;" data-on-click="(clear-row (one-row-2 panel) panel)">Clear Fields</button><button data-clog-type="button" data-clog-name="delete-button" class="" style="box-sizing: content-box; position: static; left: 306px; top: 107px;" data-on-click="(delete-row (one-row-2 panel))">Delete</button></div> <data id="I3854749744" data-in-package="clog-user" data-custom-slots="" data-clog-next-id="16" data-clog-title="first-db-panel"></data><div data-clog-type="database" data-clog-dbi-dbtype=":sqlite3" data-clog-dbi-dbname=":memory:" data-clog-dbi-dbparams="" data-clog-name="database-1" style="box-sizing: content-box; position: static; left: 92px; top: 46px;" data-on-create="(dbi:do-sql (clog:database-connection target) &quot;create table r (name varchar, nickname varchar,phone varchar)&quot;)(get-row (one-row-2 panel) panel)"><div data-clog-type="one-row" data-clog-one-row-table="r" data-clog-one-row-where="" data-clog-one-row-id-name="rowid" data-clog-one-row-columns="rowid name (nickname nick) phone" data-clog-name="one-row-2" style="box-sizing: content-box; position: static; left: 60px; top: 9px;" data-clog-one-row-limit="" data-clog-one-row-order="name"></div></div><label for="" data-clog-type="label" data-clog-name="label-3" class="" style="box-sizing: content-box; position: absolute; left: 37px; top: 23px;">Name</label><input type="TEXT" value="" data-clog-type="input" data-clog-name="name" style="box-sizing: content-box; position: absolute; left: 89px; top: 20px;"><label for="" data-clog-type="label" data-clog-name="label-14" class="" style="box-sizing: content-box; position: absolute; left: 44px; top: 64px;">Nick</label><input type="TEXT" value="" data-clog-type="input" data-clog-name="nick" style="box-sizing: content-box; position: absolute; left: 90px; top: 60px;"><label for="" data-clog-type="label" data-clog-name="label-5" class="" style="box-sizing: content-box; position: absolute; left: 35px; top: 105px;">Phone</label><input type="TEXT" value="" data-clog-type="input" data-clog-name="phone" style="box-sizing: content-box; position: absolute; left: 91px; top: 102px;"><div data-clog-type="div" data-clog-name="div-11" class="" style="box-sizing: content-box; position: absolute; left: 67px; top: 145px; width: 246px; height: 69px; text-align: center; vertical-align: baseline;"><button data-clog-type="button" data-clog-name="insert-button" class="" style="box-sizing: content-box; position: static; left: 48px; top: 104px;" data-on-click="(insert-row (one-row-2 panel) panel)">Insert</button><button data-clog-type="button" data-clog-name="get-button" style="box-sizing: content-box; position: static; left: 112px; top: 104px;" data-on-click="(get-row (one-row-2 panel) panel)" class="">First</button><button data-clog-type="button" data-clog-name="next-button" class="" style="box-sizing: content-box; position: static; left: 38px; top: 146px;" data-on-click="(next-row (one-row-2 panel) panel)">Next</button><button data-clog-type="button" data-clog-name="update-button" class="" data-on-click="(update-row (one-row-2 panel) panel)" style="box-sizing: content-box; position: static; left: 214px; top: 103px;">Update</button><button data-clog-type="button" data-clog-name="clear-button" class="" style="box-sizing: content-box; position: static; left: 43px; top: 141px;" data-on-click="(clear-row (one-row-2 panel) panel)">Clear Fields</button><button data-clog-type="button" data-clog-name="delete-button" class="" style="box-sizing: content-box; position: static; left: 306px; top: 107px;" data-on-click="(delete-row (one-row-2 panel) panel)">Delete</button></div>