@WidgetComponent
File
Implements
Metadata
selector |
nm-edit-visible-fields-dialog |
styleUrls |
edit-visible-fields-dialog.component.scss |
templateUrl |
./edit-visible-fields-dialog.component.html |
Index
Widget inputs
|
|
Widget outputs
|
|
Properties
|
|
Methods
|
|
Constructor
constructor(dialogRef: MatDialogRef, http: HttpClient, _notificationService: CustomNotificationService, translateService: TranslateService)
|
|
|
Methods
arrayToObj
|
arrayToObj(selectedFields: )
|
|
Parameters :
Name |
Optional |
selectedFields |
no
|
Returns : { fieldsVisible: {}; attributes: any; }
|
Public
doSaveFavorites
|
doSaveFavorites()
|
|
|
selectedItemsChanged
|
selectedItemsChanged()
|
|
|
Public
activateMultipleAddableMode
|
activateMultipleAddableMode: boolean
|
Type : boolean
|
Default value : true
|
|
Public
additionalProperties
|
additionalProperties:
|
|
Public
attributesVisible
|
attributesVisible: Attribute[]
|
Type : Attribute[]
|
|
Public
currentLocale
|
currentLocale:
|
|
Public
enableSaveButton
|
enableSaveButton: boolean
|
Type : boolean
|
Default value : false
|
|
Public
fields
|
fields: any[]
|
Type : any[]
|
|
Public
fieldsVisible
|
fieldsVisible:
|
|
Public
initalselectedFields
|
initalselectedFields: any[]
|
Type : any[]
|
Default value : []
|
|
Public
resetDefault
|
resetDefault:
|
|
Private
saveFavorites
|
saveFavorites:
|
Default value : new Subject<any>()
|
|
Public
saveFavoritesObservable
|
saveFavoritesObservable:
|
Default value : this.saveFavorites.asObservable()
|
|
Public
selectedFields
|
selectedFields: any[]
|
Type : any[]
|
Default value : []
|
|
Public
selectFilterParams
|
selectFilterParams:
|
|
import { Component, OnInit } from "@angular/core";
import { MatDialogRef } from "@angular/material/dialog";
import { HttpClient } from "@angular/common/http";
import { Subject } from "rxjs";
import { deepCopy } from "../../../components/util";
import { CustomNotificationService } from "../../../components/notification/customnotification.service";
import { TranslateService } from "@ngx-translate/core";
import { Attribute } from "../../../components/edit-attribute/attribute";
@Component({
selector: "nm-edit-visible-fields-dialog",
templateUrl: "./edit-visible-fields-dialog.component.html",
styleUrls: ["./edit-visible-fields-dialog.component.scss"],
})
export class EditVisibleFieldsDialog implements OnInit {
// The default fields of the dialog
public fields: any[];
public attributesVisible: Attribute[];
public fieldsVisible;
public resetDefault;
public selectedFields: any[] = [];
public initalselectedFields: any[] = [];
public enableSaveButton: boolean = false;
public infoText: string;
public currentLocale;
public additionalProperties;
public activateMultipleAddableMode: boolean = true;
public selectFilterParams;
private saveFavorites = new Subject<any>();
public saveFavoritesObservable = this.saveFavorites.asObservable();
constructor(
public dialogRef: MatDialogRef<EditVisibleFieldsDialog>,
private http: HttpClient,
private _notificationService: CustomNotificationService,
private translateService: TranslateService
) {}
ngOnInit() {
this.selectFilterParams = {
filterAttribute: ["scope", "type"],
placeholder: "placeholder.attributescope",
href:
"/api/core/configuration-types/attributescopes?locale=" +
this.currentLocale,
dataType: "types",
};
this.additionalProperties = ["parentDescription", "group", "dataLevels"];
this.fields.forEach((field) => {
//Convert them to the format the attributes use so we can render them in the same dialog
if (this.fieldsVisible[field.identifier]) {
this.selectedFields.push(field);
}
});
if (this.attributesVisible) {
this.selectedFields = this.selectedFields.concat(this.attributesVisible);
}
this.initalselectedFields = deepCopy(this.selectedFields);
}
close() {
this.dialogRef.close();
}
confirm() {
const mappedValue = this.arrayToObj(this.selectedFields);
this.dialogRef.close(mappedValue);
}
public doSaveFavorites() {
const favorites = deepCopy(this.selectedFields);
this.resetDefault = favorites;
this.saveFavorites.next(favorites);
this._notificationService.success(
this.translateService.instant("message.success.action.title"),
this.translateService.instant("message.success.save.visible.fields.body")
);
}
selectedItemsChanged() {
this.enableSaveButton = true;
}
reset() {
// this.selectedFields = [];
if (this.resetDefault) {
this.initalselectedFields = deepCopy(this.resetDefault);
}
// if(this.resetDefault) {
// console.debug(this.resetDefault);
// this.fieldsVisible = deepCopy(this.resetDefault);
//
// this.fields.forEach(field => {
// if ( this.fieldsVisible[field.identifier]) {
// this.selectedFields.push(field);
// }
// })
//
// this.initalselectedFields = deepCopy(this.selectedFields);
// this._notificationService.success(this.translateService.instant('message.success.action.title'), this.translateService.instant('message.success.reset.visible.fields.body'));
// return;
// }
// this.fieldsVisible = {};
// this.fields.forEach(field => {
// if(field.scope!== 'FAKE' && field.defaultVisible === false) {
// this.fieldsVisible[field.identifier] = false;
// } else {
// this.selectedFields.push(field);
// this.fieldsVisible[field.identifier] = true;
// }
//
// this.fields.forEach(field => {
// if ( this.fieldsVisible[field.identifier]) {
// this.selectedFields.push(field);
// }
// })
// this.initalselectedFields = deepCopy(this.selectedFields);
// })
}
arrayToObj(selectedFields) {
const fieldsVisible = {};
const attributes = selectedFields.filter(
(entry) => entry.scope !== "SYSTEM"
);
Object.keys(this.fieldsVisible).forEach((field) => {
const isVisible =
selectedFields.find((entry) => entry.identifier === field) !==
undefined;
fieldsVisible[field] = isVisible;
});
return { fieldsVisible, attributes };
}
}
<nm-dialog
[dialogRef]="dialogRef"
[infoText]="infoText"
[infoPlacement]="'left'"
class="nm-dialog nm-select-attributes-dialog"
style="max-width: 800px; width: 800px; min-width: 800px; height: auto"
>
<ng-container slot="title">
{{ "edit.visible.fields" | translate }}
</ng-container>
<ng-container slot="content">
<div class="duallist-table">
<nm-ngx-material-duallistbox
[items]="fields"
[(selectedItems)]="selectedFields"
[initalselectedItems]="initalselectedFields"
[additionalProperties]="additionalProperties"
[selectFilterParams]="selectFilterParams"
[descProperty]="'description'"
[filterPlaceholder]="'placeholder.available.attributes' | translate"
[filterPlaceholderTo]="'placeholder.visible.attributes' | translate"
[removeAllTooltip]="'button.removeAll' | translate"
[addAllTooltip]="'button.addAll' | translate"
[idProperty]="'identifier'"
removeIcon="remove"
(selectedItemsChange)="selectedItemsChanged()"
[activateMultipleAddableMode]="activateMultipleAddableMode"
[dynamicHeightContainer]="'.mat-dialog-container'"
[dynamicHeightAdditionalHeight]="'190px'"
>
</nm-ngx-material-duallistbox>
</div>
</ng-container>
<ng-container slot="actions">
<button mat-button [matMenuTriggerFor]="menu">
<mat-icon>more_vert</mat-icon>
{{ "placeholder.default" | translate }}
</button>
<mat-menu #menu="matMenu">
<button mat-menu-item (click)="reset()">
<mat-icon>replay</mat-icon>
{{ "button.reset.to.default" | translate }}
</button>
<button mat-menu-item (click)="doSaveFavorites()">
<mat-icon>save</mat-icon>
{{ "button.save.as.default" | translate }}
</button>
</mat-menu>
<button mat-button (click)="close()">
{{ "button.cancel" | translate }}
</button>
<button
mat-raised-button
type="button"
color="primary"
(click)="confirm()"
[disabled]="!enableSaveButton"
>
{{ "button.accept" | translate }}
</button>
</ng-container>
</nm-dialog>
Legend
Html element with directive