X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=afm-client%2Fapp%2FFrontend%2Fwidgets%2FActionButtons%2FAppliButton.js;h=b7acb6b6c0ccded451d2a1cdf42b3f99f9e39a95;hb=d47fd84a6a16b1c9c4b4ce5a3279b9ecaea54c1b;hp=0ed0415e36c1a62921f3042805f9367ec7159496;hpb=cbe6ebb3e4a75269660caa6c2c9e8a97d384b4e2;p=src%2Fapp-framework-demo.git diff --git a/afm-client/app/Frontend/widgets/ActionButtons/AppliButton.js b/afm-client/app/Frontend/widgets/ActionButtons/AppliButton.js index 0ed0415..b7acb6b 100644 --- a/afm-client/app/Frontend/widgets/ActionButtons/AppliButton.js +++ b/afm-client/app/Frontend/widgets/ActionButtons/AppliButton.js @@ -31,10 +31,10 @@ '' + 'Application {{label}}' + '' + ''; @@ -50,22 +50,24 @@ ''; angular.module('AppliButton', []) - .directive('appliButton', function (AppConfig, AppCall, ModalFactory, Notification, $timeout) { + .directive('appliButton', function (AppConfig, AppCall, ModalFactory, Notification, $timeout, $window, $location, urlquery) { function mymethods(scope, elem, attrs) { + scope.runstatus = "stop"; + scope.runmode = urlquery.runmode || "auto"; scope.clicked = function () { - var notifyError = function(api, response) { - Notification.error ({message: "Fail /api/afm-main" + api + "=" + scope.label + " RunID="+ scope.appID, delay: 5000}); + var notifyError = function(action, response) { + 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, api, response); + scope.callback (scope.appID, action, response); }; - var notifySuccess = function (api, response) { + var notifySuccess = function (action, response) { elem.removeClass ("fail"); scope.runID = response.data.response.runid; - scope.callback (scope.appID, "/api/afm-main/start", response); + scope.callback (scope.appID, action, response); }; var closeModal = function() { @@ -79,24 +81,36 @@ switch (action) { case "start": - AppCall.get ("afm-main", "start", {id: scope.appID}, function(response) { + 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 !== "AJB_reply") { notifyError ("start", response); return; } - - notifySuccess ("start", response); + scope.runstatus="start"; + notifySuccess (action, response); + if(response.data.response.uri) + scope.winapp= $window.open(response.data.response.uri.replace("%h", $location.host())); }); break; case "stop": + if (scope.runstatus !== "start") return; + AppCall.get ("afm-main", "terminate", {runid: scope.runID}, function(response) { if (response.status !== 200 || response.data.jtype !== "AJB_reply") { notifyError ("stop", response); return; } + scope.runstatus="stop"; - notifySuccess ("stop", response); + // if a remote window app was open let's close it + if (scope.winapp) { + console.log ("Closing Application Window label=%s id=%s", scope.label, scope.appID); + scope.winapp.close(); + scope.winapp=false; + } + notifySuccess (action, response); }); break; @@ -109,6 +123,7 @@ // reference http://foundation.zurb.com/apps/docs/#!/angular-modules var config = { + id: 'appliInfoMenu', animationIn: 'slideInFromTop', contentScope: { close : closeModal, @@ -125,13 +140,14 @@ break; case "uninstall": + if (scope.runstatus !== "stop") return; AppCall.get ("afm-main", "uninstall", {id: scope.appID}, function(response) { if (response.status !== 200 || response.data.jtype !== "AJB_reply") { notifyError ("uninstall", response); return; } - notifySuccess ("uninstall", response); + notifySuccess (action, response); }); break; @@ -145,13 +161,15 @@ // reference http://foundation.zurb.com/apps/docs/#!/angular-modules var config = { + id: 'appliActionMenu', animationIn: 'slideInFromTop', contentScope: { - action : actionModal, - close : closeModal, - icon : scope.icon, - label : scope.label - }, template : tmplModal + action : actionModal, + runstatus: scope.runstatus, + close : closeModal, + icon : scope.icon, + label : scope.label + }, template : tmplModal }; // Popup Modal to render application data scope.modal = new ModalFactory(config); @@ -160,7 +178,7 @@ // extract application information from AppID+Store if (attrs.handle && scope.store [attrs.handle].name) { - scope.icon = AppConfig.paths.icons + scope.store [attrs.handle].name.toLowerCase() + '-ico.png'; + scope.icon = AppConfig.paths.icons + attrs.handle; //scope.store [attrs.handle].name.toLowerCase() + '-ico.png'; scope.label = scope.store [attrs.handle].name; scope.appID= attrs.handle; } else {