[isidorus-cvs] r80 - in trunk/src: ajax/css ajax/javascripts unit_tests

Lukas Giessmann lgiessmann at common-lisp.net
Tue Jun 30 10:16:39 UTC 2009


Author: lgiessmann
Date: Tue Jun 30 06:16:38 2009
New Revision: 80

Log:
ajax-client: implemented a topic map overview

Modified:
   trunk/src/ajax/css/tree.css
   trunk/src/ajax/javascripts/constants.js
   trunk/src/ajax/javascripts/create.js
   trunk/src/ajax/javascripts/datamodel.js
   trunk/src/ajax/javascripts/edit.js
   trunk/src/ajax/javascripts/home.js
   trunk/src/unit_tests/poems.xtm

Modified: trunk/src/ajax/css/tree.css
==============================================================================
--- trunk/src/ajax/css/tree.css	(original)
+++ trunk/src/ajax/css/tree.css	Tue Jun 30 06:16:38 2009
@@ -27,18 +27,28 @@
 }
 
 ul.topicPsis + span {
+    color: #7090d0;
+    font-size: 0.8em;
     margin-left: 20px;
-    margin-right: 2px;
 }
 
-ul.topicPsis + span + span{
+ul.topicPsis + span + span + span {
+    color: #7090d0;
+    font-size: 0.8em;
+}
+
+ul.topicPsis + span + span {
+    color: #7090d0;
     margin-left: 2px;
+    margin-right: 2px;
 }
 
 ul.topicPsis + span.disabled {
+    font-size: 0.8em;
     color: #eaeaee;
 }
 
-ul.topicPsis + span + span.disabled {
+ul.topicPsis + span + span + span.disabled {
+    font-size: 0.8em;
     color: #eaeaee;
 }
\ No newline at end of file

Modified: trunk/src/ajax/javascripts/constants.js
==============================================================================
--- trunk/src/ajax/javascripts/constants.js	(original)
+++ trunk/src/ajax/javascripts/constants.js	Tue Jun 30 06:16:38 2009
@@ -11,7 +11,7 @@
 
 
 // --- Some constants fot the http connections via the XMLHttpRequest-Object
-var HOST_PREF = /*"http://143.93.190.237:8000/";*/ "http://localhost:8000/"; // of the form "http://(.+)/"
+var HOST_PREF = "http://143.93.190.237:8000/"; // "http://localhost:8000/"; // of the form "http://(.+)/"
 var GET_PREFIX = HOST_PREF + "json/get/";
 var GET_STUB_PREFIX = HOST_PREF + "json/topicstubs/";
 var TMCL_TYPE_URL = HOST_PREF + "json/tmcl/type/";

Modified: trunk/src/ajax/javascripts/create.js
==============================================================================
--- trunk/src/ajax/javascripts/create.js	(original)
+++ trunk/src/ajax/javascripts/create.js	Tue Jun 30 06:16:38 2009
@@ -43,7 +43,7 @@
 		    liTopicSelect.insert({"bottom" : err});   
 		}
 		else {
-		    instanceOf = new InstanceOfC(json.flatten().sort(), innerMakeFragment);
+			instanceOf = new InstanceOfC(json.flatten().sort(), innerMakeFragment, psi);
 		    liTopicSelect.insert({"bottom" : instanceOf.getFrame()});
 		}
 	    }

Modified: trunk/src/ajax/javascripts/datamodel.js
==============================================================================
--- trunk/src/ajax/javascripts/datamodel.js	(original)
+++ trunk/src/ajax/javascripts/datamodel.js	Tue Jun 30 06:16:38 2009
@@ -186,6 +186,18 @@
 				       "enable" : function(){
 					   this.__content__.removeAttribute("disabled");
 					   this.__disabled__ = false;
+				       },
+				       "select" : function(value){
+					   var opts = this.__content__.select("option");
+					   for(var i = 0; i !== opts.length; ++i){
+					       try{
+						   if(opts[i].value === value){
+						       opts[i].writeAttribute({"selected" : "selected"});
+						       this.__content__.insert({"top" : opts[i]});
+						   }
+						   else opts[i].removeAttribute("selected");
+					       }catch(err){ alert("err [" + i + "]" + err); }
+					   }
 				       }});
 			      
 
