fuse-angular/src/app/main/apps/mail/mail.component.ts

93 lines
2.4 KiB
TypeScript
Raw Normal View History

2017-07-20 15:12:09 +00:00
import { Component, OnDestroy, OnInit } from '@angular/core';
2017-07-18 16:34:12 +00:00
import { MailService } from './mail.service';
2017-07-20 15:12:09 +00:00
import { Subscription } from 'rxjs/Subscription';
@Component({
selector : 'fuse-mail',
templateUrl: './mail.component.html',
styleUrls : ['./mail.component.scss']
})
2017-07-20 15:12:09 +00:00
export class MailComponent implements OnInit, OnDestroy
{
2017-07-20 15:12:09 +00:00
hasSelectedMails: boolean;
isIndeterminate: boolean;
folders: any[];
2017-07-26 09:43:45 +00:00
filters: any[];
2017-07-20 15:12:09 +00:00
labels: any[];
onSelectedMailsChanged: Subscription;
2017-07-26 09:43:45 +00:00
onFoldersChanged: Subscription;
onFiltersChanged: Subscription;
onLabelsChanged: Subscription;
2017-07-17 15:11:34 +00:00
constructor(
2017-07-18 16:34:12 +00:00
private mailService: MailService
2017-07-17 15:11:34 +00:00
)
{
}
ngOnInit()
{
2017-07-20 15:12:09 +00:00
this.onSelectedMailsChanged =
this.mailService.onSelectedMailsChanged
.subscribe(selectedMails => {
setTimeout(() => {
this.hasSelectedMails = selectedMails.length > 0;
this.isIndeterminate = (selectedMails.length !== this.mailService.mails.length && selectedMails.length > 0);
}, 0);
});
2017-07-26 09:43:45 +00:00
this.onFoldersChanged =
this.mailService.onFoldersChanged
.subscribe(folders => {
this.folders = this.mailService.folders;
});
this.onFiltersChanged =
this.mailService.onFiltersChanged
.subscribe(folders => {
this.filters = this.mailService.filters;
});
this.onLabelsChanged =
this.mailService.onLabelsChanged
.subscribe(labels => {
this.labels = this.mailService.labels;
});
2017-07-20 15:12:09 +00:00
}
ngOnDestroy()
{
this.onSelectedMailsChanged.unsubscribe();
2017-07-26 09:43:45 +00:00
this.onFoldersChanged.unsubscribe();
this.onFiltersChanged.unsubscribe();
this.onLabelsChanged.unsubscribe();
2017-07-20 15:12:09 +00:00
}
toggleSelectAll()
{
this.mailService.toggleSelectAll();
}
selectMails(filterParameter?, filterValue?)
{
this.mailService.selectMails(filterParameter, filterValue);
}
deselectMails()
{
this.mailService.deselectMails();
}
2017-07-17 15:11:34 +00:00
2017-07-20 15:12:09 +00:00
toggleLabelOnSelectedMails(labelId)
{
this.mailService.toggleLabelOnSelectedMails(labelId);
}
setFolderOnSelectedMails(folderId)
{
this.mailService.setFolderOnSelectedMails(folderId);
}
}