/*!
* @license
* Alfresco Example Content Application
*
* Copyright (C) 2005 - 2020 Alfresco Software Limited
*
* This file is part of the Alfresco Example Content Application.
* If the software was purchased under a paid Alfresco license, the terms of
* the paid license agreement will prevail. Otherwise, the software is
* provided under the following open source license terms:
*
* The Alfresco Example Content Application is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* The Alfresco Example Content Application is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public License
* along with Alfresco. If not, see .
*/
import { Component, OnInit, ViewEncapsulation } from '@angular/core';
import { Location } from '@angular/common';
import { FolderRulesService } from '../services/folder-rules.service';
import { Observable } from 'rxjs';
import { Rule } from '../model/rule.model';
import { ActivatedRoute } from '@angular/router';
import { NodeInfo } from '@alfresco/aca-shared/store';
import { tap } from 'rxjs/operators';
import { EditRuleDialogSmartComponent } from '../rule-details/edit-rule-dialog.smart-component';
import { MatDialog } from '@angular/material/dialog';
@Component({
selector: 'aca-manage-rules',
templateUrl: 'manage-rules.smart-component.html',
styleUrls: ['manage-rules.smart-component.scss'],
encapsulation: ViewEncapsulation.None,
host: { class: 'aca-manage-rules' }
})
export class ManageRulesSmartComponent implements OnInit {
rules$: Observable;
isLoading$: Observable;
folderInfo$: Observable;
selectedRule: Rule = null;
nodeId: string = null;
constructor(
private location: Location,
private folderRulesService: FolderRulesService,
private route: ActivatedRoute,
private matDialogService: MatDialog
) {}
ngOnInit(): void {
this.rules$ = this.folderRulesService.rulesListing$.pipe(
tap((rules) => {
if (!rules.includes(this.selectedRule)) {
this.selectedRule = rules[0];
}
})
);
this.isLoading$ = this.folderRulesService.loading$;
this.folderInfo$ = this.folderRulesService.folderInfo$;
this.route.params.subscribe((params) => {
this.nodeId = params.nodeId;
if (this.nodeId) {
this.folderRulesService.loadRules(this.nodeId);
}
});
}
goBack(): void {
this.location.back();
}
onRuleSelected(rule: Rule): void {
this.selectedRule = rule;
}
openNewRuleDialog() {
this.matDialogService.open(EditRuleDialogSmartComponent, {
width: '90%',
panelClass: 'aca-edit-rule-dialog-container'
});
}
}