Skip to content

Commit

Permalink
Merge pull request #42 from diggyk/master
Browse files Browse the repository at this point in the history
Refined the quest status page
  • Loading branch information
gmjosack committed Sep 16, 2015
2 parents 9984880 + e59ec6e commit 0917264
Show file tree
Hide file tree
Showing 15 changed files with 512 additions and 268 deletions.
1 change: 1 addition & 0 deletions bower.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
"dependencies": {
"angular": "~1.4.5",
"angular-animate": "~1.4.5",
"angular-location-update": "*",
"angular-route": "~1.4.5",
"bootstrap": "~3.3.5",
"d3": "~3.5.6",
Expand Down
10 changes: 9 additions & 1 deletion hermes/handlers/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -1975,6 +1975,7 @@ def get(self):
:query boolean filterClosed: if true, filter out completed Quests
:query boolean progressInfo: if true, include progress information
:query string byCreator: if set, filter the quests by a particular creator
:query int limit: (*optional*) Limit result to N resources.
:query int offset: (*optional*) Skip the first N resources.
Expand All @@ -1983,12 +1984,19 @@ def get(self):
"""
filter_closed = self.get_argument("filterClosed", None)
progress_info = self.get_argument("progressInfo", None)
by_creator = self.get_argument("byCreator", None)

quests = self.session.query(Quest).order_by(desc(Quest.embark_time))
# We used to sort in reverse embark time so that the default would be
# to show the latest quests but we don't want to do that anymore
# quests = self.session.query(Quest).order_by(desc(Quest.embark_time))
quests = self.session.query(Quest).order_by(Quest.embark_time)

if filter_closed:
quests = quests.filter(Quest.completion_time == None)

if by_creator:
quests = quests.filter(Quest.creator == by_creator)

offset, limit, expand = self.get_pagination_values()
quests, total = self.paginate_query(quests, offset, limit)

Expand Down
2 changes: 1 addition & 1 deletion hermes/version.py
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.3.5"
__version__ = "0.3.6"
32 changes: 31 additions & 1 deletion hermes/webapp/src/css/main.css
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,18 @@ h1 {
padding: 0px;
}

.navbar {
background: #25282b;
border: none;
-webkit-border-radius: 0px;
-moz-border-radius: 0px;
border-radius: 0px;
}

.navbar-brand {
height: 80px;
}

#header {
color: #121212;
font-size: 3em;
Expand Down Expand Up @@ -52,7 +64,25 @@ h1 {
}


.quest-list-header {
.quest-list-filter {
padding: 10px 10px 20px 10px;
border-bottom: #d0d4d9 2px dashed;
}

.quest-list-filter input {
width: 100%;
}

.quest-list-filter button {
float: right;
}

.quest-list-filter .error-message {
color: #e82110;
font-weight: bold;
padding: 5px;
border: #e82110 2px solid;
margin-top: 5px;
}

.quest-list-entry {
Expand Down
Binary file modified hermes/webapp/src/img/logo.gif
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
20 changes: 16 additions & 4 deletions hermes/webapp/src/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -8,17 +8,29 @@
<link href="/css/hermes.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<div class="container" id="header">
<div>
<img src="/img/icon.gif" style="vertical-align: 40%"/>Hermes
<nav class="navbar navbar-default">
<div class="container">
<div class="navbar-header">
<a class="navbar-brand" href="#">
<img alt="Brand" src="/img/logo.gif">
</a>
</div>
</div>
</div>
</nav>
<!--<div style="background: #25282b">-->
<!--<div class="container" id="header">-->
<!--<div>-->
<!--<img src="/img/logo.gif"/>-->
<!--</div>-->
<!--</div>-->
<!--</div>-->
<div class="container main-container">
<div ng-view></div>
</div>
<script src="/vendor/angular/angular.js"></script>
<script src="/vendor/angular-route/angular-route.js"></script>
<script src="/vendor/angular-animate/angular-animate.js"></script>
<script src="/vendor/angular-location-update/angular-location-update.js"></script>
<script src="/vendor/raphael/raphael.js"></script>
<script src="/js/app.js"></script>
</body>
Expand Down
99 changes: 94 additions & 5 deletions hermes/webapp/src/js/controllers/questStatusCtrl.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,116 @@
(function() {
'use strict';

function QuestStatusCtrl(hermesService, $q) {
function QuestStatusCtrl(hermesService, $q, $routeParams, $location) {
var vm = this;

vm.errorMessage = null;
vm.filterByCreator = $routeParams.byCreator ? $routeParams.byCreator : null;

vm.questData = null;
vm.selectedQuest = null;
vm.selectedQuestDetails = null;
vm.labors = null;
vm.types = null;
vm.limit = 10;
vm.offset = 0;
vm.totalQuests = 10;

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

vm.runNewFilter = runNewFilter;
vm.getOpenQuests = getOpenQuests;
vm.newQuestSelection = newQuestSelection;

getOpenQuests();


//////// FIXME: Move to some kind of control service ///////
vm.limitOptions = {
updateOn: 'default change blur',
getterSetter: true,
allowInvalid: true
};

function limitSetting(limit) {
if (angular.isDefined(limit)) {
vm.limit = limit;
vm.offset = 0;
} else {
return "" + vm.limit;
}
}

function limitValues() {
return ['10', '20', '50', '100'];
}

function pageSetting(page) {
if (angular.isDefined(page)) {
vm.offset = (page - 1) * vm.limit;
console.log("Page: " + page + " Offset: " + vm.offset);
} else {
return "" + (vm.offset / vm.limit + 1);
}
}

function pageValues() {
var maxPage = Math.floor((vm.totalQuests - 1) / vm.limit);
var options = [];
for (var i = 0; i <= maxPage; i++) {
options.push("" + (i + 1));
}

return options;
}

vm.limitSetting = limitSetting;
vm.limitValues = limitValues;
vm.pageSetting = pageSetting;
vm.pageValues = pageValues;

////////////////////////////////

function runNewFilter() {
$routeParams.questId = null;
vm.offset = 0;
getOpenQuests();
}

function getOpenQuests() {
hermesService.getOpenQuests().then(function (questData) {
vm.questData = questData;
newQuestSelection(questData[0]);
vm.errorMessage = null;

var options = {};
if (vm.filterByCreator) {
options['filterByCreator'] = vm.filterByCreator;
}

hermesService.getOpenQuests(options).then(function (questData) {
console.log("Got new data: total is " + questData['totalQuests']);

if (!questData
|| !questData['quests']
|| questData['quests'].length == 0) {
vm.errorMessage = "No Quests found matching criteria. Please refine.";
return;
}

vm.questData = questData['quests'];
vm.limit = questData['limit'] || vm.limit;
vm.offset = questData['offset'] || vm.offset;
vm.totalQuests = questData['totalQuests'] || vm.totalQuests;

// find the quest requested and make that the selection
var index = 0;
for (var idx in vm.questData) {
if (vm.questData[idx]['id'] == $routeParams.questId) {
index = idx;
}
}

vm.offset = index - (index % vm.limit);
console.log(vm.offset);
newQuestSelection(vm.questData[index]);
});
}

Expand Down Expand Up @@ -52,6 +140,7 @@
]).then(function(data) {
vm.hostOwners = data[0];
vm.selectedQuestDetails = data[1];
$location.update_path('/v1/quests/' + quest.id, true);
analyzeLabors(data[0], data[1]);
});
}
Expand Down Expand Up @@ -126,5 +215,5 @@
}

angular.module('hermesApp').controller('QuestStatusCtrl', QuestStatusCtrl);
QuestStatusCtrl.$inject = ['HermesService', '$q'];
QuestStatusCtrl.$inject = ['HermesService', '$q', '$routeParams', '$location'];
})();

0 comments on commit 0917264

Please sign in to comment.