summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorhallgren <hallgren@chalmers.se>2012-06-21 15:39:31 +0000
committerhallgren <hallgren@chalmers.se>2012-06-21 15:39:31 +0000
commitb12e6ec1e413963d90f563ca7d9c1aeaeabcdec0 (patch)
treed78f5391591e1381abb587c27f09b0c94d9117e8 /src
parentffa1e7731d3ef7a3892366f72b708e934eb840d5 (diff)
gfse/sort.js: make it more resusable
Move the gfse-specific list of sortable tags and class names from sort.js to editor.js.
Diffstat (limited to 'src')
-rw-r--r--src/www/gfse/editor.js1
-rw-r--r--src/www/gfse/index.html4
-rw-r--r--src/www/gfse/sort.js47
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="<p>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.
<hr>
<div class=modtime><small>
HTML
-<!-- hhmts start --> Last modified: Mon Feb 13 18:05:45 CET 2012 <!-- hhmts end -->
+<!-- hhmts start --> Last modified: Thu Jun 21 16:40:51 CEST 2012 <!-- hhmts end -->
</small></div>
<a href="about.html">About</a>
<pre id=debug></pre>
@@ -42,9 +42,9 @@ HTML
<script type="text/javascript" src="localstorage.js"></script>
<script type="text/javascript" src="gf_abs.js"></script>
<script type="text/javascript" src="example_based.js"></script>
+<script type="text/javascript" src="sort.js"></script>
<script type="text/javascript" src="editor.js"></script>
<script type="text/javascript" src="cloud2.js"></script>
-<script type="text/javascript" src="sort.js"></script>
<script type="text/JavaScript" src="../minibar/minibar.js"></script>
<script type="text/JavaScript" src="../minibar/minibar_input.js"></script>
<script type="text/JavaScript" src="../minibar/minibar_translations.js"></script>
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