From 3ebdce373e134b70b129154d8033c1c628847a6c Mon Sep 17 00:00:00 2001 From: Fulup Ar Foll Date: Mon, 25 Jan 2016 14:37:32 +0100 Subject: First version --- .../app/Frontend/pages/Dashboard/Dashboard.html | 33 ++++++++++ .../Frontend/pages/Dashboard/DashboardModule.js | 75 ++++++++++++++++++++++ .../Frontend/pages/Dashboard/DashboardModule.scss | 71 ++++++++++++++++++++ 3 files changed, 179 insertions(+) create mode 100644 afm-client/app/Frontend/pages/Dashboard/Dashboard.html create mode 100644 afm-client/app/Frontend/pages/Dashboard/DashboardModule.js create mode 100644 afm-client/app/Frontend/pages/Dashboard/DashboardModule.scss (limited to 'afm-client/app/Frontend/pages/Dashboard') diff --git a/afm-client/app/Frontend/pages/Dashboard/Dashboard.html b/afm-client/app/Frontend/pages/Dashboard/Dashboard.html new file mode 100644 index 0000000..c393271 --- /dev/null +++ b/afm-client/app/Frontend/pages/Dashboard/Dashboard.html @@ -0,0 +1,33 @@ + +--- +name: Dashboard +url: /dashboard +controller: DashboardController as ctrl +animationIn: slideInRight +--- + +

+ + Application Framework Manager Simple Client +

+ + + +
+ + +
+ + +
+
+ req= {{ctrl.request}} + res= {{ctrl.response}} + status= {{ctrl.errcode}} +
+
+ + + + + diff --git a/afm-client/app/Frontend/pages/Dashboard/DashboardModule.js b/afm-client/app/Frontend/pages/Dashboard/DashboardModule.js new file mode 100644 index 0000000..c075372 --- /dev/null +++ b/afm-client/app/Frontend/pages/Dashboard/DashboardModule.js @@ -0,0 +1,75 @@ +(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 (AppCall, 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.AppliCB = function (appliID) { + console.log ("Application Clicked ID=[%s]", appliID); + + }; + + scope.AppliCB = function(appliID, action, response) { + // Action is done within Widget Controller only update debug UI zone + scope.request = action; + scope.errcode = response.status; + if (response.data) scope.response = response.data; + }; + + scope.GetRunnables = function() { + console.log ("Dashboard GetRunnables"); + + AppCall.get ("afm-main", "runnables", {/*query*/}, function(response) { + + // 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.request.jtype !== "AJB_reply" && response.data.request.api !== "runnables") { + Notification.error ({message: "Invalid Respond to /opa/afm-main/runnable response.data="+response.data, delay: 5000}); + return; + } + + // loop on runnable application to prepare for display + var appliIDs=[]; + for (var idx=0; idx < response.data.response.length; idx ++) { + appliIDs[idx] = response.data.response [idx].id; + scope.appliStore [response.data.response [idx].id] = response.data.response [idx]; + } + scope.appliIDs = appliIDs; // avoid partial update to limit UI refresh + + }); + }; + + scope.FileUploaded = function (status) { + console.log ("file Uploaded"); + scope.GetRunnables(); + }; + + scope.AutoStart = function () { + console.log ("AutoStart requesting Apps list"); + scope.GetRunnables(); + }; + + }); + +console.log ("Dashboard Controller Loaded"); +})(); \ No newline at end of file diff --git a/afm-client/app/Frontend/pages/Dashboard/DashboardModule.scss b/afm-client/app/Frontend/pages/Dashboard/DashboardModule.scss new file mode 100644 index 0000000..8bf04a1 --- /dev/null +++ b/afm-client/app/Frontend/pages/Dashboard/DashboardModule.scss @@ -0,0 +1,71 @@ +/* + * Copyright (C) 2015 "IoT.bzh" + * Author "Fulup Ar Foll" + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +@import "app/ibz-mixins"; + +$COLOR_SUCCESS: green; +$COLOR_FAIL: red; + +token-refresh { + display: block; + float: right; + margin: .5rem 1rem 0 0; +} + +.button-box { + height : 4.5rem; + + .session-button { + float: left; + width: 5rem; + }; + + .response > span{ + display: block; + margin: .3rem .5rem .3rem .5rem; + } + + .fail { + color:$COLOR_FAIL; + border: 1px solid darken($COLOR_FAIL,10%); + } + .success { + color:$COLOR_SUCCESS; + border: 1px solid darken($COLOR_SUCCESS,10%); + } + +}; + +.message-box { + height : auto; + width: 100%; + font-size: .75rem; + + .response { + .err-no { color:grey; } + .res.err-ok { color: blue; } + .req.err-ok { color:blueviolet; } + .status.err-ok { color:green; } + .status.err-fx { color:red; } + } + + +}; + + + -- cgit 1.2.3-korg