@the-liberators/ngx-scrumteamsurvey-tools 2.3.13 → 2.3.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -42,6 +42,8 @@ import * as i6 from '@angular/material/chips';
42
42
  import { MatChipsModule } from '@angular/material/chips';
43
43
  import * as i2$3 from '@angular/cdk/clipboard';
44
44
  import { ClipboardModule } from '@angular/cdk/clipboard';
45
+ import * as i7$1 from '@angular/material/checkbox';
46
+ import { MatCheckboxModule } from '@angular/material/checkbox';
45
47
  import * as i1$5 from '@auth0/auth0-angular';
46
48
  import * as i2$4 from '@angular/material/progress-spinner';
47
49
  import { MatProgressSpinnerModule } from '@angular/material/progress-spinner';
@@ -49,7 +51,7 @@ import * as i3$1 from '@ncstate/sat-popover';
49
51
  import { SatPopoverModule } from '@ncstate/sat-popover';
50
52
  import * as i5$2 from '@angular/material/slide-toggle';
51
53
  import { MatSlideToggleModule } from '@angular/material/slide-toggle';
52
- import * as i7$1 from '@swimlane/ngx-charts';
54
+ import * as i7$2 from '@swimlane/ngx-charts';
53
55
  import { LegendPosition, NgxChartsModule } from '@swimlane/ngx-charts';
54
56
 
55
57
  class ComponentBase {
@@ -3812,6 +3814,256 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImpo
3812
3814
  }]
3813
3815
  }] });
3814
3816
 
