diff js/taggingtext.js @ 50:3e42a63de0ea extractapp

bug fix: unique regex element id, edit/update/delete regex
author Zoe Hong <zhong@mpiwg-berlin.mpg.de>
date Thu, 19 Mar 2015 09:53:26 +0100
parents b2c1fae5cf6a
children f9e7119339b2
line wrap: on
line diff
--- a/js/taggingtext.js	Tue Mar 17 13:58:34 2015 +0100
+++ b/js/taggingtext.js	Thu Mar 19 09:53:26 2015 +0100
@@ -3,6 +3,8 @@
 var stringBeforeChangeStack = [];
 var lastAddTag="";
 
+var regex_element_index = 0;
+
 window.onbeforeunload = function() {
     return "Are you sure?";
 };
@@ -413,6 +415,7 @@
     $('#smartRegexPopUpDel').attr("disabled", "disabled");
     $('#smartRegexPopUpBack').attr("disabled", "disabled");
     $('#smartRegexPopUpFor').attr("disabled", "disabled");
+
 }
 
 function replaceSmartClose() {
@@ -429,11 +432,12 @@
     $('#smartRegexShowDiv > #'+thisObject).attr("regexText", $("#smartRegexPopUpText").val());
     $('#smartRegexShowDiv > #'+thisObject).attr("regexReplace", $("#smartRegexPopUpSelectTag").val());
     $('#smartRegexShowDiv > #'+thisObject).text($("#smartRegexPopUpName").val());  // smartRgextPopUpName.val() is the name of this regex
-
+    // id should be the same as it was
 }   
 
 function replaceSmartDel() {
     thisObject = $('#smartRegexPopUpDiv').attr("editID");
+
     $('#smartRegexShowDiv > #'+thisObject).remove();
 }
 
@@ -457,14 +461,25 @@
 
 function replaceSmartAdd() {
     var newdiv = document.createElement("span");
-    newdiv.innerHTML = " "+$("#smartRegexPopUpName").val()+" ";
+    //newdiv.innerHTML = " "+$("#smartRegexPopUpName").val()+" ";
+    //newdiv.innerHTML = $("#smartRegexPopUpName").val();
+    $(newdiv).text($("#smartRegexPopUpName").val());
+
     $(newdiv).css("border", "1px solid black");
     $(newdiv).css("width", "100px");
     
     $(newdiv).attr("class", "span_"+$("#smartRegexPopUpSelectTag").val());
-    $(newdiv).attr("id", "span_"+$("#smartRegexPopUpName").val());
+
+
+
+    // id is the name from user's input, which dose not guarantee to be unique
+    // id should be unique
+    regex_element_index += 1;
+    $(newdiv).attr("id", "regex_elem_"+regex_element_index);
+    // $(newdiv).attr("id", "span_"+$("#smartRegexPopUpName").val());
     $(newdiv).attr("regexText", $("#smartRegexPopUpText").val());
     $(newdiv).attr("regexReplace", $("#smartRegexPopUpSelectTag").val());
+
     
     $('#smartRegexShowDiv').append(newdiv);
     
@@ -485,15 +500,8 @@
 
     $('#smartRegexPopUpDiv').attr("editID", $(this).attr("id"));
     
-    
-    var _id = $(this).attr("id");
-    var aa = document.getElementById(_id);
-    var name = aa.textContent;
-   
-    $('#smartRegexPopUpName').val(name);
+    $('#smartRegexPopUpName').val($(this).text());
     // $('#smartRegexPopUpName').val($(this).html());
-    // why there is a <span i="transmark"></span> inbetween? 
-
 
     $('#smartRegexPopUpText').val($(this).attr("regexText"));
     $('#smartRegexPopUpSelectTag').val($(this).attr("regexReplace"));
@@ -507,6 +515,7 @@
 
 function smartRegexEmpty() {
     $('#smartRegexShowDiv').html("");
+    regex_element_index = 0;
 }
 
 function replaceSmartRunWithBr() {
@@ -776,8 +785,20 @@
     RegexLoadedName = $('#loadRegexSelect').val();
     var divName = "#div_"+RegexLoadedName;
     var name = $(divName).html();
-    $('#smartRegexShowDiv').html(name );
+    $('#smartRegexShowDiv').html(name);
     $('#load_regex_div').css("display", "none");
+
+    // get the largest regex element index in the regex file
+    // for all children (span) in #smartRegexShowDiv, find MAX(id)
+    var regex_elem = $('#smartRegexShowDiv').children();   
+    var max_id = 0;
+    for (var i = 0; i < regex_elem.length; i++) {
+        var r_id = parseInt(regex_elem[i].id.slice(11));    // cut the first 11 char out: "regex_elem_"
+        if (r_id > max_id) {
+            max_id = r_id;
+        }
+    }
+    regex_element_index = max_id;
 }
 // ===