(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"); })();