3817
+ function minTopicsSelectedValidator(minimum) {
3818
+ return (control) => {
3819
+ var value = control.value;
3820
+ if (!value) {
3821
+ return null;
3822
+ }
3823
+ if (value.topicKeys == null || (value.topicKeys.length + 1) <= minimum) {
3824
+ return {
3825
+ minTopics: true
3826
+ };
3827
+ }
3828
+ return null;
3829
+ };
3830
+ }
3831
+
3832
+ class TopicSelectorComponent {
3833
+ constructor(formBuilder, dialog) {
3834
+ this.formBuilder = formBuilder;
3835
+ this.dialog = dialog;
3836
+ this.warnings = [];
3837
+ this.selectedTopics = [];
3838
+ this.questionnaireAccuracy = 0;
3839
+ this.questionsTeamMembers = 0;
3840
+ this.questionsStakeholders = 0;
3841
+ this.questionsSupporters = 0;
3842
+ this.durationTeamMembers = 0;
3843
+ this.durationStakeholders = 0;
3844
+ this.durationSupporters = 0;
3845
+ this.questionsTotal = 0;
3846
+ this.disabled = false;
3847
+ this.topicKeys = [];
3848
+ this.presets = [];
3849
+ this.SegmentEnum = SegmentEnum;
3850
+ this.onChange = () => { };
3851
+ this.onTouch = () => { };
3852
+ }
3853
+ ngOnInit() {
3854
+ this.createForm();
3855
+ this.form.valueChanges.subscribe(() => {
3856
+ var output = this.getValue();
3857
+ this.onChange(output);
3858
+ this.updateMetaData(output);
3859
+ });
3860
+ }
3861
+ writeValue(dto) {
3862
+ if (!dto) {
3863
+ return;
3864
+ }
3865
+ var questionnaire = this.presets.find(p => p.publicKey == dto.presetKey);
3866
+ if (!questionnaire) {
3867
+ questionnaire = this.presets[0];
3868
+ dto.topicKeys = questionnaire.scaleKeys;
3869
+ dto.presetKey = questionnaire.publicKey;
3870
+ }
3871
+ this.selectedTopics = dto.topicKeys ?? [];
3872
+ this.form.controls.preset.setValue(dto.presetKey);
3873
+ var topics = this.form.controls.topics;
3874
+ Object.keys(topics.controls)
3875
+ .forEach(p => topics.get(p).setValue(this.selectedTopics.includes(p), { emitEvent: false }));
3876
+ this.updateMetaData(dto);
3877
+ }
3878
+ setDisabledState(isDisabled) {
3879
+ this.disabled = isDisabled;
3880
+ }
3881
+ registerOnChange(fn) {
3882
+ this.onChange = fn;
3883
+ }
3884
+ registerOnTouched(fn) {
3885
+ this.onTouch = fn;
3886
+ }
3887
+ selectPreset() {
3888
+ var questionnaire = this.presets.find(p => p.publicKey == this.form.controls.preset.value);
3889
+ if (!questionnaire) {
3890
+ return;
3891
+ }
3892
+ var topicKeys = questionnaire.scaleKeys;
3893
+ if (topicKeys.length == 0) {
3894
+ topicKeys = this.presets[0].scaleKeys;
3895
+ }
3896
+ this.selectedTopics = topicKeys ?? [];
3897
+ var topics = this.form.controls.topics;
3898
+ Object.keys(topics.controls)
3899
+ .forEach(p => topics.get(p).setValue(this.selectedTopics.includes(p), { emitEvent: false }));
3900
+ var dto = new TopicSelectorDto(questionnaire.publicKey, topicKeys);
3901
+ this.updateMetaData(dto);
3902
+ this.onChange(dto);
3903
+ }
3904
+ getValue() {
3905
+ var topics = this.form.controls.topics;
3906
+ var selected = Object.keys(topics.controls)
3907
+ .filter(p => topics.get(p).value == true)
3908
+ .map(p => p);
3909
+ var presetKey = this.form.controls.preset.value;
3910
+ return new TopicSelectorDto(presetKey, selected);
3911
+ }
3912
+ openFactorInformation(topicKey, $event) {
3913
+ var topic = this.topics.find(p => p.publicKey == topicKey);
3914
+ if (!topic) {
3915
+ return;
3916
+ }
3917
+ $event.preventDefault();
3918
+ const dialogConfig = new MatDialogConfig();
3919
+ dialogConfig.panelClass = ['dialog', 'factor'];
3920
+ dialogConfig.data = topic;
3921
+ dialogConfig.enterAnimationDuration = 0;
3922
+ dialogConfig.exitAnimationDuration = 0;
3923
+ this.dialog.open(DialogFactorInformationComponent, dialogConfig);
3924
+ }
3925
+ hasSegmentQuestions(factor, segment, useOwnQuestionCount) {
3926
+ if (useOwnQuestionCount) {
3927
+ return factor.segments.find(p => p.segment == segment.toString()).ownQuestionCount > 0 ?? false;
3928
+ }
3929
+ else {
3930
+ return factor.segments.find(p => p.segment == segment.toString()).questionCount > 0 ?? false;
3931
+ }
3932
+ }
3933
+ getCoreFactors() {
3934
+ return this.topics.filter(p => p.parentKey == null);
3935
+ }
3936
+ getSubFactors(parentKey) {
3937
+ return this.topics.filter(p => p.parentKey == parentKey);
3938
+ }
3939
+ selectAll(topic, $event) {
3940
+ $event.preventDefault();
3941
+ var topics = this.form.controls.topics;
3942
+ this.topics
3943
+ .filter(p => p.parentKey == topic.publicKey || (p.publicKey == topic.publicKey && p.ownQuestionCount > 0))
3944
+ .forEach(p => topics.get(p.publicKey).setValue(true));
3945
+ }
3946
+ selectNone(topic, $event) {
3947
+ $event.preventDefault();
3948
+ var topics = this.form.controls.topics;
3949
+ this.topics
3950
+ .filter(p => p.parentKey == topic.publicKey || (p.publicKey == topic.publicKey && p.ownQuestionCount > 0))
3951
+ .forEach(p => topics.get(p.publicKey).setValue(false));
3952
+ }
3953
+ createForm() {
3954
+ this.form = this.formBuilder.group({
3955
+ preset: [null],
3956
+ topicKeys: [[]],
3957
+ topics: this.formBuilder.group([])
3958
+ });
3959
+ this.topics.filter(p => p.parentKey != null || (p.parentKey == null && p.ownQuestionCount > 0))
3960
+ .forEach(p => this.form.controls.topics.addControl(p.publicKey, new FormControl(false), { emitEvent: false }));
3961
+ }
3962
+ updateMetaData(output) {
3963
+ this.warnings = [];
3964
+ // only work with lower-level factors, as higher-level contain aggregated higher-level question counts
3965
+ var scalesToInclude = this.topics.filter(p => p.parentKey != null && output.topicKeys.includes(p.publicKey));
3966
+ var totalQuestions = this.topics.filter(p => p.parentKey != null).reduce((sum, current) => sum += current.questionCount, 0);
3967
+ this.questionsTotal = scalesToInclude.reduce((sum, current) => sum += current.questionCount, 0);
3968
+ this.questionsTeamMembers = scalesToInclude.flatMap(p => p.segments).filter(p => p.segment == SegmentEnum.TeamMember).reduce((sum, current) => sum += current.questionCount, 0);
3969
+ this.questionsStakeholders = scalesToInclude.flatMap(p => p.segments).filter(p => p.segment == SegmentEnum.Stakeholder).reduce((sum, current) => sum += current.questionCount, 0);
3970
+ this.questionsSupporters = scalesToInclude.flatMap(p => p.segments).filter(p => p.segment == SegmentEnum.Management).reduce((sum, current) => sum += current.questionCount, 0);
3971
+ this.durationTeamMembers = scalesToInclude.flatMap(p => p.segments).filter(p => p.segment == SegmentEnum.TeamMember).reduce((sum, current) => sum += current.durationInSeconds, 0) / 60;
3972
+ this.durationStakeholders = scalesToInclude.flatMap(p => p.segments).filter(p => p.segment == SegmentEnum.Stakeholder).reduce((sum, current) => sum += current.durationInSeconds, 0) / 60;
3973
+ this.durationSupporters = scalesToInclude.flatMap(p => p.segments).filter(p => p.segment == SegmentEnum.Management).reduce((sum, current) => sum += current.durationInSeconds, 0) / 60;
3974
+ if (this.durationTeamMembers < 1) {
3975
+ this.durationTeamMembers = 1;
3976
+ }
3977
+ if (this.durationStakeholders < 1) {
3978
+ this.durationStakeholders = 1;
3979
+ }
3980
+ if (this.durationSupporters < 1) {
3981
+ this.durationSupporters = 1;
3982
+ }
3983
+ if (this.questionsStakeholders == 0) {
3984
+ this.warnings.push("The selection does not include topics for stakeholders.");
3985
+ }
3986
+ if (this.questionsSupporters == 0) {
3987
+ this.warnings.push("The selection does not include topics for supporters / management.");
3988
+ }
3989
+ if (this.questionsTeamMembers == 0) {
3990
+ this.warnings.push("The selection does not include topics for team members.");
3991
+ }
3992
+ if (this.questionnaireAccuracy < 0.25) {
3993
+ this.warnings.push("The selection measures few topics, so its overall accuracy is low.");
3994
+ }
3995
+ this.questionnaireAccuracy = this.questionsTotal / totalQuestions;
3996
+ }
3997
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TopicSelectorComponent, deps: [{ token: i4$1.FormBuilder }, { token: i1$3.MatDialog }], target: i0.ɵɵFactoryTarget.Component }); }
3998
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: TopicSelectorComponent, selector: "topic-selector", inputs: { topics: "topics", disabled: "disabled", topicKeys: "topicKeys", presets: "presets" }, providers: [
3999
+ { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => TopicSelectorComponent), }
4000
+ ], ngImport: i0, template: "<form [formGroup]=\"form\">\n <div class=\"scaleselector-container\">\n <div class=\"scaleselector-metadata\">\n <div class=\"questionnaire-preset\">\n <mat-form-field class=\"questionnaire-preset-select\" appearance=\"fill\">\n <mat-label>Select predefined questionnaire</mat-label>\n <mat-select id=\"question-preset\" formControlName=\"preset\" (selectionChange)=\"selectPreset()\">\n <mat-option [value]=\"type.publicKey\" *ngFor=\"let type of presets\" class=\"select-option\">{{type.name}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"questionnaire-accuracy\">\n <div class=\"questionnaire-breakdown-label\">Accuracy</div>\n <div class=\"questionnaire-breakdown-bar-holder\">\n <div class=\"questionnaire-accuracy-bar\" [ngClass]=\"{'low': questionnaireAccuracy < 0.25, 'moderate' : questionnaireAccuracy < 0.5 && questionnaireAccuracy >= 0.25}\" [ngStyle]=\"{'width': (questionnaireAccuracy * 100) + '%' }\">{{questionnaireAccuracy * 100 | number:'1.0-0'}}%</div>\n </div>\n </div>\n <div class=\"questionnaire-segments\">\n <div class=\"questionnaire-segments-label\">Time investment</div>\n <div class=\"questionnaire-breakdowns\">\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Team members</div>\n <div class=\"progressbar progressbar-positive progressbar-teammember\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsTeamMembers > 0\" [style.width]=\"((questionsTeamMembers / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationTeamMembers | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Stakeholders</div>\n <div class=\"progressbar progressbar-positive progressbar-stakeholder\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsStakeholders > 0\" [style.width]=\"((questionsStakeholders / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationStakeholders | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Supporters</div>\n <div class=\"progressbar progressbar-positive progressbar-supporter\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsSupporters > 0\" [style.width]=\"((questionsSupporters / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationSupporters | number:'1.0-0'}} min</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"scaleselector-warnings\" *ngIf=\"warnings.length > 0\">\n <div class=\"scaleselector-warnings-warning\" *ngFor=\"let warning of warnings\">\n <span class=\"icon ph-info-fill\"></span>{{warning}}\n </div>\n </div>\n </div>\n\n <ng-container>\n <div class=\"topic-parent\" *ngFor=\"let topic of getCoreFactors()\" formArrayName=\"topics\">\n\n <div class=\"name\">\n <h4>{{topic.name}}</h4>\n <div class=\"helpers\">(<a href=\"#\" (click)=\"selectAll(topic, $event)\">all</a> | <a href=\"#\" (click)=\"selectNone(topic, $event)\">none</a>)</div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n <div *ngIf=\"topic.ownQuestionCount > 0\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"topic.publicKey\" [id]=\"'topic-' + topic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{topic.name}} ({{topic.ownQuestionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"topic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.TeamMember, true)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Stakeholder, true)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Management, true)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n\n <div *ngFor=\"let subTopic of getSubFactors(topic.publicKey)\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"subTopic.publicKey\" [id]=\"'topic-' + subTopic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{subTopic.name}} ({{subTopic.questionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"subTopic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.TeamMember, false)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Stakeholder, false)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Management, false)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(subTopic.publicKey, $event)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n</form>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.scaleselector-container .scaleselector-metadata{margin:30px 0;background:#f0f0f0;border-radius:20px;padding:30px;display:flex;column-gap:30px;flex-direction:column}@media only screen and (max-width: 992px){.scaleselector-container .scaleselector-metadata{display:block}}.scaleselector-container .scaleselector-metadata .questionnaire-preset .questionnaire-preset-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.scaleselector-container .scaleselector-metadata .questionnaire-preset .questionnaire-preset-select{width:100%}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-segments-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:flex;gap:15px}@media only screen and (max-width: 992px){.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:block}}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown{margin-bottom:15px;flex:auto}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label{font-size:14px;font-weight:700;font-family:StevieSans,sans-serif;margin-bottom:5px;margin-top:5px}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label .icon{color:#ef6f00;font-size:18px;vertical-align:middle;cursor:pointer}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar{margin:0;width:100%}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-teammember .progressbar-bar{background:#00af77}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-stakeholder .progressbar-bar{background:#fff73f}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-supporter .progressbar-bar{background:#ef4f9f}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy{margin-bottom:15px}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy .questionnaire-breakdown-label{font-size:12px;font-weight:900;text-transform:uppercase;margin-bottom:5px;font-family:StevieSans,sans-serif}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder{margin-bottom:15px;background:#2f2f2f;height:20px;border-radius:15px;overflow:hidden}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar{flex:auto;min-width:50px;font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;background:#00af77;height:100%;align-content:center;text-align:center}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.low{background:#ef6f00}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.moderate{background:#fff73f}.scaleselector-container .scaleselector-warnings{margin-top:15px}.scaleselector-container .scaleselector-warnings .scaleselector-warnings-warning{display:flex;align-items:center;font-size:12pt}.scaleselector-container .scaleselector-warnings .scaleselector-warnings-warning .icon{color:#1f3f8f;font-size:16px;cursor:pointer;margin-right:10px}.scaleselector-container .topic-parent{margin-bottom:60px;padding-left:30px}.scaleselector-container .topic-parent .name{display:flex;align-items:baseline;gap:15px}.scaleselector-container .topic-parent .name h4{font-weight:700!important;font-family:StevieSans,sans-serif!important;margin:0}.scaleselector-container .topic-parent .name .helpers{font-size:12pt}.scaleselector-container .topic-parent .name .helpers a{font-family:StevieSans,sans-serif}.scaleselector-container .topic-parent .name .topic-child-moreinformation{margin-left:auto;cursor:pointer}.scaleselector-container .topic-parent .name .topic-child-moreinformation .icon{vertical-align:middle}.scaleselector-container .topic-parent .topic-child{display:flex;align-items:baseline;gap:15px;margin-bottom:15px;margin-top:15px;cursor:pointer}.scaleselector-container .topic-parent .topic-child .topic-child-description{font-family:StevieSans,sans-serif;font-size:16px;font-weight:500}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags{gap:5px;margin-top:5px;display:flex}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag{padding:4px 8px;border-radius:16px;font-weight:600;font-size:11px;white-space:pre}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag.recommended{background:#2f2f2f;color:#fff}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag.stakeholder{background:#fff73f}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag.teammember{background:#1f3f8f;color:#fff}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag.supporter,.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag.management{background:#ef4f9f}.scaleselector-container .topic-parent .topic-child .topic-child-moreinformation{margin-left:auto}.scaleselector-container .topic-parent .topic-child .topic-child-moreinformation .icon{vertical-align:middle;cursor:pointer}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "directive", type: i1$1.NgStyle, selector: "[ngStyle]", inputs: ["ngStyle"] }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "directive", type: i4$1.FormArrayName, selector: "[formArrayName]", inputs: ["formArrayName"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i7$1.MatCheckbox, selector: "mat-checkbox", inputs: ["aria-label", "aria-labelledby", "aria-describedby", "id", "required", "labelPosition", "name", "value", "disableRipple", "tabIndex", "color", "disabledInteractive", "checked", "disabled", "indeterminate"], outputs: ["change", "indeterminateChange"], exportAs: ["matCheckbox"] }, { kind: "pipe", type: i1$1.DecimalPipe, name: "number" }, { kind: "pipe", type: SlugifyPipe, name: "slugify" }] }); }
4001
+ }
4002
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TopicSelectorComponent, decorators: [{
4003
+ type: Component,
4004
+ args: [{ selector: 'topic-selector', providers: [
4005
+ { provide: NG_VALUE_ACCESSOR, multi: true, useExisting: forwardRef(() => TopicSelectorComponent), }
4006
+ ], template: "<form [formGroup]=\"form\">\n <div class=\"scaleselector-container\">\n <div class=\"scaleselector-metadata\">\n <div class=\"questionnaire-preset\">\n <mat-form-field class=\"questionnaire-preset-select\" appearance=\"fill\">\n <mat-label>Select predefined questionnaire</mat-label>\n <mat-select id=\"question-preset\" formControlName=\"preset\" (selectionChange)=\"selectPreset()\">\n <mat-option [value]=\"type.publicKey\" *ngFor=\"let type of presets\" class=\"select-option\">{{type.name}}</mat-option>\n </mat-select>\n </mat-form-field>\n </div>\n <div class=\"questionnaire-accuracy\">\n <div class=\"questionnaire-breakdown-label\">Accuracy</div>\n <div class=\"questionnaire-breakdown-bar-holder\">\n <div class=\"questionnaire-accuracy-bar\" [ngClass]=\"{'low': questionnaireAccuracy < 0.25, 'moderate' : questionnaireAccuracy < 0.5 && questionnaireAccuracy >= 0.25}\" [ngStyle]=\"{'width': (questionnaireAccuracy * 100) + '%' }\">{{questionnaireAccuracy * 100 | number:'1.0-0'}}%</div>\n </div>\n </div>\n <div class=\"questionnaire-segments\">\n <div class=\"questionnaire-segments-label\">Time investment</div>\n <div class=\"questionnaire-breakdowns\">\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Team members</div>\n <div class=\"progressbar progressbar-positive progressbar-teammember\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsTeamMembers > 0\" [style.width]=\"((questionsTeamMembers / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationTeamMembers | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Stakeholders</div>\n <div class=\"progressbar progressbar-positive progressbar-stakeholder\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsStakeholders > 0\" [style.width]=\"((questionsStakeholders / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationStakeholders | number:'1.0-0'}} min</div>\n </div>\n </div>\n <div class=\"questionnaire-breakdown\">\n <div class=\"questionnaire-breakdown-label\">Supporters</div>\n <div class=\"progressbar progressbar-positive progressbar-supporter\">\n <div class=\"progressbar-bar\" *ngIf=\"questionsSupporters > 0\" [style.width]=\"((questionsSupporters / questionsTotal) * 100) + '%'\"></div>\n <div class=\"progressbar-score\">{{durationSupporters | number:'1.0-0'}} min</div>\n </div>\n </div>\n </div>\n </div>\n <div class=\"scaleselector-warnings\" *ngIf=\"warnings.length > 0\">\n <div class=\"scaleselector-warnings-warning\" *ngFor=\"let warning of warnings\">\n <span class=\"icon ph-info-fill\"></span>{{warning}}\n </div>\n </div>\n </div>\n\n <ng-container>\n <div class=\"topic-parent\" *ngFor=\"let topic of getCoreFactors()\" formArrayName=\"topics\">\n\n <div class=\"name\">\n <h4>{{topic.name}}</h4>\n <div class=\"helpers\">(<a href=\"#\" (click)=\"selectAll(topic, $event)\">all</a> | <a href=\"#\" (click)=\"selectNone(topic, $event)\">none</a>)</div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n <div *ngIf=\"topic.ownQuestionCount > 0\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"topic.publicKey\" [id]=\"'topic-' + topic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{topic.name}} ({{topic.ownQuestionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"topic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.TeamMember, true)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Stakeholder, true)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(topic, SegmentEnum.Management, true)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(topic.publicKey, $event)\"></span>\n </div>\n </div>\n\n\n <div *ngFor=\"let subTopic of getSubFactors(topic.publicKey)\" class=\"topic-child\">\n <mat-checkbox class=\"topic-child-check\" [formControlName]=\"subTopic.publicKey\" [id]=\"'topic-' + subTopic.name | slugify\"></mat-checkbox>\n <div class=\"topic-child-description\">\n {{subTopic.name}} ({{subTopic.questionCount}} questions)\n <div class=\"tags\">\n <div class=\"tags-tag recommended\" *ngIf=\"subTopic.recommended\">Recommended</div>\n <div class=\"tags-tag teammember\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.TeamMember, false)\">For team members</div>\n <div class=\"tags-tag stakeholder\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Stakeholder, false)\">For stakeholders</div>\n <div class=\"tags-tag supporter\" *ngIf=\"hasSegmentQuestions(subTopic, SegmentEnum.Management, false)\">For supporters</div>\n </div>\n </div>\n <div class=\"topic-child-moreinformation\">\n <span class=\"icon ph-info-bold\" (click)=\"openFactorInformation(subTopic.publicKey, $event)\"></span>\n </div>\n </div>\n </div>\n </ng-container>\n </div>\n</form>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.scaleselector-container .scaleselector-metadata{margin:30px 0;background:#f0f0f0;border-radius:20px;padding:30px;display:flex;column-gap:30px;flex-direction:column}@media only screen and (max-width: 992px){.scaleselector-container .scaleselector-metadata{display:block}}.scaleselector-container .scaleselector-metadata .questionnaire-preset .questionnaire-preset-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.scaleselector-container .scaleselector-metadata .questionnaire-preset .questionnaire-preset-select{width:100%}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-segments-label{font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;margin-bottom:5px}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:flex;gap:15px}@media only screen and (max-width: 992px){.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns{display:block}}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown{margin-bottom:15px;flex:auto}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label{font-size:14px;font-weight:700;font-family:StevieSans,sans-serif;margin-bottom:5px;margin-top:5px}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .questionnaire-breakdown-label .icon{color:#ef6f00;font-size:18px;vertical-align:middle;cursor:pointer}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar{margin:0;width:100%}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-teammember .progressbar-bar{background:#00af77}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-stakeholder .progressbar-bar{background:#fff73f}.scaleselector-container .scaleselector-metadata .questionnaire-segments .questionnaire-breakdowns .questionnaire-breakdown .progressbar.progressbar-supporter .progressbar-bar{background:#ef4f9f}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy{margin-bottom:15px}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy .questionnaire-breakdown-label{font-size:12px;font-weight:900;text-transform:uppercase;margin-bottom:5px;font-family:StevieSans,sans-serif}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder{margin-bottom:15px;background:#2f2f2f;height:20px;border-radius:15px;overflow:hidden}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar{flex:auto;min-width:50px;font-size:12px;font-weight:900;text-transform:uppercase;font-family:StevieSans,sans-serif;background:#00af77;height:100%;align-content:center;text-align:center}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.low{background:#ef6f00}.scaleselector-container .scaleselector-metadata .questionnaire-accuracy .questionnaire-breakdown-bar-holder .questionnaire-accuracy-bar.moderate{background:#fff73f}.scaleselector-container .scaleselector-warnings{margin-top:15px}.scaleselector-container .scaleselector-warnings .scaleselector-warnings-warning{display:flex;align-items:center;font-size:12pt}.scaleselector-container .scaleselector-warnings .scaleselector-warnings-warning .icon{color:#1f3f8f;font-size:16px;cursor:pointer;margin-right:10px}.scaleselector-container .topic-parent{margin-bottom:60px;padding-left:30px}.scaleselector-container .topic-parent .name{display:flex;align-items:baseline;gap:15px}.scaleselector-container .topic-parent .name h4{font-weight:700!important;font-family:StevieSans,sans-serif!important;margin:0}.scaleselector-container .topic-parent .name .helpers{font-size:12pt}.scaleselector-container .topic-parent .name .helpers a{font-family:StevieSans,sans-serif}.scaleselector-container .topic-parent .name .topic-child-moreinformation{margin-left:auto;cursor:pointer}.scaleselector-container .topic-parent .name .topic-child-moreinformation .icon{vertical-align:middle}.scaleselector-container .topic-parent .topic-child{display:flex;align-items:baseline;gap:15px;margin-bottom:15px;margin-top:15px;cursor:pointer}.scaleselector-container .topic-parent .topic-child .topic-child-description{font-family:StevieSans,sans-serif;font-size:16px;font-weight:500}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags{gap:5px;margin-top:5px;display:flex}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag{padding:4px 8px;border-radius:16px;font-weight:600;font-size:11px;white-space:pre}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag.recommended{background:#2f2f2f;color:#fff}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag.stakeholder{background:#fff73f}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag.teammember{background:#1f3f8f;color:#fff}.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag.supporter,.scaleselector-container .topic-parent .topic-child .topic-child-description .tags .tags-tag.management{background:#ef4f9f}.scaleselector-container .topic-parent .topic-child .topic-child-moreinformation{margin-left:auto}.scaleselector-container .topic-parent .topic-child .topic-child-moreinformation .icon{vertical-align:middle;cursor:pointer}\n"] }]
4007
+ }], ctorParameters: () => [{ type: i4$1.FormBuilder }, { type: i1$3.MatDialog }], propDecorators: { topics: [{
4008
+ type: Input
4009
+ }], disabled: [{
4010
+ type: Input
4011
+ }], topicKeys: [{
4012
+ type: Input
4013
+ }], presets: [{
4014
+ type: Input
4015
+ }] } });
4016
+ class TopicSelectorDto {
4017
+ constructor(presetKey, topicKeys) {
4018
+ this.presetKey = presetKey;
4019
+ this.topicKeys = topicKeys ?? [];
4020
+ }
4021
+ }
4022
+
4023
+ class TopicSelectorModule {
4024
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TopicSelectorModule, deps: [], target: i0.ɵɵFactoryTarget.NgModule }); }
4025
+ static { this.ɵmod = i0.ɵɵngDeclareNgModule({ minVersion: "14.0.0", version: "18.2.12", ngImport: i0, type: TopicSelectorModule, declarations: [TopicSelectorComponent], imports: [CommonModule,
4026
+ FormsModule,
4027
+ MatFormFieldModule,
4028
+ ReactiveFormsModule,
4029
+ MatInputModule,
4030
+ MatSelectModule,
4031
+ MatCheckboxModule,
4032
+ SlugifyPipeModule,
4033
+ FactorInformationDialogModule], exports: [TopicSelectorComponent] }); }
4034
+ static { this.ɵinj = i0.ɵɵngDeclareInjector({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TopicSelectorModule, imports: [CommonModule,
4035
+ FormsModule,
4036
+ MatFormFieldModule,
4037
+ ReactiveFormsModule,
4038
+ MatInputModule,
4039
+ MatSelectModule,
4040
+ MatCheckboxModule,
4041
+ SlugifyPipeModule,
4042
+ FactorInformationDialogModule] }); }
4043
+ }
4044
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TopicSelectorModule, decorators: [{
4045
+ type: NgModule,
4046
+ args: [{
4047
+ imports: [
4048
+ CommonModule,
4049
+ FormsModule,
4050
+ MatFormFieldModule,
4051
+ ReactiveFormsModule,
4052
+ MatInputModule,
4053
+ MatSelectModule,
4054
+ MatCheckboxModule,
4055
+ SlugifyPipeModule,
4056
+ FactorInformationDialogModule
4057
+ ],
4058
+ declarations: [
4059
+ TopicSelectorComponent
4060
+ ],
4061
+ exports: [
4062
+ TopicSelectorComponent
4063
+ ]
4064
+ }]
4065
+ }] });
4066
+
3815
4067
  class ResetPasswordRequestDto {
3816
4068
  }
