From b12e6ec1e413963d90f563ca7d9c1aeaeabcdec0 Mon Sep 17 00:00:00 2001 From: hallgren Date: Thu, 21 Jun 2012 15:39:31 +0000 Subject: [PATCH] gfse/sort.js: make it more resusable Move the gfse-specific list of sortable tags and class names from sort.js to editor.js. --- src/www/gfse/editor.js | 1 + src/www/gfse/index.html | 4 ++-- src/www/gfse/sort.js | 47 +++++++++++++++++++++++------------------ 3 files changed, 30 insertions(+), 22 deletions(-) diff --git a/src/www/gfse/editor.js b/src/www/gfse/editor.js index c7acc6663..409cc936b 100644 --- a/src/www/gfse/editor.js +++ b/src/www/gfse/editor.js @@ -1598,6 +1598,7 @@ if(editor) { initial_view(); touch_edit(); dir_bugfix(); + initialize_sorting(["DIV"],["fun","lin","lincat","oper"]); } else editor.innerHTML="

This browser does not appear to support localStorage, and the grammar editor does not work without it. Sorry!" diff --git a/src/www/gfse/index.html b/src/www/gfse/index.html index bf439b1de..993f1a4d9 100644 --- a/src/www/gfse/index.html +++ b/src/www/gfse/index.html @@ -33,7 +33,7 @@ This page does not work without JavaScript.


HTML - Last modified: Mon Feb 13 18:05:45 CET 2012 + Last modified: Thu Jun 21 16:40:51 CEST 2012
About

@@ -42,9 +42,9 @@ HTML
 
 
 
+
 
 
-
 
 
 
diff --git a/src/www/gfse/sort.js b/src/www/gfse/sort.js
index cbf4183cb..eae779d5a 100644
--- a/src/www/gfse/sort.js
+++ b/src/www/gfse/sort.js
@@ -1,21 +1,27 @@
 
-function initialize_sorting() {
+function initialize_sorting(tagList,classList) {
+    /*
+    var debugoutput=empty("pre");
+    document.body.appendChild(debugoutput)
+    function jsdebug(txt) {
+	//clear(debugoutput)
+	debugoutput.appendChild(text(txt+"\n"))
+    }
+    */
+    function listToSet(list) {
+	var set={}
+	for(var i in list) set[list[i]]=true
+	return set;
+    }
+    var sortable_tag=listToSet(tagList)
+    var sortable_class=listToSet(classList)
 
     function sortable(elem) {
-	switch(elem.tagName) {
-	case "DIV":
-	    switch(elem.className) {
-	    case "fun":
-	    case "lin":
-	    case "lincat":
-	    case "oper":
-		return elem;
-	    default:
-		return null;
-	    }
-	default:
-	    return sortable(elem.parentNode)
-	}
+	return elem && (sortable_tag[elem.tagName]
+			  ? sortable_class[elem.className]
+			    ? elem
+			    : null
+			  : sortable(elem.parentNode))
     }
 
     function move_element(elem,x,y) {
@@ -86,18 +92,21 @@ function startDrag(event,elem) {
 	move_element(elem,dx,dy);
 	//jsdebug("dragging to "+elem.offsetLeft+" "+elem.offsetTop);
 	swap(elem,dy)
+	//event.stopPropagation();
 	return false;
     }
-    document.onmouseup=function() {
+    document.onmouseup=function(event) {
 	//jsdebug("dropped");
 	elem.style.zIndex=0;
 	move_element(elem,0,0);
 	document.onmousemove=null;
 	document.onmouseup=null;
 	if(list.onsort) list.onsort();
-	else jsdebug("no list.onsort "+list.className+" "+list.firstChild.ident);
+	//else jsdebug("no list.onsort "+list.className+" "+list.firstChild.ident);
+	//event.stopPropagation();
 	return false;
     }
+    //event.stopPropagation();
     return false;
 }
 
@@ -107,7 +116,7 @@ function mousedown(event) {
     //else jsdebug("Clicked outside"/*+taglist(event.target)/*+show_props(event,"event")*/);
 }
 
-    var jsdebug=debug;
+    //var jsdebug=debug;
 
 function init() {
     document.onmousedown=mousedown;
@@ -117,6 +126,4 @@ function init() {
     init();
 }
 
-initialize_sorting();
-
 //Inspired by http://tool-man.org/examples/sorting.html