-
Notifications
You must be signed in to change notification settings - Fork 0
feat(ui): add agenda templates with duration auto-setting #48
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
Merged
Changes from all commits
Commits
Show all changes
11 commits
Select commit
Hold shift + click to select a range
1edee45
feat(ui): implement meeting platform & features step (step 3)
asithade 41355f1
fix: update total step count
asithade 0d41f87
feat(docs): add angular ui expert subagent system configuration
asithade 49eb06e
docs(subagents): add jira-project-manager and workflow improvements
asithade 71ef177
Merge branch 'main' into feat/angular-sub-agent
asithade e3cf8d6
docs(subagents): enhance jira-project-manager workflow procedures
asithade 30d733b
docs(subagents): fix minor text corrections in documentation
asithade 96d7a21
feat(meetings): add agenda templates with duration auto-setting
asithade 57309c4
Merge branch 'main' into feat/LFXV2-283
asithade a22ad75
feat(meetings): add agenda templates with duration auto-setting
asithade 4be182d
fix: jira sub agent markdown file lint
asithade File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
51 changes: 51 additions & 0 deletions
51
...ject/meetings/components/agenda-template-selector/agenda-template-selector.component.html
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,51 @@ | ||
| <!-- Copyright The Linux Foundation and each contributor to LFX. --> | ||
| <!-- SPDX-License-Identifier: MIT --> | ||
|
|
||
| @if (visible()) { | ||
| <div class="mb-4 bg-gray-50 border border-gray-200 rounded-lg p-4" data-testid="template-selector-panel"> | ||
| <div class="flex items-center gap-3 mb-4"> | ||
| <div class="w-8 h-8 bg-gray-700 rounded-full flex items-center justify-center"> | ||
| <i class="fa-light fa-list text-white text-sm"></i> | ||
| </div> | ||
| <div> | ||
| <h3 class="text-base font-semibold text-gray-900">Agenda Templates</h3> | ||
| <p class="text-sm text-gray-600">Choose from common agenda templates for {{ meetingType().toLowerCase() }} meetings.</p> | ||
| </div> | ||
| </div> | ||
|
|
||
| @if (displayTemplates().length > 0) { | ||
| <div class="space-y-3 mb-4" data-testid="template-list"> | ||
| @for (template of displayTemplates(); track template.id) { | ||
| <div | ||
| class="bg-white border border-gray-200 rounded-lg p-4 hover:border-blue-500 hover:bg-blue-50 cursor-pointer transition-all duration-200" | ||
| (click)="selectTemplate(template)" | ||
| [attr.data-testid]="'template-item-' + template.id"> | ||
| <div class="flex items-start justify-between"> | ||
| <h4 class="text-sm font-semibold text-gray-900">{{ template.title }}</h4> | ||
| <span class="text-xs text-gray-500 bg-gray-100 px-2 py-1 rounded-md"> | ||
| {{ template.formattedDuration }} | ||
| </span> | ||
| </div> | ||
| <p class="text-xs text-gray-600 leading-relaxed">{{ template.preview }}</p> | ||
| </div> | ||
| } | ||
| </div> | ||
| } @else { | ||
| <div class="text-center py-6" data-testid="no-templates-message"> | ||
| <i class="fa-light fa-book-open text-gray-400 text-2xl mb-2"></i> | ||
| <p class="text-sm text-gray-500">No templates available for {{ meetingType() }} meetings</p> | ||
| </div> | ||
| } | ||
|
|
||
| <div class="pt-3 border-t border-gray-200"> | ||
| <lfx-button | ||
| (onClick)="close()" | ||
| label="Cancel" | ||
| size="small" | ||
| [text]="true" | ||
| styleClass="text-gray-500 hover:text-gray-700 text-sm" | ||
| data-testid="template-selector-close"> | ||
| </lfx-button> | ||
| </div> | ||
| </div> | ||
| } | ||
74 changes: 74 additions & 0 deletions
74
...roject/meetings/components/agenda-template-selector/agenda-template-selector.component.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,74 @@ | ||
| // Copyright The Linux Foundation and each contributor to LFX. | ||
| // SPDX-License-Identifier: MIT | ||
|
|
||
| import { CommonModule } from '@angular/common'; | ||
| import { Component, input, output, computed, OnInit } from '@angular/core'; | ||
| import { ButtonComponent } from '@components/button/button.component'; | ||
| import { MEETING_TEMPLATES } from '@lfx-pcc/shared/constants'; | ||
| import { MeetingTemplate, MeetingType } from '@lfx-pcc/shared'; | ||
|
|
||
| @Component({ | ||
| selector: 'lfx-agenda-template-selector', | ||
| standalone: true, | ||
| imports: [CommonModule, ButtonComponent], | ||
| templateUrl: './agenda-template-selector.component.html', | ||
| }) | ||
| export class AgendaTemplateSelectorComponent implements OnInit { | ||
| // Inputs | ||
| public readonly meetingType = input.required<MeetingType>(); | ||
| public readonly visible = input.required<boolean>(); | ||
|
|
||
| // Outputs | ||
| public readonly templateSelected = output<MeetingTemplate>(); | ||
| public readonly closeSelector = output<void>(); | ||
|
|
||
| // Computed properties | ||
| public readonly availableTemplates = computed(() => { | ||
| const templateGroup = MEETING_TEMPLATES.find((group) => group.meetingType === this.meetingType()); | ||
| return templateGroup?.templates || []; | ||
| }); | ||
|
|
||
| public readonly displayTemplates = computed(() => { | ||
| return this.availableTemplates().map((template) => ({ | ||
| ...template, | ||
| preview: this.getPreview(template.content), | ||
| formattedDuration: this.formatDuration(template.estimatedDuration), | ||
| })); | ||
| }); | ||
asithade marked this conversation as resolved.
Show resolved
Hide resolved
|
||
|
|
||
| public ngOnInit(): void { | ||
| // Component initialization if needed | ||
| } | ||
|
|
||
| public selectTemplate(template: MeetingTemplate): void { | ||
| this.templateSelected.emit(template); | ||
| } | ||
|
|
||
| public close(): void { | ||
| this.closeSelector.emit(); | ||
| } | ||
|
|
||
| private getPreview(content: string): string { | ||
| // Remove markdown formatting and get first 120 characters | ||
| const plainText = content | ||
| .replace(/\*\*/g, '') // Remove bold | ||
| .replace(/\*/g, '') // Remove italics | ||
| .replace(/#{1,6}\s/g, '') // Remove headers | ||
| .replace(/\n+/g, ' ') // Replace newlines with spaces | ||
| .trim(); | ||
|
|
||
| return plainText.length > 120 ? plainText.substring(0, 120) + '...' : plainText; | ||
| } | ||
|
|
||
| private formatDuration(minutes: number): string { | ||
| const hours = Math.floor(minutes / 60); | ||
| const remainingMinutes = minutes % 60; | ||
|
|
||
| if (hours === 0) { | ||
| return `${minutes} min`; | ||
| } else if (remainingMinutes === 0) { | ||
| return `${hours} hr`; | ||
| } | ||
| return `${hours}h ${remainingMinutes}m`; | ||
| } | ||
| } | ||
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
104 changes: 104 additions & 0 deletions
104
packages/shared/src/constants/meeting-templates/board.ts
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,104 @@ | ||
| // Copyright The Linux Foundation and each contributor to LFX. | ||
| // SPDX-License-Identifier: MIT | ||
|
|
||
| import { MeetingType } from '../../enums'; | ||
| import { MeetingTemplate } from '../../interfaces'; | ||
|
|
||
| export const BOARD_TEMPLATES: MeetingTemplate[] = [ | ||
| { | ||
| id: 'board-quarterly-review', | ||
| title: 'Quarterly Board Review', | ||
| meetingType: MeetingType.BOARD, | ||
| estimatedDuration: 70, | ||
| content: `Quarterly Board Review | ||
|
|
||
| 1. Opening & Governance (10 min) | ||
| - Roll call and quorum confirmation | ||
| - Approval of previous meeting minutes | ||
| - Conflict of interest declarations | ||
|
|
||
| 2. Executive Report (20 min) | ||
| - Project health and key metrics | ||
| - Financial overview and budget status | ||
| - Strategic initiatives progress | ||
|
|
||
| 3. Key Decisions (25 min) | ||
| - Budget approvals and amendments | ||
| - Strategic direction discussions | ||
| - Policy updates and governance changes | ||
|
|
||
| 4. Risk & Compliance (10 min) | ||
| - Risk assessment review | ||
| - Compliance status update | ||
| - Legal matters requiring board attention | ||
|
|
||
| 5. Next Steps & Closing (5 min) | ||
| - Action item assignments | ||
| - Next meeting scheduling | ||
| - Adjournment`, | ||
| }, | ||
| { | ||
| id: 'board-strategic-planning', | ||
| title: 'Strategic Planning Session', | ||
| meetingType: MeetingType.BOARD, | ||
| estimatedDuration: 75, | ||
| content: `Strategic Planning Session | ||
|
|
||
| 1. Current State Assessment (15 min) | ||
| - Project performance review | ||
| - Market position analysis | ||
| - Resource and capability assessment | ||
|
|
||
| 2. Vision & Goals Setting (25 min) | ||
| - Long-term vision discussion | ||
| - Strategic objectives for next period | ||
| - Success metrics definition | ||
|
|
||
| 3. Resource Planning (15 min) | ||
| - Budget allocation priorities | ||
| - Human resource requirements | ||
| - Infrastructure and technology needs | ||
|
|
||
| 4. Implementation Planning (15 min) | ||
| - Timeline and milestone setting | ||
| - Responsibility assignments | ||
| - Risk mitigation strategies | ||
|
|
||
| 5. Approval & Next Steps (5 min) | ||
| - Plan approval and ratification | ||
| - Communication strategy | ||
| - Follow-up meeting scheduling`, | ||
| }, | ||
| { | ||
| id: 'board-budget-review', | ||
| title: 'Annual Budget Review', | ||
| meetingType: MeetingType.BOARD, | ||
| estimatedDuration: 70, | ||
| content: `Annual Budget Review | ||
|
|
||
| 1. Financial Overview (15 min) | ||
| - Current year financial performance | ||
| - Revenue sources and sustainability | ||
| - Expense analysis and trends | ||
|
|
||
| 2. Budget Proposal Review (30 min) | ||
| - Proposed budget for next fiscal year | ||
| - Line-item discussion and justification | ||
| - Funding sources and allocation | ||
|
|
||
| 3. Investment Priorities (10 min) | ||
| - Technology and infrastructure investments | ||
| - Human resource investments | ||
| - Strategic initiative funding | ||
|
|
||
| 4. Approval Process (10 min) | ||
| - Budget amendments and modifications | ||
| - Formal budget approval | ||
| - Oversight and monitoring procedures | ||
|
|
||
| 5. Implementation Planning (5 min) | ||
| - Budget rollout timeline | ||
| - Communication to stakeholders | ||
| - Quarterly review scheduling`, | ||
| }, | ||
| ]; |
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.