From 332b6576fc4ba14324605ae7d87401b65817f8ff Mon Sep 17 00:00:00 2001 From: Roma Date: Fri, 16 May 2025 16:28:13 +0300 Subject: [PATCH 01/13] feat(sub-header): added optional description, minor restructure --- .../sub-header/sub-header.component.html | 23 +++++---- .../sub-header/sub-header.component.scss | 48 +++++++++++-------- .../sub-header/sub-header.component.ts | 1 + 3 files changed, 44 insertions(+), 28 deletions(-) diff --git a/src/app/shared/components/sub-header/sub-header.component.html b/src/app/shared/components/sub-header/sub-header.component.html index 339563fd8..ceaf9c205 100644 --- a/src/app/shared/components/sub-header/sub-header.component.html +++ b/src/app/shared/components/sub-header/sub-header.component.html @@ -1,13 +1,20 @@
-
- @if (icon()) { - +
+
+ @if (icon()) { + + } +

{{ title() }}

+
+ @if (showButton()) { +
+ +
} -

{{ title() }}

- @if (showButton()) { -
- -
+ @if (description()) { +
+

{{ description() }}

+
}
diff --git a/src/app/shared/components/sub-header/sub-header.component.scss b/src/app/shared/components/sub-header/sub-header.component.scss index 7a7be5443..1d82afac2 100644 --- a/src/app/shared/components/sub-header/sub-header.component.scss +++ b/src/app/shared/components/sub-header/sub-header.component.scss @@ -5,32 +5,40 @@ width: 100%; .sub-header { - @include mix.flex-align-center; - gap: 0.7rem; + @include mix.flex-column; + gap: 1.75rem; padding: 2.5rem 1.7rem 3rem 1.7rem; width: 100%; + color: var.$dark-blue-1; - .title-icon { - display: flex; - align-items: center; - column-gap: 0.8rem; - } + .title-row { + @include mix.flex-align-center; + gap: 0.7rem; - i { - font-size: 2.6rem; - color: var.$dark-blue-1; - } + &.mobile { + @include mix.flex-column; + align-items: start; + row-gap: 2.14rem; + } + + .title-icon { + display: flex; + align-items: center; + column-gap: 0.8rem; - .btn-container { - margin-left: auto; + i { + font-size: 2.6rem; + color: var.$dark-blue-1; + } + } + + .btn-container { + margin-left: auto; + } } - } - .mobile { - display: flex; - flex-direction: column; - align-items: start; - row-gap: 2.14rem; - padding: 2.5rem 1.1rem 2.5rem 1.1rem; + &.mobile { + padding: 2.5rem 1.1rem 2.5rem 1.1rem; + } } } diff --git a/src/app/shared/components/sub-header/sub-header.component.ts b/src/app/shared/components/sub-header/sub-header.component.ts index a7bb0c5f4..81ae282f2 100644 --- a/src/app/shared/components/sub-header/sub-header.component.ts +++ b/src/app/shared/components/sub-header/sub-header.component.ts @@ -17,6 +17,7 @@ export class SubHeaderComponent { buttonLabel = input(''); title = input(''); icon = input(''); + description = input(''); buttonClick = output(); #isXSmall$ = inject(IS_XSMALL); isXSmall = toSignal(this.#isXSmall$); From 48b0e232896d4fe7fbab697f7fcb013f2392641a Mon Sep 17 00:00:00 2001 From: Roma Date: Fri, 16 May 2025 16:29:53 +0300 Subject: [PATCH 02/13] feat(nav-menu): added new route --- src/app/core/constants/nav-items.constant.ts | 6 ++++++ src/assets/i18n/en.json | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/app/core/constants/nav-items.constant.ts b/src/app/core/constants/nav-items.constant.ts index 661a1e514..51be08e56 100644 --- a/src/app/core/constants/nav-items.constant.ts +++ b/src/app/core/constants/nav-items.constant.ts @@ -27,6 +27,12 @@ export const NAV_ITEMS: NavItem[] = [ icon: 'my-projects', useExactMatch: true, }, + { + path: '/meetings', + label: 'navigation.meetings', + icon: 'meetings', + useExactMatch: true, + }, { path: '/settings', label: 'navigation.settings', diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index ba7f1fbf3..77a5d5548 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -8,6 +8,7 @@ "home": "Home", "searchOsf": "Search OSF", "support": "Support", + "meetings": "Meetings", "myProjects": "My Projects", "donate": "Donate", "profileSettings": "Profile Settings", @@ -643,4 +644,4 @@ }, "copyright": "Copyright © 2011-2025" } -} \ No newline at end of file +} From a384dbeb275704274262f93ccf71eba0ad2e7b1c Mon Sep 17 00:00:00 2001 From: Roma Date: Fri, 16 May 2025 16:33:25 +0300 Subject: [PATCH 03/13] feat(meetings): added basic component structure and routes --- src/app/app.routes.ts | 21 ++++++++++++++++++ .../meeting-details.component.html | 1 + .../meeting-details.component.scss | 0 .../meeting-details.component.spec.ts | 22 +++++++++++++++++++ .../meeting-details.component.ts | 10 +++++++++ .../meetings-landing.component.html | 4 ++++ .../meetings-landing.component.scss | 0 .../meetings-landing.component.spec.ts | 22 +++++++++++++++++++ .../meetings-landing.component.ts | 12 ++++++++++ .../features/meetings/meetings.component.html | 3 +++ .../features/meetings/meetings.component.scss | 3 +++ .../meetings/meetings.component.spec.ts | 22 +++++++++++++++++++ .../features/meetings/meetings.component.ts | 17 ++++++++++++++ 13 files changed, 137 insertions(+) create mode 100644 src/app/features/meetings/meeting-details/meeting-details.component.html create mode 100644 src/app/features/meetings/meeting-details/meeting-details.component.scss create mode 100644 src/app/features/meetings/meeting-details/meeting-details.component.spec.ts create mode 100644 src/app/features/meetings/meeting-details/meeting-details.component.ts create mode 100644 src/app/features/meetings/meetings-landing/meetings-landing.component.html create mode 100644 src/app/features/meetings/meetings-landing/meetings-landing.component.scss create mode 100644 src/app/features/meetings/meetings-landing/meetings-landing.component.spec.ts create mode 100644 src/app/features/meetings/meetings-landing/meetings-landing.component.ts create mode 100644 src/app/features/meetings/meetings.component.html create mode 100644 src/app/features/meetings/meetings.component.scss create mode 100644 src/app/features/meetings/meetings.component.spec.ts create mode 100644 src/app/features/meetings/meetings.component.ts diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index c7b266930..ebb4e84f8 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -56,6 +56,27 @@ export const routes: Routes = [ loadComponent: () => import('./features/privacy-policy/privacy-policy.component').then((mod) => mod.PrivacyPolicyComponent), }, + { + path: 'meetings', + loadComponent: () => import('./features/meetings/meetings.component').then((mod) => mod.MeetingsComponent), + children: [ + { + path: '', + pathMatch: 'full', + loadComponent: () => + import('@osf/features/meetings/meetings-landing/meetings-landing.component').then( + (mod) => mod.MeetingsLandingComponent + ), + }, + { + path: ':id', + loadComponent: () => + import('@osf/features/meetings/meeting-details/meeting-details.component').then( + (mod) => mod.MeetingDetailsComponent + ), + }, + ], + }, { path: 'my-projects', loadComponent: () => diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.html b/src/app/features/meetings/meeting-details/meeting-details.component.html new file mode 100644 index 000000000..67ed86fee --- /dev/null +++ b/src/app/features/meetings/meeting-details/meeting-details.component.html @@ -0,0 +1 @@ +

meeting-details works!

diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.scss b/src/app/features/meetings/meeting-details/meeting-details.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.spec.ts b/src/app/features/meetings/meeting-details/meeting-details.component.spec.ts new file mode 100644 index 000000000..34a008ef8 --- /dev/null +++ b/src/app/features/meetings/meeting-details/meeting-details.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MeetingDetailsComponent } from './meeting-details.component'; + +describe('MeetingDetailsComponent', () => { + let component: MeetingDetailsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MeetingDetailsComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(MeetingDetailsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.ts b/src/app/features/meetings/meeting-details/meeting-details.component.ts new file mode 100644 index 000000000..0d401c110 --- /dev/null +++ b/src/app/features/meetings/meeting-details/meeting-details.component.ts @@ -0,0 +1,10 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +@Component({ + selector: 'osf-meeting-details', + imports: [], + templateUrl: './meeting-details.component.html', + styleUrl: './meeting-details.component.scss', + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class MeetingDetailsComponent {} diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.html b/src/app/features/meetings/meetings-landing/meetings-landing.component.html new file mode 100644 index 000000000..3f198f8a8 --- /dev/null +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.html @@ -0,0 +1,4 @@ + diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.scss b/src/app/features/meetings/meetings-landing/meetings-landing.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.spec.ts b/src/app/features/meetings/meetings-landing/meetings-landing.component.spec.ts new file mode 100644 index 000000000..6df5d5840 --- /dev/null +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MeetingsLandingComponent } from './meetings-landing.component'; + +describe('MeetingsLandingComponent', () => { + let component: MeetingsLandingComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MeetingsLandingComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(MeetingsLandingComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts new file mode 100644 index 000000000..54662c2de --- /dev/null +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts @@ -0,0 +1,12 @@ +import { ChangeDetectionStrategy, Component } from '@angular/core'; + +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; + +@Component({ + selector: 'osf-meetings-landing', + imports: [SubHeaderComponent], + templateUrl: './meetings-landing.component.html', + styleUrl: './meetings-landing.component.scss', + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class MeetingsLandingComponent {} diff --git a/src/app/features/meetings/meetings.component.html b/src/app/features/meetings/meetings.component.html new file mode 100644 index 000000000..f58acf390 --- /dev/null +++ b/src/app/features/meetings/meetings.component.html @@ -0,0 +1,3 @@ +
+ +
diff --git a/src/app/features/meetings/meetings.component.scss b/src/app/features/meetings/meetings.component.scss new file mode 100644 index 000000000..a8c101c5c --- /dev/null +++ b/src/app/features/meetings/meetings.component.scss @@ -0,0 +1,3 @@ +.desktop { + margin-top: 4.5rem; +} diff --git a/src/app/features/meetings/meetings.component.spec.ts b/src/app/features/meetings/meetings.component.spec.ts new file mode 100644 index 000000000..b51d5ddfb --- /dev/null +++ b/src/app/features/meetings/meetings.component.spec.ts @@ -0,0 +1,22 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { MeetingsComponent } from './meetings.component'; + +describe('MeetingsComponent', () => { + let component: MeetingsComponent; + let fixture: ComponentFixture; + + beforeEach(async () => { + await TestBed.configureTestingModule({ + imports: [MeetingsComponent], + }).compileComponents(); + + fixture = TestBed.createComponent(MeetingsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/features/meetings/meetings.component.ts b/src/app/features/meetings/meetings.component.ts new file mode 100644 index 000000000..1963fae85 --- /dev/null +++ b/src/app/features/meetings/meetings.component.ts @@ -0,0 +1,17 @@ +import { ChangeDetectionStrategy, Component, HostBinding, inject } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; +import { RouterOutlet } from '@angular/router'; + +import { IS_WEB } from '@shared/utils/breakpoints.tokens'; + +@Component({ + selector: 'osf-meetings', + imports: [RouterOutlet], + templateUrl: './meetings.component.html', + styleUrl: './meetings.component.scss', + changeDetection: ChangeDetectionStrategy.OnPush, +}) +export class MeetingsComponent { + protected readonly isDesktop = toSignal(inject(IS_WEB)); + @HostBinding('class') classes = 'flex flex-1 flex-column w-full h-full'; +} From f1e4e2193b9ed1dab2e68751652fa2d09ffd7806 Mon Sep 17 00:00:00 2001 From: Roma Date: Fri, 16 May 2025 18:12:09 +0300 Subject: [PATCH 04/13] feat(meetings): meetings landing design --- .../meetings-landing.component.html | 94 +++++++++++++++++++ .../meetings-landing.component.ts | 19 +++- .../features/meetings/meetings.component.scss | 4 + src/assets/icons/colored/APS.svg | 9 ++ src/assets/icons/colored/BITSS.svg | 9 ++ src/assets/icons/colored/NRAO.svg | 9 ++ src/assets/icons/colored/SPSP.svg | 9 ++ .../icons/colored/conference-participants.svg | 11 +++ 8 files changed, 161 insertions(+), 3 deletions(-) create mode 100644 src/assets/icons/colored/APS.svg create mode 100644 src/assets/icons/colored/BITSS.svg create mode 100644 src/assets/icons/colored/NRAO.svg create mode 100644 src/assets/icons/colored/SPSP.svg create mode 100644 src/assets/icons/colored/conference-participants.svg diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.html b/src/app/features/meetings/meetings-landing/meetings-landing.component.html index 3f198f8a8..7cb725877 100644 --- a/src/app/features/meetings/meetings-landing/meetings-landing.component.html +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.html @@ -2,3 +2,97 @@ [icon]="'meetings'" description="A free poster and presentation sharing service for academic meetings and conferences" /> + +
+
+ +
+ Conference organizers +
+

For Conference Organizers

+

+ Register your event to broaden its impact. Events get a dedicated page, an easy submission process, and + persistent links. +

+
+ +
+
+ + +
+ Conference participants +
+

For Conference Participants

+

+ Share your posters and presentations along with any supporting data and materials. Get persistent links and + usage analytics. +

+
+ +
+
+
+ +
+

Only conferences with at least five submissions are displayed.

+
+ + + + +

Table goes there

+
+ +
+ +
+ Discover +

Discover

+

Explore posters and presentations from events long after they're over.

+
+
+ + +
+ Share +

Share

+

Get persistent links to your content and increase your impact.

+
+
+ + +
+ Enhance +

Enhance

+

Add supplementary data and materials to your submission to make your work more transparent.

+
+
+
+ +
+

Who uses OSF Meetings?

+ + APS + BITSS + NRAO + SPSP +
+
+ diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts index 54662c2de..8d65d8588 100644 --- a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts @@ -1,12 +1,25 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { TranslatePipe } from '@ngx-translate/core'; +import { Button } from 'primeng/button'; +import { Card } from 'primeng/card'; + +import { ChangeDetectionStrategy, Component, HostBinding, inject, signal } from '@angular/core'; +import { toSignal } from '@angular/core/rxjs-interop'; + +import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; +import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-meetings-landing', - imports: [SubHeaderComponent], + imports: [SubHeaderComponent, Card, SearchInputComponent, TranslatePipe, Button], templateUrl: './meetings-landing.component.html', styleUrl: './meetings-landing.component.scss', changeDetection: ChangeDetectionStrategy.OnPush, }) -export class MeetingsLandingComponent {} +export class MeetingsLandingComponent { + @HostBinding('class') classes = 'flex-1 flex flex-column w-full h-full'; + readonly isXSmall = toSignal(inject(IS_XSMALL)); + + searchValue = signal(''); +} diff --git a/src/app/features/meetings/meetings.component.scss b/src/app/features/meetings/meetings.component.scss index a8c101c5c..4ac9ed819 100644 --- a/src/app/features/meetings/meetings.component.scss +++ b/src/app/features/meetings/meetings.component.scss @@ -1,3 +1,7 @@ +@use "assets/styles/mixins" as mix; + .desktop { + @include mix.flex-column; + flex: 1; margin-top: 4.5rem; } diff --git a/src/assets/icons/colored/APS.svg b/src/assets/icons/colored/APS.svg new file mode 100644 index 000000000..2515f9b0f --- /dev/null +++ b/src/assets/icons/colored/APS.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/icons/colored/BITSS.svg b/src/assets/icons/colored/BITSS.svg new file mode 100644 index 000000000..b4e7a8f54 --- /dev/null +++ b/src/assets/icons/colored/BITSS.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/icons/colored/NRAO.svg b/src/assets/icons/colored/NRAO.svg new file mode 100644 index 000000000..426b39fc2 --- /dev/null +++ b/src/assets/icons/colored/NRAO.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/icons/colored/SPSP.svg b/src/assets/icons/colored/SPSP.svg new file mode 100644 index 000000000..2af1a7360 --- /dev/null +++ b/src/assets/icons/colored/SPSP.svg @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/src/assets/icons/colored/conference-participants.svg b/src/assets/icons/colored/conference-participants.svg new file mode 100644 index 000000000..003a42771 --- /dev/null +++ b/src/assets/icons/colored/conference-participants.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + From 05853f4717f29c47473e603da177f9118957c60b Mon Sep 17 00:00:00 2001 From: Roma Date: Mon, 19 May 2025 15:01:20 +0300 Subject: [PATCH 05/13] feat(meetings): implement meetings landing and details components with translations and tests --- package.json | 1 + .../meeting-submissions-table.constants.ts | 12 ++ .../constants/meetings-table.constants.ts | 12 ++ .../meeting-details.component.html | 71 ++++++++- .../meeting-details.component.spec.ts | 6 +- .../meeting-details.component.ts | 89 +++++++++++- .../meetings-landing.component.html | 136 ++++++++++++------ .../meetings-landing.component.spec.ts | 6 +- .../meetings-landing.component.ts | 55 ++++++- .../meetings/models/meetings.models.ts | 18 +++ src/assets/i18n/en.json | 58 +++++++- 11 files changed, 411 insertions(+), 53 deletions(-) create mode 100644 src/app/features/meetings/constants/meeting-submissions-table.constants.ts create mode 100644 src/app/features/meetings/constants/meetings-table.constants.ts create mode 100644 src/app/features/meetings/models/meetings.models.ts diff --git a/package.json b/package.json index f27b09edb..74400fee9 100644 --- a/package.json +++ b/package.json @@ -35,6 +35,7 @@ "@ngxs/logger-plugin": "^19.0.0", "@ngxs/store": "^19.0.0", "@primeng/themes": "^19.0.9", + "moment": "^2.30.1", "primeflex": "^4.0.0", "primeicons": "^7.0.0", "primeng": "^19.0.9", diff --git a/src/app/features/meetings/constants/meeting-submissions-table.constants.ts b/src/app/features/meetings/constants/meeting-submissions-table.constants.ts new file mode 100644 index 000000000..a15615151 --- /dev/null +++ b/src/app/features/meetings/constants/meeting-submissions-table.constants.ts @@ -0,0 +1,12 @@ +import { TableParameters } from '@shared/entities/table-parameters.interface'; + +export const MEETING_SUBMISSIONS_TABLE_PARAMS: TableParameters = { + rows: 10, + paginator: true, + scrollable: false, + rowsPerPageOptions: [5, 10, 25], + totalRecords: 3, + firstRowIndex: 0, + defaultSortColumn: null, + defaultSortOrder: null, +}; diff --git a/src/app/features/meetings/constants/meetings-table.constants.ts b/src/app/features/meetings/constants/meetings-table.constants.ts new file mode 100644 index 000000000..b2acea4b8 --- /dev/null +++ b/src/app/features/meetings/constants/meetings-table.constants.ts @@ -0,0 +1,12 @@ +import { TableParameters } from '@shared/entities/table-parameters.interface'; + +export const MEETINGS_TABLE_PARAMS: TableParameters = { + rows: 10, + paginator: true, + scrollable: false, + rowsPerPageOptions: [5, 10, 25], + totalRecords: 3, + firstRowIndex: 0, + defaultSortColumn: null, + defaultSortOrder: null, +}; diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.html b/src/app/features/meetings/meeting-details/meeting-details.component.html index 67ed86fee..a75616e95 100644 --- a/src/app/features/meetings/meeting-details/meeting-details.component.html +++ b/src/app/features/meetings/meeting-details/meeting-details.component.html @@ -1 +1,70 @@ -

meeting-details works!

+ + +
+ + + + + + + {{ 'meetings.details.table.columns.title' | translate }} + + + + {{ 'meetings.details.table.columns.author' | translate }} + + + + {{ 'meetings.details.table.columns.category' | translate }} + + + + {{ 'meetings.details.table.columns.dateCreated' | translate }} + + + + {{ 'meetings.details.table.columns.downloads' | translate }} + + + + + + + {{ item.title }} + {{ item.authorName }} + {{ item.meetingCategory }} + {{ item.dateCreated | date: 'MMM d, y, h:mm a' }} + + + {{ item.downloadCount }} + + + + +
diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.spec.ts b/src/app/features/meetings/meeting-details/meeting-details.component.spec.ts index 34a008ef8..d84d035a9 100644 --- a/src/app/features/meetings/meeting-details/meeting-details.component.spec.ts +++ b/src/app/features/meetings/meeting-details/meeting-details.component.spec.ts @@ -1,4 +1,8 @@ +import { TranslateModule } from '@ngx-translate/core'; +import { MockModule } from 'ng-mocks'; + import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterModule } from '@angular/router'; import { MeetingDetailsComponent } from './meeting-details.component'; @@ -8,7 +12,7 @@ describe('MeetingDetailsComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MeetingDetailsComponent], + imports: [MeetingDetailsComponent, MockModule(TranslateModule), MockModule(RouterModule)], }).compileComponents(); fixture = TestBed.createComponent(MeetingDetailsComponent); diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.ts b/src/app/features/meetings/meeting-details/meeting-details.component.ts index 0d401c110..70c62cd1d 100644 --- a/src/app/features/meetings/meeting-details/meeting-details.component.ts +++ b/src/app/features/meetings/meeting-details/meeting-details.component.ts @@ -1,10 +1,93 @@ -import { ChangeDetectionStrategy, Component } from '@angular/core'; +import { TranslatePipe } from '@ngx-translate/core'; + +import { SortEvent } from 'primeng/api'; +import { Button } from 'primeng/button'; +import { TableModule, TablePageEvent } from 'primeng/table'; + +import { DatePipe } from '@angular/common'; +import { ChangeDetectionStrategy, Component, computed, HostBinding, signal } from '@angular/core'; +import { RouterLink } from '@angular/router'; + +import { MEETING_SUBMISSIONS_TABLE_PARAMS } from '@osf/features/meetings/constants/meeting-submissions-table.constants'; +import { Meeting, MeetingSubmission } from '@osf/features/meetings/models/meetings.models'; +import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; +import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; +import { TableParameters } from '@shared/entities/table-parameters.interface'; + +import moment from 'moment'; @Component({ selector: 'osf-meeting-details', - imports: [], + imports: [SubHeaderComponent, SearchInputComponent, DatePipe, TableModule, Button, RouterLink, TranslatePipe], templateUrl: './meeting-details.component.html', styleUrl: './meeting-details.component.scss', changeDetection: ChangeDetectionStrategy.OnPush, }) -export class MeetingDetailsComponent {} +export class MeetingDetailsComponent { + @HostBinding('class') classes = 'flex-1 flex flex-column w-full h-full'; + searchValue = signal(''); + sortColumn = signal(undefined); + tableParams = signal({ + ...MEETING_SUBMISSIONS_TABLE_PARAMS, + firstRowIndex: 0, + }); + meeting = signal({ + id: '123', + title: 'title', + submissionsCount: 1, + location: 'asd', + startDate: new Date(), + endDate: new Date(), + }); + meetingSubmissions = signal([ + { + id: '123', + title: 'SPSP Poster', + dateCreated: new Date('2018-06-03T21:36:05.241346Z'), + authorName: 'Moshontz', + downloadCount: 93, + meetingCategory: 'poster', + downloadLink: 'https://osf.io/download/72wkh/', + }, + { + id: '123', + title: 'SPSP Poster', + dateCreated: new Date('2018-06-03T21:36:05.241346Z'), + authorName: 'Moshontz', + downloadCount: 93, + meetingCategory: 'poster', + downloadLink: 'https://osf.io/download/72wkh/', + }, + { + id: '123', + title: 'SPSP Poster', + dateCreated: new Date('2018-06-03T21:36:05.241346Z'), + authorName: 'Moshontz', + downloadCount: 93, + meetingCategory: 'poster', + downloadLink: 'https://osf.io/download/72wkh/', + }, + ]); + + pageDescription = computed(() => { + if (!this.meeting) { + return ''; + } + + return `${this.meeting().location} | ${moment(this.meeting().startDate).format('MMM D, YYYY')} + - ${moment(this.meeting().endDate).format('MMM D, YYYY')}`; + }); + + onPageChange(tablePageEvent: TablePageEvent) { + //TODO romchik + } + + onSort(sortEvent: SortEvent) { + //TODO romchik + } + + downloadSubmission(event: Event, item: MeetingSubmission) { + event.stopPropagation(); + window.open(item.downloadLink, '_blank'); + } +} diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.html b/src/app/features/meetings/meetings-landing/meetings-landing.component.html index 7cb725877..091869e67 100644 --- a/src/app/features/meetings/meetings-landing/meetings-landing.component.html +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.html @@ -1,9 +1,8 @@ - + [description]="'meetings.landing.description' | translate"/> -
@@ -12,13 +11,12 @@ alt="Conference organizers" class="w-8rem h-8rem"/>
-

For Conference Organizers

-

- Register your event to broaden its impact. Events get a dedicated page, an easy submission process, and - persistent links. +

{{ 'meetings.landing.conferenceOrganizers.title' | translate }}

+

+ {{ 'meetings.landing.conferenceOrganizers.description' | translate }}

- +
@@ -26,73 +24,123 @@

For Conference Organizers

Conference participants + class="w-8rem h-8rem" + />
-

For Conference Participants

-

- Share your posters and presentations along with any supporting data and materials. Get persistent links and - usage analytics. +

{{ 'meetings.landing.conferenceParticipants.title' | translate }}

+

+ {{ 'meetings.landing.conferenceParticipants.description' | translate }}

- +
-
-

Only conferences with at least five submissions are displayed.

+
+

{{ 'meetings.landing.submissionsNote' | translate }}

- + - -

Table goes there

-
+ + + + + {{ 'meetings.landing.table.columns.title' | translate }} + + + + {{ 'meetings.landing.table.columns.submissions' | translate }} + + + + {{ 'meetings.landing.table.columns.location' | translate }} + + + + {{ 'meetings.landing.table.columns.date' | translate }} + + + + + + + {{ item.title }} + {{ item.submissionsCount }} + {{ item.location }} + {{ item.startDate | date: 'MMM d, y, h:mm a' }} + + + -
+
-
+
Discover -

Discover

-

Explore posters and presentations from events long after they're over.

+

{{ 'meetings.landing.features.discover.title' | translate }}

+

{{ 'meetings.landing.features.discover.description' | translate }}

- -
+ +
Share -

Share

-

Get persistent links to your content and increase your impact.

+

{{ 'meetings.landing.features.share.title' | translate }}

+

{{ 'meetings.landing.features.share.description' | translate }}

-
+
Enhance -

Enhance

-

Add supplementary data and materials to your submission to make your work more transparent.

+

{{ 'meetings.landing.features.enhance.title' | translate }}

+

{{ 'meetings.landing.features.enhance.description' | translate }}

-
-

Who uses OSF Meetings?

+
+

{{ 'meetings.landing.users.title' | translate }}

- APS - BITSS - NRAO - SPSP +
+ APS + BITSS + NRAO + SPSP +
- diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.spec.ts b/src/app/features/meetings/meetings-landing/meetings-landing.component.spec.ts index 6df5d5840..7c13d0ea3 100644 --- a/src/app/features/meetings/meetings-landing/meetings-landing.component.spec.ts +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.spec.ts @@ -1,4 +1,8 @@ +import { TranslateModule } from '@ngx-translate/core'; +import { MockModule } from 'ng-mocks'; + import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { RouterModule } from '@angular/router'; import { MeetingsLandingComponent } from './meetings-landing.component'; @@ -8,7 +12,7 @@ describe('MeetingsLandingComponent', () => { beforeEach(async () => { await TestBed.configureTestingModule({ - imports: [MeetingsLandingComponent], + imports: [MeetingsLandingComponent, MockModule(TranslateModule), MockModule(RouterModule)], }).compileComponents(); fixture = TestBed.createComponent(MeetingsLandingComponent); diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts index 8d65d8588..3a6fe652a 100644 --- a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts @@ -1,18 +1,25 @@ import { TranslatePipe } from '@ngx-translate/core'; +import { SortEvent } from 'primeng/api'; import { Button } from 'primeng/button'; import { Card } from 'primeng/card'; +import { TableModule, TablePageEvent } from 'primeng/table'; +import { DatePipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, HostBinding, inject, signal } from '@angular/core'; import { toSignal } from '@angular/core/rxjs-interop'; +import { Router } from '@angular/router'; +import { MEETINGS_TABLE_PARAMS } from '@osf/features/meetings/constants/meetings-table.constants'; +import { Meeting } from '@osf/features/meetings/models/meetings.models'; import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; +import { TableParameters } from '@shared/entities/table-parameters.interface'; import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-meetings-landing', - imports: [SubHeaderComponent, Card, SearchInputComponent, TranslatePipe, Button], + imports: [SubHeaderComponent, Card, SearchInputComponent, Button, DatePipe, TableModule, TranslatePipe], templateUrl: './meetings-landing.component.html', styleUrl: './meetings-landing.component.scss', changeDetection: ChangeDetectionStrategy.OnPush, @@ -20,6 +27,50 @@ import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; export class MeetingsLandingComponent { @HostBinding('class') classes = 'flex-1 flex flex-column w-full h-full'; readonly isXSmall = toSignal(inject(IS_XSMALL)); + #router = inject(Router); - searchValue = signal(''); + searchValue = signal(''); + sortColumn = signal(undefined); + tableParams = signal({ + ...MEETINGS_TABLE_PARAMS, + firstRowIndex: 0, + }); + meetings = signal([ + { + id: '123', + title: 'title', + submissionsCount: 1, + location: 'asd', + startDate: new Date(), + endDate: new Date(), + }, + { + id: '123', + title: 'title', + submissionsCount: 1, + location: 'asd', + startDate: new Date(), + endDate: new Date(), + }, + { + id: '123', + title: 'title', + submissionsCount: 1, + location: 'asd', + startDate: new Date(), + endDate: new Date(), + }, + ]); + + onPageChange(tablePageEvent: TablePageEvent) { + //TODO romchik + } + + onSort(sortEvent: SortEvent) { + //TODO romchik + } + + navigateToMeeting(meeting: Meeting): void { + this.#router.navigate(['/meetings', meeting.id]); + } } diff --git a/src/app/features/meetings/models/meetings.models.ts b/src/app/features/meetings/models/meetings.models.ts new file mode 100644 index 000000000..20962bc75 --- /dev/null +++ b/src/app/features/meetings/models/meetings.models.ts @@ -0,0 +1,18 @@ +export interface Meeting { + id: string; + title: string; + submissionsCount: number; + location: string; + startDate: Date; + endDate: Date; +} + +export interface MeetingSubmission { + id: string; + title: string; + dateCreated: Date; + authorName: string; + downloadCount: number; + meetingCategory: string; + downloadLink: string; +} diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index 77a5d5548..a3f745c3d 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -625,6 +625,62 @@ } } }, + "meetings": { + "landing": { + "title": "Meetings", + "description": "A free poster and presentation sharing service for academic meetings and conferences", + "conferenceOrganizers": { + "title": "For Conference Organizers", + "description": "Register your event to broaden its impact. Events get a dedicated page, an easy submission process, and persistent links.", + "button": "Register" + }, + "conferenceParticipants": { + "title": "For Conference Participants", + "description": "Share your posters and presentations along with any supporting data and materials. Get persistent links and usage analytics.", + "button": "Upload" + }, + "submissionsNote": "Only conferences with at least five submissions are displayed.", + "searchPlaceholder": "Search meetings", + "table": { + "columns": { + "title": "Title", + "submissions": "Submissions", + "location": "Location", + "date": "Date" + } + }, + "features": { + "discover": { + "title": "Discover", + "description": "Explore posters and presentations from events long after they're over." + }, + "share": { + "title": "Share", + "description": "Get persistent links to your content and increase your impact." + }, + "enhance": { + "title": "Enhance", + "description": "Add supplementary data and materials to your submission to make your work more transparent." + } + }, + "users": { + "title": "Who uses OSF Meetings?" + } + }, + "details": { + "searchPlaceholder": "Search", + "table": { + "columns": { + "title": "Title", + "author": "Author", + "category": "Category", + "dateCreated": "Date Created", + "downloads": "Downloads" + } + }, + "downloadButton": "Download" + } + }, "footer": { "links": { "centerForOpenScience": "Center for Open Science", @@ -644,4 +700,4 @@ }, "copyright": "Copyright © 2011-2025" } -} +} \ No newline at end of file From 0db5073a2e57fe4b15227bdfa4ee7178391c7356 Mon Sep 17 00:00:00 2001 From: Roma Date: Mon, 19 May 2025 15:19:19 +0300 Subject: [PATCH 06/13] refactor(meetings): added mocked data to show on the demo --- .../meeting-details.component.ts | 31 +++++++------------ .../meetings-landing.component.ts | 22 ++++++------- 2 files changed, 22 insertions(+), 31 deletions(-) diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.ts b/src/app/features/meetings/meeting-details/meeting-details.component.ts index 70c62cd1d..e4a65e791 100644 --- a/src/app/features/meetings/meeting-details/meeting-details.component.ts +++ b/src/app/features/meetings/meeting-details/meeting-details.component.ts @@ -33,37 +33,28 @@ export class MeetingDetailsComponent { }); meeting = signal({ id: '123', - title: 'title', - submissionsCount: 1, - location: 'asd', + title: 'Society for Personality and Social Psychology 2016', + submissionsCount: 5, + location: 'San Diego, CA', startDate: new Date(), endDate: new Date(), }); meetingSubmissions = signal([ { id: '123', - title: 'SPSP Poster', - dateCreated: new Date('2018-06-03T21:36:05.241346Z'), - authorName: 'Moshontz', - downloadCount: 93, + title: 'Lorem ipsum dolor sit amet', + dateCreated: new Date('2020-06-03T21:36:05.241346Z'), + authorName: 'John Doe', + downloadCount: 0, meetingCategory: 'poster', downloadLink: 'https://osf.io/download/72wkh/', }, { id: '123', - title: 'SPSP Poster', - dateCreated: new Date('2018-06-03T21:36:05.241346Z'), - authorName: 'Moshontz', - downloadCount: 93, - meetingCategory: 'poster', - downloadLink: 'https://osf.io/download/72wkh/', - }, - { - id: '123', - title: 'SPSP Poster', - dateCreated: new Date('2018-06-03T21:36:05.241346Z'), - authorName: 'Moshontz', - downloadCount: 93, + title: 'Lorem ipsum dolor sit amet', + dateCreated: new Date('2018-06-03T19:36:05.241346Z'), + authorName: 'John Doe', + downloadCount: 6, meetingCategory: 'poster', downloadLink: 'https://osf.io/download/72wkh/', }, diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts index 3a6fe652a..e2c344cca 100644 --- a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts @@ -38,25 +38,25 @@ export class MeetingsLandingComponent { meetings = signal([ { id: '123', - title: 'title', - submissionsCount: 1, - location: 'asd', + title: 'Lorem ipsum dolor sit amet', + submissionsCount: 18, + location: 'Virtual', startDate: new Date(), endDate: new Date(), }, { - id: '123', - title: 'title', - submissionsCount: 1, - location: 'asd', + id: '124', + title: 'Lorem ipsum dolor sit amet', + submissionsCount: 10, + location: 'Virtual', startDate: new Date(), endDate: new Date(), }, { - id: '123', - title: 'title', - submissionsCount: 1, - location: 'asd', + id: '125', + title: 'Lorem ipsum dolor sit amet', + submissionsCount: 24, + location: 'Irving, Texas', startDate: new Date(), endDate: new Date(), }, From e26fbe3a03a2aca3a4c8422c916a5373f94f8fb6 Mon Sep 17 00:00:00 2001 From: Roma Date: Mon, 19 May 2025 16:00:24 +0300 Subject: [PATCH 07/13] refactor(meetings): Using separate file for test data, replaced moment -> datePipe --- package.json | 1 - .../meeting-details.component.ts | 44 +++------------ .../meetings-landing.component.ts | 32 ++--------- src/app/features/meetings/test-data.ts | 56 +++++++++++++++++++ 4 files changed, 69 insertions(+), 64 deletions(-) create mode 100644 src/app/features/meetings/test-data.ts diff --git a/package.json b/package.json index 74400fee9..f27b09edb 100644 --- a/package.json +++ b/package.json @@ -35,7 +35,6 @@ "@ngxs/logger-plugin": "^19.0.0", "@ngxs/store": "^19.0.0", "@primeng/themes": "^19.0.9", - "moment": "^2.30.1", "primeflex": "^4.0.0", "primeicons": "^7.0.0", "primeng": "^19.0.9", diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.ts b/src/app/features/meetings/meeting-details/meeting-details.component.ts index e4a65e791..e7ba49bd6 100644 --- a/src/app/features/meetings/meeting-details/meeting-details.component.ts +++ b/src/app/features/meetings/meeting-details/meeting-details.component.ts @@ -5,17 +5,16 @@ import { Button } from 'primeng/button'; import { TableModule, TablePageEvent } from 'primeng/table'; import { DatePipe } from '@angular/common'; -import { ChangeDetectionStrategy, Component, computed, HostBinding, signal } from '@angular/core'; +import { ChangeDetectionStrategy, Component, computed, HostBinding, inject, signal } from '@angular/core'; import { RouterLink } from '@angular/router'; import { MEETING_SUBMISSIONS_TABLE_PARAMS } from '@osf/features/meetings/constants/meeting-submissions-table.constants'; import { Meeting, MeetingSubmission } from '@osf/features/meetings/models/meetings.models'; +import { testMeeting, testSubmissions } from '@osf/features/meetings/test-data'; import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; import { TableParameters } from '@shared/entities/table-parameters.interface'; -import moment from 'moment'; - @Component({ selector: 'osf-meeting-details', imports: [SubHeaderComponent, SearchInputComponent, DatePipe, TableModule, Button, RouterLink, TranslatePipe], @@ -25,56 +24,31 @@ import moment from 'moment'; }) export class MeetingDetailsComponent { @HostBinding('class') classes = 'flex-1 flex flex-column w-full h-full'; + #datePipe = inject(DatePipe); searchValue = signal(''); sortColumn = signal(undefined); tableParams = signal({ ...MEETING_SUBMISSIONS_TABLE_PARAMS, firstRowIndex: 0, }); - meeting = signal({ - id: '123', - title: 'Society for Personality and Social Psychology 2016', - submissionsCount: 5, - location: 'San Diego, CA', - startDate: new Date(), - endDate: new Date(), - }); - meetingSubmissions = signal([ - { - id: '123', - title: 'Lorem ipsum dolor sit amet', - dateCreated: new Date('2020-06-03T21:36:05.241346Z'), - authorName: 'John Doe', - downloadCount: 0, - meetingCategory: 'poster', - downloadLink: 'https://osf.io/download/72wkh/', - }, - { - id: '123', - title: 'Lorem ipsum dolor sit amet', - dateCreated: new Date('2018-06-03T19:36:05.241346Z'), - authorName: 'John Doe', - downloadCount: 6, - meetingCategory: 'poster', - downloadLink: 'https://osf.io/download/72wkh/', - }, - ]); + meeting = signal(testMeeting); + meetingSubmissions = signal(testSubmissions); pageDescription = computed(() => { if (!this.meeting) { return ''; } - return `${this.meeting().location} | ${moment(this.meeting().startDate).format('MMM D, YYYY')} - - ${moment(this.meeting().endDate).format('MMM D, YYYY')}`; + return `${this.meeting().location} | ${this.#datePipe.transform(this.meeting().startDate, 'MMM D, YYYY')} + - ${this.#datePipe.transform(this.meeting().endDate, 'MMM D, YYYY')}`; }); onPageChange(tablePageEvent: TablePageEvent) { - //TODO romchik + // [RNi] TODO: implement paging logic and handle event while integrating API } onSort(sortEvent: SortEvent) { - //TODO romchik + // [RNi] TODO: implement sorting logic and handle event while integrating API } downloadSubmission(event: Event, item: MeetingSubmission) { diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts index e2c344cca..828932eae 100644 --- a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts @@ -12,6 +12,7 @@ import { Router } from '@angular/router'; import { MEETINGS_TABLE_PARAMS } from '@osf/features/meetings/constants/meetings-table.constants'; import { Meeting } from '@osf/features/meetings/models/meetings.models'; +import { testMeetings } from '@osf/features/meetings/test-data'; import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; import { TableParameters } from '@shared/entities/table-parameters.interface'; @@ -35,39 +36,14 @@ export class MeetingsLandingComponent { ...MEETINGS_TABLE_PARAMS, firstRowIndex: 0, }); - meetings = signal([ - { - id: '123', - title: 'Lorem ipsum dolor sit amet', - submissionsCount: 18, - location: 'Virtual', - startDate: new Date(), - endDate: new Date(), - }, - { - id: '124', - title: 'Lorem ipsum dolor sit amet', - submissionsCount: 10, - location: 'Virtual', - startDate: new Date(), - endDate: new Date(), - }, - { - id: '125', - title: 'Lorem ipsum dolor sit amet', - submissionsCount: 24, - location: 'Irving, Texas', - startDate: new Date(), - endDate: new Date(), - }, - ]); + meetings = signal(testMeetings); onPageChange(tablePageEvent: TablePageEvent) { - //TODO romchik + // [RNi] TODO: implement paging logic and handle event while integrating API } onSort(sortEvent: SortEvent) { - //TODO romchik + // [RNi] TODO: implement sorting logic and handle event while integrating API } navigateToMeeting(meeting: Meeting): void { diff --git a/src/app/features/meetings/test-data.ts b/src/app/features/meetings/test-data.ts new file mode 100644 index 000000000..c2af0eb12 --- /dev/null +++ b/src/app/features/meetings/test-data.ts @@ -0,0 +1,56 @@ +export const testMeetings = [ + { + id: '123', + title: 'Lorem ipsum dolor sit amet', + submissionsCount: 18, + location: 'Virtual', + startDate: new Date(), + endDate: new Date(), + }, + { + id: '124', + title: 'Lorem ipsum dolor sit amet', + submissionsCount: 10, + location: 'Virtual', + startDate: new Date(), + endDate: new Date(), + }, + { + id: '125', + title: 'Lorem ipsum dolor sit amet', + submissionsCount: 24, + location: 'Irving, Texas', + startDate: new Date(), + endDate: new Date(), + }, +]; + +export const testMeeting = { + id: '123', + title: 'Society for Personality and Social Psychology 2016', + submissionsCount: 5, + location: 'San Diego, CA', + startDate: new Date(), + endDate: new Date(), +}; + +export const testSubmissions = [ + { + id: '123', + title: 'Lorem ipsum dolor sit amet', + dateCreated: new Date('2020-06-03T21:36:05.241346Z'), + authorName: 'John Doe', + downloadCount: 0, + meetingCategory: 'poster', + downloadLink: 'https://osf.io/download/72wkh/', + }, + { + id: '123', + title: 'Lorem ipsum dolor sit amet', + dateCreated: new Date('2018-06-03T19:36:05.241346Z'), + authorName: 'John Doe', + downloadCount: 6, + meetingCategory: 'poster', + downloadLink: 'https://osf.io/download/72wkh/', + }, +]; From 63fbba03a3497b08ea2ef3682f043bb5640b5152 Mon Sep 17 00:00:00 2001 From: Roma Date: Mon, 19 May 2025 17:51:22 +0300 Subject: [PATCH 08/13] refactor(meetings): Consolidated constant exports and improve component imports, renamed images --- src/app/features/meetings/constants/index.ts | 2 + .../meeting-details.component.html | 128 ++++----- .../meeting-details.component.ts | 5 +- .../meetings-landing.component.html | 258 +++++++++--------- .../meetings-landing.component.ts | 4 +- src/app/features/meetings/models/index.ts | 1 + src/assets/icons/colored/{APS.svg => aps.svg} | 0 .../icons/colored/{BITSS.svg => bitss.svg} | 0 .../icons/colored/{NRAO.svg => nrao.svg} | 0 .../icons/colored/{SPSP.svg => spsp.svg} | 0 10 files changed, 201 insertions(+), 197 deletions(-) create mode 100644 src/app/features/meetings/constants/index.ts create mode 100644 src/app/features/meetings/models/index.ts rename src/assets/icons/colored/{APS.svg => aps.svg} (100%) rename src/assets/icons/colored/{BITSS.svg => bitss.svg} (100%) rename src/assets/icons/colored/{NRAO.svg => nrao.svg} (100%) rename src/assets/icons/colored/{SPSP.svg => spsp.svg} (100%) diff --git a/src/app/features/meetings/constants/index.ts b/src/app/features/meetings/constants/index.ts new file mode 100644 index 000000000..667e4e510 --- /dev/null +++ b/src/app/features/meetings/constants/index.ts @@ -0,0 +1,2 @@ +export * from './meeting-submissions-table.constants'; +export * from './meetings-table.constants'; diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.html b/src/app/features/meetings/meeting-details/meeting-details.component.html index a75616e95..cfa0e861f 100644 --- a/src/app/features/meetings/meeting-details/meeting-details.component.html +++ b/src/app/features/meetings/meeting-details/meeting-details.component.html @@ -2,69 +2,69 @@ [description]="pageDescription()"/>
- + - - - - - {{ 'meetings.details.table.columns.title' | translate }} - - - - {{ 'meetings.details.table.columns.author' | translate }} - - - - {{ 'meetings.details.table.columns.category' | translate }} - - - - {{ 'meetings.details.table.columns.dateCreated' | translate }} - - - - {{ 'meetings.details.table.columns.downloads' | translate }} - - - - - - - {{ item.title }} - {{ item.authorName }} - {{ item.meetingCategory }} - {{ item.dateCreated | date: 'MMM d, y, h:mm a' }} - - - {{ item.downloadCount }} - - - - + + + + + {{ 'meetings.details.table.columns.title' | translate }} + + + + {{ 'meetings.details.table.columns.author' | translate }} + + + + {{ 'meetings.details.table.columns.category' | translate }} + + + + {{ 'meetings.details.table.columns.dateCreated' | translate }} + + + + {{ 'meetings.details.table.columns.downloads' | translate }} + + + + + + + {{ item.title }} + {{ item.authorName }} + {{ item.meetingCategory }} + {{ item.dateCreated | date: 'MMM d, y, h:mm a' }} + + + {{ item.downloadCount }} + + + +
diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.ts b/src/app/features/meetings/meeting-details/meeting-details.component.ts index e7ba49bd6..e16ea81ef 100644 --- a/src/app/features/meetings/meeting-details/meeting-details.component.ts +++ b/src/app/features/meetings/meeting-details/meeting-details.component.ts @@ -8,8 +8,8 @@ import { DatePipe } from '@angular/common'; import { ChangeDetectionStrategy, Component, computed, HostBinding, inject, signal } from '@angular/core'; import { RouterLink } from '@angular/router'; -import { MEETING_SUBMISSIONS_TABLE_PARAMS } from '@osf/features/meetings/constants/meeting-submissions-table.constants'; -import { Meeting, MeetingSubmission } from '@osf/features/meetings/models/meetings.models'; +import { MEETING_SUBMISSIONS_TABLE_PARAMS } from '@osf/features/meetings/constants'; +import { Meeting, MeetingSubmission } from '@osf/features/meetings/models'; import { testMeeting, testSubmissions } from '@osf/features/meetings/test-data'; import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; @@ -20,6 +20,7 @@ import { TableParameters } from '@shared/entities/table-parameters.interface'; imports: [SubHeaderComponent, SearchInputComponent, DatePipe, TableModule, Button, RouterLink, TranslatePipe], templateUrl: './meeting-details.component.html', styleUrl: './meeting-details.component.scss', + providers: [DatePipe], changeDetection: ChangeDetectionStrategy.OnPush, }) export class MeetingDetailsComponent { diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.html b/src/app/features/meetings/meetings-landing/meetings-landing.component.html index 091869e67..118fb430b 100644 --- a/src/app/features/meetings/meetings-landing/meetings-landing.component.html +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.html @@ -4,143 +4,143 @@
-
- -
- Conference organizers -
-

{{ 'meetings.landing.conferenceOrganizers.title' | translate }}

-

- {{ 'meetings.landing.conferenceOrganizers.description' | translate }} -

-
- -
-
+
+ +
+ Conference organizers +
+

{{ 'meetings.landing.conferenceOrganizers.title' | translate }}

+

+ {{ 'meetings.landing.conferenceOrganizers.description' | translate }} +

+
+ +
+
- -
- Conference participants -
-

{{ 'meetings.landing.conferenceParticipants.title' | translate }}

-

- {{ 'meetings.landing.conferenceParticipants.description' | translate }} -

-
- -
-
-
+ +
+ Conference participants +
+

{{ 'meetings.landing.conferenceParticipants.title' | translate }}

+

+ {{ 'meetings.landing.conferenceParticipants.description' | translate }} +

+
+ +
+
+
-
-

{{ 'meetings.landing.submissionsNote' | translate }}

-
+
+

{{ 'meetings.landing.submissionsNote' | translate }}

+
- + - - - - - {{ 'meetings.landing.table.columns.title' | translate }} - - - - {{ 'meetings.landing.table.columns.submissions' | translate }} - - - - {{ 'meetings.landing.table.columns.location' | translate }} - - - - {{ 'meetings.landing.table.columns.date' | translate }} - - - - - - - {{ item.title }} - {{ item.submissionsCount }} - {{ item.location }} - {{ item.startDate | date: 'MMM d, y, h:mm a' }} - - - + + + + + {{ 'meetings.landing.table.columns.title' | translate }} + + + + {{ 'meetings.landing.table.columns.submissions' | translate }} + + + + {{ 'meetings.landing.table.columns.location' | translate }} + + + + {{ 'meetings.landing.table.columns.date' | translate }} + + + + + + + {{ item.title }} + {{ item.submissionsCount }} + {{ item.location }} + {{ item.startDate | date: 'MMM d, y, h:mm a' }} + + + -
- -
- Discover -

{{ 'meetings.landing.features.discover.title' | translate }}

-

{{ 'meetings.landing.features.discover.description' | translate }}

-
-
+
+ +
+ Discover +

{{ 'meetings.landing.features.discover.title' | translate }}

+

{{ 'meetings.landing.features.discover.description' | translate }}

+
+
- -
- Share -

{{ 'meetings.landing.features.share.title' | translate }}

-

{{ 'meetings.landing.features.share.description' | translate }}

-
-
+ +
+ Share +

{{ 'meetings.landing.features.share.title' | translate }}

+

{{ 'meetings.landing.features.share.description' | translate }}

+
+
- -
- Enhance -

{{ 'meetings.landing.features.enhance.title' | translate }}

-

{{ 'meetings.landing.features.enhance.description' | translate }}

-
-
-
+ +
+ Enhance +

{{ 'meetings.landing.features.enhance.title' | translate }}

+

{{ 'meetings.landing.features.enhance.description' | translate }}

+
+
+
-
-

{{ 'meetings.landing.users.title' | translate }}

+
+

{{ 'meetings.landing.users.title' | translate }}

-
- APS - BITSS - NRAO - SPSP +
+ APS + BITSS + NRAO + SPSP +
-
diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts index 828932eae..934d492c5 100644 --- a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts +++ b/src/app/features/meetings/meetings-landing/meetings-landing.component.ts @@ -10,8 +10,8 @@ import { ChangeDetectionStrategy, Component, HostBinding, inject, signal } from import { toSignal } from '@angular/core/rxjs-interop'; import { Router } from '@angular/router'; -import { MEETINGS_TABLE_PARAMS } from '@osf/features/meetings/constants/meetings-table.constants'; -import { Meeting } from '@osf/features/meetings/models/meetings.models'; +import { MEETINGS_TABLE_PARAMS } from '@osf/features/meetings/constants'; +import { Meeting } from '@osf/features/meetings/models'; import { testMeetings } from '@osf/features/meetings/test-data'; import { SearchInputComponent } from '@shared/components/search-input/search-input.component'; import { SubHeaderComponent } from '@shared/components/sub-header/sub-header.component'; diff --git a/src/app/features/meetings/models/index.ts b/src/app/features/meetings/models/index.ts new file mode 100644 index 000000000..781399be8 --- /dev/null +++ b/src/app/features/meetings/models/index.ts @@ -0,0 +1 @@ +export * from './meetings.models'; diff --git a/src/assets/icons/colored/APS.svg b/src/assets/icons/colored/aps.svg similarity index 100% rename from src/assets/icons/colored/APS.svg rename to src/assets/icons/colored/aps.svg diff --git a/src/assets/icons/colored/BITSS.svg b/src/assets/icons/colored/bitss.svg similarity index 100% rename from src/assets/icons/colored/BITSS.svg rename to src/assets/icons/colored/bitss.svg diff --git a/src/assets/icons/colored/NRAO.svg b/src/assets/icons/colored/nrao.svg similarity index 100% rename from src/assets/icons/colored/NRAO.svg rename to src/assets/icons/colored/nrao.svg diff --git a/src/assets/icons/colored/SPSP.svg b/src/assets/icons/colored/spsp.svg similarity index 100% rename from src/assets/icons/colored/SPSP.svg rename to src/assets/icons/colored/spsp.svg From 262de41002b4a1e594bc8278fd63ee3930ab6c94 Mon Sep 17 00:00:00 2001 From: Roma Date: Mon, 19 May 2025 17:57:39 +0300 Subject: [PATCH 09/13] fix(meeting-details): fixed date format --- .../meetings/meeting-details/meeting-details.component.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.ts b/src/app/features/meetings/meeting-details/meeting-details.component.ts index e16ea81ef..70b94e9fe 100644 --- a/src/app/features/meetings/meeting-details/meeting-details.component.ts +++ b/src/app/features/meetings/meeting-details/meeting-details.component.ts @@ -40,8 +40,8 @@ export class MeetingDetailsComponent { return ''; } - return `${this.meeting().location} | ${this.#datePipe.transform(this.meeting().startDate, 'MMM D, YYYY')} - - ${this.#datePipe.transform(this.meeting().endDate, 'MMM D, YYYY')}`; + return `${this.meeting().location} | ${this.#datePipe.transform(this.meeting().startDate, 'MMM d, y')} + - ${this.#datePipe.transform(this.meeting().endDate, 'MMM d, y')}`; }); onPageChange(tablePageEvent: TablePageEvent) { From 5263a8e7369f9e00b97a90e706ca055c4b38d701 Mon Sep 17 00:00:00 2001 From: Roma Date: Mon, 19 May 2025 18:10:26 +0300 Subject: [PATCH 10/13] refactor(meetings): reorganize component structure and update asset paths --- src/app/app.routes.ts | 4 +- .../meetings-landing.component.html | 146 ------------------ src/app/features/meetings/pages/index.ts | 2 + .../meeting-details.component.html | 0 .../meeting-details.component.scss | 0 .../meeting-details.component.spec.ts | 0 .../meeting-details.component.ts | 0 .../meetings-landing.component.html | 146 ++++++++++++++++++ .../meetings-landing.component.scss | 0 .../meetings-landing.component.spec.ts | 0 .../meetings-landing.component.ts | 0 11 files changed, 150 insertions(+), 148 deletions(-) delete mode 100644 src/app/features/meetings/meetings-landing/meetings-landing.component.html create mode 100644 src/app/features/meetings/pages/index.ts rename src/app/features/meetings/{ => pages}/meeting-details/meeting-details.component.html (100%) rename src/app/features/meetings/{ => pages}/meeting-details/meeting-details.component.scss (100%) rename src/app/features/meetings/{ => pages}/meeting-details/meeting-details.component.spec.ts (100%) rename src/app/features/meetings/{ => pages}/meeting-details/meeting-details.component.ts (100%) create mode 100644 src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html rename src/app/features/meetings/{ => pages}/meetings-landing/meetings-landing.component.scss (100%) rename src/app/features/meetings/{ => pages}/meetings-landing/meetings-landing.component.spec.ts (100%) rename src/app/features/meetings/{ => pages}/meetings-landing/meetings-landing.component.ts (100%) diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index ebb4e84f8..970c35867 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -64,14 +64,14 @@ export const routes: Routes = [ path: '', pathMatch: 'full', loadComponent: () => - import('@osf/features/meetings/meetings-landing/meetings-landing.component').then( + import('@osf/features/meetings/pages/meetings-landing/meetings-landing.component').then( (mod) => mod.MeetingsLandingComponent ), }, { path: ':id', loadComponent: () => - import('@osf/features/meetings/meeting-details/meeting-details.component').then( + import('@osf/features/meetings/pages/meeting-details/meeting-details.component').then( (mod) => mod.MeetingDetailsComponent ), }, diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.html b/src/app/features/meetings/meetings-landing/meetings-landing.component.html deleted file mode 100644 index 118fb430b..000000000 --- a/src/app/features/meetings/meetings-landing/meetings-landing.component.html +++ /dev/null @@ -1,146 +0,0 @@ - - -
-
- -
- Conference organizers -
-

{{ 'meetings.landing.conferenceOrganizers.title' | translate }}

-

- {{ 'meetings.landing.conferenceOrganizers.description' | translate }} -

-
- -
-
- - -
- Conference participants -
-

{{ 'meetings.landing.conferenceParticipants.title' | translate }}

-

- {{ 'meetings.landing.conferenceParticipants.description' | translate }} -

-
- -
-
-
- -
-

{{ 'meetings.landing.submissionsNote' | translate }}

-
- - - - - - - - {{ 'meetings.landing.table.columns.title' | translate }} - - - - {{ 'meetings.landing.table.columns.submissions' | translate }} - - - - {{ 'meetings.landing.table.columns.location' | translate }} - - - - {{ 'meetings.landing.table.columns.date' | translate }} - - - - - - - {{ item.title }} - {{ item.submissionsCount }} - {{ item.location }} - {{ item.startDate | date: 'MMM d, y, h:mm a' }} - - - - -
- -
- Discover -

{{ 'meetings.landing.features.discover.title' | translate }}

-

{{ 'meetings.landing.features.discover.description' | translate }}

-
-
- - -
- Share -

{{ 'meetings.landing.features.share.title' | translate }}

-

{{ 'meetings.landing.features.share.description' | translate }}

-
-
- - -
- Enhance -

{{ 'meetings.landing.features.enhance.title' | translate }}

-

{{ 'meetings.landing.features.enhance.description' | translate }}

-
-
-
- -
-

{{ 'meetings.landing.users.title' | translate }}

- -
- APS - BITSS - NRAO - SPSP -
-
-
diff --git a/src/app/features/meetings/pages/index.ts b/src/app/features/meetings/pages/index.ts new file mode 100644 index 000000000..2af54e93d --- /dev/null +++ b/src/app/features/meetings/pages/index.ts @@ -0,0 +1,2 @@ +export * from './meetings-details'; +export * from './meetings-landing'; diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.html b/src/app/features/meetings/pages/meeting-details/meeting-details.component.html similarity index 100% rename from src/app/features/meetings/meeting-details/meeting-details.component.html rename to src/app/features/meetings/pages/meeting-details/meeting-details.component.html diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.scss b/src/app/features/meetings/pages/meeting-details/meeting-details.component.scss similarity index 100% rename from src/app/features/meetings/meeting-details/meeting-details.component.scss rename to src/app/features/meetings/pages/meeting-details/meeting-details.component.scss diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.spec.ts b/src/app/features/meetings/pages/meeting-details/meeting-details.component.spec.ts similarity index 100% rename from src/app/features/meetings/meeting-details/meeting-details.component.spec.ts rename to src/app/features/meetings/pages/meeting-details/meeting-details.component.spec.ts diff --git a/src/app/features/meetings/meeting-details/meeting-details.component.ts b/src/app/features/meetings/pages/meeting-details/meeting-details.component.ts similarity index 100% rename from src/app/features/meetings/meeting-details/meeting-details.component.ts rename to src/app/features/meetings/pages/meeting-details/meeting-details.component.ts diff --git a/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html new file mode 100644 index 000000000..8706570f2 --- /dev/null +++ b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html @@ -0,0 +1,146 @@ + + +
+
+ +
+ Conference organizers +
+

{{ 'meetings.landing.conferenceOrganizers.title' | translate }}

+

+ {{ 'meetings.landing.conferenceOrganizers.description' | translate }} +

+
+ +
+
+ + +
+ Conference participants +
+

{{ 'meetings.landing.conferenceParticipants.title' | translate }}

+

+ {{ 'meetings.landing.conferenceParticipants.description' | translate }} +

+
+ +
+
+
+ +
+

{{ 'meetings.landing.submissionsNote' | translate }}

+
+ + + + + + + + {{ 'meetings.landing.table.columns.title' | translate }} + + + + {{ 'meetings.landing.table.columns.submissions' | translate }} + + + + {{ 'meetings.landing.table.columns.location' | translate }} + + + + {{ 'meetings.landing.table.columns.date' | translate }} + + + + + + + {{ item.title }} + {{ item.submissionsCount }} + {{ item.location }} + {{ item.startDate | date: 'MMM d, y, h:mm a' }} + + + + +
+ +
+ Discover +

{{ 'meetings.landing.features.discover.title' | translate }}

+

{{ 'meetings.landing.features.discover.description' | translate }}

+
+
+ + +
+ Share +

{{ 'meetings.landing.features.share.title' | translate }}

+

{{ 'meetings.landing.features.share.description' | translate }}

+
+
+ + +
+ Enhance +

{{ 'meetings.landing.features.enhance.title' | translate }}

+

{{ 'meetings.landing.features.enhance.description' | translate }}

+
+
+
+ +
+

{{ 'meetings.landing.users.title' | translate }}

+ +
+ APS + BITSS + NRAO + SPSP +
+
+
diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.scss b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.scss similarity index 100% rename from src/app/features/meetings/meetings-landing/meetings-landing.component.scss rename to src/app/features/meetings/pages/meetings-landing/meetings-landing.component.scss diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.spec.ts b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.spec.ts similarity index 100% rename from src/app/features/meetings/meetings-landing/meetings-landing.component.spec.ts rename to src/app/features/meetings/pages/meetings-landing/meetings-landing.component.spec.ts diff --git a/src/app/features/meetings/meetings-landing/meetings-landing.component.ts b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.ts similarity index 100% rename from src/app/features/meetings/meetings-landing/meetings-landing.component.ts rename to src/app/features/meetings/pages/meetings-landing/meetings-landing.component.ts From cbea58e3e4d21f32a710a7f0ae893c687aacd143 Mon Sep 17 00:00:00 2001 From: Roma Date: Tue, 20 May 2025 14:56:55 +0300 Subject: [PATCH 11/13] feat(notifications): Removed unused section --- .../meetings-landing.component.html | 35 +------------------ .../meetings-landing.component.ts | 3 +- 2 files changed, 2 insertions(+), 36 deletions(-) diff --git a/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html index 8706570f2..9131f900c 100644 --- a/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html +++ b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html @@ -4,40 +4,7 @@
-
- -
- Conference organizers -
-

{{ 'meetings.landing.conferenceOrganizers.title' | translate }}

-

- {{ 'meetings.landing.conferenceOrganizers.description' | translate }} -

-
- -
-
- - -
- Conference participants -
-

{{ 'meetings.landing.conferenceParticipants.title' | translate }}

-

- {{ 'meetings.landing.conferenceParticipants.description' | translate }} -

-
- -
-
-
- -
+

{{ 'meetings.landing.submissionsNote' | translate }}

diff --git a/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.ts b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.ts index 934d492c5..8e46b7aa0 100644 --- a/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.ts +++ b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.ts @@ -1,7 +1,6 @@ import { TranslatePipe } from '@ngx-translate/core'; import { SortEvent } from 'primeng/api'; -import { Button } from 'primeng/button'; import { Card } from 'primeng/card'; import { TableModule, TablePageEvent } from 'primeng/table'; @@ -20,7 +19,7 @@ import { IS_XSMALL } from '@shared/utils/breakpoints.tokens'; @Component({ selector: 'osf-meetings-landing', - imports: [SubHeaderComponent, Card, SearchInputComponent, Button, DatePipe, TableModule, TranslatePipe], + imports: [SubHeaderComponent, Card, SearchInputComponent, DatePipe, TableModule, TranslatePipe], templateUrl: './meetings-landing.component.html', styleUrl: './meetings-landing.component.scss', changeDetection: ChangeDetectionStrategy.OnPush, From cd6efa8b9eee7d487989aa55a5056b1c41c91c92 Mon Sep 17 00:00:00 2001 From: Roma Date: Tue, 20 May 2025 15:01:01 +0300 Subject: [PATCH 12/13] feat(notifications): Removed unused translation keys --- src/assets/i18n/en.json | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/assets/i18n/en.json b/src/assets/i18n/en.json index a3f745c3d..c4bd8d748 100644 --- a/src/assets/i18n/en.json +++ b/src/assets/i18n/en.json @@ -629,16 +629,6 @@ "landing": { "title": "Meetings", "description": "A free poster and presentation sharing service for academic meetings and conferences", - "conferenceOrganizers": { - "title": "For Conference Organizers", - "description": "Register your event to broaden its impact. Events get a dedicated page, an easy submission process, and persistent links.", - "button": "Register" - }, - "conferenceParticipants": { - "title": "For Conference Participants", - "description": "Share your posters and presentations along with any supporting data and materials. Get persistent links and usage analytics.", - "button": "Upload" - }, "submissionsNote": "Only conferences with at least five submissions are displayed.", "searchPlaceholder": "Search meetings", "table": { @@ -700,4 +690,4 @@ }, "copyright": "Copyright © 2011-2025" } -} \ No newline at end of file +} From 667403fb46b8cf6a4a151a4c1f9ed0d41637f585 Mon Sep 17 00:00:00 2001 From: Roma Date: Tue, 20 May 2025 15:08:31 +0300 Subject: [PATCH 13/13] refactor(meetings): update asset paths for images --- .../meetings-landing/meetings-landing.component.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html index 9131f900c..bbd1b04da 100644 --- a/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html +++ b/src/app/features/meetings/pages/meetings-landing/meetings-landing.component.html @@ -96,16 +96,16 @@

{{ 'meetings.landing.features.enhance.title' | translate }}

{{ 'meetings.landing.users.title' | translate }}

- APS - BITSS - NRAO - SPSP