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
|
(function() {
'use strict';
// WARNING: make sure than app/frontend/services/AppConfig.js match your server
// list all rependencies within the page + controler if needed
angular.module('DashboardModule', ['SubmitButton', 'TokenRefresh', 'AppliButton'])
.controller('DashboardController', function ($http, AppConfig, Notification) {
var scope = this; // I hate JavaScript
scope.uuid ="none";
scope.token ="none";
scope.session="none";
scope.status ="err-no";
scope.appliIDs =[]; // array to hold applications ID
scope.appliStore={}; // array to hold applications json description
scope.ProcessResponse= function(data, errcode, headers, config) {
var apiname= 'API'+ data.request.api.replace('-','_');
scope.status = "err-ok";
scope.errcode= errcode;
scope.request = data.request;
scope.response = data.response;
// if token was refresh let's update AppConfig
if (data.request.token) AppConfig.session.token = data.request.token;
if (data.request.uuid) AppConfig.session.uuid = data.request.uuid;
if (data.request.timeout) AppConfig.session.timeout = data.request.timeout;
// Make sure we clean everything when Open/Close is called
if (apiname === "APIcreate" || apiname === "APIreset") {
scope.APIreset ='';
scope.APIcreate ='';
scope.APIrefresh='';
scope.APIcheck ='';
}
scope[apiname]="success";
// If we have a new token let's update it
if (data.request.token) scope.token=data.request.token;
console.log ("OK: "+ JSON.stringify(data));
};
scope.ProcessError= function(data, errcode, headers, config) {
var apiname= 'API'+data.request.api.replace('-','_');
scope.status = "err-fx";
scope.errcode = errcode;
scope.request = data.request;
scope.response = "";
scope[apiname]="fail";
console.log ("FX: "+ JSON.stringify(data));
};
scope.OpenSession = function() {
console.log ("OpenSession");
var handler = $http.get(AppConfig.session.create + '?token='+AppConfig.session.initial);
handler.success(scope.ProcessResponse);
handler.error(scope.ProcessError);
};
scope.CheckSession = function() {
console.log ("CloseSession");
var handler = $http.get(AppConfig.session.check + '?token='+AppConfig.session.token);
handler.success(scope.ProcessResponse);
handler.error(scope.ProcessError);
};
scope.RefreshSession = function() {
console.log ("RefreshSession");
var handler = $http.get(AppConfig.session.refresh + '?token='+AppConfig.session.token);
handler.success(scope.ProcessResponse);
handler.error(scope.ProcessError);
};
scope.ResetSession = function() {
console.log ("ResetSession");
var handler = $http.get(AppConfig.session.reset + '?token='+AppConfig.session.token);
handler.success(scope.ProcessResponse);
handler.error(scope.ProcessError);
};
scope.AppliCB = function (appliID) {
console.log ("Application Clicked ID=[%s]", appliID);
};
scope.AutoStart = function () {
console.log ("AutoStart requesting Apps list");
var handler = $http.get('/api/afm-main/runnables' + '?token='+AppConfig.session.token);
handler.success(function(result) {
// Check this is a valid response from Binder
if (result.request.jtype !== "AJB_reply" && result.request.api !== "runnables") {
Notification.error ({message: "Invalid Respond to /opa/afm-main/runnable result="+result, delay: 5000});
return;
}
// loop on runnable application to prepare for display
var appliIDs=[];
for (var idx=0; idx < result.response.length; idx ++) {
appliIDs[idx] = result.response [idx].id;
scope.appliStore [result.response [idx].id] = result.response [idx];
}
scope.appliIDs = appliIDs; // avoid partial update to limit UI refresh
});
};
});
console.log ("Dashboard Controller Loaded");
})();
|