changeset 1039:8932f855fa85

grid0 working in IE
author Adam Chlipala <adamc@hcoop.net>
date Sun, 22 Nov 2009 15:30:15 -0500
parents dcc6093e9575
children ca5136105c45
files demo/more/grid0.ur demo/more/grid0.urp lib/js/urweb.js tests/snest.ur tests/snest.urp tests/snest.urs
diffstat 6 files changed, 89 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/demo/more/grid0.ur	Sun Nov 22 15:30:15 2009 -0500
@@ -0,0 +1,34 @@
+open Dbgrid
+
+sequence s
+table t : {Id : int, A : int}
+  PRIMARY KEY Id
+
+open Make(struct
+              val tab = t
+              con key = [Id = _]
+
+              val raw = {Id = {New = nextval s,
+                               Inj = _},
+                         A = {New = return 0,
+                              Inj = _}}
+
+              val cols = {Id = Direct.readOnly [#Id] ! "Id" Direct.int,
+                          A = Direct.editable [#A] ! "A" Direct.int}
+
+              val aggregates = {}
+
+              val pageLength = None
+          end)
+
+fun main () =
+    grid <- grid;
+    set (showSelection grid) True;
+    return <xml>
+      <head>
+        <link rel="stylesheet" type="text/css" href="../../grid.css"/>
+      </head>
+      <body onload={sync grid}>
+        {render grid}
+      </body>
+    </xml>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/demo/more/grid0.urp	Sun Nov 22 15:30:15 2009 -0500
@@ -0,0 +1,7 @@
+debug
+database dbname=test
+library grid
+sql grid0.sql
+allow url ../../grid.css
+
+grid0
--- a/lib/js/urweb.js	Sat Nov 21 15:48:08 2009 -0500
+++ b/lib/js/urweb.js	Sun Nov 22 15:30:15 2009 -0500
@@ -116,7 +116,7 @@
 
 function doExn(v) {
   if (v == null || v.uw_error == null) {
-    var s = (v == null ? "null" : v.toString());
+    var s = (v == null ? "null" : v.message ? v.message : v.toString());
     if (v != null && v.fileName && v.lineNumber)
       s += " (" + v.fileName + ":" + v.lineNumber + ")";
     runHandlers("Fail", failHandlers, s);
@@ -289,7 +289,9 @@
   while (pos.lastChild && pos.lastChild.nodeType == 1)
     pos = pos.lastChild;
 
-  return pos.parentNode;
+  pos = pos.parentNode;
+
+  return pos;
 }
 
 function parent() {
@@ -315,6 +317,7 @@
       scriptsCopy[i] = scripts[i];
     for (var i = 0; i < len; ++i) {
       thisScript = scriptsCopy[i];
+
       try {
         eval(thisScript.text);
       } catch (v) {
@@ -355,6 +358,7 @@
     var next;
     for (var child = firstChild; child && child != x; child = next) {
       next = child.nextSibling;
+
       killScript(child);
       if (child.getElementsByTagName) {
         var arr = child.getElementsByTagName("script");
@@ -367,7 +371,9 @@
     }
 
     var cls = {v : null};
-    var html = dynPrefix + flatten(cls, v);
+    var html = flatten(cls, v);
+    if (pnode != "table" && pnode != "tr")
+      html = dynPrefix + html;
     x.closures = cls.v;
 
     if (pnode == "table") {
@@ -377,12 +383,22 @@
       var table = x.parentNode;
 
       if (table) {
-        var arr = dummy.getElementsByTagName("tbody");
         firstChild = null;
         var tbody;
-        if (arr.length > 0 && table != null)
+
+        var arr = dummy.getElementsByTagName("tbody");
+
+        var tbody;
+        if (arr.length > 0 && arr[0].parentNode == dummy.firstChild) {
           tbody = arr[0];
-        else
+          var next;
+          for (var node = dummy.firstChild.firstChild; node; node = next) {
+            next = node.nextSibling;
+
+            if (node.tagName != "TBODY")
+              tbody.appendChild(node);
+          }
+        } else
           tbody = dummy.firstChild;
 
         var next;
@@ -402,16 +418,16 @@
       if (table) {
         var arr = dummy.getElementsByTagName("tr");
         firstChild = null;
-        var tbody;
+        var tr;
         if (arr.length > 0 && table != null)
-          tbody = arr[0];
+          tr = arr[0];
         else
-          tbody = dummy.firstChild;
+          tr = dummy.firstChild;
 
         var next;
         firstChild = document.createElement("script");
         table.insertBefore(firstChild, x);
-        for (var node = tbody.firstChild; node; node = next) {
+        for (var node = tr.firstChild; node; node = next) {
           next = node.nextSibling;
           table.insertBefore(node, x);
         }
@@ -429,8 +445,9 @@
   populate(x);
 }
 
-function input(t, s, recreate) {
+function input(t, s, recreate, type) {
   var x = document.createElement(t);
+  if (type) x.type = type;
   x.dead = false;
   x.signal = ss(s);
   x.sources = null;
@@ -461,8 +478,7 @@
 }
 
 function chk(s) {
-  var x = input("input", s, function(x) { return function(v) { if (x.checked != v) x.checked = v; }; });
-  x.type = "checkbox";
+  var x = input("input", s, function(x) { return function(v) { if (x.checked != v) x.checked = v; }; }, "checkbox");
   x.checked = s.data;
   x.onchange = function() { sv(s, x.checked) };
 
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/snest.ur	Sun Nov 22 15:30:15 2009 -0500
@@ -0,0 +1,15 @@
+fun main () =
+    s1 <- source False;
+    s2 <- source False;
+
+    return <xml><body>
+      <dyn signal={s1 <- signal s1;
+                   return (if s1 then
+                               <xml><dyn signal={s2 <- signal s2;
+                                                 return <xml>{[s2]}</xml>}/></xml>
+                           else
+                               <xml>Not yet</xml>)}/>
+      <hr/>
+      <button value="s1" onclick={set s1 True}/>
+      <button value="s2" onclick={set s2 True}/>
+   </body></xml>
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/snest.urp	Sun Nov 22 15:30:15 2009 -0500
@@ -0,0 +1,3 @@
+debug
+
+snest
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/tests/snest.urs	Sun Nov 22 15:30:15 2009 -0500
@@ -0,0 +1,1 @@
+val main : unit -> transaction page