This repository has been archived on 2024-01-30. You can view files and clone it, but cannot push or open issues or pull requests.
trev/nodejs/public/javascripts/angularApp.js

242 lines
5.6 KiB
JavaScript
Raw Normal View History

2016-01-12 17:49:13 +01:00
var app = angular.module('autome', ['ui.router']);
app.config(['$stateProvider', '$urlRouterProvider',function($stateProvider, $urlRouterProvider) {
$stateProvider
.state('home', {
url: '/home',
templateUrl: '/home.html',
controller: 'MainCtrl',
2016-02-23 17:48:14 +01:00
onEnter: ['$state', 'auth', function ($state, auth) {
if (!auth.isLoggedIn()) {
$state.go('login');
}
2016-02-23 22:57:11 +01:00
}],
resolve: {
postPromise: ['arduino', function(arduino) {
return arduino.getRCs();
}]
}
2016-01-12 17:49:13 +01:00
2016-02-23 17:48:14 +01:00
})
.state('login', {
url: '/login',
templateUrl: '/login.html',
controller: 'AuthCtrl',
onEnter: ['$state', 'auth', function ($state, auth) {
if (auth.isLoggedIn()) {
$state.go('home');
}
}]
})
.state('register', {
url: '/register',
templateUrl: '/register.html',
controller: 'AuthCtrl',
onEnter: ['$state', 'auth', function ($state, auth) {
if (!auth.isLoggedIn()) {
$state.go('home');
}
}]
2016-01-12 17:49:13 +01:00
});
$urlRouterProvider.otherwise('home');
}]);
2016-02-23 17:48:14 +01:00
app.factory('auth', ['$http', '$window', function ($http, $window) {
var auth = {};
auth.saveToken = function (token) {
$window.localStorage['autohome-token'] = token;
};
auth.getToken = function () {
return $window.localStorage['autohome-token'];
};
auth.isLoggedIn = function () {
var token = auth.getToken();
if (token) {
var payload = JSON.parse($window.atob(token.split('.')[1]));
return payload.exp > Date.now() / 1000;
}
return false;
};
auth.currentUser = function () {
if (auth.isLoggedIn()) {
var token = auth.getToken();
var payload = JSON.parse($window.atob(token.split('.')[1]));
return payload.username;
}
};
2016-01-12 17:49:13 +01:00
2016-02-23 17:48:14 +01:00
auth.register = function (user) {
return $http.post('/register', user, {
headers: {Authorization: 'Bearer '+auth.getToken()}
}).success(function (data) {
auth.saveToken(data.token);
});
};
auth.logIn = function (user) {
return $http.post('/login', user).success(function (data) {
auth.saveToken(data.token);
});
};
auth.logOut = function () {
$window.localStorage.removeItem('autohome-token');
};
return auth;
}]);
app.factory('arduino', ['$http', 'auth', function($http, auth){
var o = {
RCs: []
};
2016-01-12 17:49:13 +01:00
2016-02-27 21:11:49 +01:00
o.emptyrc = {
name: '',
on_value: '',
off_value:'',
tristate: true
};
o.getRCs = function () {
return $http.get('/getRCs',{
headers: {Authorization: 'Bearer '+auth.getToken()}
}).success(function(data) {
angular.copy(data, o.RCs);
});
}
o.sendRC = function (RC) {
var code = (RC.state) ? RC.off_value : RC.on_value;
return $http.post('/sendRC', {code}, {
headers: {Authorization: 'Bearer '+auth.getToken()}
}).success(function (data) {
RC.state = !RC.state;
});
}
o.addRC = function (RC) {
return $http.post('/addRC', RC, {
headers: {Authorization: 'Bearer '+auth.getToken()}
}).success(function (data) {
console.log(data);
RC.id = data.insertId;
o.RCs.push(RC);
});
}
o.deleteRC = function (RC) {
var id = RC.id;
return $http.post('/deleteRC', {id}, {
headers: {Authorization: 'Bearer '+auth.getToken()}
}).success(function (data) {
o.RCs.splice(o.RCs.indexOf(RC), 1);
});
}
o.irTest = function () {
return $http.get('/irTest',{
headers: {Authorization: 'Bearer '+auth.getToken()}
});
}
2016-01-21 22:01:57 +01:00
return o;
2016-01-12 17:49:13 +01:00
}]);
2016-02-23 17:48:14 +01:00
app.controller('MainCtrl', [
'$scope',
'arduino',
function ($scope, arduino){
2016-02-27 21:11:49 +01:00
$scope.RCs = arduino.RCs;
$scope.sendRC = arduino.sendRC;
$scope.irTest = arduino.irTest;
2016-02-27 21:11:49 +01:00
$scope.newrc = angular.copy(arduino.emptyrc);
2016-02-18 15:44:58 +01:00
$scope.modal={
shown: false
2016-01-21 22:01:57 +01:00
};
2016-02-27 21:11:49 +01:00
$scope.toggleModal = function() {
$scope.modal.shown = !$scope.modal.shown;
2016-02-27 21:11:49 +01:00
$scope.newrc = angular.copy(arduino.emptyrc);
};
2016-02-27 21:11:49 +01:00
$scope.addRC = function(){
console.log($scope.newrc);
$scope.modal.shown = !$scope.modal.shown;
2016-02-27 21:11:49 +01:00
$scope.newrc = angular.copy(arduino.emptyrc);
}
$scope.deleteRC = function(RC) {
$scope.newrc = RC;
$scope.modal.shown = !$scope.modal.shown;
console.log($scope.newrc);
}
2016-02-23 17:48:14 +01:00
}]);
app.controller('AuthCtrl', [
'$scope',
'$state',
'auth',
function($scope, $state, auth){
$scope.user = {};
$scope.register = function(){
auth.register($scope.user).error(function(error){
$scope.error = error;
}).then(function(){
$state.go('home');
});
};
$scope.logIn = function(){
auth.logIn($scope.user).error(function(error){
$scope.error = error;
}).then(function(){
$state.go('home');
});
};
}]);
app.controller('NavCtrl', [
'$scope',
'auth',
function($scope, auth){
$scope.isLoggedIn = auth.isLoggedIn;
$scope.currentUser = auth.currentUser;
$scope.logOut = auth.logOut;
2016-02-27 21:11:49 +01:00
}]);
app.directive('modal', function() {
return {
restrict: 'E',
scope: {
show: '='
},
replace: true,
transclude: true,
link: function($scope, element, attrs) {
$scope.dialogStyle = {};
if (attrs.width)
$scope.dialogStyle.width = attrs.width;
if (attrs.height)
$scope.dialogStyle.height = attrs.height;
$scope.hideModal = function() {
$scope.show = false;
};
},
templateUrl: '/modal.html'
};
});