This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository mum. See http://git.chorem.org/mum.git commit 2d2c6ffdab92de0ad559be1fac1b00f9ae43a746 Author: Alexis Guilbaud <guilbaud@codelutin.com> Date: Thu Mar 26 18:06:16 2015 +0100 qques changements dans l'affichage des groupes + affichage des abonnements dans la page User --- run.sh | 2 +- static/js/controllers/dashboardCtrl.js | 5 +-- static/js/controllers/groupCtrl.js | 9 +++- static/js/controllers/hostPageCtrl.js | 2 +- static/js/controllers/profileCtrl.js | 2 +- static/js/controllers/usersCtrl.js | 41 ++++++++++++++++++ static/js/mumApp.js | 4 +- views/groups.html | 18 +++++--- views/profile.html | 2 +- views/users.html | 76 +++++++++++++++++++++++++++++++--- 10 files changed, 139 insertions(+), 22 deletions(-) diff --git a/run.sh b/run.sh index 27e1d7f..7bb42c9 100755 --- a/run.sh +++ b/run.sh @@ -1,3 +1,3 @@ #!/bin/sh -exec ./in-venv.sh python app/app.py +exec ./in-venv.sh python app/app.py $* diff --git a/static/js/controllers/dashboardCtrl.js b/static/js/controllers/dashboardCtrl.js index 95ced9e..cf5b417 100644 --- a/static/js/controllers/dashboardCtrl.js +++ b/static/js/controllers/dashboardCtrl.js @@ -54,10 +54,7 @@ mumApp.controller('dashboardCtrl', function($scope, $filter, $routeParams, DataH // Concerning the table manipulation var searchMatch = function (haystack, needle) { - if (!needle) { - return true; - } - return haystack.toLowerCase().indexOf(needle.toLowerCase()) !== -1; + return !needle || haystack.toLowerCase().indexOf(needle.toLowerCase()) !== -1; }; // init the filtered items diff --git a/static/js/controllers/groupCtrl.js b/static/js/controllers/groupCtrl.js index f4596a6..eae2023 100644 --- a/static/js/controllers/groupCtrl.js +++ b/static/js/controllers/groupCtrl.js @@ -107,8 +107,15 @@ mumApp.controller('groupCtrl', function($scope, $rootScope, $filter, $route, $ro selected[selected.length] = host; } } + var groups_without_all = []; + var allGroups = $scope.allGroups() + for(n in allGroups){ + if(allGroups[n] != 'all'){ + groups_without_all[groups_without_all.length] = allGroups[n]; + } + } return {"selected": selected, - "groups": $scope.allGroups()}; + "groups": groups_without_all}; } } }); diff --git a/static/js/controllers/hostPageCtrl.js b/static/js/controllers/hostPageCtrl.js index f3289aa..3b475a8 100644 --- a/static/js/controllers/hostPageCtrl.js +++ b/static/js/controllers/hostPageCtrl.js @@ -333,7 +333,7 @@ mumApp.controller('ModalConnInstanceCtrl', function ($scope, $rootScope, $modalI }; }); -mumApp.controller('ModalConfConnInstanceCtrl', function ($scope, $rootScope, $modalInstance, $templateCache, conf_conn_args, FileUploader) { +mumApp.controller('ModalConfConnInstanceCtrl', function ($scope, $rootScope, $modalInstance, $templateCache, $route, conf_conn_args, FileUploader) { $scope.uploader = new FileUploader({ url: '/upload' }); diff --git a/static/js/controllers/profileCtrl.js b/static/js/controllers/profileCtrl.js index 2ca21a6..31cdda8 100644 --- a/static/js/controllers/profileCtrl.js +++ b/static/js/controllers/profileCtrl.js @@ -92,7 +92,7 @@ mumApp.controller('ModalSubscriptionsInstanceCtrl', function ($scope, $rootScope }); $scope.get_class = function(sub_part, sub_type, target_name, notif_mod){ - res = ""; + var res = ""; if($scope.user_subscriptions[sub_part][target_name][sub_type][notif_mod]['activated']){ res = "success"; } diff --git a/static/js/controllers/usersCtrl.js b/static/js/controllers/usersCtrl.js index 87237d3..fc48ff8 100644 --- a/static/js/controllers/usersCtrl.js +++ b/static/js/controllers/usersCtrl.js @@ -7,6 +7,23 @@ mumApp.controller('usersCtrl', function($scope, $rootScope, $route) { $scope.new_username = ""; + $scope.user_subscriptions = {}; /* + { + 'hosts':{ + addr_host:{ + 'major':{ + notif_mod:{ + 'priority': int, + 'activated': bool + }, ... + } + 'minor':{...} + }, ... + }, + 'groups':{ ... } + } + */ + $rootScope.$broadcast("sendViaWs", JSON.stringify({"CALL_FUNC_DB": {'func': 'get_users', 'args': null}})); // receiving the user list @@ -16,6 +33,14 @@ mumApp.controller('usersCtrl', function($scope, $rootScope, $route) { $scope.users = args.res; }); } + if(args.func == 'create_user' || args.func == 'remove_user'){ + $route.reload(); + } + if(args.func == 'get_user_subscriptions'){ + $scope.$apply(function(){ + $scope.user_subscriptions = args.res; + }); + } }); $scope.addUser = function(){ @@ -31,4 +56,20 @@ mumApp.controller('usersCtrl', function($scope, $rootScope, $route) { $rootScope.$broadcast("sendViaWs", JSON.stringify({"CALL_FUNC_DB": {'func': 'remove_user', 'args': args}})); $route.reload(); } + + $scope.get_user_subscriptions = function(){ + if($scope.selected_user != ''){ + $rootScope.$broadcast("sendViaWs", JSON.stringify({"CALL_FUNC_DB": {'func': 'get_user_subscriptions', + 'args': $scope.selected_user}})); + } + } + + $scope.get_class = function(sub_part, sub_type, target_name, notif_mod){ + var res = ""; + if($scope.user_subscriptions[sub_part][target_name][sub_type][notif_mod]['activated']){ + res = "success"; + } + return res; + } + }); \ No newline at end of file diff --git a/static/js/mumApp.js b/static/js/mumApp.js index 75d3325..15d9897 100644 --- a/static/js/mumApp.js +++ b/static/js/mumApp.js @@ -65,7 +65,7 @@ mumApp.config(function($routeProvider){ mumApp.$inject = ['$scope', '$filter']; -mumApp.directive("customSort", function() { +/*mumApp.directive("customSort", function() { return { restrict: 'A', transclude: true, @@ -104,7 +104,7 @@ scope.selectedCls = function(column) { } -}); +});*/ // https://github.com/angular-ui/angular-ui-OLDREPO/blob/master/modules/filters... (MIT licence) mumApp.filter('unique', function () { diff --git a/views/groups.html b/views/groups.html index cfd6a3d..76e5ef5 100644 --- a/views/groups.html +++ b/views/groups.html @@ -37,24 +37,30 @@ </tr> </tbody> </table> - <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#modal_add" ng-click="open_modal_group()">Add selected to group...</button> + <button type="button" class="btn btn-primary" + ng-click="open_modal_group()" + ng-disable="selection=={}">Add selected to group...</button> <button ng-show="grp != 'all' || ''" type="button" class="btn btn-danger" ng-click="remove_host_list()">Remove selected from {{grp}}</button> </div> </div> <script type="text/ng-template" id="modal_group_label.html"> <div class="modal-header"> - <h3 class="modal-title">Add to group</h3> + <h3 class="modal-title">Add {{group_args.selected}}</h3> </div> <div class="modal-body"> <form> <div class="form-group"> - <label for="list_grp">From an existing group</label> - <select class="form-control" id="list_grp" ng-model="selected_grp" ng-options= - "item for item in group_args.groups | unique:'group'"> + <label for="list_grp">to an existing group</label> + <select class="form-control" id="list_grp" + ng-model="selected_grp" + ng-options="item for item in group_args.groups | unique:'group'" + ng-disabled="new_grp_name!=''"> </select> <label for="grp_name">Or create a new group</label> - <input type="text" class="form-control" id="grp_name" ng-model="new_grp_name"> + <input type="text" class="form-control" id="grp_name" + ng-model="new_grp_name" + ng-change="selected_grp = ''"> </div> </form> </div> diff --git a/views/profile.html b/views/profile.html index 1ed35ae..39b8411 100644 --- a/views/profile.html +++ b/views/profile.html @@ -34,7 +34,7 @@ <input type="email" class="form-control" id="mail" ng-model="email"> </div> <div class="row"></div> - <div class="col-xs-4"> + <div class="col-xs-8"> <label for="cellphone">SMS URL</label> <input type="text" class="form-control" id="cellphone" ng-model="sms_url"> </div> diff --git a/views/users.html b/views/users.html index dfe9c5c..60a8d7b 100644 --- a/views/users.html +++ b/views/users.html @@ -1,15 +1,81 @@ <div class="col-md-offset-2 main"> - <h1 class="page-header">Users</h1> + <h1 class="page-header">Users <small>{{selected_user}}</small></h1> <div class="row"> <div class="col-xs-4"> <label for="usrlist">Registered users</label> - <select class="form-control input-sm" id="usrlist" ng-model="selected_user" ng-options="user as user for user in users"></select> + <select class="form-control input-sm" id="usrlist" + ng-model="selected_user" + ng-options="user as user for user in users" + ng-change="get_user_subscriptions()"></select> </div> </div> <button type="button" class="btn btn-primary" data-toggle="popover" - data-placement="bottom" title="Add user..." data-content="ger" ng-click="show_new_user=!show_new_user">Add user</button> + data-placement="bottom" title="Add user..." data-content="ger" + ng-click="show_new_user=!show_new_user">Add user</button> <input type="text" ng-show="show_new_user" ng-model="new_username"> - <button type="button" class="btn btn-primary" ng-show="show_new_user && new_username!=''" ng-click="addUser()">Create user</button> - <button type="button" class="btn btn-danger" ng-show="selected_user!='' && selected_user!=null" ng-click="removeUser()">Remove {{selected_user}}</button> + <button type="button" class="btn btn-primary" + ng-show="show_new_user && new_username!=''" + ng-click="addUser()">Create user + </button> + <button type="button" class="btn btn-danger" + ng-show="selected_user!='' && selected_user!=null" + ng-click="removeUser()">Remove {{selected_user}} + </button> + + <div ng-show="selected_user!=''"> + <p>Subscriptions summary:</p> + <table class="table table-hover"> + <thead> + <tr> + <th>Host</th> + <th>Notification service</th> + <th>Minor</th> + <th>Major</th> + </tr> + </thead> + <tbody> + <tr ng-repeat-start="(addr_host, host) in user_subscriptions.hosts"> + <td>{{addr_host}}</td> + </tr> + <tr ng-repeat-end + ng-repeat="(notif_mod_name, notif_mod) in host.minor"> + <td></td> + <td>{{notif_mod_name}}</td> + <td class="{{get_class('hosts', 'minor', addr_host, notif_mod_name)}}"> + {{notif_mod.priority}} + </td> + <td class="{{get_class('hosts', 'major', addr_host, notif_mod_name)}}"> + {{user_subscriptions.hosts[addr_host].major[notif_mod_name].priority}} + </td> + </tr> + </tbody> + </table> + <table class="table table-hover"> + <thead> + <tr> + <th>Group</th> + <th>Notification service</th> + <th>Minor</th> + <th>Major</th> + </tr> + </thead> + <tbody> + <tr ng-repeat-start="(grp_name, grp) in user_subscriptions.groups"> + <td>{{grp_name}}</td> + </tr> + <tr ng-repeat-end + ng-repeat="(notif_mod_name, notif_mod) in grp.minor"> + <td></td> + <td>{{notif_mod_name}}</td> + <td class="{{get_class('groups', 'minor', grp_name, notif_mod_name)}}"> + {{notif_mod.priority}} + </td> + <td class="{{get_class('groups', 'major', grp_name, notif_mod_name)}}"> + {{user_subscriptions.groups[grp_name].major[notif_mod_name].priority}} + </td> + </tr> + </tbody> + </table> + </div> </div> -- To stop receiving notification emails like this one, please contact chorem.org SCM administrator <admin+scm@chorem.org>.