3817
4069
 
@@ -6882,7 +7134,7 @@ class TrendsComponent extends ComponentWithViewStateBase {
6882
7134
  }
6883
7135
  ;
6884
7136
  static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TrendsComponent, deps: [{ token: i4$1.UntypedFormBuilder }, { token: i1.MatSnackBar }, { token: FactorService }, { token: TrendService }, { token: i1$4.ActivatedRoute }, { token: VIEWSTATE_PROVIDER }], target: i0.ɵɵFactoryTarget.Component }); }
6885
- static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: TrendsComponent, selector: "trends", inputs: { units: "units", unitType: "unitType" }, viewQueries: [{ propertyName: "chartContainer", first: true, predicate: ["chartcontainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"dataselector\" (ngSubmit)=\"onFormSubmit()\">\n <div class=\"listtoolbar\" id=\"listtoolbar\">\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\" *ngIf=\"units.length > 1\">\n <mat-label>Select {{unitType}}</mat-label>\n <mat-select formControlName=\"unitKey\" id=\"select-units\" class=\"unitKey\" multiple [disabled]=\"units.length == 1\">\n <mat-option class=\"select-option\" *ngFor=\"let unit of units\" [value]=\"unit\">{{unit.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Select factors</mat-label>\n <mat-select formControlName=\"factorKeys\" id=\"select-factors\" class=\"factorKeys\" multiple [compareWith]=\"compareFactorOptions\">\n <mat-option class=\"select-option\" *ngFor=\"let factor of factors\" [ngClass]=\"{'lower' : factor.lower}\" [value]=\"factor\" selected=\"true\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Summarize to periods of</mat-label>\n <mat-select class=\"periodGrouping-dropdown\" id=\"select-periodGrouping\" formControlName=\"periodGrouping\">\n <mat-option class=\"select-option\" *ngFor=\"let item of periodGroupings\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Action count</mat-label>\n <mat-select class=\"selectactions-dropdown\" id=\"select-includeActions\" formControlName=\"includeActions\">\n <mat-option class=\"select-option\" *ngFor=\"let item of includeActionOptions\" [value]=\"item.value\" class=\"select-option\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Select date range </mat-label>\n <mat-date-range-input [rangePicker]=\"picker\" id=\"select-daterange\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\">\n <input matEndDate formControlName=\"end\" placeholder=\"End date\">\n </mat-date-range-input>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n\n <mat-error *ngIf=\"form.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"form.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n </mat-form-field>\n\n <div class=\"listtoolbar-item\">\n <button class=\"button primary\" id=\"button-showtrends\" [ngClass]=\"{'loading': loading}\"><span class=\"ph-funnel\"></span> Show trends</button>\n </div>\n </div>\n</form>\n\n<div class=\"message message-warning\" *ngIf=\"generatorNotes.length > 0\">\n <div class=\"ph-warning icon\"></div> {{generatorNotes[0]}}\n</div>\n\n<div class=\"wirebox calltoaction nodata\" *ngIf=\"!data\">\n <div class=\"contentwithborders\">\n <div class=\"center\">\n <img src=\"assets/img/improve.png\" />\n <h2>Are you actually improving?</h2>\n <p>Learn if your improvements are actually working out. Take more measurements and plot the trends for your {{unitType}}(s). How is that for empiricism?</p>\n </div>\n </div>\n</div>\n\n<div #chartcontainer class=\"linechart\">\n <div class=\"linechart-container\" *ngIf=\"data\">\n <ngx-charts-line-chart [legend]=\"true\"\n (window:resize)=\"onResize()\"\n [view]=\"view\"\n [showXAxisLabel]=\"true\"\n [showYAxisLabel]=\"true\"\n [xAxis]=\"true\"\n [scheme]=\"'vivid'\"\n [yAxis]=\"true\"\n [legendPosition]=\"legendPosition\"\n [xAxisLabel]=\"'Date'\"\n [yAxisLabel]=\"'Score'\"\n [timeline]=\"true\"\n [yScaleMin]=\"0\"\n [yScaleMax]=\"100\"\n [rangeFillOpacity]=\"0.1\"\n [results]=\"data\"\n [customColors]=\"customColors\">\n </ngx-charts-line-chart>\n </div>\n</div>\n\n<div class=\"message message-information\" *ngIf=\"data\">\n <span class=\"ph-info icon\"></span> This chart shows how factors change over time. The horizontal axis shows the time. The vertical axis shows the weighted average score on the factor. The light area around the lines represents the spread of scores (lower and upper 25% of scores). We aggregate results for one or more teams and from one or more organizations to the periods you chose (1 month, quarter, etc). For each period, we take the most recent snapshot of each team in that period (when available). Hit \"Show Trends\" when you're ready.\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.listtoolbar{display:flex;flex-wrap:wrap;column-gap:30px;row-gap:10px}.listtoolbar .select{flex:auto}.nodata{margin-top:30px;margin-bottom:30px}.nodata img{max-width:700px}.linechart-container{border:3px solid #f0f0f0;margin-top:30px;margin-bottom:30px;padding:30px}.toolbar{margin-top:30px}.mat-mdc-option.lower{margin-left:20px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7$1.LineChartComponent, selector: "ngx-charts-line-chart", inputs: ["legend", "legendTitle", "legendPosition", "xAxis", "yAxis", "showXAxisLabel", "showYAxisLabel", "xAxisLabel", "yAxisLabel", "autoScale", "timeline", "gradient", "showGridLines", "curve", "activeEntries", "schemeType", "rangeFillOpacity", "trimXAxisTicks", "trimYAxisTicks", "rotateXAxisTicks", "maxXAxisTickLength", "maxYAxisTickLength", "xAxisTickFormatting", "yAxisTickFormatting", "xAxisTicks", "yAxisTicks", "roundDomains", "tooltipDisabled", "showRefLines", "referenceLines", "showRefLabels", "xScaleMin", "xScaleMax", "yScaleMin", "yScaleMax", "wrapTicks"], outputs: ["activate", "deactivate"] }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i7.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i7.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
7137
+ static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.2.12", type: TrendsComponent, selector: "trends", inputs: { units: "units", unitType: "unitType" }, viewQueries: [{ propertyName: "chartContainer", first: true, predicate: ["chartcontainer"], descendants: true }], usesInheritance: true, ngImport: i0, template: "<form [formGroup]=\"form\" class=\"dataselector\" (ngSubmit)=\"onFormSubmit()\">\n <div class=\"listtoolbar\" id=\"listtoolbar\">\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\" *ngIf=\"units.length > 1\">\n <mat-label>Select {{unitType}}</mat-label>\n <mat-select formControlName=\"unitKey\" id=\"select-units\" class=\"unitKey\" multiple [disabled]=\"units.length == 1\">\n <mat-option class=\"select-option\" *ngFor=\"let unit of units\" [value]=\"unit\">{{unit.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Select factors</mat-label>\n <mat-select formControlName=\"factorKeys\" id=\"select-factors\" class=\"factorKeys\" multiple [compareWith]=\"compareFactorOptions\">\n <mat-option class=\"select-option\" *ngFor=\"let factor of factors\" [ngClass]=\"{'lower' : factor.lower}\" [value]=\"factor\" selected=\"true\">{{factor.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Summarize to periods of</mat-label>\n <mat-select class=\"periodGrouping-dropdown\" id=\"select-periodGrouping\" formControlName=\"periodGrouping\">\n <mat-option class=\"select-option\" *ngFor=\"let item of periodGroupings\" [value]=\"item.value\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Action count</mat-label>\n <mat-select class=\"selectactions-dropdown\" id=\"select-includeActions\" formControlName=\"includeActions\">\n <mat-option class=\"select-option\" *ngFor=\"let item of includeActionOptions\" [value]=\"item.value\" class=\"select-option\">{{item.label}}</mat-option>\n </mat-select>\n </mat-form-field>\n\n <mat-form-field class=\"listtoolbar-item select\" appearance=\"fill\">\n <mat-label>Select date range </mat-label>\n <mat-date-range-input [rangePicker]=\"picker\" id=\"select-daterange\">\n <input matStartDate formControlName=\"start\" placeholder=\"Start date\">\n <input matEndDate formControlName=\"end\" placeholder=\"End date\">\n </mat-date-range-input>\n <mat-datepicker-toggle matSuffix [for]=\"picker\"></mat-datepicker-toggle>\n <mat-date-range-picker #picker></mat-date-range-picker>\n\n <mat-error *ngIf=\"form.controls.start.hasError('matStartDateInvalid')\">Invalid start date</mat-error>\n <mat-error *ngIf=\"form.controls.end.hasError('matEndDateInvalid')\">Invalid end date</mat-error>\n </mat-form-field>\n\n <div class=\"listtoolbar-item\">\n <button class=\"button primary\" id=\"button-showtrends\" [ngClass]=\"{'loading': loading}\"><span class=\"ph-funnel\"></span> Show trends</button>\n </div>\n </div>\n</form>\n\n<div class=\"message message-warning\" *ngIf=\"generatorNotes.length > 0\">\n <div class=\"ph-warning icon\"></div> {{generatorNotes[0]}}\n</div>\n\n<div class=\"wirebox calltoaction nodata\" *ngIf=\"!data\">\n <div class=\"contentwithborders\">\n <div class=\"center\">\n <img src=\"assets/img/improve.png\" />\n <h2>Are you actually improving?</h2>\n <p>Learn if your improvements are actually working out. Take more measurements and plot the trends for your {{unitType}}(s). How is that for empiricism?</p>\n </div>\n </div>\n</div>\n\n<div #chartcontainer class=\"linechart\">\n <div class=\"linechart-container\" *ngIf=\"data\">\n <ngx-charts-line-chart [legend]=\"true\"\n (window:resize)=\"onResize()\"\n [view]=\"view\"\n [showXAxisLabel]=\"true\"\n [showYAxisLabel]=\"true\"\n [xAxis]=\"true\"\n [scheme]=\"'vivid'\"\n [yAxis]=\"true\"\n [legendPosition]=\"legendPosition\"\n [xAxisLabel]=\"'Date'\"\n [yAxisLabel]=\"'Score'\"\n [timeline]=\"true\"\n [yScaleMin]=\"0\"\n [yScaleMax]=\"100\"\n [rangeFillOpacity]=\"0.1\"\n [results]=\"data\"\n [customColors]=\"customColors\">\n </ngx-charts-line-chart>\n </div>\n</div>\n\n<div class=\"message message-information\" *ngIf=\"data\">\n <span class=\"ph-info icon\"></span> This chart shows how factors change over time. The horizontal axis shows the time. The vertical axis shows the weighted average score on the factor. The light area around the lines represents the spread of scores (lower and upper 25% of scores). We aggregate results for one or more teams and from one or more organizations to the periods you chose (1 month, quarter, etc). For each period, we take the most recent snapshot of each team in that period (when available). Hit \"Show Trends\" when you're ready.\n</div>\n", styles: [".smallTextUppercase{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;text-transform:uppercase;line-height:100%}.bigletteredbutton{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;text-decoration:none;background:#ffffff1a;margin-bottom:10px;display:flex;align-content:center;border-radius:20px;padding:15px;font-size:24px;border:2px solid #1F3F8F;border-bottom:6px solid #1F3F8F;color:#fff;align-items:center;cursor:pointer}.bigletteredbutton .free{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff73f;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton .plan{font-family:StevieSansThin,sans-serif;font-style:normal;font-weight:400;font-size:15px;line-height:140%;background:#fff;color:#2f2f2f;padding:3px 5px;margin-left:20px;border-radius:10px}.bigletteredbutton:hover,.bigletteredbutton.selected{border:2px solid #fff73f;border-bottom:6px solid #fff73f}.bigletteredbutton .button-letter{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f;margin-right:20px}.bigletteredbutton .button-letter .ph{color:#1f3f8f}.bigletteredbutton .button-letter:hover{background:#1f3f8f;color:#fff73f}.bigletteredbutton .button-letter:hover .ph{color:#fff73f}.roundicon-yellow{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;background:#fff73f;color:#1f3f8f}.roundicon-yellow .ph{color:#1f3f8f}.roundicon-yellow:hover{background:#1f3f8f;color:#fff73f}.roundicon-yellow:hover .ph{color:#fff73f}.roundicon{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;border-radius:30px;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center}.roundicon-large{-webkit-transition:all .25s ease-in-out;-moz-transition:all .25s ease-in-out;-o-transition:all .25s ease-in-out;transition:all .25s ease-in-out;font-family:StevieSans,sans-serif;height:52px;width:52px;min-width:52px;min-height:52px;font-weight:900;font-size:30px;line-height:100%;display:flex;align-items:center;justify-content:center;border-radius:60px;height:120px;width:120px}.listtoolbar{display:flex;flex-wrap:wrap;column-gap:30px;row-gap:10px}.listtoolbar .select{flex:auto}.nodata{margin-top:30px;margin-bottom:30px}.nodata img{max-width:700px}.linechart-container{border:3px solid #f0f0f0;margin-top:30px;margin-bottom:30px;padding:30px}.toolbar{margin-top:30px}.mat-mdc-option.lower{margin-left:20px}\n"], dependencies: [{ kind: "directive", type: i1$1.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i1$1.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i1$1.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: i7$2.LineChartComponent, selector: "ngx-charts-line-chart", inputs: ["legend", "legendTitle", "legendPosition", "xAxis", "yAxis", "showXAxisLabel", "showYAxisLabel", "xAxisLabel", "yAxisLabel", "autoScale", "timeline", "gradient", "showGridLines", "curve", "activeEntries", "schemeType", "rangeFillOpacity", "trimXAxisTicks", "trimYAxisTicks", "rotateXAxisTicks", "maxXAxisTickLength", "maxYAxisTickLength", "xAxisTickFormatting", "yAxisTickFormatting", "xAxisTicks", "yAxisTicks", "roundDomains", "tooltipDisabled", "showRefLines", "referenceLines", "showRefLabels", "xScaleMin", "xScaleMax", "yScaleMin", "yScaleMax", "wrapTicks"], outputs: ["activate", "deactivate"] }, { kind: "directive", type: i4$1.ɵNgNoValidate, selector: "form:not([ngNoForm]):not([ngNativeValidate])" }, { kind: "directive", type: i4$1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i4$1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i4$1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "directive", type: i4$1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i4$1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "component", type: i5$1.MatOption, selector: "mat-option", inputs: ["value", "id", "disabled"], outputs: ["onSelectionChange"], exportAs: ["matOption"] }, { kind: "component", type: i5.MatFormField, selector: "mat-form-field", inputs: ["hideRequiredMarker", "color", "floatLabel", "appearance", "subscriptSizing", "hintLabel"], exportAs: ["matFormField"] }, { kind: "directive", type: i5.MatLabel, selector: "mat-label" }, { kind: "directive", type: i5.MatError, selector: "mat-error, [matError]", inputs: ["id"] }, { kind: "directive", type: i5.MatSuffix, selector: "[matSuffix], [matIconSuffix], [matTextSuffix]", inputs: ["matTextSuffix"] }, { kind: "component", type: i4.MatSelect, selector: "mat-select", inputs: ["aria-describedby", "panelClass", "disabled", "disableRipple", "tabIndex", "hideSingleSelectionIndicator", "placeholder", "required", "multiple", "disableOptionCentering", "compareWith", "value", "aria-label", "aria-labelledby", "errorStateMatcher", "typeaheadDebounceInterval", "sortComparator", "id", "panelWidth"], outputs: ["openedChange", "opened", "closed", "selectionChange", "valueChange"], exportAs: ["matSelect"] }, { kind: "component", type: i7.MatDatepickerToggle, selector: "mat-datepicker-toggle", inputs: ["for", "tabIndex", "aria-label", "disabled", "disableRipple"], exportAs: ["matDatepickerToggle"] }, { kind: "component", type: i7.MatDateRangeInput, selector: "mat-date-range-input", inputs: ["rangePicker", "required", "dateFilter", "min", "max", "disabled", "separator", "comparisonStart", "comparisonEnd"], exportAs: ["matDateRangeInput"] }, { kind: "directive", type: i7.MatStartDate, selector: "input[matStartDate]", outputs: ["dateChange", "dateInput"] }, { kind: "directive", type: i7.MatEndDate, selector: "input[matEndDate]", outputs: ["dateChange", "dateInput"] }, { kind: "component", type: i7.MatDateRangePicker, selector: "mat-date-range-picker", exportAs: ["matDateRangePicker"] }] }); }
6886
7138
  }
