arnaucube
arnaucube/commonroutesAppPublic Self-hosted repository
notification system fixed
arnaucode idoctnef@openmailbox.org
Fri, 23 Jun 2017 02:56:57 +0200
commit

1da3b98715c481ae65056f1a005bb9d1b98745f9

parent

3cf45d915d514e5b21d1e77d403f91cdf9c9cf21

M www/css/colors.css → www/css/colors.css

@@ -478,6 +478,11 @@ background: #263238;

color: #ffffff; } + +.ctext_blueGrey500{ + color: #607D8B!important; +} + .c_blueGradient1{ background: #2d4a56; background: -moz-linear-gradient(left, #2d4a56 0%, #1c2b36 100%);
M www/js/app.js → www/js/app.js

@@ -6,8 +6,8 @@ // the 2nd parameter is an array of 'requires'

// 'starter.controllers' is found in controllers.js -//var urlapi = "http://localhost:3000/api/"; -var urlapi = "http://192.168.1.36:3000/api/"; +var urlapi = "http://localhost:3000/api/"; +//var urlapi = "http://192.168.1.36:3000/api/"; //var urlapi = "http://51.255.193.106:3000/api/"; angular.module('starter', [

@@ -24,8 +24,8 @@ 'app.travels',

'app.travel', 'app.newTravel', 'app.offerCar', -/* 'app.askCar', - 'app.askPackage',*/ + /* 'app.askCar', + 'app.askPackage',*/ 'app.users', 'app.user', 'app.userTravels',

@@ -56,12 +56,14 @@ .config(function($stateProvider, $urlRouterProvider) {

$stateProvider .state('app', { + cache: false, url: '/app', abstract: true, templateUrl: 'templates/menu.html', controller: 'MenuCtrl' }) .state('app.main', { + cache: false, url: '/main', views: { 'menuContent': {

@@ -209,19 +211,19 @@ }

}); // if none of the above states are matched, use this as the fallback if ((localStorage.getItem("cim_app_token")) && (JSON.parse(localStorage.getItem("cim_app_userdata")) != "null") && (JSON.parse(localStorage.getItem("cim_app_userdata")) != null)) { - if ((window.location.hash == "#/app/login") || (window.location.hash == "#/app/signup")) { - window.location = '#/app/main'; - } - $urlRouterProvider.otherwise('/app/main'); - } else { - if ((window.location != "#/app/login") || (window.location != "#/app/signup")) { - console.log("removing data, and going to login"); - localStorage.removeItem("cim_app_token"); - localStorage.removeItem("cim_app_userdata"); - window.location = "#/app/login"; - $urlRouterProvider.otherwise('/app/login'); - } - } + if ((window.location.hash == "#/app/login") || (window.location.hash == "#/app/signup")) { + window.location = '#/app/main'; + } + $urlRouterProvider.otherwise('/app/main'); + } else { + if ((window.location != "#/app/login") || (window.location != "#/app/signup")) { + console.log("removing data, and going to login"); + localStorage.removeItem("cim_app_token"); + localStorage.removeItem("cim_app_userdata"); + window.location = "#/app/login"; + $urlRouterProvider.otherwise('/app/login'); + } + } })

@@ -244,29 +246,29 @@ $translateProvider.useSanitizeValueStrategy('escape');

}]) .factory('httpInterceptor', function httpInterceptor($q, $window, $location) { - return { - request: function (config) { - return config; - }, - requestError: function (config) { - return config; - }, - response: function (res) { - return res; - }, - responseError: function (res) { - return res; - } - } - }) - .factory('api', function ($http) { - return { - init: function () { - $http.defaults.headers.common['X-Access-Token'] = localStorage.getItem("cim_app_token"); - $http.defaults.headers.post['X-Access-Token'] = localStorage.getItem("cim_app_token"); - } - }; - }) - .run(function (api) { - api.init(); - }); + return { + request: function(config) { + return config; + }, + requestError: function(config) { + return config; + }, + response: function(res) { + return res; + }, + responseError: function(res) { + return res; + } + } + }) + .factory('api', function($http) { + return { + init: function() { + $http.defaults.headers.common['X-Access-Token'] = localStorage.getItem("cim_app_token"); + $http.defaults.headers.post['X-Access-Token'] = localStorage.getItem("cim_app_token"); + } + }; + }) + .run(function(api) { + api.init(); + });
M www/js/main.js → www/js/main.js

@@ -1,5 +1,23 @@

angular.module('app.main', ['pascalprecht.translate']) -.controller('MainCtrl', function($scope, $stateParams, $translate, $filter) { - -}); + .controller('MainCtrl', function($scope, $stateParams, $translate, $filter, + $ionicLoading, $http) { + if (localStorage.getItem("cim_app_userdata")) { + $scope.storageuser = JSON.parse(localStorage.getItem("cim_app_userdata")); + console.log($scope.storageuser); + } + //get the num of pendent notifications each time + $http.get(urlapi + 'numnotifications') + .then(function(data) { + $scope.storageuser.notifications = data.data; + console.log(data.data); + localStorage.setItem("cim_app_storageuser", JSON.stringify($scope.storageuser)); + }, function(data) { + console.log('data error'); + $ionicLoading.show({ + template: 'Error connecting server', + noBackdrop: true, + duration: 2000 + }); + }); + });
M www/js/menu.js → www/js/menu.js

@@ -10,6 +10,8 @@

$scope.logout = function() { localStorage.removeItem("cim_app_token"); localStorage.removeItem("cim_app_userdata"); + localStorage.removeItem("cim_app_storageuser"); + localStorage.removeItem("cim_app_notifications"); $window.location.reload(true); }; });
M www/js/notifications.js → www/js/notifications.js

@@ -1,25 +1,52 @@

