summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-action-lib/pom.xml
blob: 8f4e3994e432ceea1a623a2df65083cd26a4e1a3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.openecomp.sdc</groupId>
    <artifactId>openecomp-sdc-action-lib</artifactId>
    <packaging>pom</packaging>

    <parent>
        <groupId>org.openecomp.sdc</groupId>
        <artifactId>openecomp-sdc-lib</artifactId>
        <version>1.11.2-SNAPSHOT</version>
    </parent>


    <modules>
        <module>openecomp-sdc-action-api</module>
        <module>openecomp-sdc-action-core</module>
    </modules>

    
</project>
dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */ }
/*-
 * ============LICENSE_START=======================================================
 * SDC
 * ================================================================================
 * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
 * ================================================================================
 * 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.
 * ============LICENSE_END=========================================================
 */
/**
 * Created by obarda on 1/27/2016.
 */
/// <reference path="../../references"/>
module Sdc.Directives {
    'use strict';

    export class FileUploadModel {
        filetype: string;
        filename: string;
        filesize: number;
        base64: string;
    }

    export interface IFileUploadScope extends ng.IScope {
        fileModel: FileUploadModel;
        formElement:ng.IFormController;
        extensions: string;
        elementDisabled: string;
        elementName: string;
        elementRequired: string;
        myFileModel: any; // From the ng bind to <input type=file
        defaultText: string;
        onFileChangedInDirective:Function;

        getExtensionsWithDot():string;
        onFileChange():void
        onFileClick(element:any):void;
        setEmptyError(element):void;
        validateField(field:any):boolean;
        cancel():void;
    }


    export class FileUploadDirective implements ng.IDirective {

        constructor(private $templateCache:ng.ITemplateCacheService, private sdcConfig:Models.IAppConfigurtaion) {
        }

        scope = {
            fileModel: '=',
            formElement: '=',
            extensions: '@',
            elementDisabled: '@',
            elementName: '@',
            elementRequired: '@',
            onFileChangedInDirective: '=?',
            defaultText: '=',
        };

        restrict = 'E';
        replace = true;
        template = ():string => {
            return this.$templateCache.get('/app/scripts/directives/file-upload/file-upload.html');
        };

        link = (scope:IFileUploadScope, element:any, $attr:any) => {

            // In case the browse has filename, set it valid.
            // When editing artifact the file is not sent again, so if we have filename I do not want to show error.
            if (scope.fileModel && scope.fileModel.filename && scope.fileModel.filename!==''){
                scope.formElement[scope.elementName].$setValidity('required', true);
            }

            scope.getExtensionsWithDot = ():string => {
                let ret = [];
                if(scope.extensions) {
                    _.each(scope.extensions.split(','), function (item) {
                        ret.push("." + item.toString());
                    });
                }
                return ret.join(",");
            };

            scope.onFileChange = ():void => {
                if (scope.onFileChangedInDirective) {
                    scope.onFileChangedInDirective();
                }
                if (scope.myFileModel) {
                    scope.fileModel = scope.myFileModel;
                    scope.formElement[scope.elementName].$setValidity('required', true);
                }
            };

            scope.setEmptyError = (element):void => {
                if(element.files[0].size){
                    scope.formElement[scope.elementName].$setValidity('emptyFile', true);
                }else{
                    scope.formElement[scope.elementName].$setValidity('emptyFile', false);
                    scope.fileModel = undefined;
                }

            };

            // Workaround, in case user select a file then cancel (X) then select the file again, the event onChange is not fired.
            // This is a workaround to fix this issue.
            scope.onFileClick = (element:any):void => {
                element.value = null;
            };

            scope.cancel = ():void => {
                scope.fileModel.filename = '';
                scope.formElement[scope.elementName].$pristine;
                scope.formElement[scope.elementName].$setValidity('required', false);
            }
        };

        public static factory = ($templateCache:ng.ITemplateCacheService, sdcConfig:Models.IAppConfigurtaion)=> {
            return new FileUploadDirective($templateCache, sdcConfig);
        };

    }

    FileUploadDirective.factory.$inject = ['$templateCache', 'sdcConfig'];
}