blob: f472a806a4e6bbba635c9eebe1bf068eed2a818e [file] [log] [blame]
/*
*******************************************************************************
* Copyright (c) 2018 Contributors to the Eclipse Foundation
*
* See the NOTICE file(s) distributed with this work for additional
* information regarding copyright ownership.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v. 2.0 which is available at
* http://www.eclipse.org/legal/epl-2.0.
*
* SPDX-License-Identifier: EPL-2.0
*******************************************************************************
*/
import { Component, Input, Output, EventEmitter } from '@angular/core';
import { AbstractListComponent } from '../common-components/abstract-list/abstract-list.component';
import { Globals } from './../../common/globals';
import { GridOptions } from 'ag-grid/dist/lib/entities/gridOptions';
import { GridMeasure } from '../../model/grid-measure';
import { EmailDistributionEntry } from '../../model/email-distribution-entry';
import { EmailDistributionListAgGridConfiguration } from './email-distribution-ag-grid-configuration';
@Component({
selector: 'app-email-distribution-list',
templateUrl: './email-distribution-list.component.html',
styleUrls: ['./email-distribution-list.component.css', '../common-components/abstract-list/abstract-list.component.css']
})
export class EmailDistributionListComponent extends AbstractListComponent {
@Input() gridMeasureDetail: GridMeasure = new GridMeasure();
@Output() gridMeasureChanged = new EventEmitter<GridMeasure>();
Globals = Globals;
listEmailDistribution: any;
currentDate = new Date();
isStatusCollapsed = true;
initAgGrid() {
const localGridOptions = <GridOptions>{
columnDefs: EmailDistributionListAgGridConfiguration.createColumnDefs(),
pagination: false
};
this.gridOptions = Object.assign(this.globalGridOptions, localGridOptions);
}
retrieveData() {
if (!this.gridMeasureDetail.listEmailDistribution || this.gridMeasureDetail.listEmailDistribution.length === 0) {
this.gridMeasureDetail.listEmailDistribution = new Array<EmailDistributionEntry>();
let idCount = 1;
// preconfigured emailaddresses from mailtemplates
let preconfiguredEmailAddressStringArray = [];
preconfiguredEmailAddressStringArray = this.sessionContext.getEmailAddressesFromTemplates();
if (preconfiguredEmailAddressStringArray && preconfiguredEmailAddressStringArray.length > 0) {
preconfiguredEmailAddressStringArray.forEach(email => {
const ede = new EmailDistributionEntry();
ede.emailAddress = email.trim();
ede.preconfigured = true;
ede.delete = false;
ede._isValide = true;
ede.id = idCount;
this.gridMeasureDetail.listEmailDistribution = [...this.gridMeasureDetail.listEmailDistribution, ede];
idCount++;
});
}
if (this.gridMeasureDetail.emailAddresses) {
const emailAddressStringArray = this.gridMeasureDetail.emailAddresses.split(';');
emailAddressStringArray.forEach(email => {
const ede = new EmailDistributionEntry();
ede.emailAddress = email.trim();
ede.preconfigured = false;
ede.delete = false;
ede._isValide = true;
ede.id = idCount;
this.gridMeasureDetail.listEmailDistribution = [...this.gridMeasureDetail.listEmailDistribution, ede];
idCount++;
});
}
}
this.listEmailDistribution = this.gridMeasureDetail.listEmailDistribution;
this.showSpinner = false;
}
deleteEmailAddress(emailDistributionEntry: EmailDistributionEntry): void {
emailDistributionEntry.delete = true;
if (!this.gridMeasureDetail.listEmailDistributionDeleted) {
this.gridMeasureDetail.listEmailDistributionDeleted = new Array<EmailDistributionEntry>();
}
if (emailDistributionEntry.id !== Globals.TEMP_ID_TO_SHOW_NEW_EMAILDISTRIBUTIONENTRYS) {
this.gridMeasureDetail.listEmailDistributionDeleted.push(emailDistributionEntry);
}
this.gridMeasureDetail.listEmailDistribution = this.gridMeasureDetail.listEmailDistribution.filter(s => !s.delete);
this.listEmailDistribution = this.gridMeasureDetail.listEmailDistribution;
this.gridMeasureChanged.emit(this.gridMeasureDetail);
}
}