angular.module('app.notifications', ['pascalprecht.translate']) -.controller('NotificationsCtrl', function($scope, $http, $ionicLoading, - $stateParams, $translate, $filter) { - $scope.notifications=[]; - $scope.doRefresh = function(){ - $http.get(urlapi + 'notifications') - .then(function(data){ - console.log(data); // for browser console - $scope.storageuser = JSON.parse(localStorage.getItem("cim_app_userdata")); - $scope.storageuser.notifications = data.data; - localStorage.setItem("cim_app_userdata", JSON.stringify($scope.storageuser)); + .controller('NotificationsCtrl', function($scope, $http, $ionicLoading, + $stateParams, $translate, $filter) { + $scope.notifications = []; + $scope.doRefresh = function() { + //first, if already have notifications, set to viewed + if(localStorage.getItem("cim_app_notifications")!=undefined){ + //console.log(localStorage.getItem("cim_app_notifications")); + $scope.notifications = JSON.parse(localStorage.getItem("cim_app_notifications")); + for(var i=0; i<$scope.notifications.length; i++){ + $scope.notifications[i].state = "viewed"; + } + localStorage.setItem("cim_app_notifications", JSON.stringify($scope.notifications)); + } + $http.get(urlapi + 'notifications') + .then(function(data) { + //console.log(data); // for browser console + /*$scope.storageuser = JSON.parse(localStorage.getItem("cim_app_userdata")); + $scope.storageuser.notifications = []; + console.log($scope.storageuser.notifications.length); + localStorage.setItem("cim_app_userdata", JSON.stringify($scope.storageuser));*/ + + //get the storage notifications + if (localStorage.getItem("cim_app_notifications")) { + $scope.notifications = JSON.parse(localStorage.getItem("cim_app_notifications")); + $scope.notifications = $scope.notifications.concat(data.data); // for UI + } else { + $scope.notifications = data.data; + } + //store the notifications + localStorage.setItem("cim_app_notifications", JSON.stringify($scope.notifications)); - $scope.notifications = data.data; // for UI - $scope.$broadcast('scroll.refreshComplete');//refresher stop + //now clean the notification number that is showed in the menu and main page, from the storageuser.notifications + /*$scope.storageuser = JSON.parse(localStorage.getItem("cim_app_userdata")); + $scope.storageuser.pendentnotifications = []; + localStorage.setItem("cim_app_userdata", JSON.stringify($scope.storageuser));*/ + $scope.$broadcast('scroll.refreshComplete'); //refresher stop - }, function(data){ - console.log('data error'); - $scope.$broadcast('scroll.refreshComplete');//refresher stop - $ionicLoading.show({ template: 'Error connecting server', noBackdrop: true, duration: 2000 }); + }, function(data) { + console.log('data error'); + $scope.$broadcast('scroll.refreshComplete'); //refresher stop + $ionicLoading.show({ + template: 'Error connecting server', + noBackdrop: true, + duration: 2000 + }); }); }; $scope.doRefresh(); -}); + });
M www/templates/menu.html → www/templates/menu.html

@@ -47,11 +47,11 @@ </a>

<a class="item item-icon-left o_bSidenav" menu-close ng-href="#/app/users"> <i class="icon ion-person-stalker"></i> {{'Users' | translate }} </a> - <a class="item item-icon-left o_bSidenav" menu-close ng-href="#/app/notifications"> + <!--<a class="item item-icon-left o_bSidenav" menu-close ng-href="#/app/notifications"> <i class="icon ion-android-notifications-none"></i> {{'Notifications' | translate }} <span class="badge o_purple300">{{storageuser.notifications.length}}</span> - </a> + </a>--> <a class="item item-icon-left o_bSidenav" menu-close ng-href="#/app/settings"> <i class="icon ion-settings"></i> {{'Settings' | translate }} </a>
M www/templates/newTravel.html → www/templates/newTravel.html

@@ -4,11 +4,11 @@ <a ng-href="#/app/offerCar" class="item item-icon-left o_purple500">

<i class="icon ion-android-car"></i> {{'Offer_Car' | translate}} </a> - <a href="#/app/askCar" class="item item-icon-left o_purple400"> + <a href="" class="item item-icon-left o_purple400"> <i class="icon ion-help"></i> {{'Ask_for_Car' | translate}} (not yet) </a> - <a href="#/app/askPackage" class="item item-icon-left o_purple300"> + <a href="" class="item item-icon-left o_purple300"> <i class="icon ion-ios-box"></i> {{'Ask_for_Package' | translate}} (not yet) </a>
M www/templates/notifications.html → www/templates/notifications.html

@@ -1,12 +1,22 @@

<ion-view view-title="{{'Notifications' | translate}}"> <ion-content class="has-footer"> - <ion-refresher - pulling-text="{{'Pull_to_refresh' | translate}}..." - on-refresh="doRefresh()"> - </ion-refresher> - <a ng-repeat="notification in notifications | orderBy: '-date'" - class="item item-icon-left" href="#/app/{{notification.link}}"> - <i class="icon ion-android-notifications-none"></i> + <ion-refresher pulling-text="{{'Pull_to_refresh' | translate}}..." on-refresh="doRefresh()"> + </ion-refresher> + <div ng-show="!notifications[0]" class="item"> + No notifications yet + </div> + <a ng-repeat="notification in notifications | orderBy: '-date'" ng-show="notification.state=='pendent'" + class="item item-icon-left c_deepPurple100" href="#/app/{{notification.link}}"> + <i ng-show="notification.state=='pendent'" class="icon ion-android-notifications-none o_text_purple600"></i> + <h2>{{notification.message}}</h2> + <div class="item-note text-right"> + <div class="o_text_purple600">{{notification.date | date:"dd/MM"}}</div> + <div class="o_text_purple600">{{notification.date | date:"HH:mm:ss"}}</div> + </div> + </a> + <a ng-repeat="notification in notifications | orderBy: '-date'" ng-show="notification.state=='viewed'" + class="item item-icon-left" href="#/app/{{notification.link}}"> + <i ng-show="notification.state=='viewed'" class="icon ion-android-notifications-none"></i> <h2>{{notification.message}}</h2> <div class="item-note text-right"> <div class="o_text_purple600">{{notification.date | date:"dd/MM"}}</div>