diff options
author | Romain Forlot <romain.forlot@iot.bzh> | 2017-05-02 19:47:36 +0200 |
---|---|---|
committer | Romain Forlot <romain.forlot@iot.bzh> | 2017-05-02 19:47:36 +0200 |
commit | 64ffd7a9f9604805c01f8bb2fd32616c3adf3ec0 (patch) | |
tree | 264e2743e509b8d7993bc5550ce6140dfc4b151f /examples/html5/app/Frontend/pages/SampleHome | |
parent | 6d75b83627114cecd7992bb460f6908268a57967 (diff) |
Initial commit
Change-Id: I536251add63ef100b42a67e39a02fef117f2b414
Signed-off-by: Romain Forlot <romain.forlot@iot.bzh>
Diffstat (limited to 'examples/html5/app/Frontend/pages/SampleHome')
3 files changed, 209 insertions, 0 deletions
diff --git a/examples/html5/app/Frontend/pages/SampleHome/SampleHome.html b/examples/html5/app/Frontend/pages/SampleHome/SampleHome.html new file mode 100644 index 0000000..9c13ea9 --- /dev/null +++ b/examples/html5/app/Frontend/pages/SampleHome/SampleHome.html @@ -0,0 +1,34 @@ +<!-- Foundation Annotations generate tmp/route.js --> +--- +name: SampleHome +url: /sample-home +controller: SampleHomeController as ctrl +animationIn: slideInRight +--- + +<h3> +<img class="logo" src="images/logo/triskel_iot_bzhx250.png" alt="IoT.bzh Logo" style="height:150px;"> + App Framework - HTML5 Client +</h3> + +<token-refresh autolog="true" callback="ctrl.Initialised"></token-refresh> + + +<div class="button-box box-content "> + + <submit-button class="session-button {{ctrl.class.connect}}" icon="fi-unlock" label="Connect" clicked="ctrl.ConnectClient" ></submit-button> + <submit-button class="session-button {{ctrl.class.check}}" icon="fi-checkbox" label="Check" clicked="ctrl.CheckSession" ></submit-button> + <submit-button class="session-button {{ctrl.class.refresh}}" icon="fi-arrows-compress" label="Refresh" clicked="ctrl.RefreshSession" ></submit-button> + <submit-button class="session-button {{ctrl.class.logout}}" icon="fi-lock" label="Logout" clicked="ctrl.LogoutClient" ></submit-button> + +</div> +<div class="message-box box-content vertical grid-frame"> + <div class="response"> + <span class="grid-content noscroll req {{ctrl.status}} ">req= {{ctrl.request}}</span> + <span class="grid-content noscroll res {{ctrl.status}} ">res= {{ctrl.response}}</span> + <span class="grid-content noscroll status {{ctrl.status}}">status= {{ctrl.errcode}}</span> + </div> +</div> + + + diff --git a/examples/html5/app/Frontend/pages/SampleHome/SampleHome.js b/examples/html5/app/Frontend/pages/SampleHome/SampleHome.js new file mode 100644 index 0000000..1e404b8 --- /dev/null +++ b/examples/html5/app/Frontend/pages/SampleHome/SampleHome.js @@ -0,0 +1,104 @@ +(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('SampleHomeModule', ['SubmitButton', 'TokenRefresh','ModalNotification']) + + .controller('SampleHomeController', function (AppCall, Notification) { + var scope = this; // I hate JavaScript + scope.uuid ="none"; + scope.token ="none"; + scope.session="none"; + scope.status ="err-no"; + + console.log ("Home Controller"); + + scope.OnResponse= function(jresp, errcode) { + + // Update UI response global display zone + scope.status = jresp.request.status; + scope.errcode = errcode; + scope.request = jresp.request; + scope.response = jresp.response; + + var action=jresp.request.reqid.toUpperCase(); + + switch (action) { + case 'CONNECT': + if (jresp.request.status !== "success") { + Notification.error ({message: action + ": Logout before reconnecting", delay: 5000}); + scope.class [jresp.request.reqid]="fail"; + return; + } + scope.class={}; // reset CSS buttons classes + break; + + case 'LOGOUT': + if (jresp.request.status !== "success") { + Notification.error ({message: action + ": Do connect first", delay: 5000}); + scope.class [jresp.request.reqid]="fail"; + return; + } + scope.class={}; // reset CSS buttons classes + break; + + case 'REFRESH': + case 'CHECK': + if (jresp.request.status !== "success") { + Notification.error ({message: action + ": Need to be Connected to check/refresh session", delay: 5000}); + scope.class [jresp.request.reqid]="fail"; + return; + } + + break; + + default: + Notification.error ({message: "Invalid RequestID:" + jresp.request.reqid , delay: 5000}); + return; + } + + // update button classes within home.html + scope.class [jresp.request.reqid]="success"; + console.log ("OK: "+ JSON.stringify(jresp)); + }; + + scope.ProcessError= function(response, errcode, config) { + Notification.error ({message: "Invalid API:" + response.request.reqid , delay: 5000}); + scope.status = "err-fx"; + scope.errcode = errcode; + scope.request = response.request; + scope.response = ""; + console.log ("FX: "+ JSON.stringify(response)); + }; + + scope.ConnectClient = function() { + console.log ("ConnectClient"); + AppCall.get ("auth", "connect", {/*query*/}, scope.OnResponse, scope.InvalidApiCall); + }; + + scope.CheckSession = function() { + console.log ("CheckSession"); + AppCall.get ("auth", "check", {/*query*/}, scope.OnResponse, scope.InvalidApiCall); + + }; + + scope.RefreshSession = function() { + console.log ("RefreshSession"); + AppCall.get ("auth", "refresh", {/*query*/}, scope.OnResponse, scope.InvalidApiCall); + }; + + scope.LogoutClient = function() { + console.log ("LogoutClient"); + AppCall.get ("auth", "logout", {/*query*/}, scope.OnResponse, scope.InvalidApiCall); + }; + + scope.Initialised = function () { + scope.class = {connect: "success"}; + }; + + }); + +console.log ("SampleControler Loaded"); +})(); diff --git a/examples/html5/app/Frontend/pages/SampleHome/SampleHome.scss b/examples/html5/app/Frontend/pages/SampleHome/SampleHome.scss new file mode 100644 index 0000000..8bf04a1 --- /dev/null +++ b/examples/html5/app/Frontend/pages/SampleHome/SampleHome.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 <http://www.gnu.org/licenses/>. + */ + +@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; } + } + + +}; + + + |