Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
0c7e698
[TASK] Add action to only allow PRs for main branch from dev branch
FamousWolf Jun 27, 2024
2192392
Merge pull request #87 from FamousWolf/dev
FamousWolf Jun 27, 2024
449b1f7
Merge pull request #90 from FamousWolf/dev
FamousWolf Jun 28, 2024
d9654ec
Merge pull request #104 from FamousWolf/dev
FamousWolf Jul 10, 2024
b7db639
[FEATURE] Add data attributes for date parts
FamousWolf Sep 1, 2024
99ba825
[FEATURE] Add event filter
Sep 1, 2024
1d780e8
[FEATURE] Add option to add or subtract days from the starting date
FamousWolf Sep 2, 2024
2c279b2
[FEATURE] Add option to show legend
Sep 2, 2024
38babe7
[FEATURE] Make sure events with the same starting date are sorted by …
Sep 2, 2024
07ee0a0
[TASK] Increase version to 1.7.0
Sep 2, 2024
2517b1a
Merge pull request #125 from FamousWolf/dev
FamousWolf Sep 2, 2024
e930a59
[BUGFIX] Fix legend styling bug
Sep 4, 2024
457a51b
Merge pull request #133 from FamousWolf/dev
FamousWolf Sep 4, 2024
395343f
Merge pull request #171 from FamousWolf/dev
FamousWolf Oct 28, 2024
40e4a2e
Merge pull request #181 from FamousWolf/dev
FamousWolf Nov 14, 2024
4481805
Merge pull request #185 from FamousWolf/dev
FamousWolf Nov 15, 2024
6b60b12
Merge pull request #195 from FamousWolf/dev
FamousWolf Nov 20, 2024
aef1328
Merge pull request #199 from FamousWolf/dev
FamousWolf Nov 21, 2024
168b528
Merge pull request #212 from FamousWolf/dev
FamousWolf Dec 3, 2024
ef3ed10
Merge pull request #227 from FamousWolf/dev
FamousWolf Dec 24, 2024
0128158
Merge pull request #239 from FamousWolf/dev
FamousWolf Jan 4, 2025
88e247a
Merge pull request #244 from FamousWolf/dev
FamousWolf Jan 6, 2025
2a39d44
limit per calendar
bitte-ein-bit Feb 5, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
25 changes: 24 additions & 1 deletion src/card.js
Original file line number Diff line number Diff line change
Expand Up @@ -794,6 +794,10 @@ export class WeekPlannerCard extends LitElement {
if (calendarSorting < this._calendarEvents[eventKey].calendarSorting) {
this._calendarEvents[eventKey].calendarSorting = calendarSorting;
}
if (calendar.maxEvents > 0 && this._calendarEvents[eventKey].calendarMaxEvents < calendar.maxEvents) {
this._calendarEvents[eventKey].calendarMaxEvents = calendar.maxEvents;
this._calendarEvents[eventKey].calendarMaxEventsCalendar = calendar.name;
}
} else {
this._calendarEvents[eventKey] = {
summary: this._filterEventSummary(title ?? null, calendar),
Expand All @@ -809,6 +813,8 @@ export class WeekPlannerCard extends LitElement {
calendars: [calendar.entity],
calendarSorting: calendarSorting,
calendarNames: [calendar.name],
calendarMaxEvents: calendar.maxEvents ?? 0,
calendarMaxEventsCalendar: calendar.name,
class: this._getEventClass(startDate, endDate, fullDay)
}
this._events[dateKey].push(eventKey);
Expand Down Expand Up @@ -926,7 +932,24 @@ export class WeekPlannerCard extends LitElement {
return this._calendarEvents[event1].start > this._calendarEvents[event2].start ? 1 : -1;
});

const previousNumberOfEvents = numberOfEvents;
let matchingEventsCount = {};
events = events.filter((event, index, self) => {
let limit = this._calendarEvents[event].calendarMaxEvents;
if (limit === 0) {
return true; // no limit set
}

let limitingCalendar = this._calendarEvents[event].calendarMaxEventsCalendar;
if (!(limitingCalendar in matchingEventsCount)) {
matchingEventsCount[limitingCalendar] = 0;
}
if (matchingEventsCount[limitingCalendar] < limit) {
matchingEventsCount[limitingCalendar]++;
return true;
}
return false;
});

numberOfEvents += events.length;

if (this._maxEvents > 0 && numberOfEvents > this._maxEvents) {
Expand Down
1 change: 1 addition & 0 deletions src/editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,7 @@ export class WeekPlannerCardEditor extends LitElement {
${this.addTextField('calendars.' + index + '.filter', 'Filter events (regex)')}
${this.addTextField('calendars.' + index + '.filterText', 'Filter event text (regex)')}
${this.addBooleanField('calendars.' + index + '.hideInLegend', 'Hide in legend')}
${this.addTextField('calendars.' + index + '.maxEvents', 'Maximum number of events from this calendar (0 is no maximum)', 'number', 0)}
${this.addButton('Remove calendar', 'mdi:trash-can', () => {
const config = JSON.parse(JSON.stringify(this._config));
if (config.calendars.length === 1) {
Expand Down