- Timestamp:
- 2022-04-14T17:13:54+12:00 (2 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/web/interfaces/default/js/utility_scripts.js
r33544 r36145 166 166 $.ajax(url); 167 167 } 168 169 var tkMetadataSetStatus = "needs-to-be-loaded"; 170 var tkMetadataElements = null; 171 172 173 function addTKLabelToImage(labelName, definition, name, comment) { 174 // lists of tkLabels and their corresponding codes, in order 175 let tkLabels = ["Attribution","Clan","Family","MultipleCommunities","CommunityVoice","Creative","Verified","NonVerified","Seasonal","WomenGeneral","MenGeneral", 176 "MenRestricted","WomenRestricted","CulturallySensitive","SecretSacred","OpenToCommercialization","NonCommercial","CommunityUseOnly","Outreach","OpenToCollaboration"]; 177 let tkCodes = ["tk_a","tk_cl","tk_f","tk_mc","tk_cv","tk_cr","tk_v","tk_nv","tk_s","tk_wg","tk_mg","tk_mr","tk_wr","tk_cs","tk_ss","tk_oc","tk_nc","tk_co","tk_o","tk_cb"]; 178 for (let i = 0; i < tkLabels.length; i++) { 179 if (labelName == tkLabels[i]) { 180 let labeldiv = document.querySelectorAll(".tklabels img"); 181 for (image of labeldiv) { 182 let labelCode = image.src.substr(image.src.lastIndexOf("/") + 1).replace(".png", ""); // get tk label code from image file name 183 if (labelCode == tkCodes[i]) { 184 image.title = "TK " + name + ": " + definition + " Click for more details."; // set tooltip 185 if (image.parentElement.parentElement.parentElement.classList[0] != "tocSectionTitle") { // disable onclick event in favourites section 186 image.addEventListener("click", function(e) { 187 let currPopup = document.getElementsByClassName("tkPopup")[0]; 188 if (currPopup == undefined || (currPopup != undefined && currPopup.id != labelCode)) { 189 let popup = document.createElement("div"); 190 popup.classList.add("tkPopup"); 191 popup.id = labelCode; 192 let popupText = document.createElement("span"); 193 let heading = "<h1>Traditional Knowledge Label:<br><h2>" + name + "</h2></h1>"; 194 let moreInformation = "<br> For more information about TK Labels, <a href='https://localcontexts.org/labels/traditional-knowledge-labels/' target='_blank'>click here.</a>"; 195 popupText.innerHTML = heading + comment + moreInformation; 196 let closeButton = document.createElement("span"); 197 closeButton.innerHTML = "×"; 198 closeButton.id = "tkCloseButton"; 199 closeButton.title = "Click to close window." 200 closeButton.addEventListener("click", function(e) { 201 closeButton.parentElement.remove(); 202 }); 203 popup.appendChild(closeButton); 204 popup.appendChild(popupText); 205 e.target.parentElement.appendChild(popup); 206 } 207 if (currPopup) currPopup.remove(); // remove existing popup div 208 }); 209 } 210 } 211 } 212 } 213 } 214 } 215 216 function addTKLabelsToImages(lang) { 217 if (tkMetadataElements == null) { 218 console.error("ajax call not yet loaded tk label metadata set"); 219 } else { 220 for (label of tkMetadataElements) { // for each tklabel element in tk.mds 221 let tkLabelName = label.attributes.name.value; // Element name="" 222 let attributes = label.querySelectorAll("[code=" + lang + "] Attribute"); // gets attributes for selected language 223 let tkName = attributes[0].textContent; // name="label" 224 let tkDefinition = attributes[1].textContent; // name="definition" 225 let tkComment = attributes[2].textContent; // name="comment" 226 addTKLabelToImage(tkLabelName, tkDefinition, tkName, tkComment); 227 } 228 } 229 } 230 231 function loadTKMetadataSet(lang) { 232 tkMetadataSetStatus = "loading"; 233 $.ajax({ 234 url: gs.variables["tkMetadataURL"], 235 success: function(xml) { 236 tkMetadataSetStatus = "loaded"; 237 let parser = new DOMParser(); 238 let tkmds = parser.parseFromString(xml, "text/xml"); 239 tkMetadataElements = tkmds.querySelectorAll("Element"); 240 if (document.readyState === "complete") { 241 addTKLabelsToImages(lang); 242 } else { 243 window.onload = function() { 244 addTKLabelsToImages(lang); 245 } 246 } 247 }, 248 error: function() { 249 tkMetadataSetStatus = "no-metadata-set-for-this-collection"; 250 console.log("No TK Label Metadata-set found for this collection"); 251 } 252 }); 253 }; 254 255
Note:
See TracChangeset
for help on using the changeset viewer.