From 6af1ed9bc9615ca81877745bda1469072f4f252d Mon Sep 17 00:00:00 2001 From: "maxim.gorbatyuk" Date: Fri, 31 May 2024 16:54:36 +0500 Subject: [PATCH 1/2] Added contributors array --- .../about-us/about-us.component.html | 22 ++------------- .../components/about-us/about-us.component.ts | 28 ++++++++++++++++--- .../cities-doughnut-chart-object.ts | 3 +- .../people-by-gender-chart.component.ts | 1 + .../global-filters-form-group.ts | 10 ++++++- 5 files changed, 39 insertions(+), 25 deletions(-) diff --git a/src/app/modules/home/components/about-us/about-us.component.html b/src/app/modules/home/components/about-us/about-us.component.html index 271f10af..f8d55f54 100644 --- a/src/app/modules/home/components/about-us/about-us.component.html +++ b/src/app/modules/home/components/about-us/about-us.component.html @@ -17,28 +17,12 @@
Контрибьюторы
-
- @indicozy -
-
- @sanch941 -
-
+
@maximgorbatyuk@{{ item.username }}
diff --git a/src/app/modules/home/components/about-us/about-us.component.ts b/src/app/modules/home/components/about-us/about-us.component.ts index 07dc79ad..dd5a42eb 100644 --- a/src/app/modules/home/components/about-us/about-us.component.ts +++ b/src/app/modules/home/components/about-us/about-us.component.ts @@ -1,12 +1,32 @@ import { Component, OnInit } from "@angular/core"; +interface IContributor { + link: string; + username: string; +} + @Component({ selector: "app-about-us", templateUrl: "./about-us.component.html", styleUrls: ["./about-us.component.scss"], }) -export class AboutUsComponent implements OnInit { - constructor() {} - - ngOnInit(): void {} +export class AboutUsComponent { + contributors: IContributor[] = [ + { + link: "https://github.com/indicozy", + username: "indicozy", + }, + { + link: "https://github.com/sanch941", + username: "sanch941", + }, + { + link: "https://github.com/galym-abitech", + username: "galym-abitech", + }, + { + link: "https://github.com/maximgorbatyuk", + username: "maximgorbatyuk", + }, + ]; } diff --git a/src/app/modules/salaries/components/cities-doughnut-chart/cities-doughnut-chart-object.ts b/src/app/modules/salaries/components/cities-doughnut-chart/cities-doughnut-chart-object.ts index ad8c3764..36f395cf 100644 --- a/src/app/modules/salaries/components/cities-doughnut-chart/cities-doughnut-chart-object.ts +++ b/src/app/modules/salaries/components/cities-doughnut-chart/cities-doughnut-chart-object.ts @@ -94,7 +94,8 @@ export class CitiesDoughnutChartObject extends Chart { item.count++; }); - return uniqueItems; + return uniqueItems + .sort((x, y) => y.count - x.count); } } diff --git a/src/app/modules/salaries/components/people-by-gender-chart/people-by-gender-chart.component.ts b/src/app/modules/salaries/components/people-by-gender-chart/people-by-gender-chart.component.ts index c20f54aa..03f2c22b 100644 --- a/src/app/modules/salaries/components/people-by-gender-chart/people-by-gender-chart.component.ts +++ b/src/app/modules/salaries/components/people-by-gender-chart/people-by-gender-chart.component.ts @@ -87,6 +87,7 @@ export class PeopleByGenderChartComponent implements OnInit { const result: Array = []; salariesGroupedByGender .filter((item) => item.gender != null) + .sort((x, y) => x.gender! - y.gender!) .forEach((item) => { result.push({ value: item.salaries.length, diff --git a/src/app/modules/salaries/components/salaries-chart/salary-chart-global-filters/global-filters-form-group.ts b/src/app/modules/salaries/components/salaries-chart/salary-chart-global-filters/global-filters-form-group.ts index 6e6ca779..d3f8f0e8 100644 --- a/src/app/modules/salaries/components/salaries-chart/salary-chart-global-filters/global-filters-form-group.ts +++ b/src/app/modules/salaries/components/salaries-chart/salary-chart-global-filters/global-filters-form-group.ts @@ -27,9 +27,17 @@ export class SalaryChartGlobalFiltersData { return ( this.grade === other.grade && this.cities.length === other.cities.length && - this.profsInclude.length === other.profsInclude.length + this.isEqualArrays(this.profsInclude, other.profsInclude) ); } + + private isEqualArrays(a: Array, b: Array): boolean { + if (a.length !== b.length) { + return false; + } + + return a.every((x, i) => x === b[i]); + } } export class GlobalFiltersFormGroup extends FormGroup { From 45caf982038e5ff9f54d5f9284994605493ffde5 Mon Sep 17 00:00:00 2001 From: "maxim.gorbatyuk" Date: Fri, 31 May 2024 17:29:15 +0500 Subject: [PATCH 2/2] Added trend chart to frontpage --- src/app/modules/admin/admin-routing.module.ts | 5 -- src/app/modules/admin/admin.module.ts | 2 - .../salaries-adding-chart.component.html | 35 ------------- .../salaries-adding-chart.component.ts | 51 ------------------- .../salaries-adding-chart.component.html | 5 ++ .../salaries-adding-chart.component.scss | 4 +- .../salaries-adding-chart.component.spec.ts | 0 .../salaries-adding-chart.component.ts | 45 ++++++++++++++++ .../salaries-adding-chart.ts | 4 +- .../salaries-chart.component.html | 6 +++ src/app/modules/salaries/salaries.module.ts | 2 + src/app/services/user-salaries.service.ts | 21 +++++--- 12 files changed, 75 insertions(+), 105 deletions(-) delete mode 100644 src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.html delete mode 100644 src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.ts create mode 100644 src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.html rename src/app/modules/{admin/components/salaries => salaries/components/salaries-chart}/salaries-adding-chart/salaries-adding-chart.component.scss (59%) rename src/app/modules/{admin/components/salaries => salaries/components/salaries-chart}/salaries-adding-chart/salaries-adding-chart.component.spec.ts (100%) create mode 100644 src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.ts rename src/app/modules/{admin/components/salaries => salaries/components/salaries-chart}/salaries-adding-chart/salaries-adding-chart.ts (89%) diff --git a/src/app/modules/admin/admin-routing.module.ts b/src/app/modules/admin/admin-routing.module.ts index 20a64706..fe3ebe19 100644 --- a/src/app/modules/admin/admin-routing.module.ts +++ b/src/app/modules/admin/admin-routing.module.ts @@ -5,7 +5,6 @@ import { BackgroundJobsComponent } from "./components/background-jobs/background import { InterviewTemplatesAdminPageComponent } from "./components/interviews/interview-templates-admin-page/interview-templates-admin-page.component"; import { UsersAdminPageComponent } from "./components/users/users-admin-page/users-admin-page.component"; import { SalariesAdminPageComponent } from "./components/salaries/salaries-admin-page/salaries-admin-page.component"; -import { SalariesAddingChartComponent } from "./components/salaries/salaries-adding-chart/salaries-adding-chart.component"; import { SalariesNotInStatsAdminPageComponent } from "./components/salaries/salaries-not-in-stat-admin-page/salaries-not-in-stat-admin-page.component"; import { SkillsPaginatedTableComponent } from "./components/label-entities/skills-paginated-table/skills-paginated-table.component"; import { WorkIndustriesPaginatedTableComponent } from "./components/label-entities/work-industries-paginated-table/work-indusrties-paginated-table.component"; @@ -29,10 +28,6 @@ const routes: Routes = [ path: "salaries/not-in-stats", component: SalariesNotInStatsAdminPageComponent, }, - { - path: "salaries/salaries-adding-trend-chart", - component: SalariesAddingChartComponent, - }, { path: "salaries/salaries-survey", component: SalariesSurveyPageComponent, diff --git a/src/app/modules/admin/admin.module.ts b/src/app/modules/admin/admin.module.ts index 84c6e22d..e12e954a 100644 --- a/src/app/modules/admin/admin.module.ts +++ b/src/app/modules/admin/admin.module.ts @@ -11,7 +11,6 @@ import { InterviewTemplatesAdminPageComponent } from "./components/interviews/in import { UsersAdminPageComponent } from "./components/users/users-admin-page/users-admin-page.component"; import { AdminStartPageComponent } from "./components/admin-start-page/admin-start-page.component"; import { SalariesAdminPageComponent } from "./components/salaries/salaries-admin-page/salaries-admin-page.component"; -import { SalariesAddingChartComponent } from "./components/salaries/salaries-adding-chart/salaries-adding-chart.component"; import { SalariesAdminPaginatedTableComponent } from "./components/salaries/salaries-admin-paginated-table/salaries-admin-paginated-table.component"; import { SalariesNotInStatsAdminPageComponent } from "./components/salaries/salaries-not-in-stat-admin-page/salaries-not-in-stat-admin-page.component"; import { SkillsPaginatedTableComponent } from "./components/label-entities/skills-paginated-table/skills-paginated-table.component"; @@ -29,7 +28,6 @@ import { SalariesSurveyPageComponent } from "./components/salaries/salaries-surv UsersAdminPageComponent, AdminStartPageComponent, SalariesAdminPageComponent, - SalariesAddingChartComponent, SalariesAdminPaginatedTableComponent, SalariesNotInStatsAdminPageComponent, SkillsPaginatedTableComponent, diff --git a/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.html b/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.html deleted file mode 100644 index 9563be06..00000000 --- a/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.html +++ /dev/null @@ -1,35 +0,0 @@ -График добавления анкет - -
-
-
-
-
- {{ chart }} -
-
- -
-
- Зарплат на одного пользователя: - ~{{ salariesPerOneUser | number: "1.0-5" }} -
- -
- Пользователи, кто оставил анкету: - {{ usersWhoLeftSalary }} -
- -
- Пользователи, кто не оставил анкет - {{ allUsersCount - usersWhoLeftSalary }} -
- -
- Пользователей всего: - {{ allUsersCount }} -
-
-
-
-
diff --git a/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.ts b/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.ts deleted file mode 100644 index 70dd92aa..00000000 --- a/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.ts +++ /dev/null @@ -1,51 +0,0 @@ -import { Component, OnDestroy, OnInit } from "@angular/core"; -import { TitleService } from "@services/title.service"; -import { - SalariesAddingTrendAdminChart, - UserSalariesService, -} from "@services/user-salaries.service"; -import { untilDestroyed } from "@shared/subscriptions/until-destroyed"; -import { SalariesAddingChart } from "./salaries-adding-chart"; - -@Component({ - templateUrl: "./salaries-adding-chart.component.html", - styleUrl: "./salaries-adding-chart.component.scss", -}) -export class SalariesAddingChartComponent implements OnInit, OnDestroy { - get salariesPerOneUser(): number { - return this.data?.salariesPerUser || 0; - } - - get usersWhoLeftSalary(): number { - return this.data?.usersWhoLeftSalary || 0; - } - - get allUsersCount(): number { - return this.data?.allUsersCount || 0; - } - - data: SalariesAddingTrendAdminChart | null = null; - chart: SalariesAddingChart | null = null; - - constructor( - private readonly service: UserSalariesService, - private readonly titleService: TitleService - ) { - this.titleService.setTitle("График добавления анкет"); - } - - ngOnInit(): void { - this.chart = null; - this.service - .addingSalariesaTrendAdminChart() - .pipe(untilDestroyed(this)) - .subscribe((x) => { - this.data = x; - this.chart = new SalariesAddingChart("canvas", this.data); - }); - } - - ngOnDestroy(): void { - // ignored - } -} diff --git a/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.html b/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.html new file mode 100644 index 00000000..c53cd64d --- /dev/null +++ b/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.html @@ -0,0 +1,5 @@ +
График добавления анкет
+ +
+ {{ chart }} +
diff --git a/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.scss b/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.scss similarity index 59% rename from src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.scss rename to src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.scss index 162c62f4..56eade44 100644 --- a/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.scss +++ b/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.scss @@ -1,8 +1,8 @@ -#canvas { +#canvas-adding-trend-chart { min-height: 400px; } -#canvas-container { +#canvas-addint-trend-chart-container { position: relative; width: 100%; height: 100%; diff --git a/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.spec.ts b/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.spec.ts similarity index 100% rename from src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.component.spec.ts rename to src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.spec.ts diff --git a/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.ts b/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.ts new file mode 100644 index 00000000..68b6ede7 --- /dev/null +++ b/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component.ts @@ -0,0 +1,45 @@ +import { Component, Input, OnDestroy, OnInit } from "@angular/core"; +import { + SalariesAddingTrendChart, + UserSalariesService, +} from "@services/user-salaries.service"; +import { untilDestroyed } from "@shared/subscriptions/until-destroyed"; +import { SalariesAddingChart } from "./salaries-adding-chart"; +import { SalaryChartGlobalFiltersData } from "../salary-chart-global-filters/global-filters-form-group"; + +@Component({ + selector: "app-salaries-adding-chart", + templateUrl: "./salaries-adding-chart.component.html", + styleUrl: "./salaries-adding-chart.component.scss", +}) +export class SalariesAddingChartComponent implements OnInit, OnDestroy { + + @Input() + filter: SalaryChartGlobalFiltersData | null = null; + + data: SalariesAddingTrendChart | null = null; + chart: SalariesAddingChart | null = null; + + constructor( + private readonly service: UserSalariesService + ) {} + + ngOnInit(): void { + this.chart = null; + this.service + .addingSalariesaTrendChart({ + profsInclude: this.filter?.profsInclude ?? [], + grade: this.filter?.grade ?? null, + cities: this.filter?.cities ?? [], + }) + .pipe(untilDestroyed(this)) + .subscribe((x) => { + this.data = x; + this.chart = new SalariesAddingChart("canvas-adding-trend-chart", this.data); + }); + } + + ngOnDestroy(): void { + // ignored + } +} diff --git a/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.ts b/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.ts similarity index 89% rename from src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.ts rename to src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.ts index a407d569..843967d6 100644 --- a/src/app/modules/admin/components/salaries/salaries-adding-chart/salaries-adding-chart.ts +++ b/src/app/modules/salaries/components/salaries-chart/salaries-adding-chart/salaries-adding-chart.ts @@ -1,5 +1,5 @@ import { RandomRgbColor } from "@modules/salaries/components/random-rgb-color"; -import { SalariesAddingTrendAdminChart } from "@services/user-salaries.service"; +import { SalariesAddingTrendChart } from "@services/user-salaries.service"; import { Chart, ChartType, PointStyle } from "chart.js/auto"; interface ChartDatasetType { @@ -14,7 +14,7 @@ interface ChartDatasetType { export class SalariesAddingChart extends Chart { private readonly datasets: Array = []; - constructor(canvasId: string, chartData: SalariesAddingTrendAdminChart) { + constructor(canvasId: string, chartData: SalariesAddingTrendChart) { const randomColor = new RandomRgbColor(); const datasets: Array = [ { diff --git a/src/app/modules/salaries/components/salaries-chart/salaries-chart.component.html b/src/app/modules/salaries/components/salaries-chart/salaries-chart.component.html index 288b1837..897e6876 100644 --- a/src/app/modules/salaries/components/salaries-chart/salaries-chart.component.html +++ b/src/app/modules/salaries/components/salaries-chart/salaries-chart.component.html @@ -350,6 +350,12 @@ >
+
+ +
+
diff --git a/src/app/modules/salaries/salaries.module.ts b/src/app/modules/salaries/salaries.module.ts index 63653f9a..5ee854c9 100644 --- a/src/app/modules/salaries/salaries.module.ts +++ b/src/app/modules/salaries/salaries.module.ts @@ -25,6 +25,7 @@ import { SalariesByGradeBlockComponent } from "./components/salaries-chart/salar import { SalariesPaginatedTableComponent } from "./components/salaries-paginated-table/salaries-paginated-table.component"; import { SalariesSurveyBlockComponent } from "./components/salaries-survey-block/salaries-survey-block.component"; import { SalariesSurveyPageComponent } from "./components/salaries-survey-page/salaries-survey-page.component"; +import { SalariesAddingChartComponent } from "./components/salaries-chart/salaries-adding-chart/salaries-adding-chart.component"; @NgModule({ declarations: [ @@ -50,6 +51,7 @@ import { SalariesSurveyPageComponent } from "./components/salaries-survey-page/s SalariesPaginatedTableComponent, SalariesSurveyBlockComponent, SalariesSurveyPageComponent, + SalariesAddingChartComponent, ], imports: [ CommonModule, diff --git a/src/app/services/user-salaries.service.ts b/src/app/services/user-salaries.service.ts index 45aed416..e7ba3798 100644 --- a/src/app/services/user-salaries.service.ts +++ b/src/app/services/user-salaries.service.ts @@ -116,16 +116,18 @@ export interface SalariesChartFilterData { cities: Array | null; } -export interface SalariesAddingTrendAdminChart { +export interface SalariesAddingTrendChartParams { + grade: DeveloperGrade | null; + profsInclude: Array | null; + cities: Array | null; +} + +export interface SalariesAddingTrendChart { labels: string[]; items: Array<{ count: number; startedAt: Date; }>; - - salariesPerUser: number; - usersWhoLeftSalary: number; - allUsersCount: number; } export enum SalariesAdminOrderingType { @@ -179,9 +181,12 @@ export class UserSalariesService { ); } - addingSalariesaTrendAdminChart(): Observable { - return this.api.get( - this.root + "salaries-adding-trend-chart" + addingSalariesaTrendChart( + params: SalariesAddingTrendChartParams + ): Observable { + return this.api.get( + this.root + "salaries-adding-trend-chart?" + + new ConvertObjectToHttpParams(params).get() ); }