Commit d578b317 by Jeffrey Phillips Committed by GitHub

Merge pull request #152 from dtaylor113/project-select-sort

Added secondary sort by displayName to RecentlyViewedProjectsService
parents 49e6b52a 4d4c83fb
......@@ -3148,18 +3148,24 @@ angular.module("openshiftCommonServices")
}
});
// order by creationDate
projects = $filter('orderObjectsByDate')(projects, true);
// second sort by case insensitive displayName
projects = _.sortBy(projects, function(project) {
return $filter('displayName')(project).toLowerCase();
});
// return array where moveRecentlyViewed is first, then sorted by creationDate
return recentlyViewedProjects.concat(projects);
};
var isRecentlyViewed = function(uid) {
return _.includes(getProjectUIDs(), uid);
};
return {
getProjectUIDs: getProjectUIDs,
addProjectUID: addProjectUID,
orderByMostRecentlyViewed: orderByMostRecentlyViewed,
clear: clear
clear: clear,
isRecentlyViewed: isRecentlyViewed
};
});
;'use strict';
......
......@@ -5016,18 +5016,24 @@ angular.module("openshiftCommonServices")
}
});
// order by creationDate
projects = $filter('orderObjectsByDate')(projects, true);
// second sort by case insensitive displayName
projects = _.sortBy(projects, function(project) {
return $filter('displayName')(project).toLowerCase();
});
// return array where moveRecentlyViewed is first, then sorted by creationDate
return recentlyViewedProjects.concat(projects);
};
var isRecentlyViewed = function(uid) {
return _.includes(getProjectUIDs(), uid);
};
return {
getProjectUIDs: getProjectUIDs,
addProjectUID: addProjectUID,
orderByMostRecentlyViewed: orderByMostRecentlyViewed,
clear: clear
clear: clear,
isRecentlyViewed: isRecentlyViewed
};
}]);
;'use strict';
......
......@@ -2086,13 +2086,18 @@ var proj = _.remove(projects, function(project) {
return project.metadata.uid === uid;
})[0];
void 0 !== proj && recentlyViewedProjects.push(proj);
}), projects = $filter("orderObjectsByDate")(projects, !0), recentlyViewedProjects.concat(projects);
}), projects = _.sortBy(projects, function(project) {
return $filter("displayName")(project).toLowerCase();
}), recentlyViewedProjects.concat(projects);
}, isRecentlyViewed = function(uid) {
return _.includes(getProjectUIDs(), uid);
};
return {
getProjectUIDs:getProjectUIDs,
addProjectUID:addProjectUID,
orderByMostRecentlyViewed:orderByMostRecentlyViewed,
clear:clear
clear:clear,
isRecentlyViewed:isRecentlyViewed
};
} ]), angular.module("openshiftCommonServices").provider("RedirectLoginService", function() {
var _oauth_client_id = "", _oauth_authorize_uri = "", _oauth_token_uri = "", _oauth_redirect_uri = "", _oauth_scope = "";
......
......@@ -47,17 +47,23 @@ angular.module("openshiftCommonServices")
}
});
// order by creationDate
projects = $filter('orderObjectsByDate')(projects, true);
// second sort by case insensitive displayName
projects = _.sortBy(projects, function(project) {
return $filter('displayName')(project).toLowerCase();
});
// return array where moveRecentlyViewed is first, then sorted by creationDate
return recentlyViewedProjects.concat(projects);
};
var isRecentlyViewed = function(uid) {
return _.includes(getProjectUIDs(), uid);
};
return {
getProjectUIDs: getProjectUIDs,
addProjectUID: addProjectUID,
orderByMostRecentlyViewed: orderByMostRecentlyViewed,
clear: clear
clear: clear,
isRecentlyViewed: isRecentlyViewed
};
});
......@@ -53,15 +53,16 @@ describe("RecentlyViewedProjectsService", function(){
expect(recentlyViewed[3]).toEqual('001');
});
it('should orderByMostRecentlyViewed', function() {
it('should orderByMostRecentlyViewed with second sort of displayName', function() {
// simulates a project list sorted by creationTimestamp, where projects created
// in order 1-5, 5 being the most recently created.
var projects = [
{"metadata": {"uid": "005", "creationTimestamp": "2017-05-21T20:52:10Z"}},
{"metadata": {"uid": "004", "creationTimestamp": "2017-04-21T20:52:10Z"}},
{"metadata": {"uid": "003", "creationTimestamp": "2017-03-21T20:52:10Z"}},
{"metadata": {"uid": "002", "creationTimestamp": "2017-02-21T20:52:10Z"}},
{"metadata": {"uid": "001", "creationTimestamp": "2017-01-21T20:52:10Z"}}
{"metadata": {"uid": "005", "creationTimestamp": "2017-05-21T20:52:10Z", name: "c proj"}},
{"metadata": {"uid": "004", "creationTimestamp": "2017-04-21T20:52:10Z", name: "z proj"}},
{"metadata": {"uid": "003", "creationTimestamp": "2017-03-21T20:52:10Z", name: "x proj"}},
{"metadata": {"uid": "002", "creationTimestamp": "2017-02-21T20:52:10Z", name: "B proj"}},
{"metadata": {"uid": "001", "creationTimestamp": "2017-01-21T20:52:10Z", name: "Y proj"}},
{"metadata": {"uid": "006", "creationTimestamp": "2017-06-21T20:52:10Z", name: "a proj"}}
];
// simulates projects 1,3,4 being most recently viewed
......@@ -77,16 +78,41 @@ describe("RecentlyViewedProjectsService", function(){
expect(recentlyViewed[2]).toEqual('001');
expect(recentlyViewed[3]).toEqual('007');
var sortedProjects = RecentlyViewedProjectsService.orderByMostRecentlyViewed(projects);
var sortedProjects = RecentlyViewedProjectsService.orderByMostRecentlyViewed(projects, 'displayName');
var expectedSort = [
{"metadata": {"uid": "004", "creationTimestamp": "2017-04-21T20:52:10Z"}},
{"metadata": {"uid": "003", "creationTimestamp": "2017-03-21T20:52:10Z"}},
{"metadata": {"uid": "001", "creationTimestamp": "2017-01-21T20:52:10Z"}},
{"metadata": {"uid": "005", "creationTimestamp": "2017-05-21T20:52:10Z"}},
{"metadata": {"uid": "002", "creationTimestamp": "2017-02-21T20:52:10Z"}}
{"metadata": {"uid": "004", "creationTimestamp": "2017-04-21T20:52:10Z", name: "z proj"}},
{"metadata": {"uid": "003", "creationTimestamp": "2017-03-21T20:52:10Z", name: "x proj"}},
{"metadata": {"uid": "001", "creationTimestamp": "2017-01-21T20:52:10Z", name: "Y proj"}},
{"metadata": {"uid": "006", "creationTimestamp": "2017-06-21T20:52:10Z", name: "a proj"}},
{"metadata": {"uid": "002", "creationTimestamp": "2017-02-21T20:52:10Z", name: "B proj"}},
{"metadata": {"uid": "005", "creationTimestamp": "2017-05-21T20:52:10Z", name: "c proj"}}
];
expect(sortedProjects).toEqual(expectedSort);
});
it('should correctly report isRecentlyViewed', function() {
// simulates a project list sorted by creationTimestamp, where projects created
// in order 1-5, 5 being the most recently created.
var projects = [
{"metadata": {"uid": "005", "creationTimestamp": "2017-05-21T20:52:10Z", name: "c proj"}},
{"metadata": {"uid": "004", "creationTimestamp": "2017-04-21T20:52:10Z", name: "z proj"}},
{"metadata": {"uid": "003", "creationTimestamp": "2017-03-21T20:52:10Z", name: "x proj"}},
{"metadata": {"uid": "002", "creationTimestamp": "2017-02-21T20:52:10Z", name: "B proj"}},
{"metadata": {"uid": "001", "creationTimestamp": "2017-01-21T20:52:10Z", name: "Y proj"}},
{"metadata": {"uid": "006", "creationTimestamp": "2017-06-21T20:52:10Z", name: "a proj"}}
];
// simulates projects 1,3,4 being most recently viewed
RecentlyViewedProjectsService.addProjectUID("007"); // simulate a recently viewed which is not in project list (diff user)
RecentlyViewedProjectsService.addProjectUID("001");
RecentlyViewedProjectsService.addProjectUID("003");
RecentlyViewedProjectsService.addProjectUID("004");
expect(RecentlyViewedProjectsService.isRecentlyViewed("004")).toBeTruthy();
expect(RecentlyViewedProjectsService.isRecentlyViewed("003")).toBeTruthy();
expect(RecentlyViewedProjectsService.isRecentlyViewed("022")).toBeFalsy();
expect(RecentlyViewedProjectsService.isRecentlyViewed("033")).toBeFalsy();
});
});
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment