Skip to content

Commit

Permalink
added sorting by multiple keys; replaced Outlook API provided sort wi…
Browse files Browse the repository at this point in the history
…th JS implementation
  • Loading branch information
GrimmiMeloni committed Dec 12, 2016
1 parent 52c7e34 commit a8c6ea7
Show file tree
Hide file tree
Showing 2 changed files with 45 additions and 12 deletions.
43 changes: 38 additions & 5 deletions js/app.js
Expand Up @@ -122,17 +122,43 @@ tbApp.controller('taskboardController', function ($scope, GENERAL_CONFIG) {
return folder;
}

// borrowed from http://stackoverflow.com/a/30446887/942100
var fieldSorter = function(fields) {
return function (a, b) {
return fields
.map(function (o) {
var dir = 1;
if (o[0] === '-') {
dir = -1;
o=o.substring(1);
}
var propOfA = a[o];
var propOfB = b[o];

//string comparisons shall be case insensitive
if (typeof propOfA === "string") {
propOfA = propOfA.toUpperCase();
propOfB = propOfB.toUpperCase();
}

if (propOfA > propOfB) return dir;
if (propOfA < propOfB) return -(dir);
return 0;
}
).reduce(function firstNonZeroValue (p,n) {
return p ? p : n;
}, 0
);
};
};

var getTasksFromOutlook = function (path, restrict, sort, owner) {
var i, array = [];
// default restriction is to get only incomplete tasks
if (restrict === undefined) { restrict = "[Complete] = false"; }

var tasks = getOutlookFolder(path, owner).Items.Restrict(restrict);

// sort tasks
if (sort === undefined) { sort = "[Importance]"; }
tasks.Sort(sort, true);

var count = tasks.Count;
for (i = 1; i <= count; i++) {
array.push({
Expand All @@ -150,7 +176,14 @@ tbApp.controller('taskboardController', function ($scope, GENERAL_CONFIG) {
});
};

return array;
// sort tasks
var sortKeys;
if (sort === undefined) { sortKeys = ["-priority"]; }
else { sortKeys = sort.split(","); }

var sortedTasks = array.sort(fieldSorter(sortKeys));

return sortedTasks;
};

// this is only a proof-of-concept single page report in a draft email for weekly report
Expand Down
14 changes: 7 additions & 7 deletions js/config.js
Expand Up @@ -8,15 +8,15 @@ var config_data = {
// Name: Name of the task folder
// Title: Task lane title
// Limit: hard limits for each task lane. 0 = no limit
// Sort: Sort order for tasks (default = priority)
// Sort: Sort order for tasks (default = priority), can state multiple sort keys separated by comma, use '-' to sort descending, Example "duedate,-priority,subject"
// Restrict: Restrict certain tasks (default = only show incomplete tasks) (More info = https://msdn.microsoft.com/en-us/library/office/ff869597.aspx)
// Owner: If the task folder is shared by someone else, enter the name of the owner. (i.e. Evren Varol)
'BACKLOG_FOLDER': { Name: '', Title: 'BACKLOG', Limit: 0, Sort: "[Importance]", Restrict: "[Complete] = false", Owner: '' },
'INPROGRESS_FOLDER': { Name: 'InProgress', Title: 'IN PROGRESS', Limit: 5, Sort: "[Importance]", Restrict: "[Complete] = false", Owner: ''},
'NEXT_FOLDER': { Name: 'Next', Title: 'NEXT', Limit: 0, Sort: "[DueDate][Importance]", Restrict: "[Complete] = false", Owner: ''},
'FOCUS_FOLDER': { Name: 'Focus', Title: 'FOCUS', Limit: 0, Sort: "[Importance]", Restrict: "[Complete] = false", Owner: '' },
'WAITING_FOLDER': { Name: 'Waiting', Title: 'WAITING', Limit: 0, Sort: "[Importance]", Restrict: "[Complete] = false", Owner: '' },
'COMPLETED_FOLDER': { Name: 'Completed', Title: 'COMPLETED', Limit: 0, Sort: "[Importance]", Restrict: "[Complete] = false", Owner: '' },
'BACKLOG_FOLDER': { Name: '', Title: 'BACKLOG', Limit: 0, Sort: "-priority", Restrict: "[Complete] = false", Owner: '' },
'INPROGRESS_FOLDER': { Name: 'InProgress', Title: 'IN PROGRESS', Limit: 5, Sort: "-priority", Restrict: "[Complete] = false", Owner: ''},
'NEXT_FOLDER': { Name: 'Next', Title: 'NEXT', Limit: 0, Sort: "duedate,-priority", Restrict: "[Complete] = false", Owner: ''},
'FOCUS_FOLDER': { Name: 'Focus', Title: 'FOCUS', Limit: 0, Sort: "-priority", Restrict: "[Complete] = false", Owner: '' },
'WAITING_FOLDER': { Name: 'Waiting', Title: 'WAITING', Limit: 0, Sort: "-priority", Restrict: "[Complete] = false", Owner: '' },
'COMPLETED_FOLDER': { Name: 'Completed', Title: 'COMPLETED', Limit: 0, Sort: "-priority", Restrict: "[Complete] = false", Owner: '' },

// Task Note Excerpt Size
// number of chars for each task note
Expand Down

0 comments on commit a8c6ea7

Please sign in to comment.