Changes for page Home
Last modified by Benjamin Fischer on 2025/06/04 14:20
From version 72.45
edited by Benjamin Fischer
on 2024/11/07 11:55
on 2024/11/07 11:55
Change comment:
There is no comment for this version
To version 72.60
edited by Benjamin Fischer
on 2024/11/07 12:52
on 2024/11/07 12:52
Change comment:
There is no comment for this version
Summary
-
Objects (2 modified, 0 added, 0 removed)
Details
- XWiki.JavaScriptExtension[0]
-
- Code
-
... ... @@ -9,11 +9,25 @@ 9 9 const range = num => Array(num).fill().map((_, i) => i); 10 10 FC.defineView('monthCols', { 11 11 class: FC.View.extend({ 12 - render() {}, 12 + render() { 13 + console.debug("render"); 14 + }, 15 + renderSkeleton() { 16 + console.debug("renderSkeleton"); 17 + }, 13 13 renderEvents(events) { 19 + console.debug("renderEvents", events); 20 + debugger; 21 + try { 22 + this._renderFun(events); 23 + } catch (e) { 24 + console.exception(e); 25 + } 26 + }, 27 + _renderFun(events) { 14 14 const cf = this.opt("columnFormat") ?? "MMM"; 15 - const rf = this.opt("rowFormat") ?? " dd";16 - const df = this.opt("cellFormat") ?? "dd d";29 + const rf = this.opt("rowFormat") ?? "D"; 30 + const df = this.opt("cellFormat") ?? "dd"; 17 17 const wf = this.opt("weekFormat") ?? "w"; 18 18 const colspan = (df || wf) ? (1 + !!df + !!wf) : null; 19 19 ... ... @@ -21,54 +21,60 @@ 21 21 const ye = this.end; 22 22 const yv = events.slice().sort((a,b) => a.start.diff(b.start) || a.end.diff(b.end)); 23 23 38 + 39 + const cols = []; 24 24 const head = []; 25 25 const days = Array(31).fill().map(_ => []); 26 26 27 27 if (rf) { 44 + cols.push(E("col", {class: "fc-fitCol"})); 28 28 head.push(E("th")); 29 29 days.forEach((arr, day) => arr.push(E("th", {class: "fc-axis"}, ys.clone().add({day}).format(rf)))); 30 30 } 31 31 32 - for (const month inArray(12).fill()){49 + for (const month of range(12)) { 33 33 const ms = ys.clone().add({month}) 34 34 const me = ms.clone().add({month: 1}); 35 35 const md = me.diff(ms, "days"); 36 - const mv = yv.filter(t => ms.isBefore(t.end) ||t.start.isBefore(me));53 + const mv = yv.filter(t => ms.isBefore(t.end) && t.start.isBefore(me)); 37 37 55 + if (df) cols.push(E("col", {class: "fc-fitCol fc-fade fc-dayVal"})); 56 + cols.push(E("col")); 57 + if (wf) cols.push(E("col", {class: "fc-fitCol fc-fade fc-weekVal"})); 38 38 head.push(E("th", {colspan}, ms.format(cf))); 39 39 40 40 const bgc = new Array(md); 41 41 42 - for ( let day=0; i <31; i++) {43 - if ( i< md) {62 + for (const day of range(31)) { 63 + if (day < md) { 44 44 const ds = ms.clone().add({day}); 45 45 const de = ds.clone().add({day: 1}); 46 46 47 47 const oc = []; 48 - while(mv[0]?.isBefore(de)) { 68 + while(mv[0]?.start.isBefore(de)) { 49 49 const v = mv.shift(); 50 - const d = Math.ceil(v.end.m in(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);70 + const d = Math.ceil(v.end.max(me).diff(ds, "days", true)); 71 + if (v.rendering == "background") { 72 + if (v.color) 73 + for (const i of range(d)) 74 + bgc[day + i] = v.color; 75 + } else { 76 + const e = E("div", v.title); 57 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;78 + if (v.color) e.style.borderColor = e.style.backgroundColor = v.color; 79 + if (v.textColor) e.style.color = v.textColor; 60 60 oc.push(e); 61 61 // TODO: soft-columns 62 62 } 63 63 } 64 64 65 - const da = {class: this.getDayClasses(d).join(" ")}; 66 - if (df) days[ i].push(E("td", da, ds.format(df)));85 + const da = {class: this.getDayClasses(ds).join(" ")}; 86 + if (df) days[day].push(E("td", da, ds.format(df))); 67 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)));88 + days[day].push(E("td", da, oc)); 89 + if (wf) days[day].push(E("td", da, ds.weekday() ? "" : ds.format(wf))); 70 70 } else 71 - days[ i].push(E("td", {colspan}));91 + days[day].push(E("td", {colspan})); 72 72 } 73 73 } 74 74 ... ... @@ -76,13 +76,12 @@ 76 76 this.el.addClass("fc-month-cols-view").html( 77 77 E( 78 78 "table", 99 + E("colgroup", cols), 79 79 E("thead", {class: "fc-head"}, E("tr", head)), 80 80 E("tbody", {class: "fc-body"}, days.map(d => E("tr", d))), 81 81 ) 82 82 ); 83 - 84 - //debugger; 85 - }, 104 + } 86 86 }), 87 87 duration: { year: 1 }, 88 88 }); ... ... @@ -97,6 +97,7 @@ 97 97 }, 98 98 monthCols: { 99 99 columnFormat: "MMM", 119 + weekFormat: "W", 100 100 titleFormat: "YYYY", 101 101 buttonText: "year", 102 102 },
- XWiki.StyleSheetExtension[0]
-
- Code
-
... ... @@ -2,4 +2,11 @@ 2 2 td.fc-sat, td.fc-sun { 3 3 background-color: #f5f5f5; 4 4 } 5 + .fc_body td { 6 + position: relative; 7 + > div { 8 + position: absolute; 9 + 10 + } 11 + } 5 5 }