@event-calendar/core
Version:
Full-sized drag & drop event calendar with resource & timeline views
59 lines (51 loc) • 1.33 kB
JavaScript
import {isFunction, sortEventChunks} from '#lib';
export function groupEventChunks(chunks) {
if (!chunks.length) {
return;
}
sortEventChunks(chunks);
// Group
let group = {
columns: [],
end: chunks[0].end
};
for (let chunk of chunks) {
let c = 0;
if (chunk.start < group.end) {
for (; c < group.columns.length; ++c) {
if (group.columns[c].at(-1).end <= chunk.start) {
break;
}
}
if (chunk.end > group.end) {
group.end = chunk.end;
}
} else {
group = {
columns: [],
end: chunk.end
};
}
if (group.columns.length < c + 1) {
group.columns.push([]);
}
group.columns[c].push(chunk);
chunk.group = group;
chunk.column = c;
}
}
export function createAllDayContent(allDayContent) {
let text = 'all-day';
let content;
if (allDayContent) {
content = isFunction(allDayContent) ? allDayContent({text}) : allDayContent;
if (typeof content === 'string') {
content = {html: content};
}
} else {
content = {
html: text
};
}
return content;
}