Skip to content

Commit e951b7e

Browse files
Merge pull request #1369 from eclipse-tractusx/feat/add-calendar-view-to-open-meetings
2 parents 3e7a530 + c70ddc4 commit e951b7e

File tree

12 files changed

+1557
-242
lines changed

12 files changed

+1557
-242
lines changed

DEPENDENCIES

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,9 @@ npm/npmjs/-/d3-transition/3.0.1, ISC, approved, clearlydefined
185185
npm/npmjs/-/d3-zoom/3.0.0, ISC, approved, clearlydefined
186186
npm/npmjs/-/d3/7.9.0, ISC, approved, #14261
187187
npm/npmjs/-/dagre-d3-es/7.0.11, MIT, approved, clearlydefined
188+
npm/npmjs/-/date-arithmetic/4.1.0, MIT, approved, clearlydefined
189+
npm/npmjs/-/date-fns-tz/3.2.0, MIT, approved, clearlydefined
190+
npm/npmjs/-/date-fns/4.1.0, MIT, approved, clearlydefined
188191
npm/npmjs/-/dayjs/1.11.18, MIT, approved, #9149
189192
npm/npmjs/-/debounce/1.2.1, MIT, approved, clearlydefined
190193
npm/npmjs/-/debug/2.6.9, MIT, approved, clearlydefined
@@ -319,6 +322,7 @@ npm/npmjs/-/glob-parent/6.0.2, ISC, approved, clearlydefined
319322
npm/npmjs/-/glob-to-regex.js/1.1.0, Apache-2.0, approved, #23915
320323
npm/npmjs/-/glob-to-regexp/0.4.1, BSD-2-Clause, approved, clearlydefined
321324
npm/npmjs/-/global-dirs/3.0.1, MIT, approved, clearlydefined
325+
npm/npmjs/-/globalize/0.1.1, (BSD-3-Clause OR GPL-2.0-only OR MIT) AND (GPL-2.0-only OR MIT), approved, #20658
322326
npm/npmjs/-/globals/15.15.0, MIT, approved, clearlydefined
323327
npm/npmjs/-/globby/11.1.0, MIT, approved, clearlydefined
324328
npm/npmjs/-/globby/13.1.2, MIT, approved, #5753
@@ -482,6 +486,7 @@ npm/npmjs/-/loose-envify/1.4.0, MIT, approved, clearlydefined
482486
npm/npmjs/-/lower-case/2.0.2, MIT, approved, clearlydefined
483487
npm/npmjs/-/lowercase-keys/3.0.0, MIT, approved, clearlydefined
484488
npm/npmjs/-/lru-cache/5.1.1, ISC, approved, clearlydefined
489+
npm/npmjs/-/luxon/3.7.2, MIT, approved, clearlydefined
485490
npm/npmjs/-/markdown-extensions/2.0.0, MIT, approved, clearlydefined
486491
npm/npmjs/-/markdown-it/13.0.1, MIT, approved, clearlydefined
487492
npm/npmjs/-/markdown-table/2.0.0, MIT, approved, clearlydefined
@@ -514,6 +519,7 @@ npm/npmjs/-/mdn-data/2.0.30, CC0-1.0, approved, clearlydefined
514519
npm/npmjs/-/mdurl/1.0.1, MIT, approved, clearlydefined
515520
npm/npmjs/-/media-typer/0.3.0, MIT, approved, clearlydefined
516521
npm/npmjs/-/memfs/4.48.1, Apache-2.0, approved, #23929
522+
npm/npmjs/-/memoize-one/6.0.0, MIT, approved, clearlydefined
517523
npm/npmjs/-/merge-descriptors/1.0.3, MIT, approved, clearlydefined
518524
npm/npmjs/-/merge-stream/2.0.0, MIT, approved, clearlydefined
519525
npm/npmjs/-/merge2/1.4.1, MIT, approved, clearlydefined
@@ -577,6 +583,8 @@ npm/npmjs/-/minimalistic-assert/1.0.1, ISC, approved, clearlydefined
577583
npm/npmjs/-/minimatch/3.1.2, ISC, approved, clearlydefined
578584
npm/npmjs/-/minimist/1.2.8, MIT, approved, #5886
579585
npm/npmjs/-/mlly/1.8.0, MIT, approved, #22998
586+
npm/npmjs/-/moment-timezone/0.5.48, MIT, approved, CQ20043
587+
npm/npmjs/-/moment/2.30.1, MIT, approved, clearlydefined
580588
npm/npmjs/-/mrmime/2.0.1, MIT, approved, clearlydefined
581589
npm/npmjs/-/ms/2.0.0, MIT, approved, clearlydefined
582590
npm/npmjs/-/ms/2.1.3, MIT, approved, #5895
@@ -734,12 +742,15 @@ npm/npmjs/-/range-parser/1.2.0, MIT, approved, clearlydefined
734742
npm/npmjs/-/range-parser/1.2.1, MIT, approved, clearlydefined
735743
npm/npmjs/-/raw-body/2.5.2, MIT, approved, clearlydefined
736744
npm/npmjs/-/rc/1.2.8, BSD-2-Clause OR (MIT OR Apache-2.0), approved, #1023
745+
npm/npmjs/-/react-big-calendar/1.19.4, MIT AND (BSD-3-Clause AND MIT), approved, #24522
737746
npm/npmjs/-/react-dom/18.3.1, MIT, approved, clearlydefined
738747
npm/npmjs/-/react-fast-compare/3.2.2, MIT, approved, clearlydefined
739748
npm/npmjs/-/react-is/16.13.1, MIT, approved, clearlydefined
740749
npm/npmjs/-/react-is/19.2.0, MIT, approved, clearlydefined
741750
npm/npmjs/-/react-json-view-lite/2.5.0, MIT, approved, #23927
751+
npm/npmjs/-/react-lifecycles-compat/3.0.4, MIT, approved, clearlydefined
742752
npm/npmjs/-/react-loadable-ssr-addon-v5-slorber/1.0.1, MIT, approved, clearlydefined
753+
npm/npmjs/-/react-overlays/5.2.1, MIT, approved, clearlydefined
743754
npm/npmjs/-/react-router-config/5.1.1, MIT, approved, clearlydefined
744755
npm/npmjs/-/react-router-dom/5.3.4, MIT AND BSD-3-Clause, approved, #3023
745756
npm/npmjs/-/react-router/5.3.4, MIT AND BSD-3-Clause AND CC-BY-4.0, approved, #3024
@@ -900,6 +911,7 @@ npm/npmjs/-/type-is/1.6.18, MIT, approved, clearlydefined
900911
npm/npmjs/-/typedarray-to-buffer/3.1.5, MIT, approved, clearlydefined
901912
npm/npmjs/-/uc.micro/1.0.6, MIT, approved, #1022
902913
npm/npmjs/-/ufo/1.6.1, MIT, approved, clearlydefined
914+
npm/npmjs/-/uncontrollable/7.2.1, MIT AND BSD-3-Clause, approved, #3025
903915
npm/npmjs/-/undici-types/7.13.0, MIT, approved, clearlydefined
904916
npm/npmjs/-/unicode-canonical-property-names-ecmascript/2.0.1, MIT, approved, #19200
905917
npm/npmjs/-/unicode-emoji-modifier-base/1.0.0, MIT, approved, clearlydefined
@@ -938,6 +950,7 @@ npm/npmjs/-/vscode-languageserver-textdocument/1.0.12, MIT, approved, #2677
938950
npm/npmjs/-/vscode-languageserver-types/3.17.5, MIT, approved, #2564
939951
npm/npmjs/-/vscode-languageserver/9.0.1, MIT AND LGPL-2.1-or-later, approved, #10662
940952
npm/npmjs/-/vscode-uri/3.0.8, MIT, approved, #5741
953+
npm/npmjs/-/warning/4.0.3, MIT, approved, CQ22359
941954
npm/npmjs/-/watchpack/2.4.4, MIT, approved, clearlydefined
942955
npm/npmjs/-/wbuf/1.7.3, MIT, approved, clearlydefined
943956
npm/npmjs/-/web-namespaces/2.0.1, MIT, approved, clearlydefined
@@ -1258,6 +1271,7 @@ npm/npmjs/@pnpm/network.ca-file/1.0.2, MIT, approved, clearlydefined
12581271
npm/npmjs/@pnpm/npm-conf/2.3.1, MIT AND ISC, approved, #16190
12591272
npm/npmjs/@polka/url/1.0.0-next.29, MIT, approved, #16183
12601273
npm/npmjs/@popperjs/core/2.11.8, MIT, approved, clearlydefined
1274+
npm/npmjs/@restart/hooks/0.4.16, MIT, approved, #7049
12611275
npm/npmjs/@rspack/binding-darwin-arm64/1.5.8, MIT, approved, #23001
12621276
npm/npmjs/@rspack/binding-darwin-x64/1.5.8, MIT, approved, #23019
12631277
npm/npmjs/@rspack/binding-linux-arm64-gnu/1.5.8, MIT, approved, #23023
@@ -1401,6 +1415,7 @@ npm/npmjs/@types/sockjs/0.3.36, MIT, approved, #10984
14011415
npm/npmjs/@types/trusted-types/2.0.7, MIT, approved, clearlydefined
14021416
npm/npmjs/@types/unist/2.0.11, MIT, approved, clearlydefined
14031417
npm/npmjs/@types/unist/3.0.3, MIT, approved, clearlydefined
1418+
npm/npmjs/@types/warning/3.0.3, MIT, approved, #10988
14041419
npm/npmjs/@types/ws/8.18.1, MIT, approved, #19981
14051420
npm/npmjs/@types/yargs-parser/21.0.3, MIT, approved, clearlydefined
14061421
npm/npmjs/@types/yargs/17.0.33, MIT, approved, #7054

