Skip to content

Commit

Permalink
Merge pull request #48 from diggyk/master
Browse files Browse the repository at this point in the history
Added select all toggles to labor list and search labors by query
  • Loading branch information
jathanism committed Sep 21, 2015
2 parents f549bfb + 5ce036a commit ed61772
Show file tree
Hide file tree
Showing 4 changed files with 94 additions and 13 deletions.
11 changes: 11 additions & 0 deletions hermes/webapp/src/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -462,6 +462,17 @@ button:hover {
opacity: 0.5;
}

.labor-list-wrapper .labor-select-toggles {
clear: both;
overflow: auto;
margin-bottom: 5px;
padding-bottom: 8px;
}

.labor-list-wrapper .labor-select-toggles button:not(:first-child) {
margin-left: 5px;
}

.labor-list-wrapper .labor-entry {
-webkit-border-radius: 5px;
-moz-border-radius: 5px;
Expand Down
59 changes: 52 additions & 7 deletions hermes/webapp/src/js/controllers/laborStatusCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

vm.errorMessage = null;
vm.hostOwnerInput = null;
vm.queryInput = null;
vm.selectedEventType = null;

vm.laborData = null;
Expand All @@ -21,9 +22,12 @@

vm.colors = ['#0071ce', '#72b6ec', '#cce6fa', '#f4faff'];

vm.runNewFilter = runNewFilter;
vm.runOwnerFilter = runOwnerFilter;
vm.runQueryFilter = runQueryFilter;
vm.getOpenLabors = getOpenLabors;
vm.toggleSelect = toggleSelect;
vm.selectAll = selectAll;
vm.deselectAll = deselectAll;
vm.eventTypesSelection = eventTypesSelection;
vm.createEvents = createEvents;

Expand All @@ -38,13 +42,13 @@
// otherwise, the default is to use the authenticate user
if ($routeParams.byOwner) {
vm.hostOwnerInput = $routeParams.byOwner;
getOpenLabors();
getOpenLabors("owner");
} else {
hermesService.getCurrentUser().then(function(user){
if (user) {
vm.hostOwnerInput = user;
}
getOpenLabors();
getOpenLabors("owner");
});
}

Expand Down Expand Up @@ -119,21 +123,34 @@

}

function runNewFilter() {
function runQueryFilter() {
$routeParams.laborId = null;
vm.offset = 0;
getOpenLabors();
vm.hostOwnerInput = null;
getOpenLabors("query");
}

function getOpenLabors() {
function runOwnerFilter() {
$routeParams.laborId = null;
vm.offset = 0;
vm.queryInput = null;
getOpenLabors("owner");
}

function getOpenLabors(method) {
vm.errorMessage = null;
vm.selected = [];
vm.laborData = null;

var options = {};
if (vm.hostOwnerInput) {
if (method == "owner" && vm.hostOwnerInput) {
options['filterByOwner'] = vm.hostOwnerInput;
$location.search('byOwner', vm.hostOwnerInput, false);
$location.search('byQuery', null, false);
} else if (method == "query" && vm.queryInput) {
options['filterByQuery'] = vm.queryInput;
$location.search('byOwner', null, false);
$location.search('byQuery', vm.queryInput, false);
}

hermesService.getOpenLabors(options).then(function (data) {
Expand Down Expand Up @@ -196,6 +213,34 @@
}
}

/**
* Select all the labors on this screen and add them to the list
* of selected labors
*/
function selectAll() {
for (var idx = parseInt(vm.offset);
idx < (parseInt(vm.offset) + parseInt(vm.limit));
idx++) {
if (vm.selected.indexOf(vm.laborData[idx].id == -1)) {
vm.selected.push(vm.laborData[idx].id);
}
}
}

/**
* Deselect all the labors on this screen and remove them to the list
* of selected labors
*/
function deselectAll() {
for (var idx = parseInt(vm.offset);
idx < (parseInt(vm.offset) + parseInt(vm.limit)); idx++) {
var idy = vm.selected.indexOf(vm.laborData[idx].id);
if (idy != -1) {
vm.selected.splice(idy, 1);
}
}
}

/**
* Create events for the selected hosts
*/
Expand Down
4 changes: 4 additions & 0 deletions hermes/webapp/src/js/services/hermesService.js
Original file line number Diff line number Diff line change
Expand Up @@ -105,8 +105,12 @@
function getOpenLabors(options) {
var url = "/api/v1/labors/?open=true&expand=hosts&limit=all&expand=quests&expand=events&expand=eventtypes";

console.log("getOpenLabors:");
console.log(options);
if (options['filterByOwner']) {
url += "&userQuery=" + options['filterByOwner'];
} else if (options['filterByQuery']) {
url += "&hostQuery=" + options['filterByQuery'];
}

return $http.get(url)
Expand Down
33 changes: 27 additions & 6 deletions hermes/webapp/src/templates/laborList.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,15 +7,28 @@
</div>
<div class="row">
<div class="col-md-10">
<form ng-submit="lsc.runNewFilter()">
<form ng-submit="lsc.runOwnerFilter()">
<input id="ownerFilter" type="text" ng-model="lsc.hostOwnerInput" />
</form>
</div>
<div class="col-md-2">
<button ng-click="lsc.runNewFilter()">GO</button>
<button ng-click="lsc.runOwnerFilter()">GO</button>
</div>
</div>
<div style="padding: 5px 0px 5px 0px">
<div style="margin-top: 5px">
<label for="queryFilter">Filter by query:</label>
</div>
<div class="row">
<div class="col-md-10">
<form ng-submit="lsc.runQueryFilter()">
<input id="queryFilter" type="text" ng-model="lsc.queryInput" />
</form>
</div>
<div class="col-md-2">
<button ng-click="lsc.runQueryFilter()">GO</button>
</div>
</div>
<div ng-if="lsc.laborData && !lsc.errorMessage" style="padding: 5px 0px 5px 0px">
<label>
Limit:
<select ng-model="lsc.limitSetting"
Expand All @@ -24,7 +37,7 @@
</select>
</label>
</div>
<div class="labor-left-panel-page-selector">
<div ng-if="lsc.laborData && !lsc.errorMessage" class="labor-left-panel-page-selector">
<strong>Page:</strong>
<ul>
<li ng-click="lsc.pageSetting(pageVal)"
Expand All @@ -45,18 +58,26 @@
ng-model-options="lsc.selectOptions"
ng-options="optValue.category + ' ' + optValue.state for optValue in lsc.throwableTypes">
</select> for {{lsc.selected.length}} selected hosts.
<button ng-click="lsc.createEvents()">
<button class="be-positive" ng-click="lsc.createEvents()">
<img ng-if="lsc.createInProgress" src="/img/loading_15.gif" style="margin: 5px; float: left" />
Create Events
</button>
</div>
<div class="labor-select-toggles">
<button style="float:left" ng-click="lsc.selectAll()">
Select All
</button>
<button style="float:left" ng-click="lsc.deselectAll()">
Deselect All
</button>
</div>
<div class="success-message" ng-if="lsc.createSuccessMessage">{{lsc.createSuccessMessage}}</div>
<div class="error-message" ng-if="lsc.createErrorMessage">{{lsc.createErrorMessage}}</div>
<div ng-if="!lsc.laborData && !lsc.errorMessage" style="padding: 10px;">
<img src="/img/loading.gif"/>
</div>
<div class="labor-entry"
ng-if="lsc.laborData"
ng-if="lsc.laborData && !lsc.errorMessage"
ng-click="lsc.toggleSelect(labor.id)"
ng-repeat="labor in lsc.laborData | limitTo:lsc.limit:lsc.offset track by labor.id"
ng-class="lsc.selected.indexOf(labor.id) != -1 ? 'selected': ''">
Expand Down

0 comments on commit ed61772

Please sign in to comment.