diff options
-rw-r--r-- | demo/more/dbgrid.ur | 12 | ||||
-rw-r--r-- | lib/js/urweb.js | 44 |
2 files changed, 34 insertions, 22 deletions
diff --git a/demo/more/dbgrid.ur b/demo/more/dbgrid.ur index 59214348..eb30a990 100644 --- a/demo/more/dbgrid.ur +++ b/demo/more/dbgrid.ur @@ -109,7 +109,11 @@ structure Direct = struct Parse = fn s => v <- signal s; return (m.Parse v), CreateFilter = source m.CreateFilter, DisplayFilter = m.DisplayFilter, - Filter = fn f v => f <- signal f; return (m.Filter f v)}, + Filter = fn f v => f <- signal f; + return (if m.FilterIsNull f then + True + else + m.Filter f v)}, {Display = fn s => <xml><dyn signal={v <- signal s; return (m.Display v)}/></xml>, Edit = m.Edit, Initialize = fn v => source (case v of @@ -126,7 +130,7 @@ structure Direct = struct DisplayFilter = m.DisplayFilter, Filter = fn f v => f <- signal f; return (if m.FilterIsNull f then - Option.isNone v + True else case v of None => False @@ -143,13 +147,13 @@ structure Direct = struct type intFilter = basicFilter string val int : meta (intGlobal, int, intInput, intFilter) = basic {Display = fn s => <xml>{[s]}</xml>, - Edit = fn s => <xml><ctextbox source={s}/></xml>, + Edit = fn s => <xml><ctextbox size={5} source={s}/></xml>, Initialize = fn n => show n, InitializeNull = "", IsNull = eq "", Parse = fn v => read v, CreateFilter = "", - DisplayFilter = fn s => <xml><ctextbox source={s}/></xml> : xbody, + DisplayFilter = fn s => <xml><ctextbox size={5} source={s}/></xml> : xbody, Filter = fn s n => case read s of None => True diff --git a/lib/js/urweb.js b/lib/js/urweb.js index a1179231..b1046aa6 100644 --- a/lib/js/urweb.js +++ b/lib/js/urweb.js @@ -304,20 +304,22 @@ function dyn(pnode, s) { runScripts(dummy); var table = x.parentNode; - var arr = dummy.getElementsByTagName("tbody"); - firstChild = null; - var tbody; - if (arr.length > 0 && table != null) - tbody = arr[0]; - else - tbody = dummy; - - var next; - firstChild = document.createElement("script"); - table.insertBefore(firstChild, x); - for (var node = tbody.firstChild; node; node = next) { - next = node.nextSibling; - table.insertBefore(node, x); + if (table) { + var arr = dummy.getElementsByTagName("tbody"); + firstChild = null; + var tbody; + if (arr.length > 0 && table != null) + tbody = arr[0]; + else + tbody = dummy.firstChild; + + var next; + firstChild = document.createElement("script"); + table.insertBefore(firstChild, x); + for (var node = tbody.firstChild; node; node = next) { + next = node.nextSibling; + table.insertBefore(node, x); + } } } else if (pnode == "tr") { var dummy = document.createElement("body"); @@ -325,10 +327,16 @@ function dyn(pnode, s) { runScripts(dummy); var table = x.parentNode; - var arr = dummy.getElementsByTagName("tr"); - firstChild = null; - if (arr.length > 0 && table != null) { - var tbody = arr[0], next; + if (table) { + var arr = dummy.getElementsByTagName("tr"); + firstChild = null; + var tbody; + if (arr.length > 0 && table != null) + tbody = arr[0]; + else + tbody = dummy.firstChild; + + var next; firstChild = document.createElement("script"); table.insertBefore(firstChild, x); for (var node = tbody.firstChild; node; node = next) { |