implement group filtering.

when going to the overview page, the groups will be retrieved, populating the dropdown list of group filters.
#64
This commit is contained in:
chris.watts90@outlook.com 2017-03-17 23:56:12 +00:00
parent 6034d55f03
commit 550b15a2f9

View File

@ -5,6 +5,7 @@
self.chosenMenuItemId = ko.observable(); self.chosenMenuItemId = ko.observable();
self.appDetails = ko.observable(null); self.appDetails = ko.observable(null);
self.userList = ko.observable(null); self.userList = ko.observable(null);
self.groupsList = ko.observable(null);
self.chosenUserDetails = ko.observable(null); self.chosenUserDetails = ko.observable(null);
self.userTimeLogData = ko.observable(null); self.userTimeLogData = ko.observable(null);
self.unassignedCardData = ko.observable(null); self.unassignedCardData = ko.observable(null);
@ -182,6 +183,18 @@
self.setPagination(self.userList().PageSize, data); self.setPagination(self.userList().PageSize, data);
} }
}; };
self.groupFilter = function(data) {
console.log("filter by group: " + data);
var args = [
{
key: "groupId",
value: data
}
];
var url = self.createRequestUrl("users", args, false, false);
location.hash = url;
console.log(url);
};
self.setPagination = function(pageSize, pageNumber) { self.setPagination = function(pageSize, pageNumber) {
var args = [ var args = [
{ {
@ -225,7 +238,7 @@
}); });
} }
} }
self.getUserList = function (pageSize, pageNumber) { self.getUserList = function (pageSize, pageNumber, groupId) {
var args = null; var args = null;
if (pageSize && pageNumber) { if (pageSize && pageNumber) {
args = [ args = [
@ -238,6 +251,12 @@
value: pageNumber value: pageNumber
} }
]; ];
} else if(groupId) {
args = [
{
key: "groupId",
value: groupId
}];
} }
var url = self.createRequestUrl(self.apiEndpoints.getUserList, args, false); var url = self.createRequestUrl(self.apiEndpoints.getUserList, args, false);
$.getJSON(url, function (res) { $.getJSON(url, function (res) {
@ -327,11 +346,12 @@
self.assignErrorObject(errObj.errorCode, errObj.errorMessage, "getUnassignedCardData"); self.assignErrorObject(errObj.errorCode, errObj.errorMessage, "getUnassignedCardData");
}); });
}; };
self.getGroups = function () { self.getGroups = function (successFunc) {
var url = self.createRequestUrl(self.apiEndpoints.getGroups, null, false); var url = self.createRequestUrl(self.apiEndpoints.getGroups, null, false);
return $.getJSON(url, function (res) { return $.getJSON(url, function (res) {
self.chosenUserDetails().Groups = res; successFunc(res);
self.chosenUserDetails.valueHasMutated(); //self.chosenUserDetails().Groups = res;
//self.chosenUserDetails.valueHasMutated();
}).fail(function (resp, status, error) { }).fail(function (resp, status, error) {
console.log("error - getGroups"); console.log("error - getGroups");
var errObj = self.processRequestFailure(resp, status, error); var errObj = self.processRequestFailure(resp, status, error);
@ -343,6 +363,7 @@
var query = this.params.query; var query = this.params.query;
var pageSize = this.params.pageSize; var pageSize = this.params.pageSize;
var pageNumber = this.params.pageNumber; var pageNumber = this.params.pageNumber;
var groupId = this.params.groupId;
self.chosenMenuItemId("Home"); self.chosenMenuItemId("Home");
self.chosenUserDetails(null); self.chosenUserDetails(null);
self.userList(null); self.userList(null);
@ -350,8 +371,11 @@
if (self.appDetails() === null) { if (self.appDetails() === null) {
self.getAppDetails(); self.getAppDetails();
} }
self.getGroups(function (data) { self.groupsList(data); });
if (query) if (query)
self.searchUsers(query); self.searchUsers(query);
else if (groupId !== -1)
self.getUserList(null, null, groupId);
else else
self.getUserList(pageSize, pageNumber); self.getUserList(pageSize, pageNumber);
}); });
@ -383,7 +407,10 @@
"Groups": [], "Groups": [],
"IsContractor": false "IsContractor": false
}); });
self.getGroups(); self.getGroups(function(data) {
self.chosenUserDetails().Groups = data;
self.chosenUserDetails.valueHasMutated();
});
self.getUnassignedCardData(); self.getUnassignedCardData();
}); });
this.get("#stats", function () { this.get("#stats", function () {