Moving away from Azure Devops #1
3 changed files with 83 additions and 84 deletions
|
|
@ -12,9 +12,9 @@ export class DateService {
|
||||||
return new Intl.DateTimeFormat(this.config.locale, { weekday: format }).format(date);
|
return new Intl.DateTimeFormat(this.config.locale, { weekday: format }).format(date);
|
||||||
}
|
}
|
||||||
|
|
||||||
getWeekDates(offset = 0): string[] {
|
getWeekDates(offset = 0, days = 7): string[] {
|
||||||
const monday = dayjs().startOf('week').add(1, 'day').add(offset, 'week');
|
const monday = dayjs().startOf('week').add(1, 'day').add(offset, 'week');
|
||||||
return Array.from({ length: 7 }, (_, i) =>
|
return Array.from({ length: days }, (_, i) =>
|
||||||
monday.add(i, 'day').format('YYYY-MM-DD')
|
monday.add(i, 'day').format('YYYY-MM-DD')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -50,8 +50,8 @@ export class DemoApp {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
// Render time axis
|
// Render time axis (06:00 - 18:00)
|
||||||
this.timeAxisRenderer.render(document.getElementById('time-axis') as HTMLElement);
|
this.timeAxisRenderer.render(document.getElementById('time-axis') as HTMLElement, 6, 18);
|
||||||
|
|
||||||
// Init scroll synkronisering
|
// Init scroll synkronisering
|
||||||
this.scrollManager.init(this.container);
|
this.scrollManager.init(this.container);
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@
|
||||||
--time-axis-width: 60px;
|
--time-axis-width: 60px;
|
||||||
--grid-columns: 7;
|
--grid-columns: 7;
|
||||||
--day-column-min-width: 200px;
|
--day-column-min-width: 200px;
|
||||||
--day-start-hour: 0;
|
--day-start-hour: 6;
|
||||||
--day-end-hour: 24;
|
--day-end-hour: 18;
|
||||||
--color-border: #e0e0e0;
|
--color-border: #e0e0e0;
|
||||||
--color-surface: #fff;
|
--color-surface: #fff;
|
||||||
--color-text-secondary: #666;
|
--color-text-secondary: #666;
|
||||||
|
|
@ -48,14 +48,13 @@ swp-nav-button {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
background: var(--color-surface);
|
background: var(--color-surface);
|
||||||
}
|
|
||||||
|
|
||||||
swp-nav-button:hover { background: #f0f0f0; }
|
&:hover { background: #f0f0f0; }
|
||||||
|
}
|
||||||
|
|
||||||
swp-week-info {
|
swp-week-info {
|
||||||
margin-left: auto;
|
margin-left: auto;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
|
||||||
|
|
||||||
swp-week-number {
|
swp-week-number {
|
||||||
font-weight: 600;
|
font-weight: 600;
|
||||||
|
|
@ -66,6 +65,7 @@ swp-date-range {
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
color: var(--color-text-secondary);
|
color: var(--color-text-secondary);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Container */
|
/* Container */
|
||||||
swp-calendar-container {
|
swp-calendar-container {
|
||||||
|
|
@ -108,9 +108,8 @@ swp-hour-marker {
|
||||||
color: var(--color-text-secondary);
|
color: var(--color-text-secondary);
|
||||||
text-align: right;
|
text-align: right;
|
||||||
position: relative;
|
position: relative;
|
||||||
}
|
|
||||||
|
|
||||||
swp-hour-marker::after {
|
&::after {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: -1px;
|
top: -1px;
|
||||||
|
|
@ -119,6 +118,7 @@ swp-hour-marker::after {
|
||||||
height: 1px;
|
height: 1px;
|
||||||
background: var(--color-hour-line);
|
background: var(--color-hour-line);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Grid container */
|
/* Grid container */
|
||||||
swp-grid-container {
|
swp-grid-container {
|
||||||
|
|
@ -141,21 +141,19 @@ swp-content-viewport {
|
||||||
|
|
||||||
swp-header-track {
|
swp-header-track {
|
||||||
display: flex;
|
display: flex;
|
||||||
|
|
||||||
|
> swp-calendar-header { flex: 0 0 100%; }
|
||||||
}
|
}
|
||||||
|
|
||||||
swp-content-track {
|
swp-content-track {
|
||||||
display: flex;
|
display: flex;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
|
||||||
|
|
||||||
swp-header-track > swp-calendar-header {
|
> swp-scrollable-content {
|
||||||
flex: 0 0 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
swp-content-track > swp-scrollable-content {
|
|
||||||
flex: 0 0 100%;
|
flex: 0 0 100%;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Header */
|
/* Header */
|
||||||
swp-calendar-header {
|
swp-calendar-header {
|
||||||
|
|
@ -166,25 +164,24 @@ swp-calendar-header {
|
||||||
background: var(--color-surface);
|
background: var(--color-surface);
|
||||||
overflow-y: scroll;
|
overflow-y: scroll;
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
|
|
||||||
|
&::-webkit-scrollbar { background: transparent; }
|
||||||
|
&::-webkit-scrollbar-thumb { background: transparent; }
|
||||||
|
|
||||||
|
&[data-levels="date"] > swp-day-header { grid-row: 1; }
|
||||||
|
|
||||||
|
&[data-levels="resource date"] {
|
||||||
|
> swp-resource-header { grid-row: 1; }
|
||||||
|
> swp-day-header { grid-row: 2; }
|
||||||
}
|
}
|
||||||
|
|
||||||
swp-calendar-header::-webkit-scrollbar {
|
&[data-levels="team resource date"] {
|
||||||
background: transparent;
|
> swp-team-header { grid-row: 1; }
|
||||||
|
> swp-resource-header { grid-row: 2; }
|
||||||
|
> swp-day-header { grid-row: 3; }
|
||||||
}
|
}
|
||||||
|
|
||||||
swp-calendar-header::-webkit-scrollbar-thumb {
|
|
||||||
background: transparent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
swp-calendar-header[data-levels="date"] > swp-day-header { grid-row: 1; }
|
|
||||||
|
|
||||||
swp-calendar-header[data-levels="resource date"] > swp-resource-header { grid-row: 1; }
|
|
||||||
swp-calendar-header[data-levels="resource date"] > swp-day-header { grid-row: 2; }
|
|
||||||
|
|
||||||
swp-calendar-header[data-levels="team resource date"] > swp-team-header { grid-row: 1; }
|
|
||||||
swp-calendar-header[data-levels="team resource date"] > swp-resource-header { grid-row: 2; }
|
|
||||||
swp-calendar-header[data-levels="team resource date"] > swp-day-header { grid-row: 3; }
|
|
||||||
|
|
||||||
swp-day-header,
|
swp-day-header,
|
||||||
swp-resource-header,
|
swp-resource-header,
|
||||||
swp-team-header {
|
swp-team-header {
|
||||||
|
|
@ -205,6 +202,7 @@ swp-resource-header {
|
||||||
font-size: 13px;
|
font-size: 13px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
swp-day-header {
|
||||||
swp-day-name {
|
swp-day-name {
|
||||||
display: block;
|
display: block;
|
||||||
font-size: 11px;
|
font-size: 11px;
|
||||||
|
|
@ -217,6 +215,7 @@ swp-day-date {
|
||||||
font-size: 24px;
|
font-size: 24px;
|
||||||
font-weight: 300;
|
font-weight: 300;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Scrollable content */
|
/* Scrollable content */
|
||||||
swp-scrollable-content {
|
swp-scrollable-content {
|
||||||
|
|
@ -229,10 +228,9 @@ swp-time-grid {
|
||||||
position: relative;
|
position: relative;
|
||||||
min-height: calc((var(--day-end-hour) - var(--day-start-hour)) * var(--hour-height));
|
min-height: calc((var(--day-end-hour) - var(--day-start-hour)) * var(--hour-height));
|
||||||
min-width: calc(var(--grid-columns) * var(--day-column-min-width));
|
min-width: calc(var(--grid-columns) * var(--day-column-min-width));
|
||||||
}
|
|
||||||
|
|
||||||
/* Timelinjer via ::after */
|
/* Timelinjer */
|
||||||
swp-time-grid::after {
|
&::after {
|
||||||
content: '';
|
content: '';
|
||||||
position: absolute;
|
position: absolute;
|
||||||
inset: 0;
|
inset: 0;
|
||||||
|
|
@ -246,6 +244,7 @@ swp-time-grid::after {
|
||||||
);
|
);
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* Kvarterlinjer - 3 linjer per time (15, 30, 45 min), ikke ved timegrænsen */
|
/* Kvarterlinjer - 3 linjer per time (15, 30, 45 min), ikke ved timegrænsen */
|
||||||
swp-grid-lines {
|
swp-grid-lines {
|
||||||
|
|
@ -299,7 +298,6 @@ swp-event {
|
||||||
padding: 4px 6px;
|
padding: 4px 6px;
|
||||||
font-size: 12px;
|
font-size: 12px;
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
|
||||||
|
|
||||||
swp-event-time {
|
swp-event-time {
|
||||||
display: block;
|
display: block;
|
||||||
|
|
@ -311,3 +309,4 @@ swp-event-title {
|
||||||
display: block;
|
display: block;
|
||||||
font-weight: 500;
|
font-weight: 500;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue