Skip to content

Commit

Permalink
sort project names by user access rights
Browse files Browse the repository at this point in the history
#1: read & write
#2: read - only
#3: no access
  • Loading branch information
rkereskenyi committed Mar 28, 2014
1 parent 260499b commit fef57c3
Show file tree
Hide file tree
Showing 3 changed files with 67 additions and 26 deletions.
10 changes: 7 additions & 3 deletions client/css/Dialogs/Projects/ProjectsDialog.css
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@
*
* Author: Robert Kereskenyi
*/
.pre-body {
.projects-dialog .pre-body {
padding: 15px;
padding-bottom: 0px; }
.pre-body .tabContainer ul.nav.nav-tabs {
.projects-dialog .pre-body .tabContainer ul.nav.nav-tabs {
margin-bottom: 0px; }
.pre-body .tabContainer ul.nav.nav-tabs li {
.projects-dialog .pre-body .tabContainer ul.nav.nav-tabs li {
width: 86px;
text-align: center; }
.projects-dialog .modal-body ul.nav-pills li a span.ro {
margin-left: 5px;
color: #999999;
font-size: 9px; }
48 changes: 34 additions & 14 deletions client/js/Dialogs/Projects/ProjectsDialog.js
Original file line number Diff line number Diff line change
Expand Up @@ -279,20 +279,32 @@ define(['logManager',
}
}

self._projectNames.sort(function compare(a, b) {
//same read access right, sort by name
if (self._projectList[a].read === self._projectList[b].read) {
if (a.toLowerCase() < b.toLowerCase())
return -1;
if (a.toLowerCase() > b.toLowerCase())
return 1;
var getProjectUserRightSortValue = function (projectRights) {
var val = 0;

// a must be equal to b
return 0;
} else {
//different read access right
//read-ony goes later in the order
if (self._projectList[a].read === true) {
if (projectRights.write === true) {
val = 2;
} else if (projectRights.read === true) {
val = 1;
}

return val;
};

//order:
//1: read & write
//2: read only
//3: no read at all
self._projectNames.sort(function compare(a, b) {
var userRightA = getProjectUserRightSortValue(self._projectList[a]),
userRightB = getProjectUserRightSortValue(self._projectList[b]);

if (userRightA > userRightB) {
return -1;
} else if (userRightA < userRightB) {
return 1;
} else if (userRightA === userRightB) {
if (a.toLowerCase() < b.toLowerCase()) {
return -1;
} else {
return 1;
Expand Down Expand Up @@ -357,6 +369,8 @@ define(['logManager',
});
};

var LI_BASE = $('<li class="center pointer"><a class="btn-env"></a>');
var READ_ONLY_BASE = $('<span class="ro">[READ-ONLY]</span>');
ProjectsDialog.prototype._updateProjectNameList = function () {
var len = this._projectNames.length,
i,
Expand All @@ -375,7 +389,8 @@ define(['logManager',
}

if (displayProject) {
li = $('<li class="center pointer"><a class="btn-env">' + this._projectNames[i] + '</a>');
li = LI_BASE.clone();
li.find('a').text(this._projectNames[i]);
li.data(DATA_PROJECT_NAME, this._projectNames[i]);

if (this._projectNames[i] === this._activeProject) {
Expand All @@ -385,6 +400,11 @@ define(['logManager',
//check to see if the user has READ access to this project
if (this._projectList[this._projectNames[i]].read !== true) {
li.addClass('disabled');
} else {
//check if user has only READ rights for this project
if (this._projectList[this._projectNames[i]].write !== true) {
li.find('a.btn-env').append(READ_ONLY_BASE.clone());
}
}

this._ul.append(li);
Expand Down
35 changes: 26 additions & 9 deletions client/scss/Dialogs/Projects/ProjectsDialog.scss
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,35 @@
* Author: Robert Kereskenyi
*/

.pre-body {
padding: 15px;
padding-bottom: 0px;
.projects-dialog {
.pre-body {
padding: 15px;
padding-bottom: 0px;

.tabContainer {
ul.nav.nav-tabs {
margin-bottom: 0px;

.tabContainer {
ul.nav.nav-tabs {
margin-bottom: 0px;

li {
width: 86px;
text-align: center;
}
}
}
}

.modal-body {
ul.nav-pills {
li {
width: 86px;
text-align: center;
a {
span.ro {
margin-left: 5px;
color: #999999;
font-size: 9px;
}
}
}
}
}
}

0 comments on commit fef57c3

Please sign in to comment.