summaryrefslogtreecommitdiffstats
path: root/ecomp-portal-FE-os/client/src/views/applications/applications.controller.js
blob: 08f00669966c5a5957176d19b2ebb3926f8d4cd8 (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
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
/*-
 * ================================================================================
 * eCOMP Portal
 * ================================================================================
 * Copyright (C) 2017 AT&T Intellectual Property
 * ================================================================================
 * 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.
 * ================================================================================
 */
'use strict';
(function () {
    class ApplicationsCtrl {

    	constructor($log, $cookies, conf, ngDialog,
        			applicationsService, confirmBoxService, userProfileService, utilsService) {
            this.emptyImgForPreview = 'data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==';
            let getOnboardingApps = () => {
                this.isLoadingTable = true;
                applicationsService.getOnboardingApps()
                    .then(appsList => {
                    	// Use proper back-end URL to load image
                    	for (var i = 0; i < appsList.length; i++) {
                    		appsList[i].imageLink = '';
                    		if (appsList[i].imageUrl)
                    			appsList[i].imageLink = conf.api.appThumbnail.replace(':appId', appsList[i].id);
                    	}
                    	this.appsList = appsList;
                    }).catch(err => {
                        confirmBoxService.showInformation('There was a problem retrieving the Applications. ' +
                            'Please try again later. Error Status: '+ err.status).then(isConfirmed => {});
                        $log.error('ApplicationsCtrl:openAddNewAppModal: Error: ', err);
                    }).finally(()=> {
                        this.isLoadingTable = false;
                    });
            };

            let init = () => {
                this.isLoadingTable = false;
                getOnboardingApps();
                this.searchString = '';
                this.appsTableHeaders = [
                    {name: 'Application Name', value: 'name', isSortable: true},
                    {name: 'Active', value: 'isEnabled', isSortable: true},
                    {name: 'Integration Type', value: 'restrictedApp', isSortable: true},
                    {name: 'Guest Access', value: 'isOpen', isSortable: true},
                    {name: 'URL', value: 'url', isSortable: true},
                    {name: 'REST URL', value: 'restUrl', isSortable: true},                
                    {name: 'Communication Topic', value: 'uebTopicName', isSortable: true},
                    {name: 'Communication Key', value: 'uebKey', isSortable: true},
                    {name: 'Communication Secret', value: 'uebSecret', isSortable: true},
                ];
                this.appsList = [];
            };

            init();

            this.openAddNewAppModal = (selectedApp) => {
                let data = null;
                if (selectedApp) {
                    if (!selectedApp.id) {
                        $log.error('App id not found');
                        return;
                    }
                    data = {
                        app: selectedApp
                    }
                }
                ngDialog.open({
                    templateUrl: 'app/views/applications/application-details-dialog/application-details.modal.html',
                    controller: 'AppDetailsModalCtrl',
                    controllerAs: 'appDetails',
                    data: data
                }).closePromise.then(needUpdate => {
                    if (needUpdate.value === true) {
                        $log.debug('ApplicationsCtrl:openAddNewAppModal: updating table data...');
                        getOnboardingApps();
                    }
                });


            };

            this.deleteApp = application => {
                $log.debug('ApplicationsCtrl:deleteApp:: ', application.name);

                confirmBoxService.deleteItem(application.name).then(isConfirmed => {
                    if(isConfirmed){
                        if(!application || !application.id){
                            $log.error('ApplicationsCtrl:deleteApp:: No application or ID... cannot delete');
                            return;
                        }
                        applicationsService.deleteOnboardingApp(application.id).then(() => {
                            this.appsList.splice(this.appsList.indexOf(application), 1);
                        }).catch(err => {
                            confirmBoxService.showInformation('There was a problem deleting the Application. ' +
                                'Please try again later. Error Status: '+ err.status).then(isConfirmed => {});
                            $log.error('ApplicationsCtrl:deleteApp: Error: ', err);
                        });
                    }
                }).catch(err => {
                    confirmBoxService.showInformation('There was a problem deleting the Application. ' +
                        'Please try again later. Error Status: '+ err.status).then(isConfirmed => {});
                    $log.error('ApplicationsCtrl:deleteApp error:: ', err);
                });

            };

        }
    }
    ApplicationsCtrl.$inject = ['$log', '$cookies', 'conf', 'ngDialog',
    				'applicationsService', 'confirmBoxService', 'userProfileService', 'utilsService'];
    angular.module('ecompApp').controller('ApplicationsCtrl', ApplicationsCtrl);
})();