Changes for page Material Collection
Last modified by Judith Steinfeld on 2025/06/03 11:13
From version 104.1
edited by Judith Steinfeld
on 2025/04/08 15:37
on 2025/04/08 15:37
Change comment:
There is no comment for this version
To version 107.4
edited by Benjamin Fischer
on 2025/05/15 17:04
on 2025/05/15 17:04
Change comment:
There is no comment for this version
Summary
-
Page properties (2 modified, 0 added, 0 removed)
-
Attachments (0 modified, 1 added, 0 removed)
-
Objects (0 modified, 0 added, 1 removed)
Details
- Page properties
-
- Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. JudithSteinfeld1 +XWiki.fischer - Content
-
... ... @@ -15,12 +15,12 @@ 15 15 The collection of existing materials thrives on being filled and is complemented by our own materials which include for example videos and slides from various workshops and schools organized by the ErUM-Data-Hub in collaboration with DIG-UM with which we reached over 800 participants so far. 16 16 17 17 18 -===== **//{{icon name="info-circle"/}}//Update/add material: If you want to be added or removed from the material list please contact [[judith.steinfeld@erumdatahub.de>>mailto:judith.steinfeld@erumdatahub.de]]. Feel free to add material or edit tags yourself. For help, see this [[video>>attach:material_collection_final.mp4]].** ===== 19 - 20 20 **//{{icon name="info-circle"/}}//Please note that this list is a collection of material links; we do not host any materials ourselves.** 21 21 22 -//{{icon name="info-circle"/}}// **Searchformaterial:** Ourlistcontainsa collectionofmain categorykeywords(cf.tags)relevantoErUM scientists.Ifyouaremissingakeywordorlookingformorespecificones,pleaseuse thesearchfunctionthe titles.20 +===== **//{{icon name="info-circle"/}}//Update/add material: If you want to be added or removed from the material list please contact [[judith.steinfeld@erumdatahub.de>>mailto:judith.steinfeld@erumdatahub.de]]. Feel free to add material or edit tags yourself. For help, see this [[video>>attach:material_collection_final.mp4]].** ===== 23 23 22 +//{{icon name="info-circle"/}}//**Search for material:** Our list contains a collection of main category keywords (cf. tags) relevant to ErUM scientists. If you are missing a keyword or looking for more specific ones, please use the search function below "title". 23 + 24 24 {{velocity}} 25 25 #set ($columnsProperties = { 26 26 'doc.location': {"displayName": "Title", "html": true}, ... ... @@ -27,7 +27,10 @@ 27 27 'link': {"type": "hidden"}, 28 28 'date': {"html": true}, 29 29 'author': {}, 30 - "tags": {"sortable": false, "filterable": false, "html": true, "headerClass": "tagsCol"}, 30 + "tags": {"sortable": false, "filterable": false, "html": true, "headerClass": "tagsCol", "aux": [ 31 + ["Type", "lecture", "exercise", "hands-on", "solution", "tutorial", "talk", "course", "video", "paper"], 32 + ["Tags", true] 33 + ]}, 31 31 "_actions": {"actions": ["view", "edit"]} 32 32 }) 33 33 #set ($options = {
- Radio_calibration_Alex_17082023.pdf
-
- Author
-
... ... @@ -1,0 +1,1 @@ 1 +XWiki.AlexReuzki - Size
-
... ... @@ -1,0 +1,1 @@ 1 +2.4 MB - Content
- XWiki.JavaScriptExtension[0]
-
- Caching policy
-
... ... @@ -1,1 +1,0 @@ 1 -default - Code
-
... ... @@ -1,101 +1,0 @@ 1 -const tabName = "materials"; 2 -const tagCols = [ 3 - ["Type", "lecture", "exercise", "hands-on", "solution", "tutorial", "talk", "course", "video", "paper"], 4 - ["Tags", true], 5 -] 6 - 7 -document.observe('xwiki:livetable:loading', () => { 8 - const mats = document.getElementById(tabName); 9 - 10 - // coulmn data sources 11 - const conf = JSON.parse(mats.dataset.settings); 12 - tagCols.forEach(([name], i) => { 13 - const cn = `tags-${i}`; 14 - conf.columns.splice(conf.columns.indexOf("tags"), 1, cn); 15 - conf.columnDescriptors[cn] = { 16 - displayName: name, 17 - headerClass: "tagsCol", 18 - html: true, 19 - sortable: false, 20 - }; 21 - }); 22 - mats.dataset.settings = JSON.stringify(conf); 23 - 24 - // column headers 25 - mats.querySelectorAll(".xwiki-livetable-display-header .tagsCol").forEach( 26 - (v, i) => v.textContent = tagCols[i][0] 27 - ); 28 - 29 - // handle clicks for tags 30 - document.getElementById(`${tabName}-display`).addEventListener("click", ev => { 31 - if (ev.button) return; // only left click 32 - if (ev.target.nodeName !== "SPAN") return; 33 - if (!ev.target.classList.contains("ltTag")) return; 34 - const tag = ev.target.textContent; 35 - ev.preventDefault(); 36 - const lt = mats.__liveTable; 37 - const st = lt.tagCloud.selectedTags; 38 - if (tag in st) delete st[tag]; 39 - else st[tag] = {}; 40 - lt.tags = Object.keys(st); 41 - lt.clearCache(); 42 - lt.showRows(1, lt.limit); 43 - }) 44 -}); 45 - 46 -document.observe(`xwiki:livetable:${tabName}:receivedEntries`, ({memo: {data}}) => { 47 - for (const row of data.rows) { 48 - const ol = new DOMParser().parseFromString(row.doc_location, "text/xml").documentElement; 49 - const li = ol.children; 50 - 51 - switch (li[0].textContent) { 52 - case "MoccaCalendar": 53 - li[1].remove(); // the sub calendar 54 - case "Material collection": 55 - li[0].remove(); // the "app" 56 - } 57 - for (let i = 1; i < li.length - 1; i++) // intermediate 58 - li[i].textContent = li[i].textContent; // remove link 59 - 60 - const a = li[li.length - 1].children[0]; 61 - const b = a.ownerDocument.createElement("b"); 62 - a.replaceWith(b); 63 - b.appendChild(a); 64 - a.textContent = row.doc_title; 65 - 66 - const u = new URL(row.link_value); 67 - let icon; 68 - if (u.hostname.includes("github")) icon = "github"; 69 - if (u.hostname.includes("github.io")) icon = "book"; 70 - if (u.hostname.includes("gitlab")) icon = "gitlab"; 71 - if (u.hostname.includes("google")) icon = "google"; 72 - if (u.hostname.includes("colab")) icon = "code"; 73 - if (u.hostname.includes("youtube")) icon = "youtube-play"; 74 - if (u.pathname.endsWith(".pdf")) icon = "file-pdf-o"; 75 - if (u.pathname.endsWith(".pptx")) icon = "file-powerpoint-o"; 76 - if (icon) { 77 - const s = a.ownerDocument.createElement("span"); 78 - s.appendChild(a.ownerDocument.createElement("wbr")); 79 - s.setAttribute("class", `fa fa-${icon}`); 80 - s.setAttribute("style", "padding-right: .3em;"); 81 - a.insertBefore(s, a.firstChild); 82 - } 83 - a.setAttribute("class", "wikiexternallink"); 84 - a.setAttribute("href", u.href); 85 - 86 - row.doc_location = ol.outerHTML; 87 - 88 - // tags 89 - const tags = new Set(row.tags_value.slice(1, -1).split(", ")); 90 - tagCols.forEach(([name, ...want], i) => 91 - row[`tags-${i}`] = ( 92 - want[0] === true 93 - ? Array.from(tags) 94 - : want.filter(tag => tags.delete(tag)) 95 - ).sort().map(tag => `<span class="ltTag" style="cursor:pointer;white-space:nowrap;">${tag}</span>`).join(", ") 96 - ); 97 - } 98 -}); 99 - 100 - 101 - - Name
-
... ... @@ -1,1 +1,0 @@ 1 -Live Table - Materials - Parse content
-
... ... @@ -1,1 +1,0 @@ 1 -No - Use this extension
-
... ... @@ -1,1 +1,0 @@ 1 -currentPage