Changes for page Home
Last modified by Benjamin Fischer on 2025/06/04 14:20
From version 69.1
edited by Benjamin Fischer
on 2024/11/05 16:15
on 2024/11/05 16:15
Change comment:
There is no comment for this version
To version 72.46
edited by Benjamin Fischer
on 2024/11/07 11:56
on 2024/11/07 11:56
Change comment:
There is no comment for this version
Summary
-
Page properties (1 modified, 0 added, 0 removed)
-
Objects (0 modified, 2 added, 0 removed)
Details
- Page properties
-
- Content
-
... ... @@ -9,7 +9,7 @@ 9 9 If you have any ideas for new features or content that you would want to find here, feel free to get in contact with us. 10 10 Otherwise, you can always create an account and contribute improvements or novel content yourself. For now, the registration is not open to the puplic. 11 11 12 -= **What is new?**=12 += What is new? = 13 13 14 14 Have a look at our new comprehensive: 15 15 ... ... @@ -16,9 +16,19 @@ 16 16 * [[Material collection]] of learning and teaching materials, and 17 17 * [[People in ErUM-Data]] list of research groups and contact information of people who work in ErUM-Data. 18 18 19 += ErUM-Data Calendar = 19 19 20 -{{calendar classname="Event.Code.EventClass" startfield="startDate" endfield="endDate" right="month,listYear" editable="false"/}} 21 +{{velocity output="false"}} 22 +$xwiki.ssx.use("Calendar.FullCalendar") 23 +$xwiki.jsx.use("Calendar.FullCalendar", {'defer': false}) 24 +$xwiki.jsx.use("Main.WebHome", {'defer': false, 'minify': false}) 25 +{{/velocity}} 21 21 27 +(% id="calendarCustom" %) 28 +((( 29 + 30 +))) 31 + 22 22 {{velocity}} 23 23 #set ($showcomments = false) 24 24 #set ($showannotations = false)
- XWiki.JavaScriptExtension[0]
-
- Caching policy
-
... ... @@ -1,0 +1,1 @@ 1 +default - Code
-
... ... @@ -1,0 +1,134 @@ 1 +require(["jquery", "fullcalendar"], function (jq) { 2 + const FC = jq.fullCalendar; 3 + const E = (tag, ...childs) => { 4 + const attrs = childs[0]?.constructor === Object ? childs.shift() : {}; 5 + const ret = Element(tag, attrs); 6 + ret.append(...childs.flat().filter(e => e)); 7 + return ret; 8 + }; 9 + const range = num => Array(num).fill().map((_, i) => i); 10 + FC.defineView('monthCols', { 11 + class: FC.View.extend({ 12 + renderSkeleton() {}, 13 + renderEvents(events) { 14 + const cf = this.opt("columnFormat") ?? "MMM"; 15 + const rf = this.opt("rowFormat") ?? "dd"; 16 + const df = this.opt("cellFormat") ?? "ddd"; 17 + const wf = this.opt("weekFormat") ?? "w"; 18 + const colspan = (df || wf) ? (1 + !!df + !!wf) : null; 19 + 20 + const ys = this.start; 21 + const ye = this.end; 22 + const yv = events.slice().sort((a,b) => a.start.diff(b.start) || a.end.diff(b.end)); 23 + 24 + const head = []; 25 + const days = Array(31).fill().map(_ => []); 26 + 27 + if (rf) { 28 + head.push(E("th")); 29 + days.forEach((arr, day) => arr.push(E("th", {class: "fc-axis"}, ys.clone().add({day}).format(rf)))); 30 + } 31 + 32 + for (const month in Array(12).fill()) { 33 + const ms = ys.clone().add({month}) 34 + const me = ms.clone().add({month: 1}); 35 + const md = me.diff(ms, "days"); 36 + const mv = yv.filter(t => ms.isBefore(t.end) || t.start.isBefore(me)); 37 + 38 + head.push(E("th", {colspan}, ms.format(cf))); 39 + 40 + const bgc = new Array(md); 41 + 42 + for (let day = 0; i < 31; i++) { 43 + if (i < md) { 44 + const ds = ms.clone().add({day}); 45 + const de = ds.clone().add({day: 1}); 46 + 47 + const oc = []; 48 + while(mv[0]?.isBefore(de)) { 49 + const v = mv.shift(); 50 + const d = Math.ceil(v.end.min(me).diff(ds, "days", true)); 51 + if (t.rendering == "background") 52 + if (t.color) 53 + for (let i=0; i<d; i++) 54 + bgc[day + i] = t.color; 55 + else { 56 + const e = E("div", t.title); 57 + e.style.height = `${100 * d}%`; 58 + if (t.color) e.style.borderColor = e.style.backgroundColor = t.color; 59 + if (t.textColor) e.style.color = t.textColor; 60 + oc.push(e); 61 + // TODO: soft-columns 62 + } 63 + } 64 + 65 + const da = {class: this.getDayClasses(d).join(" ")}; 66 + if (df) days[i].push(E("td", da, ds.format(df))); 67 + if (bgc[day]) da.style = `background-color: ${bgc[day]};`; 68 + days[i].push(E("td", da, oc)); 69 + if (wf) days[i].oush(E("td", ds.weekday() ? "" : ds.format(wf))); 70 + } else 71 + days[i].push(E("td", {colspan})); 72 + } 73 + } 74 + 75 + 76 + this.el.addClass("fc-month-cols-view").html( 77 + E( 78 + "table", 79 + E("thead", {class: "fc-head"}, E("tr", head)), 80 + E("tbody", {class: "fc-body"}, days.map(d => E("tr", d))), 81 + ) 82 + ); 83 + 84 + //debugger; 85 + }, 86 + }), 87 + duration: { year: 1 }, 88 + }); 89 + 90 + const init = () => { 91 + jq("#calendarCustom").fullCalendar({ 92 + views: { 93 + month: { 94 + columnFormat: "ddd", 95 + titleFormat: "MMMM YYYY", 96 + buttonText: "month", 97 + }, 98 + monthCols: { 99 + columnFormat: "MMM", 100 + titleFormat: "YYYY", 101 + buttonText: "year", 102 + }, 103 + }, 104 + timeFormat: "h(:mm)t", 105 + axisFormat: "h(:mm)t", 106 + allDayText: "All day", 107 + eventSources: [ 108 + "/bin/get/MoccaCalendar/Code/JSONService?xpage=plain&outputSyntax=plain&calendarDoc=Main.WebHome&filter=wiki&classname=MoccaCalendar.MoccaCalendarEventClass&startfield=startDate&endfield=endDate&durationfield=&xpage=plain&outputSyntax=plain&classname=&startfield=datetime&endfield=&durationfield=&extraFields=", 109 + ], 110 + header: { 111 + left: "prev,next today", 112 + center: "title", 113 + right: "month,monthCols", 114 + }, 115 + timeFormat: "H:mm", 116 + defaultView: "month", 117 + firstDay: "1", 118 + minTime: "8:00", 119 + maxTime: "23:00", 120 + defaultDate: "2024-11-06", 121 + editable: false, 122 + eventDataTransform: event => { 123 + if (event.url.split("/")[4] === "Holidays") event.rendering = "background"; 124 + return event; 125 + }, 126 + eventRender: function (event, element) { 127 + // Render augmentation hook, use: event.html 128 + }, 129 + }); 130 + }; 131 + 132 + jq(document).ready(init); 133 +}); 134 + - Name
-
... ... @@ -1,0 +1,1 @@ 1 +Customized Calendar View - Parse content
-
... ... @@ -1,0 +1,1 @@ 1 +No - Use this extension
-
... ... @@ -1,0 +1,1 @@ 1 +onDemand
- XWiki.StyleSheetExtension[0]
-
- Caching policy
-
... ... @@ -1,0 +1,1 @@ 1 +default - Code
-
... ... @@ -1,0 +1,5 @@ 1 +#calendarCustom { 2 + td.fc-sat, td.fc-sun { 3 + background-color: #f5f5f5; 4 + } 5 +} - Content Type
-
... ... @@ -1,0 +1,1 @@ 1 +LESS - Parse content
-
... ... @@ -1,0 +1,1 @@ 1 +No - Use this extension
-
... ... @@ -1,0 +1,1 @@ 1 +currentPage