]> matita.cs.unibo.it Git - helm.git/blobdiff - matita/matita/contribs/lambdadelta/bin/roles/webEngine.ml
update in binararies for λδ
[helm.git] / matita / matita / contribs / lambdadelta / bin / roles / webEngine.ml
index b5adc4ddd0ad2b3b64d28f8f149374fc38436073..4e7bb32a834f5ff8e0e6ba4cc3c18fd59eba62cc 100644 (file)
@@ -20,12 +20,13 @@ module WS = WebLWS
 let error = ref ""
 
 let open_out () =
-  let author = "λδ development binary: roles manager" in
-  let description = "λδ development binary: roles manager" in
-  let title = "Roles Manager" in
-  let css = Filename.concat !EG.base_url "css/roles.css" in
+  let author = "λδ development binary: role manager" in
+  let description = "λδ development binary: role manager" in
+  let title = "Role Manager" in
   let icon = Filename.concat !EG.base_url "images/crux_32.ico" in
-  WS.open_out_html author description title css icon
+  let css = Filename.concat !EG.base_url "css/roles.css" in
+  let js = Filename.concat !EG.base_url "js/roles.js" in
+  WS.open_out_html author description title icon css js
 
 let close_out () =
   WS.close_out_html ()
@@ -34,6 +35,12 @@ let string_of_request req arg =
   WS.string_of_request "roles" (["system-"^req, arg], "")
 
 let status_out () =
+  let filter p =
+    let req = string_of_request "select" p in
+    let ph = "Filter..." in
+    KP.printf "<input class=\"filter\" type=\"text\" autocomplete=\"on\" \
+      placeholder=%S oninput=\"filter('%s','%s');\" id=\"f.%s\"\n/>" ph req p p
+  in
   let button_specs = [
     "default", "Refresh";
     "save", "Save";
@@ -42,28 +49,32 @@ let status_out () =
     "remove", "Remove";
   ] in
   let each_button (action, str) =
-    let req = string_of_request action "" in 
+    let req = string_of_request action "" in
     KP.printf "<span class=\"button\"><a href=\"%s\">%s</a></span>\n" req str
   in
   let before_roles p count =
-    let req = string_of_request "toggle" p in
+    let req = string_of_request "select" p in
     KP.printf "<div class=\"roles-head role-color\">\n";
-    KP.printf "<a href=\"%s\">Roles:</a>\n" req;
-    KP.printf "<span class=\"count\">%s</span>\n" count
+    KP.printf "<a id=\"s.%s\" href=\"%s\">Roles:</a>\n" p req;
+    KP.printf "<span class=\"count\">%s</span>\n" count;
+    filter p
   in
-  let each_role p b str =
-    let req = string_of_request "toggle" p in
+  let each_role n p b k o str =
+    let req_x = string_of_request "expand" p in
+    let req_s = string_of_request "select" p in
     let s = if b then " selected" else "" in
-    KP.printf "<div class=\"role role-color%s\">" s;
-    KP.printf "<a href=\"#%s\">⮞</a> " p;
-    KP.printf "<a href=\"%s\">%s</a>" req str;
-    KP.printf "</div>\n"
+    KP.printf "<div class=\"role role-color%s\" name=%S key=%S ord=%S>" s n k o;
+    KP.printf "<a href=\"%s\">⮞</a> " req_x;
+    KP.printf "<a href=\"%s\">%s</a>" req_s str
   in
-  let before_role p =
-    KP.printf "<div id=\"%s\" class=\"roles\">\n" p;
+  let before_role x n o =
+    let msg_n = if n then " (added)" else "" in
+    let msg_o = if o then " (removed)" else "" in
+    KP.printf "%s%s</div>\n" msg_n msg_o;
+    if x then KP.printf "<div class=\"roles\">\n"
   in
-  let after_role () =
-    KP.printf "</div>\n"
+  let after_role x =
+    if x then KP.printf "</div>\n"
   in
   let after_roles () =
     KP.printf "</div>\n";
@@ -71,9 +82,10 @@ let status_out () =
     List.iter each_button button_specs;
     KP.printf "</div>\n"
   in
-  let stage s =
+  let stage s m =
+    let msg_m = if m then " (modified)" else "" in
     KP.printf "<div class=\"stage role-color\">";
-    KP.printf "Stage: %s" s;
+    KP.printf "Stage: %s%s" s msg_m;
     KP.printf "</div>\n"
   in
   let before_atoms a p count =
@@ -81,18 +93,20 @@ let status_out () =
       if a then "object-color", "objects"
       else "name-color", "names"
     in
-    let req = string_of_request "toggle" p in
+    let req = string_of_request "select" p in
     KP.printf "<div class=\"atoms-head %s\">\n" c;
-    KP.printf "<a href=\"%s\">%s:</a>\n" req str;
+    KP.printf "<a id=\"s.%s\" href=\"%s\">%s:</a>\n" p req str;
     KP.printf "<span class=\"count\">%s</span>\n" count;
+    filter p;
     KP.printf "</div>\n";
     KP.printf "<div class=\"atoms\"><table class=\"atoms-table\"><tr>\n"
   in
-  let each_atom a p b str =
+  let each_atom a n p b k o str =
     let c = if a then "object-color" else "name-color" in
     let s = if b then " selected" else "" in
-    let req = string_of_request "toggle" p in
-    KP.printf "<td class=\"atom %s%s\"><a href=\"%s\">%s</a></td>\n" c s req str
+    let req = string_of_request "select" p in
+    KP.printf "<td class=\"atom %s%s\" name=%S key=%S ord=%S>\
+      <a href=\"%s\">%s</a></td>\n" c s n k o req str
   in
   let after_atoms () =
     KP.printf "</tr></table></div>\n"
@@ -109,14 +123,15 @@ let handler opt arg () =
   begin try match opt with
   | "system-default" -> ()
   | "system-add"     -> EE.add_role ()
-  | "system-remove"  -> ()
+  | "system-remove"  -> EE.remove_roles ()
   | "system-match"   -> EE.add_matching ()
-  | "system-toggle"  -> EE.toggle_entry (EU.pointer_of_string arg)
+  | "system-select"  -> EE.select_entry (EU.pointer_of_string arg)
   | "system-save"    -> EE.write_status ()
+  | "system-expand"  -> EE.expand_entry (EU.pointer_of_string arg)
   | _                -> EU.raise_error (ET.EWrongRequest (opt, arg))
   with
   | ET.Error e -> error := EU.string_of_error e
-  | e          -> error := Printexc.to_string e 
+  | e          -> error := Printexc.to_string e
   end;
   open_out ();
   status_out ();