aboutsummaryrefslogtreecommitdiffstats
path: root/vid-app-common/src/main/webapp/app/vid/scripts/services/asdcService.js
blob: 52adcc9498eeb10659fb5fbaac8c948da07e51f6 (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
93
94
95
96
97
98
99
100
101
102
103
104
/*-
 * ============LICENSE_START=======================================================
 * VID
 * ================================================================================
 * 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=========================================================
 */

"use strict";

var AsdcService = function ($http, $log, PropertyService, UtilityService, VIDCONFIGURATION, COMPONENT, DataService, featureFlags) {
    var shouldExcludeMacroFromAsyncInstantiationFlow = function(serviceModel){
            if (!featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_ASYNC_INSTANTIATION))
                return true;
			if (DataService.getE2EService())
				return true;
            if (!_.isEmpty(serviceModel.pnfs))
                return true;
            if (!_.isEmpty(serviceModel.collectionResource))
                return true;
            if (!_.isEmpty(serviceModel.networks) && !featureFlags.isOn(COMPONENT.FEATURE_FLAGS.FLAG_NETWORK_TO_ASYNC_INSTANTIATION))
                return true;
            if(serviceModel.service.instantiationType === "ClientConfig")
                return true;
            return false;
    };

    return {
        getModel: function (modelId, successCallbackFunction) {
            $log.debug("AsdcService:getModel: modelId: " + modelId);
            $http.get(
                "asdc/getModel/" + modelId
                + "?r=" + Math.random(),
                {
                    timeout: PropertyService
                        .getServerResponseTimeoutMsec()
                }).then(successCallbackFunction)["catch"]
            (UtilityService.runHttpErrorHandler);
        },

        shouldTakeTheDrawingBoardViewEdit: function(serviceModel) {
            if (serviceModel.service.vidNotions
                && serviceModel.service.vidNotions.viewEditUI
                && serviceModel.service.vidNotions.viewEditUI !== 'legacy'
            ) return true;

            return false;
        },

        shouldTakeTheAsyncInstantiationFlow: function(serviceModel) {
            // First of all, respect serviceModel.service.vidNotions.instantiationUI
            if (serviceModel.service.vidNotions
                && serviceModel.service.vidNotions.instantiationUI
                && serviceModel.service.vidNotions.instantiationUI !== 'legacy'
            ) return true;

            // If defined 'legacy' or not defined, other client-side
            // logic still apply:

            if (this.isMacro(serviceModel)
                && !shouldExcludeMacroFromAsyncInstantiationFlow(serviceModel)
            ) return true;

            // otherwise...
            return false;
        },

        isMacro: function (serviceModel) {
            if (serviceModel && serviceModel.service) {
                switch (serviceModel.service.instantiationType) {
                    case 'Macro':
                    case 'Both':
                        return true;
                    case 'A-La-Carte':
                        return false;
                    case 'ClientConfig':
                        console.debug("Looking for " + serviceModel.service.invariantUuid + " by Client Config");
                        return UtilityService.arrayContains(VIDCONFIGURATION.MACRO_SERVICES, serviceModel.service.invariantUuid);
                    default:
                        console.debug("Unexpected serviceModel.service.instantiationType: " + serviceModel.service.instantiationType);
                        return UtilityService.arrayContains(VIDCONFIGURATION.MACRO_SERVICES, serviceModel.service.invariantUuid);
                }
            } else {
                $log.debug("isMscro=false, because serviceModel.service is undefined");
                return false;
            }
        }
    };
};

appDS2.factory("AsdcService", ["$http", "$log", "PropertyService",
    "UtilityService", "VIDCONFIGURATION","COMPONENT", "DataService", "featureFlags", AsdcService]);