From c292ec6367229342fa16720d2264fc09e1f76414 Mon Sep 17 00:00:00 2001 From: mansurskTarento Date: Tue, 28 Jan 2025 11:11:32 +0530 Subject: [PATCH 01/14] adding components and modules for events --- .../lib/routes/home/home.rounting.module.ts | 4 + .../create-event/create-event.component.html | 1 + .../create-event/create-event.component.scss | 0 .../create-event.component.spec.ts | 21 ++ .../create-event/create-event.component.ts | 10 + .../event-basic-details.component.html | 1 + .../event-basic-details.component.scss | 0 .../event-basic-details.component.spec.ts | 21 ++ .../event-basic-details.component.ts | 10 + .../event-competencies.component.html | 1 + .../event-competencies.component.scss | 0 .../event-competencies.component.spec.ts | 21 ++ .../event-competencies.component.ts | 10 + .../event-materials.component.html | 1 + .../event-materials.component.scss | 0 .../event-materials.component.spec.ts | 21 ++ .../event-materials.component.ts | 10 + .../events-table/events-table.component.html | 86 +++++++ .../events-table/events-table.component.scss | 220 ++++++++++++++++++ .../events-table.component.spec.ts | 21 ++ .../events-table/events-table.component.ts | 94 ++++++++ .../components/events/events.component.html | 1 + .../components/events/events.component.scss | 0 .../events/events.component.spec.ts | 21 ++ .../components/events/events.component.ts | 10 + .../speakers/speakers.component.html | 1 + .../speakers/speakers.component.scss | 0 .../speakers/speakers.component.spec.ts | 21 ++ .../components/speakers/speakers.component.ts | 10 + .../basic-info/basic-info.component.html | 1 + .../basic-info/basic-info.component.scss | 0 .../basic-info/basic-info.component.spec.ts | 21 ++ .../basic-info/basic-info.component.ts | 10 + .../events-2/events-2-routing.module.ts | 28 +++ .../home/routes/events-2/events-2.module.ts | 42 ++++ .../events-2/services/events.service.spec.ts | 16 ++ .../events-2/services/events.service.ts | 9 + 37 files changed, 744 insertions(+) create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/events-2-routing.module.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/events-2.module.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.ts diff --git a/project/ws/app/src/lib/routes/home/home.rounting.module.ts b/project/ws/app/src/lib/routes/home/home.rounting.module.ts index b1937959d..69bcc7a0d 100644 --- a/project/ws/app/src/lib/routes/home/home.rounting.module.ts +++ b/project/ws/app/src/lib/routes/home/home.rounting.module.ts @@ -325,6 +325,10 @@ const routes: Routes = [ module: 'Home', }, }, + { + path: 'events', + loadChildren: () => import('./routes/events-2/events-2.module').then(m => m.Events2Module), + }, { path: 'reports-section', component: ReportsSectionComponent, diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.html new file mode 100644 index 000000000..e37ac1936 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.html @@ -0,0 +1 @@ +

create-event works!

diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.spec.ts new file mode 100644 index 000000000..88cd9e1c4 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { CreateEventComponent } from './create-event.component'; + +describe('CreateEventComponent', () => { + let component: CreateEventComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [CreateEventComponent] + }); + fixture = TestBed.createComponent(CreateEventComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.ts new file mode 100644 index 000000000..f05c32ac1 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'ws-app-create-event', + templateUrl: './create-event.component.html', + styleUrls: ['./create-event.component.scss'] +}) +export class CreateEventComponent { + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.html new file mode 100644 index 000000000..6bbf336ce --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.html @@ -0,0 +1 @@ +

event-basic-details works!

diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.spec.ts new file mode 100644 index 000000000..9a0830394 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EventBasicDetailsComponent } from './event-basic-details.component'; + +describe('EventBasicDetailsComponent', () => { + let component: EventBasicDetailsComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [EventBasicDetailsComponent] + }); + fixture = TestBed.createComponent(EventBasicDetailsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.ts new file mode 100644 index 000000000..d2ed60978 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-basic-details/event-basic-details.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'ws-app-event-basic-details', + templateUrl: './event-basic-details.component.html', + styleUrls: ['./event-basic-details.component.scss'] +}) +export class EventBasicDetailsComponent { + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.html new file mode 100644 index 000000000..03683b504 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.html @@ -0,0 +1 @@ +

event-competencies works!

diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.spec.ts new file mode 100644 index 000000000..36ffff83a --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EventCompetenciesComponent } from './event-competencies.component'; + +describe('EventCompetenciesComponent', () => { + let component: EventCompetenciesComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [EventCompetenciesComponent] + }); + fixture = TestBed.createComponent(EventCompetenciesComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.ts new file mode 100644 index 000000000..4beb3ab89 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-competencies/event-competencies.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'ws-app-event-competencies', + templateUrl: './event-competencies.component.html', + styleUrls: ['./event-competencies.component.scss'] +}) +export class EventCompetenciesComponent { + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.html new file mode 100644 index 000000000..7bdb020d1 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.html @@ -0,0 +1 @@ +

event-materials works!

diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.spec.ts new file mode 100644 index 000000000..72aa4115b --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EventMaterialsComponent } from './event-materials.component'; + +describe('EventMaterialsComponent', () => { + let component: EventMaterialsComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [EventMaterialsComponent] + }); + fixture = TestBed.createComponent(EventMaterialsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.ts new file mode 100644 index 000000000..ae0bebcb3 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/event-materials/event-materials.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'ws-app-event-materials', + templateUrl: './event-materials.component.html', + styleUrls: ['./event-materials.component.scss'] +}) +export class EventMaterialsComponent { + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html new file mode 100644 index 000000000..db20421ba --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html @@ -0,0 +1,86 @@ +
+
+ + + +
+ +
+ + + + + + + {{col.displayName}} + + + + logo + + + {{element[col.key]}} + + + + + + + + + + + more_horiz + + + + +
+ +
+
+
+
+
+
+ +
+
+ + + + + + +
+
+
No results found
+
Try adjusting your search to find what you are looking for.
+
+ + {{noDataMessage}} + +
+ +
+ +
+
+
+ + + + \ No newline at end of file diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.scss new file mode 100644 index 000000000..68f9bb96f --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.scss @@ -0,0 +1,220 @@ +.rsearch { + display: flex; + position: relative; + flex: 1 1 auto; +} + +.sinput { + width: 315px; + border-radius: 4px; + border: 1px solid #d5d0d0; + padding: 9px 9px 9px 35px; + margin-bottom: 0px; + margin-top: 0; + /* stylelint-enable */ + font: normal 14px Lato; + /* stylelint-disable */ + font-weight: 400; +} + +.search-icon { + position: absolute; + top: 9px; + font-size: 20px; + left: 10px; +} + +.delete-all { + background-color: #1B4CA1 !important; + border-radius: 4px; + color: #FFFFFF !important; + /* stylelint-enable */ + font: 700 14px Lato; + /* stylelint-disable */ + + .delete-all-icon { + font-size: 18px; + width: 14px; + height: 18px; + color: #ffffff; + } +} + +.imageCell { + width: 63px; + margin-right: 15px; +} + +.delete-btn { + background-color: #1B4CA1 !important; + min-width: 40px; + height: 40px; + border-radius: 4px; +} + +.delete-icon{ + font-size: 18px; + height: 18px; + width: 18px; + color: #FFFFFF; +} + +.cources-table-cell { + color: #000000DE; + /* stylelint-enable */ + font: 400 14px Lato; + /* stylelint-disable */ + width: 150px; +} + +.text-overflow-elipse { + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; +} + +.header-info-icon { + color: #6C757D; + font-size: 14px; + height: 14px; + width: 14px; + margin-left: 5px; +} + +.authenticated { + background-color: #1D8923; + height: 26px; + width: 124px; + border-radius: 4px; + padding: 4px 8px; + color: #FFFFFF; + /* stylelint-enable */ + font: 400 14px Lato; + /* stylelint-disable */ + + .checkCircle{ + color: #E8EAED; + font-size: 20px; + width: 20px; + height: 20px; + } +} + +.not-authenticated { + background-color: #D13924; + height: 26px; + width: 124px; + border-radius: 4px; + padding: 4px 8px; + color: #FFFFFF; + /* stylelint-enable */ + font: 400 14px Lato; + /* stylelint-disable */ + + .pending-img{ + width: 24px; + height: 24px; + } +} + +.statusLive { + height: 33px; + width: 58px; + background-color: #1D892333; + /* stylelint-enable */ + font: 700 14px Lato; + /* stylelint-disable */ + color: #1D8923; + border-radius: 4px; +} + +.statusFailed { + height: 33px; + border-radius: 4px; + background-color: #D1392466; + padding: 0px 16px; + /* stylelint-enable */ + font: 700 14px Lato; + /* stylelint-disable */ + color: #D13924; +} + +.statusPending { + height: 33px; + border-radius: 4px; + background-color: #fad8b4; + padding: 0px 16px; + /* stylelint-enable */ + font: 700 14px Lato; + /* stylelint-disable */ + color: #fb8400; +} + +.refreshIcon { + color: #1B4CA1; + margin-left: 5px; + cursor: pointer; +} + +.horizontalMenu { + color: #00000099; + cursor: pointer; +} + +.item-btn { + color: #00000099 !important; + /* stylelint-enable */ + font: 400 14px Lato; + /* stylelint-disable */ + width: 160px; + + .menu-item-icon { + color: #00000099; + margin-right: 5px; + } +} + +.table-menu-column { + flex: 0 0 200px; + .disableMenu { + opacity: 0.5; + } +} + +.table-header-text { + color: #0000008A !important; + font-size: 14px !important; +} + +.coursesTableLoader { + height: calc(100vh - 300px); + + .coursesTableSpinner { + position: unset !important; + margin: 0px !important; + } +} + + +:host ::ng-deep .courses-table { + .mat-header-row { + background-color: #F5F5F5 !important; + } +} + +:host ::ng-deep .disableCheckBosx { + .mat-checkbox-inner-container-no-side-margin { + background-color: #D9D9D9; + } + + .theme-igot.day-mode .mat-header-cell { + color: #0000008A; + /* stylelint-enable */ + font: 400 14px Lato + /* stylelint-disable */ + } +} + +:host ::ng-deep .mat-paginator-container { + justify-content: center !important; +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.spec.ts new file mode 100644 index 000000000..5aa4e6baf --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EventsTableComponent } from './events-table.component'; + +describe('EventsTableComponent', () => { + let component: EventsTableComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [EventsTableComponent] + }); + fixture = TestBed.createComponent(EventsTableComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.ts new file mode 100644 index 000000000..7cd8dc511 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.ts @@ -0,0 +1,94 @@ +import { Component, EventEmitter, Input, OnChanges, OnInit, Output, SimpleChanges } from '@angular/core' +import { FormControl } from '@angular/forms' +import { PageEvent } from '@angular/material/paginator' +import { MatTableDataSource } from '@angular/material/table' +import _ from 'lodash' +import { debounceTime } from 'rxjs/operators' + +@Component({ + selector: 'ws-app-events-table', + templateUrl: './events-table.component.html', + styleUrls: ['./events-table.component.scss'] +}) +export class EventsTableComponent implements OnInit, OnChanges { + @Input() tableData!: any + @Input() data?: [] + @Input() paginationDetails: any = { + startIndex: 0, + lastIndes: 20, + pageSize: 20, + pageIndex: 0, + totalCount: 20, + } + @Input() menuItems = [] + @Input() showLoader = false + @Output() actionsClick = new EventEmitter() + @Output() searchKey = new EventEmitter() + @Output() pageChange = new EventEmitter() + + searchControl = new FormControl() + showSearchBox = true + displayedColumns: any + dataSource!: any + pageSizeOptions = [20, 30, 40] + columnsList: any = [] + tableColumns = [] + noDataMessage = 'No data found' + showPagination = true + + constructor() { + this.dataSource = new MatTableDataSource() + } + + ngOnInit() { + if (this.tableData) { + this.displayedColumns = this.tableData.columns + this.showSearchBox = _.get(this.tableData, 'showSearchBox', true) + this.noDataMessage = _.get(this.tableData, 'noDataMessage', 'No data found') + this.showPagination = _.get(this.tableData, 'showPagination', true) + } + + this.searchControl.valueChanges + .pipe(debounceTime(300)) // Adjust the debounce time as needed + .subscribe(value => this.searchKey.emit(value)) + } + + ngOnChanges(changes: SimpleChanges): void { + if (changes.tableData) { + this.getFinalColumns() + } + if (changes.data) { + this.dataSource.data = this.data + } + } + + getFinalColumns() { + this.columnsList = [] + const columns = JSON.parse(JSON.stringify(this.tableData.columns)) + if (this.tableData.needCheckBox) { + const selectColumn = { displayName: '', key: 'select', cellType: 'select' } + columns.splice(0, 0, selectColumn) + } + if (this.menuItems.length > 0) { + const selectColumn = { displayName: '', key: 'menu', cellType: 'menu' } + columns.push(selectColumn) + } + this.tableColumns = columns + this.columnsList = _.map(columns, c => c.key) + } + + buttonClick(action: string, rows: any) { + if (this.tableData) { + this.actionsClick.emit({ action, rows }) + } + } + + onChangePage(pe: PageEvent) { + this.paginationDetails.startIndex = pe.pageIndex * pe.pageSize + this.paginationDetails.lastIndex = (pe.pageIndex + 1) * pe.pageSize + this.paginationDetails.pageSize = pe.pageSize + this.paginationDetails.pageIndex = pe.pageIndex + + this.pageChange.emit(this.paginationDetails) + } +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.html new file mode 100644 index 000000000..f2f77fd03 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.html @@ -0,0 +1 @@ +

events works!

diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.spec.ts new file mode 100644 index 000000000..c18bbd5be --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { EventsComponent } from './events.component'; + +describe('EventsComponent', () => { + let component: EventsComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [EventsComponent] + }); + fixture = TestBed.createComponent(EventsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.ts new file mode 100644 index 000000000..398462989 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'ws-app-events', + templateUrl: './events.component.html', + styleUrls: ['./events.component.scss'] +}) +export class EventsComponent { + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.html new file mode 100644 index 000000000..9c2edcbcc --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.html @@ -0,0 +1 @@ +

speakers works!

diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.spec.ts new file mode 100644 index 000000000..a3fe01b74 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { SpeakersComponent } from './speakers.component'; + +describe('SpeakersComponent', () => { + let component: SpeakersComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [SpeakersComponent] + }); + fixture = TestBed.createComponent(SpeakersComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.ts new file mode 100644 index 000000000..af462c84e --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/speakers/speakers.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'ws-app-speakers', + templateUrl: './speakers.component.html', + styleUrls: ['./speakers.component.scss'] +}) +export class SpeakersComponent { + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.html new file mode 100644 index 000000000..7ea6c4a86 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.html @@ -0,0 +1 @@ +

basic-info works!

diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.spec.ts new file mode 100644 index 000000000..28c966c5c --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { BasicInfoComponent } from './basic-info.component'; + +describe('BasicInfoComponent', () => { + let component: BasicInfoComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [BasicInfoComponent] + }); + fixture = TestBed.createComponent(BasicInfoComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.ts new file mode 100644 index 000000000..2d59a5fde --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/dialogs/basic-info/basic-info.component.ts @@ -0,0 +1,10 @@ +import { Component } from '@angular/core'; + +@Component({ + selector: 'ws-app-basic-info', + templateUrl: './basic-info.component.html', + styleUrls: ['./basic-info.component.scss'] +}) +export class BasicInfoComponent { + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/events-2-routing.module.ts b/project/ws/app/src/lib/routes/home/routes/events-2/events-2-routing.module.ts new file mode 100644 index 000000000..169d43bab --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/events-2-routing.module.ts @@ -0,0 +1,28 @@ +import { NgModule } from '@angular/core' +import { RouterModule, Routes } from '@angular/router' +import { EventsComponent } from './components/events/events.component' +import { CreateEventComponent } from './components/create-event/create-event.component' + +const routes: Routes = [ + { + path: '', + pathMatch: 'full', + component: EventsComponent, + data: { + pageId: 'home/events', + module: 'events-2', + pageType: 'feature', + pageKey: 'events', + }, + }, { + path: 'create-event/:id', + pathMatch: 'full', + component: CreateEventComponent + } +] + +@NgModule({ + imports: [RouterModule.forChild(routes)], + exports: [RouterModule] +}) +export class Events2RoutingModule { } diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/events-2.module.ts b/project/ws/app/src/lib/routes/home/routes/events-2/events-2.module.ts new file mode 100644 index 000000000..02d028f9a --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/events-2.module.ts @@ -0,0 +1,42 @@ +import { NgModule } from '@angular/core' +import { CommonModule } from '@angular/common' + +import { Events2RoutingModule } from './events-2-routing.module' +import { EventsComponent } from './components/events/events.component' +import { CreateEventComponent } from './components/create-event/create-event.component' +import { EventBasicDetailsComponent } from './components/event-basic-details/event-basic-details.component' +import { SpeakersComponent } from './components/speakers/speakers.component' +import { EventMaterialsComponent } from './components/event-materials/event-materials.component' +import { EventCompetenciesComponent } from './components/event-competencies/event-competencies.component' +import { FormsModule, ReactiveFormsModule } from '@angular/forms' +import { MatLegacyButtonModule } from '@angular/material/legacy-button' +import { MatLegacyDialogModule } from '@angular/material/legacy-dialog' +import { MatLegacyProgressSpinnerModule } from '@angular/material/legacy-progress-spinner' +import { MatLegacyFormFieldModule } from '@angular/material/legacy-form-field' +import { MatLegacyTooltipModule } from '@angular/material/legacy-tooltip'; +import { EventsTableComponent } from './components/events-table/events-table.component' + + +@NgModule({ + declarations: [ + EventsComponent, + CreateEventComponent, + EventBasicDetailsComponent, + SpeakersComponent, + EventMaterialsComponent, + EventCompetenciesComponent, + EventsTableComponent + ], + imports: [ + CommonModule, + FormsModule, + ReactiveFormsModule, + MatLegacyButtonModule, + MatLegacyDialogModule, + MatLegacyProgressSpinnerModule, + MatLegacyFormFieldModule, + MatLegacyTooltipModule, + Events2RoutingModule, + ] +}) +export class Events2Module { } diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.spec.ts new file mode 100644 index 000000000..162cd5c35 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.spec.ts @@ -0,0 +1,16 @@ +import { TestBed } from '@angular/core/testing'; + +import { EventsService } from './events.service'; + +describe('EventsService', () => { + let service: EventsService; + + beforeEach(() => { + TestBed.configureTestingModule({}); + service = TestBed.inject(EventsService); + }); + + it('should be created', () => { + expect(service).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.ts b/project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.ts new file mode 100644 index 000000000..1bc4b1b82 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.ts @@ -0,0 +1,9 @@ +import { Injectable } from '@angular/core'; + +@Injectable({ + providedIn: 'root' +}) +export class EventsService { + + constructor() { } +} From 66f594190a9280e407959c2737cf13b952b0d4d3 Mon Sep 17 00:00:00 2001 From: mansurskTarento Date: Wed, 29 Jan 2025 12:35:11 +0530 Subject: [PATCH 02/14] adding events list pages --- .../draft-events/draft-events.component.html | 5 + .../draft-events/draft-events.component.scss | 0 .../draft-events.component.spec.ts | 21 +++ .../draft-events/draft-events.component.ts | 137 ++++++++++++++++++ .../events-table/events-table.component.html | 20 ++- .../events-table/events-table.component.scss | 27 ++-- .../events-table/events-table.component.ts | 17 +-- .../components/events/events.component.html | 30 +++- .../components/events/events.component.scss | 38 +++++ .../components/events/events.component.ts | 52 ++++++- .../past-events/past-events.component.html | 5 + .../past-events/past-events.component.scss | 0 .../past-events/past-events.component.spec.ts | 21 +++ .../past-events/past-events.component.ts | 137 ++++++++++++++++++ .../pending-approval-events.component.html | 5 + .../pending-approval-events.component.scss | 0 .../pending-approval-events.component.spec.ts | 21 +++ .../pending-approval-events.component.ts | 137 ++++++++++++++++++ .../rejected-events.component.html | 5 + .../rejected-events.component.scss | 0 .../rejected-events.component.spec.ts | 21 +++ .../rejected-events.component.ts | 137 ++++++++++++++++++ .../upcoming-events.component.html | 5 + .../upcoming-events.component.scss | 0 .../upcoming-events.component.spec.ts | 21 +++ .../upcoming-events.component.ts | 137 ++++++++++++++++++ .../events-2/events-2-routing.module.ts | 54 ++++++- .../home/routes/events-2/events-2.module.ts | 26 +++- .../routes/events-2/models/events.model.ts | 30 ++++ .../events-2/services/events.service.ts | 15 +- 30 files changed, 1089 insertions(+), 35 deletions(-) create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.html create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.scss create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.spec.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.ts create mode 100644 project/ws/app/src/lib/routes/home/routes/events-2/models/events.model.ts diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.html new file mode 100644 index 000000000..544175913 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.html @@ -0,0 +1,5 @@ +
+ +
\ No newline at end of file diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.spec.ts new file mode 100644 index 000000000..852fc79fe --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { DraftEventsComponent } from './draft-events.component'; + +describe('DraftEventsComponent', () => { + let component: DraftEventsComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [DraftEventsComponent] + }); + fixture = TestBed.createComponent(DraftEventsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.ts new file mode 100644 index 000000000..add3efaab --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.ts @@ -0,0 +1,137 @@ +//#region (imports) +import { Component, OnDestroy, OnInit } from '@angular/core' +import { events } from '../../models/events.model' +import { EventsService } from '../../services/events.service' +import { Subscription } from 'rxjs' +import * as _ from 'lodash' +import { HttpErrorResponse } from '@angular/common/http' +import { MatSnackBar } from '@angular/material/snack-bar' +//#endregion + +@Component({ + selector: 'ws-app-draft-events', + templateUrl: './draft-events.component.html', + styleUrls: ['./draft-events.component.scss'] +}) +export class DraftEventsComponent implements OnInit, OnDestroy { + //#region (global variables) + tableData!: events.tableData + paginationDetails!: events.pagination + menuItems!: events.menuItems[] + eventsList: any[] = [] + getEventSubscription!: Subscription + showEventsLoader = false + searchKey = '' + //#endregion + + //#region (constructor) + constructor( + private eventSvc: EventsService, + private matSnackBar: MatSnackBar + ) { } + //#endregion + + //#region (onInint) + ngOnInit(): void { + this.initialization() + this.getEvents() + } + + initialization() { + this.tableData = { + columns: [ + { displayName: 'Event Name', key: 'name', cellType: 'text', imageKey: 'appIcon', cellClass: 'text-overflow-elipse' }, + { displayName: 'Start Date', key: 'startDate', cellType: 'text' }, + { displayName: 'Created On', key: 'createdOn', cellType: 'text' }, + { displayName: 'Created By', key: 'createdByName', cellType: 'text' }, + { displayName: 'Submitted On', key: 'submitedOn', cellType: 'text' }, + ], + showSearchBox: true, + showPagination: true, + noDataMessage: 'There are no draft events.' + } + + this.paginationDetails = { + startIndex: 0, + lastIndex: 20, + pageSize: 20, + pageIndex: 0, + totalCount: 20, + } + + this.menuItems = [ + { + btnText: 'Edit', + action: 'edit', + }, + ] + } + + getEvents() { + const requestObj = { + locale: [ + 'en', + ], + request: { + query: this.searchKey, + limit: _.get(this.paginationDetails, 'pageSize', 20), + offset: _.get(this.paginationDetails, 'pageIndex', 0), + filters: { + status: ['Live'], + contentType: 'Event', + }, + sort_by: { + startDate: 'desc', + }, + }, + } + + if (this.getEventSubscription) { + this.getEventSubscription.unsubscribe() + } + this.showEventsLoader = true + this.getEventSubscription = this.eventSvc.getEvents(requestObj).subscribe( + { + next: (res: any) => { + this.showEventsLoader = false + this.eventsList = _.get(res, 'result.Event', []) + this.paginationDetails['totalCount'] = _.get(res, 'result.count', 0) + }, + error: (error: HttpErrorResponse) => { + this.showEventsLoader = false + const errorMessage = _.get(error, 'error.message', 'Some thing went wrong') + this.openSnackBar(errorMessage) + } + } + ) + } + //#endregion + + //#region (ui interactions like click) + searchEvents(searchKey: string) { + this.searchKey = searchKey + this.getEvents() + } + + onPageChange(paginationDetails: events.pagination) { + this.paginationDetails = paginationDetails + this.getEvents() + } + + contentEvents(events: any) { + console.log(events) + } + + //#endregion + + private openSnackBar(message: string) { + this.matSnackBar.open(message) + } + + ngOnDestroy(): void { + if (this.getEventSubscription) { + this.getEventSubscription.unsubscribe() + } + } + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html index db20421ba..d2782f7df 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html @@ -4,7 +4,8 @@ @@ -30,9 +31,20 @@ + + + {{col.displayName}} + + + + {{element[col.key]}} + + + + - - + + {{col.displayName}} @@ -75,7 +87,7 @@
- +
diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.scss index 68f9bb96f..47b801501 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.scss +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.scss @@ -5,10 +5,10 @@ } .sinput { - width: 315px; - border-radius: 4px; + width: 385px; + border-radius: 18px; border: 1px solid #d5d0d0; - padding: 9px 9px 9px 35px; + padding: 9px 9px 9px 45px; margin-bottom: 0px; margin-top: 0; /* stylelint-enable */ @@ -19,9 +19,9 @@ .search-icon { position: absolute; - top: 9px; - font-size: 20px; - left: 10px; + top: 8px; + font-size: 22px; + left: 16px; } .delete-all { @@ -174,6 +174,10 @@ } } +.table-menu-header { + flex: 0 0 200px; +} + .table-menu-column { flex: 0 0 200px; .disableMenu { @@ -182,17 +186,14 @@ } .table-header-text { - color: #0000008A !important; - font-size: 14px !important; + color: #666666 !important; + /* stylelint-enable */ + font: 400 12px Lato !important; + /* stylelint-disable */ } .coursesTableLoader { height: calc(100vh - 300px); - - .coursesTableSpinner { - position: unset !important; - margin: 0px !important; - } } diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.ts index 7cd8dc511..42c49b7ae 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.ts +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.ts @@ -4,6 +4,7 @@ import { PageEvent } from '@angular/material/paginator' import { MatTableDataSource } from '@angular/material/table' import _ from 'lodash' import { debounceTime } from 'rxjs/operators' +import { events } from '../../models/events.model' @Component({ selector: 'ws-app-events-table', @@ -11,16 +12,16 @@ import { debounceTime } from 'rxjs/operators' styleUrls: ['./events-table.component.scss'] }) export class EventsTableComponent implements OnInit, OnChanges { - @Input() tableData!: any + @Input() tableData!: events.tableData @Input() data?: [] - @Input() paginationDetails: any = { + @Input() paginationDetails: events.pagination = { startIndex: 0, - lastIndes: 20, + lastIndex: 20, pageSize: 20, pageIndex: 0, totalCount: 20, } - @Input() menuItems = [] + @Input() menuItems: events.menuItems[] = [] @Input() showLoader = false @Output() actionsClick = new EventEmitter() @Output() searchKey = new EventEmitter() @@ -49,7 +50,7 @@ export class EventsTableComponent implements OnInit, OnChanges { } this.searchControl.valueChanges - .pipe(debounceTime(300)) // Adjust the debounce time as needed + .pipe(debounceTime(500)) // Adjust the debounce time as needed .subscribe(value => this.searchKey.emit(value)) } @@ -65,12 +66,8 @@ export class EventsTableComponent implements OnInit, OnChanges { getFinalColumns() { this.columnsList = [] const columns = JSON.parse(JSON.stringify(this.tableData.columns)) - if (this.tableData.needCheckBox) { - const selectColumn = { displayName: '', key: 'select', cellType: 'select' } - columns.splice(0, 0, selectColumn) - } if (this.menuItems.length > 0) { - const selectColumn = { displayName: '', key: 'menu', cellType: 'menu' } + const selectColumn = { displayName: 'Actions', key: 'menu', cellType: 'menu' } columns.push(selectColumn) } this.tableColumns = columns diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.html index f2f77fd03..76744d6d4 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.html +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.html @@ -1 +1,29 @@ -

events works!

+
+
+ Event + +
+ + +
+ +
+
\ No newline at end of file diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.scss index e69de29bb..ac56f1255 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.scss +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.scss @@ -0,0 +1,38 @@ +.createEventBtn { + background-color: #1B4CA1 !important; + height: 32px; + border-radius: 17px; + color: #FFFFFF !important; + /* stylelint-disable */ + font: 700 14px Lato; + /* stylelint-enable */ +} + +.filter { + border-bottom: 2px solid #ebebeb; + + .filter-option { + // margin: $size-s 0; + border-radius: 0; + border-bottom-width: 2px; + border-top-width: 0; + border-left-width: 0; + border-right-width: 0; + + color: #00000099; + /* stylelint-disable */ + font: 400 14px Lato; + /* stylelint-enable */ + } + + .ws-mat-accent-border-active { + color: #1B4CA1 !important; + /* stylelint-disable */ + font: 700 14px Lato; + /* stylelint-enable */ + } + + .filter-option:first-child { + margin-left: 0; + } +} \ No newline at end of file diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.ts index 398462989..06af3d62c 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.ts +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events/events.component.ts @@ -1,10 +1,58 @@ -import { Component } from '@angular/core'; +//#region (imports) +import { Component, OnDestroy, OnInit } from '@angular/core' +import { NavigationEnd, Router } from '@angular/router' +import { Subscription } from 'rxjs' + +//#endregion @Component({ selector: 'ws-app-events', templateUrl: './events.component.html', styleUrls: ['./events.component.scss'] }) -export class EventsComponent { +export class EventsComponent implements OnInit, OnDestroy { + + //#region (global variables) + currentRoute = 'pending-approval' + routeSubscription: Subscription = new Subscription() + //#endregion + + //#region (constructor) + constructor( + private router: Router, + ) { } + + //#endregion + + //#region (onint) + ngOnInit(): void { + this.initialization() + } + + initialization() { + this.updateCurrentRoute() + this.getRouteSubscription() + } + + getRouteSubscription() { + this.routeSubscription = this.router.events.subscribe(event => { + if (event instanceof NavigationEnd) { + this.updateCurrentRoute() + } + }) + } + + updateCurrentRoute(): void { + const urlSegments = this.router.url.split('/') + this.currentRoute = urlSegments[urlSegments.length - 1] + } + + //#endregion + + ngOnDestroy(): void { + if (this.routeSubscription) { + this.routeSubscription.unsubscribe() + } + } } diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.html new file mode 100644 index 000000000..544175913 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.html @@ -0,0 +1,5 @@ +
+ +
\ No newline at end of file diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.spec.ts new file mode 100644 index 000000000..ec04e0b01 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PastEventsComponent } from './past-events.component'; + +describe('PastEventsComponent', () => { + let component: PastEventsComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [PastEventsComponent] + }); + fixture = TestBed.createComponent(PastEventsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.ts new file mode 100644 index 000000000..10ff8923b --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/past-events/past-events.component.ts @@ -0,0 +1,137 @@ +//#region (imports) +import { Component, OnDestroy, OnInit } from '@angular/core' +import { events } from '../../models/events.model' +import { EventsService } from '../../services/events.service' +import { Subscription } from 'rxjs' +import * as _ from 'lodash' +import { HttpErrorResponse } from '@angular/common/http' +import { MatSnackBar } from '@angular/material/snack-bar' +//#endregion + +@Component({ + selector: 'ws-app-past-events', + templateUrl: './past-events.component.html', + styleUrls: ['./past-events.component.scss'] +}) +export class PastEventsComponent implements OnInit, OnDestroy { + //#region (global variables) + tableData!: events.tableData + paginationDetails!: events.pagination + menuItems!: events.menuItems[] + eventsList: any[] = [] + getEventSubscription!: Subscription + showEventsLoader = false + searchKey = '' + //#endregion + + //#region (constructor) + constructor( + private eventSvc: EventsService, + private matSnackBar: MatSnackBar + ) { } + //#endregion + + //#region (onInint) + ngOnInit(): void { + this.initialization() + this.getEvents() + } + + initialization() { + this.tableData = { + columns: [ + { displayName: 'Event Name', key: 'name', cellType: 'text', imageKey: 'appIcon', cellClass: 'text-overflow-elipse' }, + { displayName: 'Start Date', key: 'startDate', cellType: 'text' }, + { displayName: 'Created On', key: 'createdOn', cellType: 'text' }, + { displayName: 'Created By', key: 'createdByName', cellType: 'text' }, + { displayName: 'Submitted On', key: 'submitedOn', cellType: 'text' }, + ], + showSearchBox: true, + showPagination: true, + noDataMessage: 'There are no past events.' + } + + this.paginationDetails = { + startIndex: 0, + lastIndex: 20, + pageSize: 20, + pageIndex: 0, + totalCount: 20, + } + + this.menuItems = [ + { + btnText: 'Edit', + action: 'edit', + }, + ] + } + + getEvents() { + const requestObj = { + locale: [ + 'en', + ], + request: { + query: this.searchKey, + limit: _.get(this.paginationDetails, 'pageSize', 20), + offset: _.get(this.paginationDetails, 'pageIndex', 0), + filters: { + status: ['Live'], + contentType: 'Event', + }, + sort_by: { + startDate: 'desc', + }, + }, + } + + if (this.getEventSubscription) { + this.getEventSubscription.unsubscribe() + } + this.showEventsLoader = true + this.getEventSubscription = this.eventSvc.getEvents(requestObj).subscribe( + { + next: (res: any) => { + this.showEventsLoader = false + this.eventsList = _.get(res, 'result.Event', []) + this.paginationDetails['totalCount'] = _.get(res, 'result.count', 0) + }, + error: (error: HttpErrorResponse) => { + this.showEventsLoader = false + const errorMessage = _.get(error, 'error.message', 'Some thing went wrong') + this.openSnackBar(errorMessage) + } + } + ) + } + //#endregion + + //#region (ui interactions like click) + searchEvents(searchKey: string) { + this.searchKey = searchKey + this.getEvents() + } + + onPageChange(paginationDetails: events.pagination) { + this.paginationDetails = paginationDetails + this.getEvents() + } + + contentEvents(events: any) { + console.log(events) + } + + //#endregion + + private openSnackBar(message: string) { + this.matSnackBar.open(message) + } + + ngOnDestroy(): void { + if (this.getEventSubscription) { + this.getEventSubscription.unsubscribe() + } + } + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.html new file mode 100644 index 000000000..544175913 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.html @@ -0,0 +1,5 @@ +
+ +
\ No newline at end of file diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.spec.ts new file mode 100644 index 000000000..d05e97f69 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { PendingApprovalEventsComponent } from './pending-approval-events.component'; + +describe('PendingApprovalEventsComponent', () => { + let component: PendingApprovalEventsComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [PendingApprovalEventsComponent] + }); + fixture = TestBed.createComponent(PendingApprovalEventsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.ts new file mode 100644 index 000000000..2bf322ffd --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/pending-approval-events/pending-approval-events.component.ts @@ -0,0 +1,137 @@ +//#region (imports) +import { Component, OnDestroy, OnInit } from '@angular/core' +import { events } from '../../models/events.model' +import { EventsService } from '../../services/events.service' +import { Subscription } from 'rxjs' +import * as _ from 'lodash' +import { HttpErrorResponse } from '@angular/common/http' +import { MatSnackBar } from '@angular/material/snack-bar' +//#endregion + +@Component({ + selector: 'ws-app-pending-approval-events', + templateUrl: './pending-approval-events.component.html', + styleUrls: ['./pending-approval-events.component.scss'] +}) +export class PendingApprovalEventsComponent implements OnInit, OnDestroy { + //#region (global variables) + tableData!: events.tableData + paginationDetails!: events.pagination + menuItems!: events.menuItems[] + eventsList: any[] = [] + getEventSubscription!: Subscription + showEventsLoader = false + searchKey = '' + //#endregion + + //#region (constructor) + constructor( + private eventSvc: EventsService, + private matSnackBar: MatSnackBar + ) { } + //#endregion + + //#region (onInint) + ngOnInit(): void { + this.initialization() + this.getEvents() + } + + initialization() { + this.tableData = { + columns: [ + { displayName: 'Event Name', key: 'name', cellType: 'text', imageKey: 'appIcon', cellClass: 'text-overflow-elipse' }, + { displayName: 'Start Date', key: 'startDate', cellType: 'text' }, + { displayName: 'Created On', key: 'createdOn', cellType: 'text' }, + { displayName: 'Created By', key: 'createdByName', cellType: 'text' }, + { displayName: 'Submitted On', key: 'submitedOn', cellType: 'text' }, + ], + showSearchBox: true, + showPagination: true, + noDataMessage: 'There are no pending events.' + } + + this.paginationDetails = { + startIndex: 0, + lastIndex: 20, + pageSize: 20, + pageIndex: 0, + totalCount: 20, + } + + this.menuItems = [ + { + btnText: 'Edit', + action: 'edit', + }, + ] + } + + getEvents() { + const requestObj = { + locale: [ + 'en', + ], + request: { + query: this.searchKey, + limit: _.get(this.paginationDetails, 'pageSize', 20), + offset: _.get(this.paginationDetails, 'pageIndex', 0), + filters: { + status: ['Live'], + contentType: 'Event', + }, + sort_by: { + startDate: 'desc', + }, + }, + } + + if (this.getEventSubscription) { + this.getEventSubscription.unsubscribe() + } + this.showEventsLoader = true + this.getEventSubscription = this.eventSvc.getEvents(requestObj).subscribe( + { + next: (res: any) => { + this.showEventsLoader = false + this.eventsList = _.get(res, 'result.Event', []) + this.paginationDetails['totalCount'] = _.get(res, 'result.count', 0) + }, + error: (error: HttpErrorResponse) => { + this.showEventsLoader = false + const errorMessage = _.get(error, 'error.message', 'Some thing went wrong') + this.openSnackBar(errorMessage) + } + } + ) + } + //#endregion + + //#region (ui interactions like click) + searchEvents(searchKey: string) { + this.searchKey = searchKey + this.getEvents() + } + + onPageChange(paginationDetails: events.pagination) { + this.paginationDetails = paginationDetails + this.getEvents() + } + + contentEvents(events: any) { + console.log(events) + } + + //#endregion + + private openSnackBar(message: string) { + this.matSnackBar.open(message) + } + + ngOnDestroy(): void { + if (this.getEventSubscription) { + this.getEventSubscription.unsubscribe() + } + } + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.html new file mode 100644 index 000000000..544175913 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.html @@ -0,0 +1,5 @@ +
+ +
\ No newline at end of file diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.spec.ts new file mode 100644 index 000000000..dd7350edd --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { RejectedEventsComponent } from './rejected-events.component'; + +describe('RejectedEventsComponent', () => { + let component: RejectedEventsComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [RejectedEventsComponent] + }); + fixture = TestBed.createComponent(RejectedEventsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.ts new file mode 100644 index 000000000..94e112b38 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/rejected-events/rejected-events.component.ts @@ -0,0 +1,137 @@ +//#region (imports) +import { Component, OnDestroy, OnInit } from '@angular/core' +import { events } from '../../models/events.model' +import { EventsService } from '../../services/events.service' +import { Subscription } from 'rxjs' +import * as _ from 'lodash' +import { HttpErrorResponse } from '@angular/common/http' +import { MatSnackBar } from '@angular/material/snack-bar' +//#endregion + +@Component({ + selector: 'ws-app-rejected-events', + templateUrl: './rejected-events.component.html', + styleUrls: ['./rejected-events.component.scss'] +}) +export class RejectedEventsComponent implements OnInit, OnDestroy { + //#region (global variables) + tableData!: events.tableData + paginationDetails!: events.pagination + menuItems!: events.menuItems[] + eventsList: any[] = [] + getEventSubscription!: Subscription + showEventsLoader = false + searchKey = '' + //#endregion + + //#region (constructor) + constructor( + private eventSvc: EventsService, + private matSnackBar: MatSnackBar + ) { } + //#endregion + + //#region (onInint) + ngOnInit(): void { + this.initialization() + this.getEvents() + } + + initialization() { + this.tableData = { + columns: [ + { displayName: 'Event Name', key: 'name', cellType: 'text', imageKey: 'appIcon', cellClass: 'text-overflow-elipse' }, + { displayName: 'Start Date', key: 'startDate', cellType: 'text' }, + { displayName: 'Created On', key: 'createdOn', cellType: 'text' }, + { displayName: 'Created By', key: 'createdByName', cellType: 'text' }, + { displayName: 'Submitted On', key: 'submitedOn', cellType: 'text' }, + ], + showSearchBox: true, + showPagination: true, + noDataMessage: 'There are no rejected events.' + } + + this.paginationDetails = { + startIndex: 0, + lastIndex: 20, + pageSize: 20, + pageIndex: 0, + totalCount: 20, + } + + this.menuItems = [ + { + btnText: 'Edit', + action: 'edit', + }, + ] + } + + getEvents() { + const requestObj = { + locale: [ + 'en', + ], + request: { + query: this.searchKey, + limit: _.get(this.paginationDetails, 'pageSize', 20), + offset: _.get(this.paginationDetails, 'pageIndex', 0), + filters: { + status: ['Live'], + contentType: 'Event', + }, + sort_by: { + startDate: 'desc', + }, + }, + } + + if (this.getEventSubscription) { + this.getEventSubscription.unsubscribe() + } + this.showEventsLoader = true + this.getEventSubscription = this.eventSvc.getEvents(requestObj).subscribe( + { + next: (res: any) => { + this.showEventsLoader = false + this.eventsList = _.get(res, 'result.Event', []) + this.paginationDetails['totalCount'] = _.get(res, 'result.count', 0) + }, + error: (error: HttpErrorResponse) => { + this.showEventsLoader = false + const errorMessage = _.get(error, 'error.message', 'Some thing went wrong') + this.openSnackBar(errorMessage) + } + } + ) + } + //#endregion + + //#region (ui interactions like click) + searchEvents(searchKey: string) { + this.searchKey = searchKey + this.getEvents() + } + + onPageChange(paginationDetails: events.pagination) { + this.paginationDetails = paginationDetails + this.getEvents() + } + + contentEvents(events: any) { + console.log(events) + } + + //#endregion + + private openSnackBar(message: string) { + this.matSnackBar.open(message) + } + + ngOnDestroy(): void { + if (this.getEventSubscription) { + this.getEventSubscription.unsubscribe() + } + } + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.html new file mode 100644 index 000000000..544175913 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.html @@ -0,0 +1,5 @@ +
+ +
\ No newline at end of file diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.scss b/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.scss new file mode 100644 index 000000000..e69de29bb diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.spec.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.spec.ts new file mode 100644 index 000000000..4b51ddead --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.spec.ts @@ -0,0 +1,21 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; + +import { UpcomingEventsComponent } from './upcoming-events.component'; + +describe('UpcomingEventsComponent', () => { + let component: UpcomingEventsComponent; + let fixture: ComponentFixture; + + beforeEach(() => { + TestBed.configureTestingModule({ + declarations: [UpcomingEventsComponent] + }); + fixture = TestBed.createComponent(UpcomingEventsComponent); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.ts new file mode 100644 index 000000000..621d5af9f --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/upcoming-events/upcoming-events.component.ts @@ -0,0 +1,137 @@ +//#region (imports) +import { Component, OnDestroy, OnInit } from '@angular/core' +import { events } from '../../models/events.model' +import { EventsService } from '../../services/events.service' +import { Subscription } from 'rxjs' +import * as _ from 'lodash' +import { HttpErrorResponse } from '@angular/common/http' +import { MatSnackBar } from '@angular/material/snack-bar' +//#endregion + +@Component({ + selector: 'ws-app-upcoming-events', + templateUrl: './upcoming-events.component.html', + styleUrls: ['./upcoming-events.component.scss'] +}) +export class UpcomingEventsComponent implements OnInit, OnDestroy { + //#region (global variables) + tableData!: events.tableData + paginationDetails!: events.pagination + menuItems!: events.menuItems[] + eventsList: any[] = [] + getEventSubscription!: Subscription + showEventsLoader = false + searchKey = '' + //#endregion + + //#region (constructor) + constructor( + private eventSvc: EventsService, + private matSnackBar: MatSnackBar + ) { } + //#endregion + + //#region (onInint) + ngOnInit(): void { + this.initialization() + this.getEvents() + } + + initialization() { + this.tableData = { + columns: [ + { displayName: 'Event Name', key: 'name', cellType: 'text', imageKey: 'appIcon', cellClass: 'text-overflow-elipse' }, + { displayName: 'Start Date', key: 'startDate', cellType: 'text' }, + { displayName: 'Created On', key: 'createdOn', cellType: 'text' }, + { displayName: 'Created By', key: 'createdByName', cellType: 'text' }, + { displayName: 'Submitted On', key: 'submitedOn', cellType: 'text' }, + ], + showSearchBox: true, + showPagination: true, + noDataMessage: 'There are no upcoming events.' + } + + this.paginationDetails = { + startIndex: 0, + lastIndex: 20, + pageSize: 20, + pageIndex: 0, + totalCount: 20, + } + + this.menuItems = [ + { + btnText: 'Edit', + action: 'edit', + }, + ] + } + + getEvents() { + const requestObj = { + locale: [ + 'en', + ], + request: { + query: this.searchKey, + limit: _.get(this.paginationDetails, 'pageSize', 20), + offset: _.get(this.paginationDetails, 'pageIndex', 0), + filters: { + status: ['Live'], + contentType: 'Event', + }, + sort_by: { + startDate: 'desc', + }, + }, + } + + if (this.getEventSubscription) { + this.getEventSubscription.unsubscribe() + } + this.showEventsLoader = true + this.getEventSubscription = this.eventSvc.getEvents(requestObj).subscribe( + { + next: (res: any) => { + this.showEventsLoader = false + this.eventsList = _.get(res, 'result.Event', []) + this.paginationDetails['totalCount'] = _.get(res, 'result.count', 0) + }, + error: (error: HttpErrorResponse) => { + this.showEventsLoader = false + const errorMessage = _.get(error, 'error.message', 'Some thing went wrong') + this.openSnackBar(errorMessage) + } + } + ) + } + //#endregion + + //#region (ui interactions like click) + searchEvents(searchKey: string) { + this.searchKey = searchKey + this.getEvents() + } + + onPageChange(paginationDetails: events.pagination) { + this.paginationDetails = paginationDetails + this.getEvents() + } + + contentEvents(events: any) { + console.log(events) + } + + //#endregion + + private openSnackBar(message: string) { + this.matSnackBar.open(message) + } + + ngOnDestroy(): void { + if (this.getEventSubscription) { + this.getEventSubscription.unsubscribe() + } + } + +} diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/events-2-routing.module.ts b/project/ws/app/src/lib/routes/home/routes/events-2/events-2-routing.module.ts index 169d43bab..27abad770 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/events-2-routing.module.ts +++ b/project/ws/app/src/lib/routes/home/routes/events-2/events-2-routing.module.ts @@ -2,18 +2,70 @@ import { NgModule } from '@angular/core' import { RouterModule, Routes } from '@angular/router' import { EventsComponent } from './components/events/events.component' import { CreateEventComponent } from './components/create-event/create-event.component' +import { UpcomingEventsComponent } from './components/upcoming-events/upcoming-events.component' +import { DraftEventsComponent } from './components/draft-events/draft-events.component' +import { PendingApprovalEventsComponent } from './components/pending-approval-events/pending-approval-events.component' +import { PastEventsComponent } from './components/past-events/past-events.component' +import { RejectedEventsComponent } from './components/rejected-events/rejected-events.component' const routes: Routes = [ { path: '', - pathMatch: 'full', component: EventsComponent, data: { pageId: 'home/events', module: 'events-2', pageType: 'feature', pageKey: 'events', + path: '', }, + children: [ + { + path: '', + redirectTo: 'pending-approval', + pathMatch: 'full', + }, + { + path: 'upcoming', + component: UpcomingEventsComponent, + data: { + pageId: 'app/home/events/upcoming', + module: 'events-2', + }, + }, + { + path: 'draft', + component: DraftEventsComponent, + data: { + pageId: 'app/home/events/draft', + module: 'events-2', + }, + }, + { + path: 'pending-approval', + component: PendingApprovalEventsComponent, + data: { + pageId: 'app/home/events/pending-approval', + module: 'events-2', + }, + }, + { + path: 'past', + component: PastEventsComponent, + data: { + pageId: 'app/home/events/past', + module: 'events-2', + }, + }, + { + path: 'rejected', + component: RejectedEventsComponent, + data: { + pageId: 'app/home/events/rejected', + module: 'events-2', + }, + }, + ], }, { path: 'create-event/:id', pathMatch: 'full', diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/events-2.module.ts b/project/ws/app/src/lib/routes/home/routes/events-2/events-2.module.ts index 02d028f9a..af826cad6 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/events-2.module.ts +++ b/project/ws/app/src/lib/routes/home/routes/events-2/events-2.module.ts @@ -13,8 +13,19 @@ import { MatLegacyButtonModule } from '@angular/material/legacy-button' import { MatLegacyDialogModule } from '@angular/material/legacy-dialog' import { MatLegacyProgressSpinnerModule } from '@angular/material/legacy-progress-spinner' import { MatLegacyFormFieldModule } from '@angular/material/legacy-form-field' -import { MatLegacyTooltipModule } from '@angular/material/legacy-tooltip'; +import { MatLegacyTooltipModule } from '@angular/material/legacy-tooltip' +import { MatLegacyMenuModule as MatMenuModule } from '@angular/material/legacy-menu' import { EventsTableComponent } from './components/events-table/events-table.component' +import { UpcomingEventsComponent } from './components/upcoming-events/upcoming-events.component' +import { DraftEventsComponent } from './components/draft-events/draft-events.component' +import { PendingApprovalEventsComponent } from './components/pending-approval-events/pending-approval-events.component' +import { PastEventsComponent } from './components/past-events/past-events.component' +import { RejectedEventsComponent } from './components/rejected-events/rejected-events.component' +import { MatCardModule } from '@angular/material/card' +import { MatSnackBarModule } from '@angular/material/snack-bar' +import { MatTableModule } from '@angular/material/table' +import { MatIconModule } from '@angular/material/icon' +import { MatPaginatorModule } from '@angular/material/paginator' @NgModule({ @@ -25,7 +36,12 @@ import { EventsTableComponent } from './components/events-table/events-table.com SpeakersComponent, EventMaterialsComponent, EventCompetenciesComponent, - EventsTableComponent + EventsTableComponent, + UpcomingEventsComponent, + DraftEventsComponent, + PendingApprovalEventsComponent, + PastEventsComponent, + RejectedEventsComponent ], imports: [ CommonModule, @@ -36,7 +52,13 @@ import { EventsTableComponent } from './components/events-table/events-table.com MatLegacyProgressSpinnerModule, MatLegacyFormFieldModule, MatLegacyTooltipModule, + MatMenuModule, Events2RoutingModule, + MatCardModule, + MatSnackBarModule, + MatTableModule, + MatIconModule, + MatPaginatorModule, ] }) export class Events2Module { } diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/models/events.model.ts b/project/ws/app/src/lib/routes/home/routes/events-2/models/events.model.ts new file mode 100644 index 000000000..d0e99ae95 --- /dev/null +++ b/project/ws/app/src/lib/routes/home/routes/events-2/models/events.model.ts @@ -0,0 +1,30 @@ +export namespace events { + export interface tableData { + columns: columnData[], + showSearchBox: boolean, + showPagination: boolean, + noDataMessage?: string + } + + export interface columnData { + displayName: string, + key: string, + cellType: string, + imageKey?: string, + cellClass?: string + } + + export interface pagination { + startIndex: number, + lastIndex: number, + pageSize: number, + pageIndex: number, + totalCount: number, + } + + export interface menuItems { + icon?: string, + btnText: string, + action: string, + } +} \ No newline at end of file diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.ts b/project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.ts index 1bc4b1b82..ebe35ec53 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.ts +++ b/project/ws/app/src/lib/routes/home/routes/events-2/services/events.service.ts @@ -1,9 +1,20 @@ -import { Injectable } from '@angular/core'; +import { HttpClient } from '@angular/common/http' +import { Injectable } from '@angular/core' + +const API_END_POINTS = { + GET_EVENTS: '/apis/proxies/v8/sunbirdigot/search', +} @Injectable({ providedIn: 'root' }) export class EventsService { - constructor() { } + constructor( + private http: HttpClient + ) { } + + getEvents(req: any) { + return this.http.post(`${API_END_POINTS.GET_EVENTS}`, req) + } } From f0ab18cb5d1c51078d572cd23cad3be805c5634b Mon Sep 17 00:00:00 2001 From: mansurskTarento Date: Fri, 31 Jan 2025 12:45:34 +0530 Subject: [PATCH 03/14] added create event --- .../home/resolvers/config-resolve.service.ts | 3 +- .../create-event/create-event.component.ts | 67 +++++- .../draft-events/draft-events.component.ts | 12 +- .../events-table/events-table.component.html | 12 +- .../events-table/events-table.component.scss | 21 +- .../components/events/events.component.html | 56 ++--- .../components/events/events.component.scss | 2 + .../components/events/events.component.ts | 24 ++- .../past-events/past-events.component.ts | 12 +- .../pending-approval-events.component.ts | 12 +- .../rejected-events.component.ts | 12 +- .../upcoming-events.component.ts | 12 +- .../basic-info/basic-info.component.html | 104 ++++++++- .../basic-info/basic-info.component.scss | 201 ++++++++++++++++++ .../basic-info/basic-info.component.ts | 182 +++++++++++++++- .../events-2/events-2-routing.module.ts | 6 +- .../home/routes/events-2/events-2.module.ts | 24 ++- .../routes/events-2/models/events.model.ts | 13 ++ .../events-2/services/events.service.ts | 45 +++- .../custom-self-registration.component.ts | 2 +- 20 files changed, 735 insertions(+), 87 deletions(-) diff --git a/project/ws/app/src/lib/routes/home/resolvers/config-resolve.service.ts b/project/ws/app/src/lib/routes/home/resolvers/config-resolve.service.ts index 787feff20..1117dcf4a 100644 --- a/project/ws/app/src/lib/routes/home/resolvers/config-resolve.service.ts +++ b/project/ws/app/src/lib/routes/home/resolvers/config-resolve.service.ts @@ -3,8 +3,7 @@ import { Injectable, SkipSelf } from '@angular/core' import { Observable, of } from 'rxjs' import { ConfigurationsService } from '@sunbird-cb/utils' @Injectable() -export class ConfigResolveService - { +export class ConfigResolveService { constructor( @SkipSelf() private confService: ConfigurationsService, ) { } diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.ts index f05c32ac1..528d71855 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.ts +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/create-event/create-event.component.ts @@ -1,10 +1,73 @@ -import { Component } from '@angular/core'; +import { Component, OnDestroy, OnInit } from '@angular/core' +import { EventsService } from '../../services/events.service' +import { ActivatedRoute } from '@angular/router' +import * as _ from 'lodash' +import { FormBuilder, FormControl, FormGroup, Validators } from '@angular/forms' +import { material, speaker } from '../../models/events.model' @Component({ selector: 'ws-app-create-event', templateUrl: './create-event.component.html', styleUrls: ['./create-event.component.scss'] }) -export class CreateEventComponent { +export class CreateEventComponent implements OnInit, OnDestroy { + //#region (global varialbles) + eventId = '' + eventIconUrl = '' + eventDetails!: FormGroup + speakersList: speaker[] = [] + materialsList: material[] = [] + competencies: any + //#endregion + + constructor( + private eventSvc: EventsService, + private activatedRoute: ActivatedRoute, + private formBuilder: FormBuilder + ) { } + + //#region (onInit) + ngOnInit(): void { + this.initializeFormAndParams() + // this.getEventId() + } + + initializeFormAndParams() { + this.eventDetails = this.formBuilder.group({ + eventName: new FormControl('', [Validators.required]), + description: new FormControl('', [Validators.required]), + eventCategory: new FormControl('', [Validators.required]), + streamType: new FormControl('', [Validators.required]), + startDate: new FormControl('', [Validators.required]), + startTime: new FormControl('', [Validators.required]), + endTime: new FormControl('', [Validators.required]) + }) + } + + getEventId() { + this.eventId = _.get(this.activatedRoute, 'snapshot.paramMap.params.eventId') + if (this.eventId) { + this.getEventDetails() + } + } + + getEventDetails() { + this.eventSvc.getEventDetailsByid(this.eventId).subscribe({ + next: res => { + if (res) { + this.patchEventDetails(res) + } + } + }) + } + + patchEventDetails(res: any) { + console.log('event details: ', res) + } + + //#endregion + + ngOnDestroy(): void { + } } diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.ts b/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.ts index add3efaab..770573a18 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.ts +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/draft-events/draft-events.component.ts @@ -5,7 +5,7 @@ import { EventsService } from '../../services/events.service' import { Subscription } from 'rxjs' import * as _ from 'lodash' import { HttpErrorResponse } from '@angular/common/http' -import { MatSnackBar } from '@angular/material/snack-bar' +import { MatLegacySnackBar as MatSnackBar } from '@angular/material/legacy-snack-bar' //#endregion @Component({ @@ -41,10 +41,10 @@ export class DraftEventsComponent implements OnInit, OnDestroy { this.tableData = { columns: [ { displayName: 'Event Name', key: 'name', cellType: 'text', imageKey: 'appIcon', cellClass: 'text-overflow-elipse' }, - { displayName: 'Start Date', key: 'startDate', cellType: 'text' }, - { displayName: 'Created On', key: 'createdOn', cellType: 'text' }, + { displayName: 'Start Date', key: 'startDate', cellType: 'date' }, + { displayName: 'Created On', key: 'createdOn', cellType: 'date' }, { displayName: 'Created By', key: 'createdByName', cellType: 'text' }, - { displayName: 'Submitted On', key: 'submitedOn', cellType: 'text' }, + { displayName: 'Submitted On', key: 'submitedOn', cellType: 'date' }, ], showSearchBox: true, showPagination: true, @@ -94,8 +94,8 @@ export class DraftEventsComponent implements OnInit, OnDestroy { { next: (res: any) => { this.showEventsLoader = false - this.eventsList = _.get(res, 'result.Event', []) - this.paginationDetails['totalCount'] = _.get(res, 'result.count', 0) + this.eventsList = _.get(res, 'Event', []) + this.paginationDetails['totalCount'] = _.get(res, 'count', 0) }, error: (error: HttpErrorResponse) => { this.showEventsLoader = false diff --git a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html index d2782f7df..2d5a068e0 100644 --- a/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html +++ b/project/ws/app/src/lib/routes/home/routes/events-2/components/events-table/events-table.component.html @@ -1,4 +1,4 @@ -
+