summaryrefslogtreecommitdiffstats
path: root/afm-client/app/Frontend
diff options
context:
space:
mode:
authorFulup Ar Foll <fulup@iot.bzh>2016-05-29 15:50:40 +0200
committerFulup Ar Foll <fulup@iot.bzh>2016-05-29 15:50:40 +0200
commit96190f9cd583d9182c692c88d3342109bad81157 (patch)
tree5d5b098e64c14b7be1da47961ed6600ce355020b /afm-client/app/Frontend
parent922b183f441a6e68b55592596fa62cc6e1814f74 (diff)
Clean up to prepare new version of API
Diffstat (limited to 'afm-client/app/Frontend')
-rw-r--r--afm-client/app/Frontend/etc/AppConfig.js35
-rw-r--r--afm-client/app/Frontend/pages/Dashboard/DashboardModule.js26
-rw-r--r--afm-client/app/Frontend/widgets/ActionButtons/AppliButton.js40
-rw-r--r--afm-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js69
4 files changed, 104 insertions, 66 deletions
diff --git a/afm-client/app/Frontend/etc/AppConfig.js b/afm-client/app/Frontend/etc/AppConfig.js
index be5a107..d24a626 100644
--- a/afm-client/app/Frontend/etc/AppConfig.js
+++ b/afm-client/app/Frontend/etc/AppConfig.js
@@ -31,17 +31,40 @@
return myConfig;
})
- // Factory is a singleton and share its context within all instances.
+ // Factory is a singleton and share its context within all instances.
.factory('AppCall', function ($http, AppConfig, $log) {
+
var myCalls = {
- get : function(plugin, action, query, callback) {
+ get : function(plugin, action, query, cbresponse, cberror) {
+
+ var onerror = function(response) {
+ if (cberror) cberror(response.data, response.status, response.config);
+ else cbresponse(response.data, response.status, response.config);
+ };
+
+ var onsuccess =function(response) {
+ if (!response.data || !response.data.request) {
+ onerror (response);
+ return;
+ }
+
+ var request=response.data.request;
+
+ // if token was updated keep it within application cache
+ if (request.token) AppConfig.session.token = request.token;
+ if (request.uuid) AppConfig.session.uuid = request.uuid;
+ if (request.timeout) AppConfig.session.timeout = request.timeout;
+
+ cbresponse(response.data, response.status, response.config);
+ };
+
+
if (!query.token) query.token = AppConfig.session.token; // add token to provided query
- $http.get('/api/' + plugin + '/' + action , {params: query}).then (callback, callback);
+ if (!query.reqid) query.reqid = action; // use action as default requestID
+ var handle= $http.get('/api/' + plugin + '/' + action , {params: query}).then(onsuccess, onerror);
+
}
-
};
return myCalls;
});
-
-
})();
diff --git a/afm-client/app/Frontend/pages/Dashboard/DashboardModule.js b/afm-client/app/Frontend/pages/Dashboard/DashboardModule.js
index dff21ed..3bde5a9 100644
--- a/afm-client/app/Frontend/pages/Dashboard/DashboardModule.js
+++ b/afm-client/app/Frontend/pages/Dashboard/DashboardModule.js
@@ -29,27 +29,29 @@ angular.module('DashboardModule', ['SubmitButton', 'TokenRefresh', 'AppliButton'
scope.GetRunnables = function() {
console.log ("Dashboard GetRunnables");
- AppCall.get ("afm-main", "runnables", {/*query*/}, function(response) {
+ AppCall.get ("afm-main", "runnables", {/*query*/}, function(jresp, errcode) {
// update debug UI zone
scope.request = "/api/afm-main/runnable";
- scope.response = response.data;
- scope.errcode = response.status;
-
- if (response.status !== 200) {
- console.log ("Hoop GetRunnable failed");
- return;
- }
-
- // Check this is a valid response from Binder
- if (response.data.jtype != "afb-reply") {
+ scope.response = jresp.response;
+ scope.errcode = jresp.request.status;
+
+ // Check if this is a response from AGL application framework binder
+ if (jresp.jtype !== "afb-reply") {
Notification.error ({message: "Invalid Respond to /opa/afm-main/runnable response.data="+response.data, delay: 5000});
return;
}
+
+ // Check for success
+ if (jresp.request.status !== "success") {
+ Notification.error ({message: "afm-main/runnable" + jresp.request.info, delay: 5000});
+ return;
+ }
+
// loop on runnable application to prepare for display
var appliIDs=[];
- var runnables = response.data.response.runnables;
+ var runnables = jresp.response.runnables;
for (var idx=0; idx < runnables.length; idx ++) {
appliIDs[idx] = runnables [idx].id;
scope.appliStore [runnables [idx].id] = runnables [idx];
diff --git a/afm-client/app/Frontend/widgets/ActionButtons/AppliButton.js b/afm-client/app/Frontend/widgets/ActionButtons/AppliButton.js
index 269ee81..a10030c 100644
--- a/afm-client/app/Frontend/widgets/ActionButtons/AppliButton.js
+++ b/afm-client/app/Frontend/widgets/ActionButtons/AppliButton.js
@@ -57,17 +57,17 @@
scope.runmode = urlquery.runmode || "auto";
scope.clicked = function () {
- var notifyError = function(action, response) {
+ var notifyError = function(action, jresp) {
Notification.error ({message: "Fail /api/afm-main" + action + "=" + scope.label + " RunID="+ scope.appID, delay: 5000});
elem.addClass ("fail");
elem.removeClass ("success");
- scope.callback (scope.appID, action, response);
+ scope.callback (scope.appID, action, jresp);
};
- var notifySuccess = function (action, response) {
+ var notifySuccess = function (action, jresp) {
elem.removeClass ("fail");
- scope.runID = response.data.response.runid;
- scope.callback (scope.appID, action, response);
+ scope.runID = jresp.response.runid;
+ scope.callback (scope.appID, action, jresp);
};
var closeModApp = function() {
@@ -86,13 +86,13 @@
case "start":
if (scope.runstatus !== "stop") return;
- AppCall.get ("afm-main", "start", {id: scope.appID, mode: scope.runmode}, function(response) {
- if (response.status !== 200 || response.data.jtype !== "afb-reply") {
- notifyError ("start", response);
+ AppCall.get ("afm-main", "start", {id: scope.appID, mode: scope.runmode}, function(jresp, errcode) {
+ if (errcode !== 200 || jresp.jtype !== "afb-reply") {
+ notifyError ("start", jresp);
return;
}
scope.runstatus="start";
- notifySuccess (action, response);
+ notifySuccess (action, jresp);
if(response.data.response.uri)
scope.winapp= $window.open(response.data.response.uri.replace("%h", $location.host()));
});
@@ -101,9 +101,9 @@
case "stop":
if (scope.runstatus !== "start") return;
- AppCall.get ("afm-main", "terminate", {runid: scope.runID}, function(response) {
- if (response.status !== 200 || response.data.jtype !== "afb-reply") {
- notifyError ("stop", response);
+ AppCall.get ("afm-main", "terminate", {runid: scope.runID}, function(jresp, errcode) {
+ if (errcode !== 200 || jresp.jtype !== "afb-reply") {
+ notifyError ("stop", jresp);
return;
}
scope.runstatus="stop";
@@ -114,14 +114,14 @@
scope.winapp.close();
scope.winapp=false;
}
- notifySuccess (action, response);
+ notifySuccess (action, jresp);
});
break;
case "info":
- AppCall.get ("afm-main", "detail", {id: scope.appID}, function(response) {
- if (response.status !== 200 || response.data.jtype !== "afb-reply") {
- notifyError ("detail", response);
+ AppCall.get ("afm-main", "detail", {id: scope.appID}, function(jresp, errcode) {
+ if (errcode !== 200 || jresp.jtype !== "afb-reply") {
+ notifyError ("detail", jresp);
return;
}
@@ -144,13 +144,13 @@
case "uninstall":
if (scope.runstatus !== "stop") return;
- AppCall.get ("afm-main", "uninstall", {id: scope.appID}, function(response) {
- if (response.status !== 200 || response.data.jtype !== "afb-reply") {
- notifyError ("uninstall", response);
+ AppCall.get ("afm-main", "uninstall", {id: scope.appID}, function(jresp, errcode) {
+ if (errcode !== 200 || jresp.jtype !== "afb-reply") {
+ notifyError ("uninstall", jresp);
return;
}
- notifySuccess (action, response);
+ notifySuccess (action, jresp);
});
break;
diff --git a/afm-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js b/afm-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js
index 4d7aed6..3ddd270 100644
--- a/afm-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js
+++ b/afm-client/app/Frontend/widgets/Notifications/TokenRefreshSvc.js
@@ -25,7 +25,7 @@
'use strict';
var template =
- '<div class="afb-monitor" ng-click="getping()">' +
+ '<div class="afb-monitor" ng-click="getping()">' +
'<span class="afb-refresh-token" >afb://{{hostname}}:{{httpdport}}</span>' +
'<i class="{{icon}}"></i>' +
'</div>';
@@ -65,60 +65,74 @@ angular.module('TokenRefresh', ['AppConfig', 'ModalNotification'])
scope.status = 0;
};
- scope.onsuccess = function(jresp) {
- if (jresp.request.token) AppConfig.session.token = jresp.request.token;
- if (jresp.request.uuid) AppConfig.session.uuid = jresp.request.uuid;
- if (jresp.request.timeout) AppConfig.session.timeout = jresp.request.timeout;
+ scope.onsuccess = function(jresp, errcode) {
+
+ if (errcode !== 200 || jresp.request.status !== "success") {
+ Notification.warning ({message: "auto-connect :" + jresp.request.info, delay: 10000});
+ scope.offline();
+ return false;
+ }
if (scope.logged !== true) {
- Notification.success ({message: "AppFramework Binder Back to Live", delay: 3000});
+ Notification.success ({message: "AppFramework Binder Connected", delay: 3000});
scope.online();
if (scope.callback) scope.callback(jresp);
}
- scope.status = 1;
+
+ scope.status = 1;
+ return true;
};
// Check Binder status
scope.getping = function() {
- AppCall.get ("token", "ping", {/*query*/},function(result) {
- if (result.status === 200) scope.onsuccess (result.data);
- else scope.onerror();
+ AppCall.get (scope.plugin, "ping", {/*query*/},function(jresp, errcode) {
+ if (errcode !== 200 || jresp.request.status !== "success") {
+ Notification.warning ({message: jresp.request.info, delay: 5000});
+ scope.offline();
+ return;
+ }
// restart a new timer for next ping
$timeout (scope.getping, AppConfig.session.pingrate*1000);
- });
+ }, scope.onerror);
};
// Check Binder status
scope.refresh = function() {
- AppCall.get ("token", "refresh", {/*query*/},function(result) {
- if (result.status === 200) scope.onsuccess (result.data);
- else scope.onerror();
+ AppCall.get (scope.plugin, "refresh", {/*query*/}, function(jresp, errcode) {
+
+ scope.onsuccess (jresp, errcode);
+
// restart a new timer for next refresh
$timeout (scope.refresh, AppConfig.session.timeout *250);
- });
+ }, scope.onerror);
};
// Initial connection
- scope.tkcreate = function() {
-
- AppCall.get ("token", "create", {token: AppConfig.session.initial},function(result) {
- if (result.status === 200) scope.onsuccess (result.data);
- else scope.onerror();
- });
- };
+ scope.loggin = function() {
+ AppCall.get (scope.plugin, "connect", {token: AppConfig.session.initial}, function(jresp, errcode) {
+
+ if (!scope.onsuccess (jresp, errcode)) return;
+
+ // Intial token was accepted let's start ping & refresh
+ $timeout (scope.getping, AppConfig.session.pingrate*1000);
+ $timeout (scope.refresh, AppConfig.session.timeout *250);
+ }, scope.onerror);
+ };
+
+
+ // Parse Widget Parameters
+ scope.plugin = attrs.plugin || "auth";
scope.icon = attrs.icon || "fi-lightbulb";
scope.hostname = $location.host();
scope.httpdport = $location.port();
scope.autolog = JSON.parse(attrs.autolog || false);
- if (scope.autolog) scope.tkcreate();
-
- // Init ping and refresh process
- $timeout (scope.getping, AppConfig.session.pingrate*1000);
- $timeout (scope.refresh, AppConfig.session.timeout *250);
+ // autostart log if requested
+ if (scope.autolog) scope.loggin();
+
}
return {
@@ -133,4 +147,3 @@ angular.module('TokenRefresh', ['AppConfig', 'ModalNotification'])
})();
console.log ("Token Refresh Loaded");
-