aboutsummaryrefslogtreecommitdiffstats
path: root/catalog-ui/src/app/ng2/components/ui/upload-artifact/upload-artifact.component.ts
blob: ece47e71dfe6065059291b35f93a6089114aee99 (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
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
/*
 * ============LICENSE_START=======================================================
 *  Copyright (C) 2023 Nordix Foundation
 *  ================================================================================
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *
 *        http://www.apache.org/licenses/LICENSE-2.0
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 *  SPDX-License-Identifier: Apache-2.0
 *  ============LICENSE_END=========================================================
 */

import { Component, EventEmitter, Input, Output } from "@angular/core";
import { ArtifactModel } from "app/models";
import { TranslateService } from '../../../shared/translator/translate.service';
import { SdcUiServices } from 'onap-ui-angular';

@Component({
    selector: 'upload-artifact',
    template: `
	<svg-icon
        [mode]="'primary2'"
        [disabled]="disabled"
        [clickable]="!disabled"
        [name]="iconType"
        [testId]="testId" mode="info"
        (click)="fileUpload.click()"
        clickable="true"
        size="medium"
    ></svg-icon>
    <input
        type="file"
        style="display: none;"
        [disabled]="disabled"
        (change)="onFileSelect($event)"
        [accept]="extensionsWithDot"
        #fileUpload>
`
})
export class UploadArtifactComponent {

    @Input() extensions: string;
    @Input() artifact: ArtifactModel;
    @Input() isInstance: boolean;
    @Input() uploadIconClass: string;
    @Input() componentType: string;
    @Input() componentId: string;
    @Input() testId: string;
    @Input() disabled: boolean;
    @Output("onFileUpload") onFileUpload: EventEmitter<any> = new EventEmitter<any>();

    public extensionsWithDot: string;
    public iconType:string = "upload-o";

    constructor(
        private modalService: SdcUiServices.ModalService,
        private translateService: TranslateService) {

    }

    ngOnInit () {
        this.extensionsWithDot = this.getExtensionsWithDot(this.extensions);
    }

    public getExtensionsWithDot(extensions:string):string {
        extensions = extensions || '';
        return extensions.split(',')
            .map(ext => '.' + ext.toString())
            .join(',');
    }

    public onFileSelect(event) {
        const file = event.target.files[0];
        if (file && file.name) {
            const fileExtension: string = file.name.split('.').pop();
            if (this.extensionsWithDot.includes(fileExtension.toLowerCase())) {
                this.onFileUpload.emit(file);
            } else {
                const title: string = this.translateService.translate('NEW_SERVICE_RESOURCE_ERROR_VALID_TOSCA_EXTENSIONS_TITLE');
                const message: string = this.translateService.translate('NEW_SERVICE_RESOURCE_ERROR_VALID_TOSCA_EXTENSIONS', {extensions: this.extensionsWithDot});
                this.modalService.openWarningModal(title, message, 'error-invalid-tosca-ext');
            }
        }
    }
}