Skip to content

Commit 3175b49

Browse files
committed
Add switch to make taxation evolution graph proportional to gross
1 parent 7c57e43 commit 3175b49

File tree

7 files changed

+127
-47
lines changed

7 files changed

+127
-47
lines changed

src/app/components/main/main.component.html

Lines changed: 23 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -431,14 +431,13 @@ <h1>{{ t('title') }}</h1>
431431
</mat-card-content>
432432
</mat-card>
433433

434-
<mat-card *ngIf="chartData" class="charts-card">
434+
<mat-card *ngIf="averageTaxRateChartData" class="charts-card">
435435
<mat-card-header>
436436
<mat-card-title>{{ t('average_tax_rate_evolution') }}</mat-card-title>
437437
</mat-card-header>
438438

439439
<mat-card-content #ContainerRef>
440440
<ngx-charts-line-chart
441-
*ngIf="averageTaxRateChartData"
442441
[view]="[ContainerRef.offsetWidth - 32, max(min(400, window.innerHeight - 16), 300)]"
443442
[scheme]="'vivid'"
444443
[results]="averageTaxRateChartData"
@@ -479,7 +478,7 @@ <h1>{{ t('title') }}</h1>
479478
</mat-card-content>
480479
</mat-card>
481480

482-
<mat-card *ngIf="chartData" class="charts-card">
481+
<mat-card *ngIf="relativeChartData" class="charts-card">
483482
<mat-card-header>
484483
<mat-card-title>{{ t('relative_net_increase_title', {amount: formatAmount(graphsStep) }) }}</mat-card-title>
485484
<mat-card-subtitle>
@@ -490,7 +489,6 @@ <h1>{{ t('title') }}</h1>
490489

491490
<mat-card-content #ContainerRef>
492491
<ngx-charts-line-chart
493-
*ngIf="relativeChartData"
494492
[view]="[ContainerRef.offsetWidth - 32, max(min(400, window.innerHeight - 16), 300)]"
495493
[scheme]="'vivid'"
496494
[results]="relativeChartData"
@@ -539,11 +537,18 @@ <h1>{{ t('title') }}</h1>
539537
</mat-card-header>
540538

541539
<mat-card-content #ContainerRef>
540+
<mat-slide-toggle
541+
class="m-b"
542+
[checked]="showTaxDataAsProportionalToGross"
543+
(change)="showTaxDataAsProportionalToGross = $event.checked">
544+
{{ t('proportional_to_gross' ) }}
545+
</mat-slide-toggle>
546+
542547
<ngx-charts-area-chart-stacked
543548
*ngIf="taxData"
544549
[view]="[ContainerRef.offsetWidth - 32, max(min(400, window.innerHeight - 16), 300)]"
545550
[scheme]="'vivid'"
546-
[results]="taxData"
551+
[results]="showTaxDataAsProportionalToGross ? taxDataProportionalToGross : taxData"
547552
[xAxis]="true"
548553
[yAxis]="true"
549554
[legend]="true"
@@ -553,7 +558,7 @@ <h1>{{ t('title') }}</h1>
553558
[showGridLines]="true"
554559
[roundDomains]="true"
555560
[xAxisTickFormatting]="formatAmountTickFormattingFn"
556-
[yAxisTickFormatting]="formatAmountTickFormattingFn"
561+
[yAxisTickFormatting]="showTaxDataAsProportionalToGross ? formatPctTickFormattingFn : formatAmountTickFormattingFn"
557562
[legendPosition]="legendPosition"
558563
[legendTitle]="''"
559564
[ngClass]="{'legend-below': legendPosition === LegendPosition.Below}"
@@ -562,7 +567,12 @@ <h1>{{ t('title') }}</h1>
562567
[tooltipDisabled]="false">
563568
<ng-template #tooltipTemplate let-model="model">
564569
<div class="tooltip-label">{{formatAmount(model.name)}}</div>
565-
<div class="tooltip-val">{{ model.series }}: {{formatAmount(model.value)}}</div>
570+
571+
@if (showTaxDataAsProportionalToGross) {
572+
<div class="tooltip-val">{{ model.series }}: {{formatPct(model.value)}}</div>
573+
} @else {
574+
<div class="tooltip-val">{{ model.series }}: {{formatAmount(model.value)}}</div>
575+
}
566576
</ng-template>
567577

