summaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/pages/workspace/information-artifact/information-artifact-page.component.ts
blob: a6804a43c60e14c5dc0de75b788e08d0a275dd36 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
import {Component, OnInit, ViewChild} from "@angular/core";
import {WorkspaceService} from "../workspace.service";
import {SdcUiCommon, SdcUiComponents, SdcUiServices} from "onap-ui-angular";
import {TopologyTemplateService} from "../../../services/component-services/topology-template.service";
import * as _ from "lodash";
import {ArtifactGroupType, ArtifactType} from "../../../../utils/constants";
import {ArtifactsService} from "../../../components/forms/artifacts-form/artifacts.service";
import {DeleteArtifactAction, GetArtifactsByTypeAction} from "../../../store/actions/artifacts.action";
import {Select, Store} from "@ngxs/store";
import {Observable} from "rxjs/index";
import {ArtifactsState} from "../../../store/states/artifacts.state";
import {map} from "rxjs/operators";
import {WorkspaceState} from "../../../store/states/workspace.state";
import {ArtifactModel} from "../../../../models/artifacts";

@Component({
    selector: 'information-artifact-page',
    templateUrl: './information-artifact-page.component.html',
    styleUrls: ['./information-artifact-page.component.less', '../../../../../assets/styles/table-style.less']
})
export class InformationArtifactPageComponent implements OnInit {

    public componentId: string;
    public componentType: string;
    public informationArtifacts$: Observable<ArtifactModel[]>;
    public informationArtifactsAsButtons$: Observable<ArtifactModel[]>;
    @Select(WorkspaceState.isViewOnly) isViewOnly$: boolean;
    @ViewChild('informationArtifactsTable') table: any;

    constructor(private workspaceService: WorkspaceService,
                private artifactsService: ArtifactsService,
                private store: Store) {
    }

    ngOnInit(): void {
        this.componentId = this.workspaceService.metadata.uniqueId;
        this.componentType = this.workspaceService.metadata.componentType;

        this.store.dispatch(new GetArtifactsByTypeAction({
            componentType: this.componentType,
            componentId: this.componentId,
            artifactType: ArtifactGroupType.INFORMATION
        }));

        let artifacts = this.store.select(ArtifactsState.getArtifactsByType).pipe(map(filterFn => filterFn(ArtifactType.INFORMATION)));
        this.informationArtifacts$ = artifacts.pipe(map(artifacts => _.filter(artifacts, (artifact) => {
            return artifact.esId;
        })));

        this.informationArtifactsAsButtons$ = artifacts.pipe(map(artifacts => _.filter(artifacts, (artifact) => {
            return !artifact.esId;
        })));
    }

    onActivate(event) {
        if (event.type === 'click') {
            this.table.rowDetail.toggleExpandRow(event.row);
        }
    }

    public addOrUpdateArtifact = (artifact: ArtifactModel, isViewOnly?: boolean) => {
        this.artifactsService.openArtifactModal(this.componentId, this.componentType, artifact, ArtifactGroupType.INFORMATION, isViewOnly);
    }

    public deleteArtifact = (artifactToDelete) => {
      this.artifactsService.deleteArtifact(this.componentType, this.componentId, artifactToDelete)
    }

}