@@ -243,12 +255,13 @@
 
 
 // --- Representation of a
-var EditC = Class.create(ContainerC, {"initialize" : function($super, contents, successFun){
+var EditC = Class.create(ContainerC, {"initialize" : function($super, contents, successFun, psi){
                                           $super();
                                           this.__frame__.writeAttribute({"class" : CLASSES.editFrame()});
                                           this.__container__ = new Object();
                                           try{
 					      var row = new SelectrowC(contents, this.__container__, 1, 1);
+					      if(psi && psi.length !== 0) row.select(psi);
 					      this.__error__.insert({"before" : row.getFrame()});
 					  }
                                           catch(err){
@@ -274,6 +287,12 @@
 						  clearFragment();
                                                   requestConstraints("[" + myself.toJSON() + "]", onSuccessHandler, null)
                                               });
+
+					      if(psi && psi.length !== 0) {
+						  myself.hideError();
+						  clearFragment();
+                                                  requestConstraints("[" + myself.toJSON() + "]", onSuccessHandler, null);
+					      }
                                           }
                                           setHandler(this);
 
@@ -288,12 +307,13 @@
 
 
 // --- Represents a container for all instanceOf-Psis of a fragment's topic
-var InstanceOfC = Class.create(ContainerC, {"initialize" : function($super, contents, successFun){
+var InstanceOfC = Class.create(ContainerC, {"initialize" : function($super, contents, successFun, psi){
                                                 $super();
                                                 this.__frame__.writeAttribute({"class" : CLASSES.instanceOfFrame()});
                                                 this.__container__ = new Object();
                                                 try{
 						    var row = new SelectrowC(contents, this.__container__, 1, -1);
+						    if(psi && psi.length !== 0) row.select(psi);
                                             	    this.__error__.insert({"before" : row.getFrame()});
                                                 }
                                                 catch(err){
@@ -339,6 +359,12 @@
 							clearFragment();
                                                         requestConstraints(myself.toJSON(true), onSuccessHandler, null, true);
                                                     });
+
+						    if(psi && psi.length !== 0) {
+							myself.hideError();
+							clearFragment();
+                                                        requestConstraints(myself.toJSON(true), onSuccessHandler, null, true);
+						    }
                                                 }
                                                 setHandler(this);
 
@@ -2824,7 +2850,7 @@
 						   }
 					       },
 					       "__createFromContent__" : function(contents){
-						   if(!contents || contents.lenght === 0) return;
+						   if(!contents || contents.length === 0) return;
 						   
 						   var cContents = contents;
 						   var usedContents = new Array();

Modified: trunk/src/ajax/javascripts/edit.js
==============================================================================
--- trunk/src/ajax/javascripts/edit.js	(original)
+++ trunk/src/ajax/javascripts/edit.js	Tue Jun 30 06:16:38 2009
@@ -53,7 +53,8 @@
 		    liTopicSelect.insert({"bottom" : err});   
 		}
 		else {
-		    edit = new EditC(json.flatten().sort(), innerMakeFragment);
+		    if(!psi || psi.strip().lenght === 0) psi = null;
+		    edit = new EditC(json.flatten().sort(), innerMakeFragment, psi);
 		    liTopicSelect.insert({"bottom" : edit.getFrame()});
 		}
 	    }

Modified: trunk/src/ajax/javascripts/home.js
==============================================================================
--- trunk/src/ajax/javascripts/home.js	(original)
+++ trunk/src/ajax/javascripts/home.js	Tue Jun 30 06:16:38 2009
@@ -42,6 +42,7 @@
 }
 
 
+// --- Represents a list of trees.
 var TreeViewC = Class.create({"initialize" : function(contents){
                                   if(!contents) throw "From NodeC(): content must be set!";
 			          try {
@@ -60,6 +61,7 @@
 			      }});
 
 
+// --- Represents the root of a tree of nodes and contain all tree's nodes.
 var TreeC = Class.create({"initialize" : function(content){
                               if(!content) throw "From NodeC(): content must be set!";
 			      try {
@@ -75,17 +77,49 @@
 			  }});
 
 
+// --- Represents a tree node with a topic as a list of psis,
+// --- an edit and a create button. Furter the node can contain
+// --- more nodes as listings of instances and subtypes of the
+// --- current node's topic.
 var NodeC = Class.create({"initialize" : function(content){
 			      if(!content) throw "From NodeC(): content must be set!";
 			      try {
 				  this.__frame__ = new Element("li", {"class" : CLASSES.node()});
+				  this.__isMinimized__ = false;
+
+				  function setClickHandler(myself){
+				      myself.__frame__.observe("click", function(event){
+					  if(myself.__isMinimized__ === false){
+					      if(myself.__instances__) myself.__instances__.hide();
+					      if(myself.__subtypes__) myself.__subtypes__.hide();
+					      myself.__frame__.setStyle({"color" : "#ff7f00"});
+					      myself.__isMinimized__ = true;
+					  }
+					  else {
+					      if(myself.__instances__) myself.__instances__.show();
+					      if(myself.__subtypes__) myself.__subtypes__.show();
+					      myself.__frame__.setStyle({"color" : "inherit"});
+					      myself.__isMinimized__ = false;
+					  }
+					  Event.stop(event);
+				      });
+				  }
+				  setClickHandler(this);
+				  
+				  if((content.instances && content.instances.length !== 0) || (content.subtypes && content.subtypes.length !== 0)) {
+				      this.getFrame().setStyle({"cursor" : "pointer"});
+				  }
+				  else {
+				      this.getFrame().setStyle({"cursor" : "text"});
+				  }
+
 				  this.__topic__ = new Element("ul", {"class" : CLASSES.topicPsis()});
-				  this.__frame__.update(this.__topic__);
+				  this.__frame__.insert({"bottom" : this.__topic__});
 				  for(var i = 0; content.topic && i !== content.topic.length; ++i){
 				      var tLi = new Element("li").update(content.topic[i]);
 				      this.__topic__.insert({"bottom" : tLi});
 				  }
-
+				  
 				  this.__edit__ = new Element("span", {"class" : CLASSES.clickable()}).update("edit");
 				  this.__create__ = new Element("span", {"class" : CLASSES.clickable()}).update("create");
 				  if(content.isType !== true){
@@ -93,9 +127,10 @@
 				  }
 				  else {
 				      this.__create__.observe("click", function(event){
-					  alert("create");
+					  setNaviClasses($(PAGES.create));
+					  makePage(PAGES.create, content.topic[0]);
+					  Event.stop(event);
 				      });
-				      // TODO: define a handler
 				  }
 
 				  if(content.isInstance !== true){
@@ -103,14 +138,15 @@
 				  }
 				  else {
 				      this.__edit__.observe("click", function(event){
-					  alert("edit");
+					  setNaviClasses($(PAGES.edit));
+					  makePage(PAGES.edit, content.topic[0]);
+					  Event.stop(event);
 				      });
-				      // TODO: define a handler
 				  }
-				  this.__frame__.update(this.__topic__);
 				  this.__frame__.insert({"bottom" : this.__edit__});
-				  this.__frame__.insert({"bottom" : "|"});
+				  this.__frame__.insert({"bottom" : "<span>|</span>"});
 				  this.__frame__.insert({"bottom" : this.__create__});
+				  for(var i = 1; content.topic && i < content.topic.length; ++i) this.__frame__.insert({"bottom" : "<br/><span> </span>"});
 
 				  this.__instances__ = null;
 				  this.__subtypes__ = null;

Modified: trunk/src/unit_tests/poems.xtm
==============================================================================
--- trunk/src/unit_tests/poems.xtm	(original)
+++ trunk/src/unit_tests/poems.xtm	Tue Jun 30 06:16:38 2009
@@ -619,6 +619,7 @@
   <!-- author -->
   <tm:topic id="author">
     <tm:subjectIdentifier href="http://some.where/base-psis/author"/>
+    <tm:subjectIdentifier href="http://some.where/base-psis/author-psi"/>
     <tm:instanceOf><tm:topicRef href="#topictype"/></tm:instanceOf>
   </tm:topic>
 




More information about the Isidorus-cvs mailing list