summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--demo/more/dbgrid.ur12
-rw-r--r--lib/js/urweb.js44
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) {