community/intro.md

Lines changed: 166 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,169 @@ our [contributing guide](https://eclipse-tractusx.github.io/docs/oss/how-to-cont
2929
- __For cross-product alignments__ the Catena-X Association is currently preparing various committees to support the
3030
coordination of the open-source products and repositories. The goal of a committee is to discuss, define and create a
3131
common vision, roadmap, standards, architecture, KITs, etc.
32+
33+
## How to Create Open Meetings
34+
35+
You can add new meetings to the [Open Meetings](/community/open-meetings) calendar by editing the meeting data file. All meetings are displayed with timezone conversion support and appear in both the interactive calendar and the categorized lists.
36+
37+
:::tip Quick Start
38+
39+
To add a new meeting, edit the `src/data/meetings.js` file and add a new meeting object to the `meetings` array. The meeting will automatically appear in both the calendar and the list on the [Open Meetings page](/community/open-meetings).
40+
41+
:::
42+
43+
### Meeting Structure
44+
45+
Each meeting is defined as a JavaScript object with the following properties:
46+
47+
:::note Required Fields
48+
49+
- **`id`** (string): Unique identifier for the meeting (use kebab-case, e.g., `'my-new-meeting'`)
50+
- **`title`** (string): Display name of the meeting
51+
- **`category`** (string): Use `MEETING_CATEGORIES.GENERAL`, `MEETING_CATEGORIES.PRODUCT`, or `MEETING_CATEGORIES.ONE_TIME`
52+
- **`description`** (string): Brief description of the meeting's purpose
53+
- **`contact`** (string): Email address of the meeting organizer
54+
55+
:::
56+
57+
:::note Optional Fields
58+
59+
- **`sessionLink`** (string): URL to join the meeting (Teams, Zoom, etc.)
60+
- **`additionalLinks`** (array): Additional resources like taskboards, repositories, or documentation
61+
- Each link is an object with `title` and `url` properties
62+
- **`recurrence`** (object): Meeting schedule rules (set to `null` for on-demand meetings)
63+
64+
:::
65+
66+
### Recurrence Patterns
67+
68+
The `recurrence` object defines when and how often a meeting occurs:
69+
70+
:::info Weekly Meetings
71+
72+
```javascript
73+
recurrence: {
74+
frequency: 'weekly',
75+
interval: 1, // Every week (use 2 for bi-weekly, 3 for tri-weekly, etc.)
76+
daysOfWeek: ['monday'], // Can be multiple days: ['monday', 'wednesday']
77+
startTime: '10:00', // 24-hour format in Europe/Berlin timezone
78+
endTime: '11:00',
79+
validFrom: '2025-01-01', // Optional: when this schedule starts
80+
validUntil: '2025-12-31', // Optional: when this schedule ends
81+
}
82+
```
83+
84+
:::
85+
86+
:::info Daily Meetings
87+
88+
```javascript
89+
recurrence: {
90+
frequency: 'daily',
91+
interval: 1,
92+
daysOfWeek: ['monday', 'tuesday', 'wednesday', 'thursday', 'friday'], // Weekdays only
93+
startTime: '09:00',
94+
endTime: '09:30',
95+
validFrom: '2025-11-04',
96+
validUntil: '2025-11-21',
97+
}
98+
```
99+
100+
:::
101+
102+
:::info One-Time Meetings
103+
104+
```javascript
105+
recurrence: {
106+
frequency: 'once',
107+
startDate: '2025-12-15', // ISO format: YYYY-MM-DD
108+
startTime: '14:00',
109+
endTime: '15:30',
110+
}
111+
```
112+
113+
:::
114+
115+
:::info On-Demand Meetings
116+
117+
For meetings without a fixed schedule, set `recurrence` to `null`. These meetings will appear in the list but not in the calendar.
118+
119+
```javascript
120+
recurrence: null
121+
```
122+
123+
:::
124+
125+
### Complete Example
126+
127+
Here's a complete example of adding a new weekly product meeting:
128+
129+
```javascript
130+
{
131+
id: 'my-product-weekly',
132+
title: 'My Product Weekly Sync',
133+
category: MEETING_CATEGORIES.PRODUCT,
134+
description: 'Weekly synchronization meeting for My Product development team. We discuss progress, blockers, and upcoming features.',
135+
contact: '[email protected]',
136+
sessionLink: 'https://teams.microsoft.com/l/meetup-join/...',
137+
additionalLinks: [
138+
{ title: 'Product Roadmap', url: 'https://github.com/org/project/roadmap' },
139+
{ title: 'Issue Tracker', url: 'https://github.com/org/project/issues' },
140+
{ title: 'Documentation', url: 'https://docs.example.com/my-product' },
141+
],
142+
recurrence: {
143+
frequency: 'weekly',
144+
interval: 1,
145+
daysOfWeek: ['thursday'],
146+
startTime: '15:00',
147+
endTime: '16:00',
148+
},
149+
}
150+
```
151+
152+
### Category Colors
153+
154+
Meetings are color-coded in the calendar based on their category:
155+
156+
- 🔵 **General Office Hours** (`MEETING_CATEGORIES.GENERAL`) - Blue
157+
- 🟢 **Product Meetings** (`MEETING_CATEGORIES.PRODUCT`) - Green
158+
- 🟠 **One-time Meetings** (`MEETING_CATEGORIES.ONE_TIME`) - Orange
159+
160+
### Timezone Information
161+
162+
:::warning Important
163+
164+
All meeting times in `src/data/meetings.js` must be specified in **Europe/Berlin timezone** (CET/CEST). The system will automatically convert these times to the user's selected timezone for display.
165+
166+
- Winter time (CET): UTC+1
167+
- Summer time (CEST): UTC+2
168+
169+
:::
170+
171+
### Step-by-Step Guide
172+
173+
1. **Open the file**: `src/data/meetings.js`
174+
2. **Choose the appropriate section**: Add your meeting to the `// General Office Hours`, `// Product Regular Meetings`, or `// One-time meetings` section
175+
3. **Copy an existing meeting** as a template
176+
4. **Update all fields** with your meeting information
177+
5. **Set the correct category** using `MEETING_CATEGORIES.*`
178+
6. **Define the recurrence** pattern or set to `null`
179+
7. **Save the file** and build the project to verify
180+
8. **Create a pull request** with your changes
181+
182+
:::caution Testing Your Changes
183+
184+
After adding a meeting, run the following commands to verify:
185+
186+
```bash
187+
npm run build
188+
npm run serve
189+
```
190+
191+
Then navigate to `/community/open-meetings` and verify:
192+
- ✅ Meeting appears in the correct category section
193+
- ✅ Meeting shows in the calendar (if it has a recurrence)
194+
- ✅ Times display correctly when switching timezones
195+
- ✅ All links work correctly
196+
197+
:::

0 commit comments

Comments
 (0)