Changeset 31063 for main/trunk/greenstone3/web/interfaces
- Timestamp:
- 2016-11-06T03:10:07+13:00 (7 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/web/interfaces/default/js/hierarchy.js
r31023 r31063 9 9 } 10 10 // Function to set Id as TEXTAREA value 11 function setHierarchyId(a)11 function chooseHierarchyOption(a) 12 12 { 13 13 … … 23 23 $(tr.getElementsByTagName("TEXTAREA")).val(metaValue); 24 24 // Set button name 25 removeSuggestionsMenu(tr, metaTitle); 25 setHierarchyButtonText(tr, metaTitle); 26 removeSuggestionsMenu(tr); 26 27 //Hide menu after click 27 28 $(tr).find(".metaDataHierarchyMenu").find("ul li ul li").hide(); 28 //If we left TEXTAREA, hide all menus 29 //if (document.activeElement.tagName != "TEXTAREA") 30 //{ 31 // $(tr).find(".metaDataHierarchyMenu").hide(); 32 //} 29 //Set focus on textarea 33 30 tr.getElementsByTagName("TEXTAREA")[0].focus(); 34 31 … … 39 36 function openHierarchyMenuLevel(menuItem) 40 37 { 41 //console.log(menuItem); 42 43 var tr = findAncestorByTagName(menuItem,"TR"); 44 //get current MetaDataName 45 var metaName = $(tr.getElementsByClassName("metaTableCellName")[0]).text(); 38 var tr = findAncestorByTagName(menuItem,"TR"); 39 //get current MetaDataName 40 var metaName = getMetaName(tr); 46 41 //Get current hierarchy from storages 47 42 var hierarchyData = hierarchyStorage[metaName]; … … 58 53 { 59 54 id = menuItem.attr('id').match(getIdExp); 60 } 61 //console.log("ID " + id); 62 //id.match(getIdExp); 55 } 63 56 if (id == null) 64 57 { … … 73 66 { 74 67 if(childExpr.test(key)){ 75 levelItems[key]='<li id="'+key+'" ><button onclick="setHierarchyId(this)" metavalue='+ hierarchyData[key][0] +' metatitle='+ hierarchyData[key][1] +'>' + hierarchyData[key][1] + '</button></li>'; 76 //console.log(levelItems[key]); 77 68 levelItems[key]='<li class="hierarchyOption" id="'+key+'" ><button onclick="chooseHierarchyOption(this)" metavalue="'+ hierarchyData[key][0] +'" metatitle="'+ hierarchyData[key][1] +'">' + hierarchyData[key][1] + '</button></li>'; 78 69 } 79 70 } 80 //If no elements in hierarchy level71 //If no elements in hierarchy level 81 72 if (jQuery.isEmptyObject(levelItems)) 82 73 { … … 84 75 menuItem.append("<ul></ul>"); 85 76 86 // console.log("no elements in hierarchy level");87 77 } 88 78 else { … … 104 94 //menuItem.find('ul'); 105 95 menuItem.children('ul').slideDown(); 106 107 108 //console.log("debug line 5");109 96 } 110 97 … … 135 122 if (xmlhttp.readyState==4 && xmlhttp.status==200) 136 123 { 137 var hierarchyFile = xmlhttp.responseText; 138 var StringData = []; 139 var hierarchyData = {}; 140 //var expr = /^([0-9]+(?:\.[0-9]+)*)\ ([0-9]+(?:\.[0-9]+)*)\ (.*)/m; 141 var expr = /^(\S*|\"[^\"]*\")\ +([0-9]+(?:\.[0-9]+)*)\ +(.*)/m; 142 StringData = hierarchyFile.split('\n'); 143 for (var i = 0; i < StringData.length; i++) 144 { 145 var result = StringData[i].match(expr); 146 // If result not null 147 if (result != null && result.length == 4) 148 { 149 // populate hierarchy object 150 hierarchyData[result[2]] = [result[1], result[3]]; 151 } 152 153 } 154 addHierarchyToStorage(metaName, hierarchyData); 155 setHierarchyEventsWrappers(metaName); 124 var hierarchyFile = xmlhttp.responseText; 125 var StringData = []; 126 var hierarchyData = {}; 127 var expr = /^(\S*|\"[^\"]*\")\ +([0-9]+(?:\.[0-9]+)*)\ +(.*)/m; 128 StringData = hierarchyFile.split('\n'); 129 for (var i = 0; i < StringData.length; i++) { 130 var result = StringData[i].match(expr); 131 // If result not null 132 if (result != null && result.length == 4) { 133 // populate hierarchy object 134 hierarchyData[result[2]] = [ result[1].replace(/^\"|\"$/g, ''), result[3].replace(/^\"|\"$/g, '') ]; 135 } 136 137 } 138 addHierarchyToStorage(metaName, hierarchyData); 139 setHierarchyEventsWrappers(metaName); 156 140 } 157 141 } … … 174 158 { 175 159 //get current MetaDataName 176 var metaName = $(row.getElementsByClassName("metaTableCellName")[0]).text();177 178 var hierarchy MenuName = 'Menu';160 var metaName = getMetaName(row); 161 defaultHierarchyButtonText = 'Top level menu'; 162 var hierarchyButtonText = defaultHierarchyButtonText; 179 163 // Check if textarea already contain right menu key 180 164 var textAreaValue = $(row).find('TEXTAREA').val(); … … 182 166 //Get current hierarchy from storages 183 167 var hierarchyData = hierarchyStorage[metaName]; 184 185 if (hierarchyData[textAreaValue] && (hierarchyData[textAreaValue] != null)) 186 { 187 hierarchyMenuName = hierarchyData[textAreaValue][1]; 188 168 //TODO Modificate 169 170 171 for(var key in hierarchyData) 172 { 173 if (hierarchyData[key][0] == textAreaValue) 174 { 175 hierarchyButtonText = hierarchyData[key][1]; 176 break; 177 } 189 178 } 190 179 191 180 //Menu element 192 var mainmenu = '<td class="metaDataHierarchyMenu" style="display: none;"><ul><li id="hierarchyLevel"><button class="hierarchyMenuButton" title="Menu">' + hierarchy MenuName+ '</button></li></ul></td>'181 var mainmenu = '<td class="metaDataHierarchyMenu" style="display: none;"><ul><li id="hierarchyLevel"><button class="hierarchyMenuButton" title="Menu">' + hierarchyButtonText + '</button></li></ul></td>' 193 182 //Insert hierarchy menu 194 183 $(row).find('.metaTableCellRemove').after(mainmenu); … … 199 188 { 200 189 var input = $(this).val(); 190 var hierarchyButtonText; 201 191 var row = this.parentElement.parentElement; 202 192 //RegExp to test a valid key in input … … 205 195 var KeyStartExp = /^(?:[0-9]+(?:\.[0-9]+)*)?\.$/; 206 196 //if input valid and key found 207 if ( KeyExp.test(input) && hierarchyData[input]) 197 removeSuggestionsMenu(row); 198 createSuggestionsMenu(row); 199 /*if ( KeyExp.test(input) && hierarchyData[input] || KeyStartExp.test(input)) 208 200 { 209 removeSuggestionsMenu(row,hierarchyData[input]);210 201 createSuggestionsMenu(row); 211 202 } 212 else if (KeyStartExp.test(input)) 213 { 214 removeSuggestionsMenu(row,hierarchyMenuButton); 215 createSuggestionsMenu(row); 203 */ 204 if (hierarchyData[input]){ 205 hierarchyButtonText = hierarchyData[input][1]; 206 } else { 207 hierarchyButtonText = defaultHierarchyButtonText; 216 208 } 217 else { 218 removeSuggestionsMenu(row,hierarchyMenuButton); 219 } 209 setHierarchyButtonText(row, hierarchyButtonText); 210 220 211 }); 221 212 //Show created menu … … 226 217 { 227 218 //get current MetaDataName 228 var metaName = $(row.getElementsByClassName("metaTableCellName")[0]).text();229 //Get current hierarchy from storage s219 var metaName = getMetaName(row); 220 //Get current hierarchy from storage 230 221 var hierarchyData = hierarchyStorage[metaName]; 231 232 var input = $(row.getElementsByClassName("metaTableCellArea")[0]).val();233 234 //RegExp to get SuggestionsMenu235 var SuggestionsMenuExp = new RegExp("^0*" + input.replace(/\./g, '\\.0*') + "\\.?[0-9]+$")236 222 //Hierarchy suggestions menu 237 223 var SuggestionsMenu = ""; 238 for(var key in hierarchyData) 224 225 var input = $(row.getElementsByClassName("metaTableCellArea")[0]).val(); 226 227 if (input.replace(/[0-9\.\s]/g, '') === "") 239 228 { 240 var SuggestionsMenuItems = {}; 241 242 if (SuggestionsMenuExp.test(key)) 229 //RegExp to get SuggestionsMenu 230 var SuggestionsMenuExp = new RegExp("^0*" + input.replace(/\./g, '\\.0*') + "\\.?[0-9]+$") 231 232 for(var key in hierarchyData) 243 233 { 244 SuggestionsMenuItems[key]='<li class="hierarchySuggestionsMenu" id="'+key+'" ><button metavalue='+ hierarchyData[key][0] +' metatitle='+ hierarchyData[key][1] +' onclick="setHierarchyId(this)" >' + key.substring(String(input).length) + " " + hierarchyData[key][1] + '</button></li>'; 234 if (SuggestionsMenuExp.test(key)) 235 { 236 SuggestionsMenu +='<li class="hierarchySuggestionsMenu hierarchyOption" id="'+key+'" ><button metavalue="'+ hierarchyData[key][0] +'" metatitle="'+ hierarchyData[key][1] +'" onclick="chooseHierarchyOption(this)" >' + key.substring(String(input).length) + " " + hierarchyData[key][1] + '</button></li>'; 237 } 245 238 } 246 247 for(var key in SuggestionsMenuItems) 239 } else { 240 //RegExp to get SuggestionsMenu 241 var SuggestionsMenuExp = new RegExp(".*" + input + ".*","i") 242 243 for(var key in hierarchyData) 248 244 { 249 //Fill menu with items 250 SuggestionsMenu += SuggestionsMenuItems[key]; 245 if (SuggestionsMenuExp.test(hierarchyData[key][1]) && input !== hierarchyData[key][0]) 246 { 247 SuggestionsMenu +='<li class="hierarchySuggestionsMenu hierarchyOption" id="'+key+'" ><button metavalue="'+ hierarchyData[key][0] +'" metatitle="'+ hierarchyData[key][1] +'" onclick="chooseHierarchyOption(this)" >' + hierarchyData[key][1] + '</button></li>'; 248 } 251 249 } 252 253 250 } 251 252 254 253 255 254 //Append new SuggestionsMenu … … 258 257 $(row).each(function(){setHierarchyHoverEvent($(this),".hierarchySuggestionsMenu")}); 259 258 } 260 function removeSuggestionsMenu(row,menuNewText)261 { 262 //Remove old SuggestionsMenu 259 //function removeSuggestionsMenu(row,menuNewText) 260 function removeSuggestionsMenu(row) 261 { 263 262 $(row).find(".hierarchySuggestionsMenu").remove(); 264 //Replace text on Hierarchy menu to default 265 $(row).find(".hierarchyMenuButton").text(menuNewText); 263 } 264 function setHierarchyButtonText(row, title){ 265 $(row).find(".hierarchyMenuButton").text(title); 266 266 } 267 267 268 268 function setHierarchyEventsWrappers(metaName) 269 269 { 270 271 270 //Loop through every metaTableCell 272 271 $(".metaTableCellName").each(function() { 273 272 //Check if it is a hierarchy row 274 //TODO implement real check275 //if($(this).text()=="rubricator")276 273 var currentMetaName = $(this).text(); 277 //console.log(metaName)278 //console.log(metaDataName)279 274 if (currentMetaName in hierarchyStorage && currentMetaName == metaName) 280 275 { 281 //console.log('testXX')282 276 var row = this.parentElement; 283 277 var textArea = row.getElementsByClassName("metaTableCellArea")[0]; … … 369 363 { 370 364 var row = this.parentElement.parentElement; 371 //Test if there are open submenu365 372 366 var found = $(row).find('.metaDataHierarchyMenu ul li ul').filter(":visible")[0]; 373 374 //Hide hierarchy menu if there are no open submenus 375 if ( found === undefined) 367 //Test if there are open submenu and cursor left tr element 368 if ( found === undefined && !$(row).is(':hover')) 376 369 { 377 //Hide menu370 //Hide hierarchy menu if there are no open submenus 378 371 $(row).find('.metaDataHierarchyMenu').hide(); 379 //console.log(this);380 // console.log(row);381 //console.log(found);372 373 //Set metadata value if textarea contains hierarchy path 374 substituteHierarchyMetaValue(row); 382 375 } 383 376 … … 388 381 }); 389 382 } 383 384 function substituteHierarchyMetaValue(row){ 385 var text = $(row).find('TEXTAREA').val(); 386 var metaName = getMetaName(row); 387 var hierarchyData = hierarchyStorage[metaName]; 388 if (hierarchyData[text]){ 389 var metaValue = hierarchyData[text][0]; 390 $(row).find('TEXTAREA').val(metaValue); 391 392 } 393 394 } 395 function getMetaName(row){ 396 return $(row.getElementsByClassName("metaTableCellName")[0]).text(); 397 } 390 398 var hierarchyStorage = {}; 391 399 function addHierarchyToStorage(metaDataName,processedHierarchy) 392 400 { 393 401 hierarchyStorage[metaDataName] = processedHierarchy; 394 //console.log( hierarchyStorage) 395 //console.log( metaDataName) 396 397 } 398 402 403 } 404
Note:
See TracChangeset
for help on using the changeset viewer.