From d9e3f483d7c34ad255f23ecb525bb23f34cd06a1 Mon Sep 17 00:00:00 2001 From: Kameel Zagbhour <kameel.zaghbour@mni.thm.de> Date: Mon, 24 May 2021 14:38:13 +0200 Subject: [PATCH] add maximum number of tags for weight classes, fix color picker bubble --- .../cloud-configuration.component.html | 2 +- .../cloud-configuration.component.scss | 2 + .../cloud-configuration.component.ts | 106 ++++++++++++------ .../weight-class.interface.ts | 1 + 4 files changed, 75 insertions(+), 36 deletions(-) diff --git a/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.html b/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.html index 94fe13daf..39be3c71b 100644 --- a/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.html +++ b/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.html @@ -119,7 +119,7 @@ </div> <div class="input-row" fxLayout="column" fxLayoutGap="5px"> <mat-label class="label-text">{{'tag-cloud-config.weight-number' | translate}}</mat-label> - <mat-slider [value]="weightClass.maxTagNumber" min="0" max="30" step="1" + <mat-slider [value]="weightClass.maxTagNumber" min="0" [max]="weightClass.actualTagNumber" step="1" [(ngModel)]="weightClass.maxTagNumber" [ngModelOptions]="{standalone: true}" (change)="valueChanged()" [thumbLabel]="true" matTooltip="{{'tag-cloud-config.weight-number-tooltip' | translate}}"></mat-slider> </div> diff --git a/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.scss b/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.scss index 23310d6e4..064fc7557 100644 --- a/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.scss +++ b/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.scss @@ -75,6 +75,7 @@ mat-divider { display: block; position: relative; right: 40px; + pointer-events: none; } ::ng-deep .mat-slide-toggle-thumb{ @@ -152,6 +153,7 @@ mat-divider { ::ng-deep.custom-color-picker{ opacity: 0; z-index: -1; + cursor: pointer; } .custom-color-picker-text{ position: absolute; diff --git a/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.ts b/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.ts index f9c0519e7..e15de3261 100644 --- a/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.ts +++ b/src/app/components/shared/_dialogs/cloud-configuration/cloud-configuration.component.ts @@ -1,6 +1,7 @@ import { Component, Input, OnInit } from '@angular/core'; import { TranslateService } from '@ngx-translate/core'; import { TagCloudComponent } from '../../tag-cloud/tag-cloud.component'; +import { TagCloudMetaDataCount } from '../../tag-cloud/tag-cloud.data-manager'; import { CloudParameters, CloudTextStyle } from '../../tag-cloud/tag-cloud.interface'; import { WeightClass } from './weight-class.interface'; @@ -11,10 +12,11 @@ import { WeightClass } from './weight-class.interface'; }) export class CloudConfigurationComponent implements OnInit { @Input() parent: TagCloudComponent; - CloudTextStyle:CloudTextStyle; + CloudTextStyle: CloudTextStyle; cloudParameters: CloudParameters; defaultCloudParameters: CloudParameters; oldCloudParameters: CloudParameters; + countPerWeight: TagCloudMetaDataCount; extendedView: boolean; cleanUpView: boolean; automaticSpelling: boolean; @@ -24,39 +26,72 @@ export class CloudConfigurationComponent implements OnInit { alphabeticalSorting: boolean; rotation: number; highestWeight: number; - weightClasses: WeightClass[]=[ - {maxTagNumber: 20, - tagColor: '#8800ff'}, - {maxTagNumber: 20, - tagColor: '#ff00ff'}, - {maxTagNumber: 17, - tagColor: '#ffea00'}, - {maxTagNumber: 15, - tagColor: '#00CC99'}, - {maxTagNumber: 12, - tagColor: '#00CC66'}, - {maxTagNumber: 10, - tagColor: '#0033FF'}, - {maxTagNumber: 8, - tagColor: '#CC0099'}, - {maxTagNumber: 7, - tagColor: '#FF3399'}, - {maxTagNumber: 6, - tagColor: '#FFFF00'}, - {maxTagNumber: 5, - tagColor: '#FF0000'}, + weightClasses: WeightClass[] = [ + { + maxTagNumber: 20, + tagColor: '#8800ff', + actualTagNumber: 5 + }, + { + maxTagNumber: 20, + tagColor: '#ff00ff', + actualTagNumber: 5 + }, + { + maxTagNumber: 17, + tagColor: '#ffea00', + actualTagNumber: 5 + }, + { + maxTagNumber: 15, + tagColor: '#00CC99', + actualTagNumber: 5 + }, + { + maxTagNumber: 12, + tagColor: '#00CC66', + actualTagNumber: 5 + }, + { + maxTagNumber: 10, + tagColor: '#0033FF', + actualTagNumber: 5 + }, + { + maxTagNumber: 8, + tagColor: '#CC0099', + actualTagNumber: 5 + }, + { + maxTagNumber: 7, + tagColor: '#FF3399', + actualTagNumber: 5 + }, + { + maxTagNumber: 6, + tagColor: '#FFFF00', + actualTagNumber: 5 + }, + { + maxTagNumber: 5, + tagColor: '#FF0000', + actualTagNumber: 5 + }, ]; isTestCloud = false; - constructor(private translateService: TranslateService) {} + constructor(private translateService: TranslateService) { } ngOnInit() { this.translateService.use(localStorage.getItem('currentLang')); this.cloudParameters = this.parent.currentCloudParameters; this.defaultCloudParameters = this.parent.currentCloudParameters; - this.parseArrayToJsonWeightClasses(); + this.parent.dataManager.getMetaData().subscribe((value)=>{ + this.countPerWeight = value.countPerWeight; + this.parseArrayToJsonWeightClasses(); + }) this.extendedView = false; this.cleanUpView = false; this.automaticSpelling = true; @@ -78,34 +113,35 @@ export class CloudConfigurationComponent implements OnInit { this.valueChanged(); } - parseArrayToJsonWeightClasses(){ + parseArrayToJsonWeightClasses() { this.cloudParameters.cloudWeightSettings.forEach((element, i) => { - this.weightClasses[i].maxTagNumber = element.maxVisibleElements; - this.weightClasses[i].tagColor = element.color; + this.weightClasses[i].maxTagNumber = element.maxVisibleElements; + this.weightClasses[i].tagColor = element.color; + this.weightClasses[i].actualTagNumber = this.countPerWeight[i]; }); } - parseJsonToArrayWeightClasses(){ + parseJsonToArrayWeightClasses() { this.weightClasses.forEach((element, i) => { - this.cloudParameters.cloudWeightSettings[i].maxVisibleElements = element.maxTagNumber; - this.cloudParameters.cloudWeightSettings[i].color = element.tagColor; + this.cloudParameters.cloudWeightSettings[i].maxVisibleElements = element.maxTagNumber; + this.cloudParameters.cloudWeightSettings[i].color = element.tagColor; }); } - valueChanged(){ + valueChanged() { this.parseJsonToArrayWeightClasses(); this.parent.setCloudParameters(this.cloudParameters, false); } - cancel(){ - console.log("Parameterliste: "+ JSON.stringify(this.cloudParameters)); + cancel() { + console.log("Parameterliste: " + JSON.stringify(this.cloudParameters)); this.parent.tagCloudDataManager.demoActive = false; this.parent.setCloudParameters(this.defaultCloudParameters); this.parent.configurationOpen = false; } - save(){ + save() { this.parent.tagCloudDataManager.demoActive = false; this.parent.setCloudParameters(this.cloudParameters); this.parent.configurationOpen = false; @@ -126,7 +162,7 @@ export class CloudConfigurationComponent implements OnInit { this.valueChanged(); } - textStyleChanged(val:CloudTextStyle){ + textStyleChanged(val: CloudTextStyle) { this.cloudParameters.textTransform = val; this.valueChanged(); } diff --git a/src/app/components/shared/_dialogs/cloud-configuration/weight-class.interface.ts b/src/app/components/shared/_dialogs/cloud-configuration/weight-class.interface.ts index 771122ea4..ac45ca5a8 100644 --- a/src/app/components/shared/_dialogs/cloud-configuration/weight-class.interface.ts +++ b/src/app/components/shared/_dialogs/cloud-configuration/weight-class.interface.ts @@ -1,4 +1,5 @@ export interface WeightClass { maxTagNumber: number; tagColor: string; + actualTagNumber: number; } \ No newline at end of file -- GitLab