Changes for page Material Collection

Last modified by Judith Steinfeld on 2025/06/03 11:13

From version 76.2
edited by Jan Bürger
on 2024/12/09 14:24
Change comment: Added comment
To version 49.1
edited by Judith Steinfeld
on 2024/09/24 15:17
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -XWiki.JanBurger
1 +XWiki.JudithSteinfeld
Content
... ... @@ -1,31 +1,29 @@
1 -{{box cssClass="floatinginfobox" title="==== **Further Materials** ===="}}
2 -{{displayIcon name="world"/}} [[Elixir TeSS Training Material>>https://tess.elixir-europe.org/]]
1 +== **Learning and Teaching Materials for ErUM-Data-Scientist** ==
3 3  
4 -{{displayIcon name="world"/}} [[PaN TRaining Catalogue>>https://pan-training.eu/]]
3 +{{info}}
4 +Are you an ErUM-Data-Scientist who wants to expand your digital skills or do you want to support (young/prospective) ErUM-Scientists in pursuing digital transformation?
5 5  
6 -{{displayIcon name="world"/}} [[FAIRmat Tutorials>>https://www.fairmat-nfdi.eu/events/fairmat-tutorial-2/tutorial-2-materials]]
6 +With our material collection we want to provide an overview of existing materials and contacts by outlining where to find what.
7 7  
8 -{{displayIcon name="world"/}} [[LHC Masterclasses (Netzwerk Teilchenwelt)>>https://www.teilchenwelt.de/angebote/neue-links-zu-materialien/]]
9 -{{/box}}
8 +The collection of existing materials 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.
10 10  
11 -== Learning and Teaching Materials for ErUM-Data-Scientists ==
12 12  
13 -Are you an ErUM-Data-Scientist who wants to expand your digital skills or do you want to support (young/prospective) ErUM-Scientists in pursuing digital transformation?
11 +Please feel free to share your ErUM-Data materials.
12 +{{/info}}
14 14  
15 -With our material collection we want to provide an overview of existing materials and contacts by outlining where to find what.
14 +Hint Copyright: Please not that the materials are from
16 16  
17 -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 +{{success}}
17 +Our collection of materials covers many different topics. You can click on one or more tags to filter the list...
18 +{{/success}}
18 18  
19 -If you want to be add or remove material from this list please contact [[judith.steinfeld@erumdatahub.de>>mailto:judith.steinfeld@erumdatahub.de]].
20 -
21 21  {{velocity}}
22 22  #set ($columnsProperties = {
23 - 'doc.location': {"displayName": "Title", "html": true},
24 - 'link': {"type": "hidden"},
25 - 'date': {"html": true},
22 + 'doc.location': {"displayName": "Title", "html":true},
23 + 'link': {},
24 + 'date': {"html":true},
26 26   'author': {},
27 - "tags": {"sortable": false, "filterable": false, "html": true, "headerClass": "tagsCol"},
28 - "_actions": {"actions": ["view", "edit"]}
26 + "tags": {"displayName": "Tags", "type": "list"}
29 29  })
30 30  #set ($options = {
31 31   'className': 'Materials.Code.MaterialsClass',
... ... @@ -33,13 +33,10 @@
33 33   'tagCloud': true,
34 34   'rowCount': 25,
35 35   'maxPages': 10,
36 - "extraParams" : "tags_className=XWiki.TagClass",
34 + "extraParams" : "tagsProperty=XWiki.TagClass",
37 37   'selectedColumn': 'date',
38 38   'defaultOrder': 'desc'
39 39  })
40 -#set ($columns = ['doc.location', 'link', "tags", "tags", 'date', 'author'])
41 -#if (!$isGuest)
42 - #set($discard = $columns.add("_actions"))
43 -#end
38 +#set ($columns = ['doc.location', 'link', "tags", 'date', 'author'])
44 44  #livetable('materials' $columns $columnsProperties $options)
45 45  {{/velocity}}
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
XWiki.XWikiComments[0]
Author
... ... @@ -1,1 +1,0 @@
1 -XWiki.JanBurger
Comment
... ... @@ -1,1 +1,0 @@
1 -If you have comments to the collection, please feel free.
Date
... ... @@ -1,1 +1,0 @@
1 -2024-12-09 13:24:42.240