Skip to content

Commit

Permalink
Feature/#216 (#419)
Browse files Browse the repository at this point in the history
* categories

* top directions

* some changes
  • Loading branch information
sivxkxn authored Aug 19, 2021
1 parent 6c9c8dd commit df6dd85
Show file tree
Hide file tree
Showing 8 changed files with 48 additions and 19 deletions.
2 changes: 1 addition & 1 deletion src/app/header/header.component.html
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ <h2 class="header_descr">
</mat-menu>
</div>
</ng-template>
<div *ngIf="(isLoadingMainPage$ | async) || (isLoadingResultPage$ | async) || (isLoadingProviderCabinet$ | async)"
<div *ngIf="(isLoadingMainPage$ | async) || (isLoadingResultPage$ | async) || (isLoadingProviderCabinet$ | async) || (isLoadingDirections | async)"
class="progress-bar">
<mat-progress-bar mode="indeterminate">
</mat-progress-bar>
Expand Down
3 changes: 3 additions & 0 deletions src/app/header/header.component.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { MetaDataState } from 'src/app/shared/store/meta-data.state';
import { Component, OnInit, HostListener } from '@angular/core';
import { Select, Store } from '@ngxs/store';
import { RegistrationState } from '../shared/store/registration.state';
Expand Down Expand Up @@ -38,6 +39,8 @@ export class HeaderComponent implements OnInit {
isLoadingResultPage$: Observable<boolean>;
@Select(UserState.isLoading)
isLoadingProviderCabinet$: Observable<boolean>
@Select(MetaDataState.isLoading)
isLoadingDirections: Observable<boolean>;
@Select(NavigationState.navigationPaths)
navigationPaths$: Observable<Navigation[]>;
@Select(RegistrationState.isAuthorized)
Expand Down
4 changes: 4 additions & 0 deletions src/app/shared/services/categories/categories.service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,10 @@ export class CategoriesService {
return this.http.get<Direction[]>('/Direction/Get');
}

getTopDirections(): Observable<Direction[]> {
return this.http.get<Direction[]>('/Statistic​/GetDirections');
}

getDepartmentsBytDirectionId(id: number): Observable<Department[]> {
return this.http.get<Department[]>(`/Department/GetByDirectionId/${id}`);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import { FilterStateModel } from '../../../store/filter.state';
export class AppWorkshopsService {

dataUrlMock = '/assets/mock-org-cards.json';
size: number = Constants.WORKSHOPS_PER_PAGE;

constructor(private http: HttpClient) { }

Expand Down Expand Up @@ -85,15 +86,14 @@ export class AppWorkshopsService {
/**
* This method get top workshops
*/
getTopWorkshops(filters: FilterStateModel): Observable<WorkshopFilterCard> {
getTopWorkshops(filters: FilterStateModel): Observable<WorkshopCard[]> {
let params = new HttpParams();
params = params.set('OrderByField', '1');
params = params.set('Size', '4');
params = params.set('Size', this.size.toString());

if (filters.city) {
params = params.set('City', filters.city.name);
}

return this.http.get<WorkshopFilterCard>('/Workshop/GetByFilter', { params });
return this.http.get<WorkshopCard[]>('/Statistic/GetDirections', { params });
}
}
2 changes: 1 addition & 1 deletion src/app/shared/store/filter.state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ export class FilterState {

return this.appWorkshopsService
.getTopWorkshops(state)
.subscribe((filterResult: WorkshopFilterCard) => patchState({ topWorkshops: filterResult?.entities, isLoading: false }), () => patchState({ isLoading: false }))
.subscribe((filterResult: WorkshopCard[]) => patchState({ topWorkshops: filterResult, isLoading: false }), () => patchState({ isLoading: false }))
}

@Action(SetWithDisabilityOption)
Expand Down
3 changes: 3 additions & 0 deletions src/app/shared/store/meta-data.actions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ import { City } from "../models/city.model";
export class GetDirections {
static readonly type = '[meta-data] Get Directions';
}
export class GetTopDirections {
static readonly type = '[meta-data] Get Top Directions';
}
export class GetDepartments {
static readonly type = '[meta-data] Get Departments by Direction Id';
constructor(public payload: number) { }
Expand Down
41 changes: 30 additions & 11 deletions src/app/shared/store/meta-data.state.ts
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,8 @@ import {
FilteredDirectionsList,
FilteredDepartmentsList,
FilteredClassesList,
GetRateByEntityId
GetRateByEntityId,
GetTopDirections
} from './meta-data.actions';

export interface MetaDataStateModel {
Expand All @@ -31,9 +32,10 @@ export interface MetaDataStateModel {
socialGroups: SocialGroup[],
isCity: boolean;
filteredDirections: Direction[];
filteredDepartments : Department[];
filteredClasses : IClass[];
filteredDepartments: Department[];
filteredClasses: IClass[];
rating: Rate[];
isLoading: boolean;
}

@State<MetaDataStateModel>({
Expand All @@ -46,9 +48,10 @@ export interface MetaDataStateModel {
socialGroups: [],
isCity: false,
filteredDirections: [],
filteredDepartments:[],
filteredClasses:[],
rating: []
filteredDepartments: [],
filteredClasses: [],
rating: [],
isLoading: false
}

})
Expand Down Expand Up @@ -82,6 +85,9 @@ export class MetaDataState {
@Selector()
static filteredClasses(state: MetaDataStateModel): IClass[] { return state.filteredClasses }

@Selector()
static isLoading(state: MetaDataStateModel): boolean { return state.isLoading }

static rating(state: MetaDataStateModel): Rate[] { return state.rating }

constructor(
Expand All @@ -92,10 +98,21 @@ export class MetaDataState {

@Action(GetDirections)
getDirections({ patchState }: StateContext<MetaDataStateModel>, { }: GetDirections) {
patchState({ isLoading: true })
return this.categoriesService
.getDirections()
.pipe(
tap((directions: Direction[]) => patchState({ directions: directions, isLoading: false })
))
}

@Action(GetTopDirections)
getTopDirections({ patchState }: StateContext<MetaDataStateModel>, { }: GetTopDirections) {
patchState({ isLoading: true })
return this.categoriesService
.getDirections()
.pipe(
tap((directions: Direction[]) => patchState({ directions: directions })
tap((directions: Direction[]) => patchState({ directions: directions, isLoading: false })
))
}

Expand Down Expand Up @@ -132,7 +149,7 @@ export class MetaDataState {
patchState({ departments: undefined });
patchState({ classes: undefined });
}

@Action(GetCities)
getCities({ patchState }: StateContext<MetaDataStateModel>, { payload }: GetCities) {
return this.cityService
Expand All @@ -146,20 +163,20 @@ export class MetaDataState {
clearCities({ patchState }: StateContext<MetaDataStateModel>, { }: ClearCities) {
patchState({ cities: null });
}

@Action(FilteredDirectionsList)
filteredDirectionsList({ patchState }: StateContext<MetaDataStateModel>, { payload }: FilteredDirectionsList): void {
patchState({ filteredDirections: payload });
}

@Action(FilteredDepartmentsList)
filteredDepartmentsList({ patchState }: StateContext<MetaDataStateModel>, { payload }: FilteredDepartmentsList): void {
patchState({ filteredDepartments : payload });
patchState({ filteredDepartments: payload });
}

@Action(FilteredClassesList)
FilteredClassesList({ patchState }: StateContext<MetaDataStateModel>, { payload }: FilteredClassesList): void {
patchState({ filteredClasses : payload });
patchState({ filteredClasses: payload });
}

@Action(GetRateByEntityId)
Expand All @@ -172,3 +189,5 @@ export class MetaDataState {
}

}


4 changes: 2 additions & 2 deletions src/app/shell/main/main.component.ts
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import { RegistrationState } from '../../shared/store/registration.state';
import { Direction } from 'src/app/shared/models/category.model';
import { MetaDataState } from 'src/app/shared/store/meta-data.state';
import { WorkshopCard } from '../../shared/models/workshop.model';
import { GetDirections } from 'src/app/shared/store/meta-data.actions';
import { GetDirections, GetTopDirections } from 'src/app/shared/store/meta-data.actions';
import { debounceTime, distinctUntilChanged, takeUntil, tap } from 'rxjs/operators';


Expand Down Expand Up @@ -40,7 +40,7 @@ export class MainComponent implements OnInit {

ngOnInit(): void {
this.store.dispatch([
new GetDirections(),
new GetTopDirections(),
new GetTopWorkshops()
]);

Expand Down

0 comments on commit df6dd85

Please sign in to comment.