Changes for page Nice Display
Last modified by Benjamin Fischer on 2025/05/15 17:09
From version 27.3
edited by Judith Steinfeld
on 2024/10/17 08:56
on 2024/10/17 08:56
Change comment:
There is no comment for this version
To version 45.31
edited by Benjamin Fischer
on 2025/03/26 13:19
on 2025/03/26 13:19
Change comment:
There is no comment for this version
Summary
-
Page properties (4 modified, 0 added, 0 removed)
-
Attachments (0 modified, 0 added, 3 removed)
-
Objects (0 modified, 1 added, 0 removed)
Details
- Page properties
-
- Title
-
... ... @@ -1,1 +1,1 @@ 1 - Peoplein ErUM-Data1 +Nice Display - Parent
-
... ... @@ -1,1 +1,1 @@ 1 - Main.WebHome1 +Research Groups.WebHome - Author
-
... ... @@ -1,1 +1,1 @@ 1 -XWiki. JudithSteinfeld1 +XWiki.fischer - Content
-
... ... @@ -1,40 +1,57 @@ 1 -(% class="box infomessage" %) 2 -((( 3 -With this collection we want to provide an overview of of various research groups and people in ErUM (data). 1 +{{locationSearch width="100%;clear:both;" className="Research Groups.Code.Research GroupsClass" description="Search, including in excerpts."/}} 4 4 5 -The list thrives on being filled. If you want to be subscribed or unsubscribed from this list please contact [[judith.steinfeld@erumdatahub.de>>mailto:judith.steinfeld@erumdatahub.de]] 6 -))) 3 +{{velocity}} 4 +#if ( $ntrg_tagCols == $null ) 5 +#set( $ntrg_tagCols = [["Tags", true]] ) 6 +#end 7 +#set ($shouldMinify = !$hasProgramming ) 8 +#set ($discard = $xwiki.jsx.use('Research Groups.Nice Display.WebHome', {"minify": $shouldMinify})) 7 7 10 +#set ($columnsProperties = { 11 + 'affiliation': {"filterable":true, "sortable":true, "html":true}, 12 + 'URL': {"type": "hidden"}, 13 + "content": {"type": "hidden"}, 14 + "coopDetails": {"type": "hidden"}, 15 + "coop": {"html": true}, 16 + "tags": {"sortable": false, "filterable": false, "html": true, "headerClass": "tagsCol", "aux": $ntrg_tagCols}, 17 + "doc.date": {"filterable": false, "displayName": "Last Updated"}, 18 + '_actions': {"actions":["view","edit"]} 19 +}) 20 +#set ($options = { 21 + 'className': 'Research Groups.Code.Research GroupsClass', 22 + 'translationPrefix': 'research groups.livetable.', 23 + 'extraParams': "&location=${escapetool.url($doc.getSpace())}", 24 + 'tagCloud': true, 25 + 'rowCount': 25, 26 + 'maxPages': 10, 27 + 'selectedColumn': 'doc.date', 28 + 'defaultOrder': 'desc' 29 +}) 30 +#set ($columns = ['affiliation', 'URL', "content", "coop", "coopDetails", "doc.date", '_actions']) 31 +#foreach ($ntrg_tagCol in $ntrg_tagCols) 32 +#set ($discard = $columns.add(3, "tags")) 33 +#end 34 +#livetable("research_groups" $columns $columnsProperties $options) 35 +{{/velocity}} 8 8 37 +(% id="howto" %) 38 +== How-To Add/Update Entries == 9 9 10 -|=(% scope="row" %)((( 11 -=== **Research Group** === 12 -)))|((( 13 -=== **Affiliation** === 40 +You need to be logged in to perform any modifications. 14 14 15 -**Location** 16 -)))|((( 17 -=== **Information/Contact** === 18 -)))|(% style="width:553px" %)((( 19 -=== **Research Focus** === 20 -)))|(% style="width:134px" %)((( 21 -=== **Community** === 22 -))) 23 -|Group PD Dr. Thorsten Enßlin|((( 24 -Max-Planck-Insititut für Astrophysik (MPA) 42 +=== Add entry === 25 25 26 -Garching 27 -)))|[[https:~~/~~/wwwmpa.mpa-garching.mpg.de/~~~~ensslin/>>https://wwwmpa.mpa-garching.mpg.de/~~ensslin/]]|(% style="width:553px" %)Information Field Theory|(% style="width:134px" %)KAT 28 -|HUB Materie|((( 29 -|Helmholtz Metadata Collaboration 30 -)))|((( 31 -|https:~/~/helmholtz-metadaten.de/de/materie/uebersicht 32 -)))|(% style="width:553px" %)((( 33 -|Strategien für das Forschungsdatenmanagement 34 -)))|(% style="width:134px" %) 35 -|=(% scope="col" %) | | |(% style="width:553px" %) |(% style="width:134px" %) 36 -|= | | |(% style="width:553px" %) |(% style="width:134px" %) 44 +1. click {{html}}<button class="btn"><i class="fa fa-plus"/>Create</button>{{/html}} (top right) 45 +1. fill in the Title in the top left (must be unique) 46 +1. click {{html}}<button class="btn btn-primary">Create</button>{{/html}} (bottom left) 47 +1. fill out the form 48 +1. click {{html}}<button class="btn btn-primary">Save & View</button>{{/html}} (bottom left) 49 +1. add tags (bottom left): click on the [+] behind: "Tags:" 37 37 51 +=== Modfiy entry === 38 38 39 -{{office attachment="People in ErUM v2.xlsx" filterStyles="false"/}} 53 +1. click on {{icon name="pencil"/}} Edit 54 +1. update the form 55 +1. click {{html}}<button class="btn btn-primary">Save & View</button>{{/html}} (bottom left) 56 +1. update the Tags (bottom left) 40 40
- People in ErUM v2.xlsx
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.JudithSteinfeld - Size
-
... ... @@ -1,1 +1,0 @@ 1 -34.5 KB - Content
- People in ErUM v2_7f9f8a04.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.JudithSteinfeld - Size
-
... ... @@ -1,1 +1,0 @@ 1 -115 bytes - Content
- People in ErUM v2_9a9d6ea5.png
-
- Author
-
... ... @@ -1,1 +1,0 @@ 1 -XWiki.JudithSteinfeld - Size
-
... ... @@ -1,1 +1,0 @@ 1 -13.0 KB - Content
- XWiki.JavaScriptExtension[0]
-
- Caching policy
-
... ... @@ -1,0 +1,1 @@ 1 +default - Code
-
... ... @@ -1,0 +1,126 @@ 1 +(()=>{ 2 + const tabName = "research_groups"; 3 + const coopDetailsLabel = "Cooperation Details"; 4 + const colTT = { 5 + "Community": [ 6 + "KAT - Astroparticle Physics", 7 + "KET - Elementary Particles Physics", 8 + "KfB - Accelerator Physics", 9 + "KFN - Research with neutrons", 10 + "KFN - Research with synchrotron radiation", 11 + "KFSI - Research with nuclear probes and ion beams", 12 + "KHuK - Hadron and nuclear physics", 13 + "RDS - German Observatory Council" 14 + ].join("<br/>"), 15 + "Cooperation": "...", 16 + }; 17 + let tagCols; 18 + 19 + document.observe('xwiki:livetable:loading', () => { 20 + const mats = document.getElementById(tabName); 21 + if (!mats) return; 22 + 23 + // coulmn data sources 24 + const conf = JSON.parse(mats.dataset.settings); 25 + tagCols = (conf.columnDescriptors.tags ?? {aux: []}).aux ?? [["Tags", true]]; 26 + tagCols.forEach(([name], i) => { 27 + const cn = `tags-${i}`; 28 + conf.columns.splice(conf.columns.indexOf("tags"), 1, cn); 29 + conf.columnDescriptors[cn] = { 30 + displayName: name, 31 + headerClass: "tagsCol", 32 + html: true, 33 + sortable: false, 34 + }; 35 + }); 36 + mats.dataset.settings = JSON.stringify(conf); 37 + 38 + // column headers 39 + mats.querySelectorAll(".xwiki-livetable-display-header .tagsCol").forEach( 40 + (v, i) => v.textContent = tagCols[i][0] 41 + ); 42 + 43 + // column tooltips 44 + mats.querySelectorAll(".xwiki-livetable-display-header-text").forEach( 45 + el => { 46 + const t = el.textContent.trim(); 47 + const c = colTT[t] 48 + if (c) { 49 + el.title = t; 50 + el.dataset.content = c; 51 + el.dataset.toggle = "popover"; 52 + el.dataset.placement = "top"; 53 + } 54 + } 55 + ) 56 + 57 + // handle clicks for tags 58 + document.getElementById(`${tabName}-display`).addEventListener("click", ev => { 59 + if (ev.button) return; // only left click 60 + if (ev.target.nodeName !== "SPAN") return; 61 + if (!ev.target.classList.contains("ltTag")) return; 62 + const tag = ev.target.textContent; 63 + ev.preventDefault(); 64 + const lt = mats.__liveTable; 65 + const st = lt.tagCloud.selectedTags; 66 + if (tag in st) delete st[tag]; 67 + else st[tag] = {}; 68 + lt.tags = Object.keys(st); 69 + lt.clearCache(); 70 + lt.showRows(1, lt.limit); 71 + }) 72 + }); 73 + 74 + document.observe(`xwiki:livetable:${tabName}:receivedEntries`, ({memo: {data}}) => { 75 + for (const row of data.rows) { 76 + const a = new Element("a", { href: row.URL }); 77 + a.innerHTML = row.affiliation_value.split("\n").map((a, i) => i ? a : `<b class="wikiexternallink">${a}</b>`).join("<br/>"); 78 + a.title = row.doc_title; 79 + if (row.content !== "-") { 80 + let c = row.content; 81 + if (row.coopDetails !== "-") 82 + c = `${c}<br/><b>${coopDetailsLabel}:</b> ${row.coopDetails}`; 83 + a.dataset.content = c; 84 + a.dataset.toggle = "popover"; 85 + } 86 + row.affiliation = a.outerHTML; 87 + 88 + row.coop = row.coop.replace(/\b \.\.\. \b/g, " ...<br/>"); 89 + if (row.coopDetails !== "-") { 90 + const d = new Element("div"); 91 + d.innerHTML = row.coop; 92 + d.title = coopDetailsLabel; 93 + d.dataset.content = row.coopDetails; 94 + d.dataset.toggle = "popover"; 95 + row.coop = d.outerHTML; 96 + } 97 + 98 + row.doc_date = row.doc_date.split(" ")[0].split("/").slice(0, 2).join("/"); 99 + 100 + // tags 101 + const tags = new Set(row.tags_value.slice(1, -1).split(", ")); 102 + tagCols.forEach(([name, ...want], i) => 103 + row[`tags-${i}`] = ( 104 + want[0] === true 105 + ? Array.from(tags) 106 + : want.filter(tag => tags.delete(tag)) 107 + ).sort().map(tag => `<span class="ltTag" style="cursor:pointer;">${tag}</span>`).join(", ") 108 + ); 109 + } 110 + }); 111 + 112 + require(['jquery', 'bootstrap'], function($) { 113 + document.styleSheets[0].insertRule(`#mainContentArea .popover {max-width: 50%;}`); 114 + 115 + const ttApply = () => { 116 + $(`#${tabName} [data-toggle="popover"]`).popover({ 117 + html: true, 118 + container: `#mainContentArea`, 119 + trigger: "hover", 120 + }); 121 + }; 122 + 123 + document.observe(`xwiki:livetable:${tabName}:displayComplete`, ttApply); 124 + ttApply(); 125 + }); 126 +})(); - Name
-
... ... @@ -1,0 +1,1 @@ 1 +Nice Table - Research Groups - Parse content
-
... ... @@ -1,0 +1,1 @@ 1 +No - Use this extension
-
... ... @@ -1,0 +1,1 @@ 1 +onDemand