6887
7139
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.2.12", ngImport: i0, type: TrendsComponent, decorators: [{
6888
7140
  type: Component,
@@ -7930,5 +8182,5 @@ const ViewModelStateConfigToken = new InjectionToken('viewmodelstate-angular.con
7930
8182
  * Generated bundle index. Do not edit.
7931
8183
  */
7932
8184
 
7933
- export { AactionConfigToken, AccountService$1 as AccountService, ActionClientConfig, ActionCollectionDto, ActionConfigDto, ActionDto, ActionListComponent, ActionListFilter, ActionManageComponent, ActionOptionDto, ActionOptionsDto, ActionPrefillDto, ActionService, ActionTeamDto, ActionTileComponent, ActionsModule, AgeIndicatorComponent, AlertClientConfig, AlertConfigDto, AlertConfigToken, AlertDto, AlertFilterDto, AlertResponseDto, AlertService, AlertsComponent, AlertsModule, ApiConfig, ApiConfigDto, ApiConfigToken, ApiErrorDto, ArrowComponent, BackButtonDirective, BackButtonDirectiveModule, BadgeCollectionDto, BadgeComponent, BadgeDto, BadgeProgressionComponent, BadgeStreakComponent, BadgeTypeEnum, BadgesComponent, BenchmarkIndicatorComponent, BenchmarkOptionDto, BenchmarkTypeEnum, BrandBackgroundDirective, BrandConditionalBackgroundColorDirective, BrandConditionalColorDirective, BrandHoverColorDirective, BrandingModule, BrandingProvider, BrandingSettingsDto, CallbackPipe, CallbackPipeModule, ChannelDefaultBrandingDto, ChannelDto, CheckboxComponent, CheckboxModule, ClientInfoDto, CoachingCenterTeaserComponent, CommunityClientConfig, CommunityClientConfigDto, CommunityConfigToken, CommunityModule, ComponentBase, ComponentWithViewStateBase, ContactService, ContentBrandingDto, ContextItemDto, ContextTypes, DIALOG_GUIDES_TOKEN, DIALOG_GUIDE_TOKEN, DateRangeDto, DateRangePipe, DateRangePipeModule, DefinitionDto, DeltaArrowComponent, DeltaPeriodEnum, DialogAccountComponent, DialogAccountModule, DialogActionFiltersComponent, DialogActionManageComponent, DialogAlertsComponent, DialogExportActionsComponent, DialogExportFactorScoresComponent, DialogExportTeamListComponent, DialogFactorInformationComponent, DialogGuideComponent, DialogGuidesComponent, DialogModelFilterComponent, DialogResourceDownloadComponent, DialogSettingsComponent, DialogSubscribeComponent, DialogSubscribeModule, DialogSupportComponent, DialogSupportModule, DimensionResultDto, DismissAlertRequestDto, DismissPopupService, DoItYourselfComponent, DoItYourselfWorkshopsComponent, EffectDto, EffectTypeEnum, ErrorConfigToken, ErrorDetailDto, ErrorDto, ErrorServiceConfig, ErrorServiceConfigDto, ErrorServiceModule, ExpandComponent, ExpandItemDto, ExpandModule, ExportActionsRequestDto, ExportFactorScoresRequestDto, ExportTeamListRequestDto, FactorAxisComponent, FactorEffectDto, FactorInformationDialogModule, FactorRecommendationDto, FactorScoreCollectionBenchmarkDto, FactorScoreCollectionCompositionDto, FactorScoreCollectionCompositionSegmentDto, FactorScoreCollectionDeltaDto, FactorScoreCollectionDto, FactorScoreCollectionFiltersDto, FactorScoreCompositionPointDto, FactorScoreCompositionPointsDto, FactorScoreDto, FactorService, FactorStructureConstraintDto, FactorStructureDto, FactorStructureSegmentDto, FactorsComponent, FeedbackQuickTipDto, FeedbackResourceDto, FilterTagsComponent, FocusAreasComponent, FooterComponent, FrontAndBackendErrorHandler, GUIDESTATE_PROVIDER, GetHelpFormComponent, GuardsModule, GuideCollectionDto, GuideConfigDto, GuideDto, GuideMediaTypeEnum, GuidePopupService, GuideSettingsDto, GuideStateDto, GuideStateInBackEndService, GuideStateInBrowserService, GuideStepDto, GuideStepMediaDto, GuidesClientConfig, GuidesConfigToken, GuidesModule, ImageSliderComponent, ImpactIndicatorComponent, IncludeActionsModeEnum, InterventionFilterType, InterventionOwnerEnum, InterventionOwnerToStringPipe, InterventionSortEnum, InterventionStateEnum, InterventionStateToStringPipe, InterventionSummaryDto, InterventionTypeEnum, InterventionTypeToStringPipe, InviteUrlDto, LegalDocumentDto, LegalDto, LiberatorKitsComponent, LimitationsApplyComponent, LoadModes, LoadingComponent, LoadingModule, LocalUserDto, LoggingSeverityEnum, MatTagsComponent, MatTagsModule, MeasurementDto, MeetupDto, MeetupResponseDto, MeetupsComponent, ModelComponent, ModelDefinitionDto, ModelDemoUrlDto, ModelFactorBreakdownComponent, ModelFactorComponent, ModelFilter, ModelStructureDto, ModelSummaryDto, ModelSwitcherComponent, MultiEmailInputComponent, MultiEmailInputModule, NavButtonComponent, NavigationUrlDto, NavigationUrlTypeEnum, NgAddToCalendarModule, NoReloadStrategy, OpenAccountDialogDirective, OpenActionFiltersDialogDirective, OpenAddActionDialogDirective, OpenAlertsDialogDirective, OpenContactSalesDialog, OpenEditActionDialogDirective, OpenExportActionsDialogDirective, OpenExportFactorScoresDialogDirective, OpenExportTeamListDialogDirective, OpenFactorInformationDialogDirective, OpenFeedbackDialogDirective, OpenGuideDialogDirective, OpenGuidesDialogDirective, OpenLookingForHelpDialog, OpenModelFilterDialog, OpenReportBugDialogDirective, OpenResourceDownloadDialogDirective, OpenSettingsDialogDirective, OpenSubscribeDialogDirective, OpenSupportDialogDirective, PaginatedResponse, PaginatorComponent, PaginatorModule, PagingOptions, PaletteItem, ParticipantDto, ParticipantsComponent, ParticipationRateDto, PointDto, PointTypeEnum, ProcessingDataDto, QualificationEnum, QualifiedByEnum, QuestionnaireTypeDto, QuickTipsComponent, RecentContentComponent, RecommendationComponent, RecommendationsComponent, ReloadOnPushStrategy, ResearchComponent, ResetPasswordRequestDto, ResourceDownloadModule, ResourceDownloadRedirectUrlDto, ResourceDownloadService, ResourceDto, ResourceResponseDto, ResultsClientConfig, ResultsClientDto, ResultsConfigToken, ResultsModule, ResumeGuideHoverComponent, RoadmapComponent, ScaleSelectorComponent, ScaleSelectorModule, SegmentEnum, SegmentNamePipe, SegmentNamePipeModule, SelectItem, SelectListComponent, SelectListItem, SelectListItemApiDto, SelectListModule, SessionIdInterceptor, SessionIdProvider, SiteDefaultFooterComponent, SiteDefaultHeaderComponent, SiteMicroFooterComponent, SlugifyPipe, SlugifyPipeModule, SnapshotDto, SnapshotInviteUrlsComponent, SnapshotInviteUrlsModule, SnapshotMetaDataDto, StartGuideDirective, SubscriptionTierEnum, TabItemDto, TabNavigatorComponent, TabNavigatorModule, TeamDashboardTeaserComponent, TeamDto, TeamEffectivenessComponent, TeamListFilter, TeamListResponseDto, TeamMetaDataDto, TeamNameAndKeyDto, TeamSortEnum, TeamStatusEnum, TermsService, TermsUpdatedComponent, TipBadgeComponent, TrendDataRequestDto, TrendDataSetDto, TrendService, TrendsComponent, UpdateInProgressComponent, UserGlobalSettingsDto, UserInfoDto, UserListFilter, UserListResponseDto, UserNameAndKeyDto, UserProfileComponent, UserProfileDto, UserProfileService, UserSettingService, UserSettingsDto, UserSpecificSettingsDto, VIEWSTATE_LOAD_STRATEGY, VIEWSTATE_PROVIDER, VIEWSTATE_RELOAD_STRATEGY, VIEWSTATE_USERSETTINGS_STRATEGY, ValidChangeTokenGuard, ValidKeyGuard, ValidKeySnapshotKeyGuard, ValidKeyTeamKeyGuard, VariableDto, VideoComponent, ViewModelStateBase, ViewModelStateConfig, ViewModelStateConfigDto, ViewModelStateConfigToken, ViewModelStateModule, WidgetFactorScoreComponent, WidgetParticipationRateComponent, compareInputValidator, domainValidator, maxSelectedValidator };
8185
+ export { AactionConfigToken, AccountService$1 as AccountService, ActionClientConfig, ActionCollectionDto, ActionConfigDto, ActionDto, ActionListComponent, ActionListFilter, ActionManageComponent, ActionOptionDto, ActionOptionsDto, ActionPrefillDto, ActionService, ActionTeamDto, ActionTileComponent, ActionsModule, AgeIndicatorComponent, AlertClientConfig, AlertConfigDto, AlertConfigToken, AlertDto, AlertFilterDto, AlertResponseDto, AlertService, AlertsComponent, AlertsModule, ApiConfig, ApiConfigDto, ApiConfigToken, ApiErrorDto, ArrowComponent, BackButtonDirective, BackButtonDirectiveModule, BadgeCollectionDto, BadgeComponent, BadgeDto, BadgeProgressionComponent, BadgeStreakComponent, BadgeTypeEnum, BadgesComponent, BenchmarkIndicatorComponent, BenchmarkOptionDto, BenchmarkTypeEnum, BrandBackgroundDirective, BrandConditionalBackgroundColorDirective, BrandConditionalColorDirective, BrandHoverColorDirective, BrandingModule, BrandingProvider, BrandingSettingsDto, CallbackPipe, CallbackPipeModule, ChannelDefaultBrandingDto, ChannelDto, CheckboxComponent, CheckboxModule, ClientInfoDto, CoachingCenterTeaserComponent, CommunityClientConfig, CommunityClientConfigDto, CommunityConfigToken, CommunityModule, ComponentBase, ComponentWithViewStateBase, ContactService, ContentBrandingDto, ContextItemDto, ContextTypes, DIALOG_GUIDES_TOKEN, DIALOG_GUIDE_TOKEN, DateRangeDto, DateRangePipe, DateRangePipeModule, DefinitionDto, DeltaArrowComponent, DeltaPeriodEnum, DialogAccountComponent, DialogAccountModule, DialogActionFiltersComponent, DialogActionManageComponent, DialogAlertsComponent, DialogExportActionsComponent, DialogExportFactorScoresComponent, DialogExportTeamListComponent, DialogFactorInformationComponent, DialogGuideComponent, DialogGuidesComponent, DialogModelFilterComponent, DialogResourceDownloadComponent, DialogSettingsComponent, DialogSubscribeComponent, DialogSubscribeModule, DialogSupportComponent, DialogSupportModule, DimensionResultDto, DismissAlertRequestDto, DismissPopupService, DoItYourselfComponent, DoItYourselfWorkshopsComponent, EffectDto, EffectTypeEnum, ErrorConfigToken, ErrorDetailDto, ErrorDto, ErrorServiceConfig, ErrorServiceConfigDto, ErrorServiceModule, ExpandComponent, ExpandItemDto, ExpandModule, ExportActionsRequestDto, ExportFactorScoresRequestDto, ExportTeamListRequestDto, FactorAxisComponent, FactorEffectDto, FactorInformationDialogModule, FactorRecommendationDto, FactorScoreCollectionBenchmarkDto, FactorScoreCollectionCompositionDto, FactorScoreCollectionCompositionSegmentDto, FactorScoreCollectionDeltaDto, FactorScoreCollectionDto, FactorScoreCollectionFiltersDto, FactorScoreCompositionPointDto, FactorScoreCompositionPointsDto, FactorScoreDto, FactorService, FactorStructureConstraintDto, FactorStructureDto, FactorStructureSegmentDto, FactorsComponent, FeedbackQuickTipDto, FeedbackResourceDto, FilterTagsComponent, FocusAreasComponent, FooterComponent, FrontAndBackendErrorHandler, GUIDESTATE_PROVIDER, GetHelpFormComponent, GuardsModule, GuideCollectionDto, GuideConfigDto, GuideDto, GuideMediaTypeEnum, GuidePopupService, GuideSettingsDto, GuideStateDto, GuideStateInBackEndService, GuideStateInBrowserService, GuideStepDto, GuideStepMediaDto, GuidesClientConfig, GuidesConfigToken, GuidesModule, ImageSliderComponent, ImpactIndicatorComponent, IncludeActionsModeEnum, InterventionFilterType, InterventionOwnerEnum, InterventionOwnerToStringPipe, InterventionSortEnum, InterventionStateEnum, InterventionStateToStringPipe, InterventionSummaryDto, InterventionTypeEnum, InterventionTypeToStringPipe, InviteUrlDto, LegalDocumentDto, LegalDto, LiberatorKitsComponent, LimitationsApplyComponent, LoadModes, LoadingComponent, LoadingModule, LocalUserDto, LoggingSeverityEnum, MatTagsComponent, MatTagsModule, MeasurementDto, MeetupDto, MeetupResponseDto, MeetupsComponent, ModelComponent, ModelDefinitionDto, ModelDemoUrlDto, ModelFactorBreakdownComponent, ModelFactorComponent, ModelFilter, ModelStructureDto, ModelSummaryDto, ModelSwitcherComponent, MultiEmailInputComponent, MultiEmailInputModule, NavButtonComponent, NavigationUrlDto, NavigationUrlTypeEnum, NgAddToCalendarModule, NoReloadStrategy, OpenAccountDialogDirective, OpenActionFiltersDialogDirective, OpenAddActionDialogDirective, OpenAlertsDialogDirective, OpenContactSalesDialog, OpenEditActionDialogDirective, OpenExportActionsDialogDirective, OpenExportFactorScoresDialogDirective, OpenExportTeamListDialogDirective, OpenFactorInformationDialogDirective, OpenFeedbackDialogDirective, OpenGuideDialogDirective, OpenGuidesDialogDirective, OpenLookingForHelpDialog, OpenModelFilterDialog, OpenReportBugDialogDirective, OpenResourceDownloadDialogDirective, OpenSettingsDialogDirective, OpenSubscribeDialogDirective, OpenSupportDialogDirective, PaginatedResponse, PaginatorComponent, PaginatorModule, PagingOptions, PaletteItem, ParticipantDto, ParticipantsComponent, ParticipationRateDto, PointDto, PointTypeEnum, ProcessingDataDto, QualificationEnum, QualifiedByEnum, QuestionnaireTypeDto, QuickTipsComponent, RecentContentComponent, RecommendationComponent, RecommendationsComponent, ReloadOnPushStrategy, ResearchComponent, ResetPasswordRequestDto, ResourceDownloadModule, ResourceDownloadRedirectUrlDto, ResourceDownloadService, ResourceDto, ResourceResponseDto, ResultsClientConfig, ResultsClientDto, ResultsConfigToken, ResultsModule, ResumeGuideHoverComponent, RoadmapComponent, ScaleSelectorComponent, ScaleSelectorModule, SegmentEnum, SegmentNamePipe, SegmentNamePipeModule, SelectItem, SelectListComponent, SelectListItem, SelectListItemApiDto, SelectListModule, SessionIdInterceptor, SessionIdProvider, SiteDefaultFooterComponent, SiteDefaultHeaderComponent, SiteMicroFooterComponent, SlugifyPipe, SlugifyPipeModule, SnapshotDto, SnapshotInviteUrlsComponent, SnapshotInviteUrlsModule, SnapshotMetaDataDto, StartGuideDirective, SubscriptionTierEnum, TabItemDto, TabNavigatorComponent, TabNavigatorModule, TeamDashboardTeaserComponent, TeamDto, TeamEffectivenessComponent, TeamListFilter, TeamListResponseDto, TeamMetaDataDto, TeamNameAndKeyDto, TeamSortEnum, TeamStatusEnum, TermsService, TermsUpdatedComponent, TipBadgeComponent, TopicSelectorComponent, TopicSelectorDto, TopicSelectorModule, TrendDataRequestDto, TrendDataSetDto, TrendService, TrendsComponent, UpdateInProgressComponent, UserGlobalSettingsDto, UserInfoDto, UserListFilter, UserListResponseDto, UserNameAndKeyDto, UserProfileComponent, UserProfileDto, UserProfileService, UserSettingService, UserSettingsDto, UserSpecificSettingsDto, VIEWSTATE_LOAD_STRATEGY, VIEWSTATE_PROVIDER, VIEWSTATE_RELOAD_STRATEGY, VIEWSTATE_USERSETTINGS_STRATEGY, ValidChangeTokenGuard, ValidKeyGuard, ValidKeySnapshotKeyGuard, ValidKeyTeamKeyGuard, VariableDto, VideoComponent, ViewModelStateBase, ViewModelStateConfig, ViewModelStateConfigDto, ViewModelStateConfigToken, ViewModelStateModule, WidgetFactorScoreComponent, WidgetParticipationRateComponent, compareInputValidator, domainValidator, maxSelectedValidator, minTopicsSelectedValidator };
7934
8186
  //# sourceMappingURL=the-liberators-ngx-scrumteamsurvey-tools.mjs.map