568578
<ng-template #seriesTooltipTemplate let-series="model">
@@ -573,7 +583,12 @@ <h1>{{ t('title') }}</h1>
573583
@for (singleSeries of series; track $index) {
574584
<div class="tooltip-item">
575585
<div class="tooltip-item-color" [style]="{'background-color': singleSeries.color}"></div>
576-
<span>{{singleSeries.series}}: {{formatAmount(singleSeries.value)}}</span>
586+
587+
@if (showTaxDataAsProportionalToGross) {
588+
<span>{{singleSeries.series}}: {{formatPct(singleSeries.value)}}</span>
589+
} @else {
590+
<span>{{singleSeries.series}}: {{formatAmount(singleSeries.value)}}</span>
591+
}
577592
</div>
578593
}
579594
</ng-template>
@@ -588,7 +603,6 @@ <h1>{{ t('title') }}</h1>
588603

589604
<mat-card-content #ContainerRef>
590605
<ngx-charts-area-chart-stacked
591-
*ngIf="taxDataProportional"
592606
[view]="[ContainerRef.offsetWidth - 32, max(min(400, window.innerHeight - 16), 300)]"
593607
[scheme]="'vivid'"
594608
[results]="taxDataProportional"

src/app/components/main/main.component.scss

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -158,6 +158,10 @@ mat-list-item mat-list {
158158
margin-top: 16px;
159159
}
160160

161+
.m-b {
162+
margin-bottom: 16px;
163+
}
164+
161165
.p-t {
162166
padding-top: 16px;
163167
}

src/app/components/main/main.component.ts

Lines changed: 31 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ import { FamilySituation, FuelType, SalaryCalculationInput, Status, taxationInfo
2525
import { FormComponent } from "./form/form.component";
2626
import { getDateFromMonthString } from './month-validator';
2727
import { WithholdingTaxBreakdownComponent } from "./withholding-tax-breakdown/withholding-tax-breakdown.component";
28+
import { MatSlideToggleModule } from '@angular/material/slide-toggle';
2829

2930

3031
interface RevenueYear {
@@ -59,6 +60,7 @@ export enum Mode {
5960
MatSelectModule,
6061
MatOptionModule,
6162
MatTabsModule,
63+
MatSlideToggleModule,
6264
TranslocoModule,
6365
DisableScrollDirective,
6466
FormComponent,
@@ -83,6 +85,8 @@ export class MainComponent implements OnInit {
8385
relativeChartData: any[] = [];
8486
averageTaxRateChartData: any[] = [];
8587
taxData: any[] = [];
88+
taxDataProportionalToGross: any[] = [];
89+
showTaxDataAsProportionalToGross = false;
8690
taxDataProportional: any[] = [];
8791
showWithHoldingTaxBreakdown = false;
8892
periodTabIndex = 0;
@@ -487,26 +491,50 @@ export class MainComponent implements OnInit {
487491
},
488492
];
489493

494+
this.taxDataProportionalToGross = [
495+
{
496+
name: this.socialCotisationsString,
497+
series: salaries.map(salary => ({
498+
name: salary.gross,
499+
value: salary.taxation.socialCotisationsAfterReductionsProportionOfGross,
500+
}))
501+
},
502+
{
503+
name: this.professionalWithholdingTaxString,
504+
series: salaries.map(salary => ({
505+
name: salary.gross,
506+
value: salary.taxation.professionalWithholdingTaxesAfterReductionsProportionOfGross,
507+
}))
508+
},
509+
{
510+
name: this.specialSocialCotisationString,
511+
series: salaries.map(salary => ({
512+
name: salary.gross,
513+
value: salary.taxation.specialSocialCotisationsProportionOfGross,
514+
}))
515+
},
516+
];
517+
490518
this.taxDataProportional = [
491519
{
492520
name: this.socialCotisationsString,
493521
series: salaries.map(salary => ({
494522
name: salary.gross,
495-
value: salary.taxation.socialCotisationsAfterReductionsProportion,
523+
value: salary.taxation.socialCotisationsAfterReductionsProportionOfTaxes,
496524
}))
497525
},
498526
{
499527
name: this.professionalWithholdingTaxString,
500528
series: salaries.map(salary => ({
501529
name: salary.gross,
502-
value: salary.taxation.professionalWithholdingTaxesAfterReductionsProportion,
530+
value: salary.taxation.professionalWithholdingTaxesAfterReductionsProportionOfTaxes,
503531
}))
504532
},
505533
{
506534
name: this.specialSocialCotisationString,
507535
series: salaries.map(salary => ({
508536
name: salary.gross,
509-
value: salary.taxation.specialSocialCotisationsProportion,
537+
value: salary.taxation.specialSocialCotisationsProportionOfTaxes,
510538
}))
511539
},
512540
];

0 commit comments

Comments
 (0)