@WidgetComponent

nm-edit-visible-fields-dialog

File

src/app/shared/widgets/search-app-search-widget/edit-visible-fields-dialog/edit-visible-fields-dialog.component.ts

Implements

OnInit

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)
Parameters :
Name Type Optional
dialogRef MatDialogRef<EditVisibleFieldsDialog> no
http HttpClient no
_notificationService CustomNotificationService no
translateService TranslateService no

Methods

arrayToObj
arrayToObj(selectedFields: )
Parameters :
Name Optional
selectedFields no
Returns : { fieldsVisible: {}; attributes: any; }
close
close()
Returns : void
confirm
confirm()
Returns : void
Public doSaveFavorites
doSaveFavorites()
Returns : void
ngOnInit
ngOnInit()
Returns : void
reset
reset()
Returns : void
selectedItemsChanged
selectedItemsChanged()
Returns : void

Properties

Public activateMultipleAddableMode
activateMultipleAddableMode: boolean
Type : boolean
Default value : true
Public additionalProperties
additionalProperties:
Public attributesVisible
attributesVisible: Attribute[]
Type : Attribute[]
Public currentLocale
currentLocale:
Public dialogRef
dialogRef: MatDialogRef<EditVisibleFieldsDialog>
Type : MatDialogRef<EditVisibleFieldsDialog>
Public enableSaveButton
enableSaveButton: boolean
Type : boolean
Default value : false
Public fields
fields: any[]
Type : any[]
Public fieldsVisible
fieldsVisible:
Public infoText
infoText: string
Type : string
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
Component
Html element with directive

results matching ""

    No results matching ""