Append overScheme to notifications explorer (#2012)
This commit is contained in:
parent
72511bca83
commit
b63217d878
|
@ -2,6 +2,9 @@
|
|||
# LemonLDAP::NG Notifications Explorer client
|
||||
###
|
||||
|
||||
# Max number of notifications to display (see overScheme)
|
||||
max = 25
|
||||
|
||||
scheme = [
|
||||
(v) ->
|
||||
"groupBy=substr(uid,1)"
|
||||
|
@ -11,6 +14,19 @@ scheme = [
|
|||
"uid=#{v}"
|
||||
]
|
||||
|
||||
# When number of children nodes exceeds "max" value
|
||||
# and does not return "null", a level is added. See
|
||||
# "$scope.updateTree" method
|
||||
overScheme =
|
||||
(v,level,over) ->
|
||||
# "v.length > over" avoids a loop if one user opened more than "max"
|
||||
# notifications
|
||||
console.log 'overSchema => level', level, 'over', over
|
||||
if level == 1 and v.length > over
|
||||
"uid=#{v}*&groupBy=substr(uid,#{(level+over+1)})"
|
||||
else
|
||||
null
|
||||
|
||||
# Session menu
|
||||
menu =
|
||||
actives: [
|
||||
|
@ -112,7 +128,7 @@ llapp.controller 'NotificationsExplorerCtrl', [ '$scope', '$translator', '$locat
|
|||
$scope.stoggle = (scope) ->
|
||||
node = scope.$modelValue
|
||||
if node.nodes.length == 0
|
||||
$scope.updateTree node.value, node.nodes, node.level, node.query
|
||||
$scope.updateTree node.value, node.nodes, node.level, node.over, node.query, node.count
|
||||
scope.toggle()
|
||||
|
||||
$scope.notifDate = (s) ->
|
||||
|
@ -139,19 +155,34 @@ llapp.controller 'NotificationsExplorerCtrl', [ '$scope', '$translator', '$locat
|
|||
$scope.init()
|
||||
|
||||
autoId = 0
|
||||
$scope.updateTree = (value, node, level, currentQuery) ->
|
||||
$scope.updateTree = (value, node, level, over, currentQuery, count) ->
|
||||
$scope.waiting = true
|
||||
query = scheme[level] value, currentQuery
|
||||
|
||||
# If number of notifications exceeds "max", call it
|
||||
if count > max
|
||||
if tmp = overScheme value, level, over
|
||||
over++
|
||||
query = tmp
|
||||
level = level - 1
|
||||
else
|
||||
over = 0
|
||||
else
|
||||
over = 0
|
||||
|
||||
# Launch HTTP query
|
||||
$http.get("#{scriptname}notifications/#{$scope.type}?#{query}").then (response) ->
|
||||
data = response.data
|
||||
if data.result
|
||||
for n in data.values
|
||||
autoId++
|
||||
n.id = "node#{autoId}"
|
||||
if level <scheme.length - 1
|
||||
if level < scheme.length - 1
|
||||
n.nodes = []
|
||||
n.level = level + 1
|
||||
n.query = query
|
||||
n.over = over
|
||||
|
||||
node.push n
|
||||
$scope.waiting = false
|
||||
, (resp) ->
|
||||
|
@ -246,7 +277,7 @@ llapp.controller 'NotificationsExplorerCtrl', [ '$scope', '$translator', '$locat
|
|||
$scope.currentNotification = null
|
||||
$q.all [
|
||||
$translator.init $scope.lang
|
||||
$scope.updateTree '', $scope.data, 0
|
||||
$scope.updateTree '', $scope.data, 0, 0
|
||||
]
|
||||
.then ->
|
||||
$scope.waiting = false
|
||||
|
|
|
@ -5,7 +5,9 @@
|
|||
*/
|
||||
|
||||
(function() {
|
||||
var llapp, menu, scheme;
|
||||
var llapp, max, menu, overScheme, scheme;
|
||||
|
||||
max = 25;
|
||||
|
||||
scheme = [
|
||||
function(v) {
|
||||
|
@ -17,6 +19,15 @@
|
|||
}
|
||||
];
|
||||
|
||||
overScheme = function(v, level, over) {
|
||||
console.log('overSchema => level', level, 'over', over);
|
||||
if (level === 1 && v.length > over) {
|
||||
return "uid=" + v + "*&groupBy=substr(uid," + (level + over + 1) + ")";
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
};
|
||||
|
||||
menu = {
|
||||
actives: [
|
||||
{
|
||||
|
@ -131,7 +142,7 @@
|
|||
var node;
|
||||
node = scope.$modelValue;
|
||||
if (node.nodes.length === 0) {
|
||||
$scope.updateTree(node.value, node.nodes, node.level, node.query);
|
||||
$scope.updateTree(node.value, node.nodes, node.level, node.over, node.query, node.count);
|
||||
return scope.toggle();
|
||||
}
|
||||
};
|
||||
|
@ -164,10 +175,21 @@
|
|||
}
|
||||
});
|
||||
autoId = 0;
|
||||
$scope.updateTree = function(value, node, level, currentQuery) {
|
||||
var query;
|
||||
$scope.updateTree = function(value, node, level, over, currentQuery, count) {
|
||||
var query, tmp;
|
||||
$scope.waiting = true;
|
||||
query = scheme[level](value, currentQuery);
|
||||
if (count > max) {
|
||||
if (tmp = overScheme(value, level, over)) {
|
||||
over++;
|
||||
query = tmp;
|
||||
level = level - 1;
|
||||
} else {
|
||||
over = 0;
|
||||
}
|
||||
} else {
|
||||
over = 0;
|
||||
}
|
||||
return $http.get(scriptname + "notifications/" + $scope.type + "?" + query).then(function(response) {
|
||||
var data, i, len, n, ref;
|
||||
data = response.data;
|
||||
|
@ -181,6 +203,7 @@
|
|||
n.nodes = [];
|
||||
n.level = level + 1;
|
||||
n.query = query;
|
||||
n.over = over;
|
||||
}
|
||||
node.push(n);
|
||||
}
|
||||
|
@ -301,7 +324,7 @@
|
|||
$scope.data = [];
|
||||
$scope.currentScope = null;
|
||||
$scope.currentNotification = null;
|
||||
$q.all([$translator.init($scope.lang), $scope.updateTree('', $scope.data, 0)]).then(function() {
|
||||
$q.all([$translator.init($scope.lang), $scope.updateTree('', $scope.data, 0, 0)]).then(function() {
|
||||
return $scope.waiting = false;
|
||||
}, function(resp) {
|
||||
return $scope.waiting = false;
|
||||
|
|
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user