diff --git a/archive/derby_controllers/profile.coffee b/archive/derby_controllers/profile.coffee index 46e23a3938..534404dad8 100644 --- a/archive/derby_controllers/profile.coffee +++ b/archive/derby_controllers/profile.coffee @@ -63,19 +63,5 @@ module.exports.app = (appExports, model) -> sites.splice(i,1) user.set 'profile.websites', sites - - toggleGamePane = -> - model.set '_gamePane', !model.get('_gamePane'), -> - browser.setupTooltips() - - appExports.clickAvatar = (e, el) -> - uid = $(el).attr('data-uid') - if uid is model.get('_userId') # clicked self - toggleGamePane() - else - $("#avatar-modal-#{uid}").modal('show') - - appExports.toggleGamePane = -> toggleGamePane() - appExports.toggleResting = -> model.set '_user.flags.rest', !model.get('_user.flags.rest') diff --git a/assets/js/app.js b/assets/js/app.js index fb13c5ec5e..4c65d965e0 100644 --- a/assets/js/app.js +++ b/assets/js/app.js @@ -1,4 +1,12 @@ "use strict"; -window.habitrpg = angular.module('habitrpg', ['userServices', 'sharedServices', 'authServices', 'notificationServices', 'ui.bootstrap']) - .constant("API_URL", ""); +window.habitrpg = angular.module('habitrpg', ['ngRoute', 'userServices', 'sharedServices', 'authServices', 'notificationServices', 'ui.bootstrap']) + .constant("API_URL", "") + .config(['$routeProvider', function($routeProvider) { + $routeProvider + //.when('/login', {templateUrl: 'views/login.html'}) + .when('/tasks', {templateUrl: 'partials/tasks'}) + .when('/options', {templateUrl: 'partials/options'}) + + .otherwise({redirectTo: '/tasks'}); + }]) diff --git a/assets/js/controllers/authCtrl.js b/assets/js/controllers/authCtrl.js index 021453293e..8e9fa639e0 100644 --- a/assets/js/controllers/authCtrl.js +++ b/assets/js/controllers/authCtrl.js @@ -13,15 +13,15 @@ habitrpg.controller("AuthCtrl", function($scope, $rootScope, Facebook, LocalAuth alert("Until we add Facebook, use your UUID and API Token to log in (found at https://habitrpg.com > Options > Settings)."); showedFacebookMessage = true; } - return $scope.useUUID = !$scope.useUUID; + $scope.useUUID = !$scope.useUUID; }; $scope.logout = function() { localStorage.clear(); - return location.reload(); + location.reload(); }; runAuth = function(id, token) { - return User.authenticate(id, token, function(err) { - return $rootScope.modals.login = false; + User.authenticate(id, token, function(err) { + $rootScope.modals.login = false; }); }; $scope.register = function() { @@ -31,36 +31,36 @@ habitrpg.controller("AuthCtrl", function($scope, $rootScope, Facebook, LocalAuth if ($scope.registrationForm.$invalid) { return; } - return $http.post(API_URL + "/api/v1/register", $scope.registerVals).success(function(data, status, headers, config) { - return runAuth(data.id, data.apiToken); + $http.post(API_URL + "/api/v1/register", $scope.registerVals).success(function(data, status, headers, config) { + runAuth(data.id, data.apiToken); }).error(function(data, status, headers, config) { if (status === 0) { - return alert("Server not currently reachable, try again later"); + alert("Server not currently reachable, try again later"); } else if (!!data && !!data.err) { - return alert(data.err); + alert(data.err); } else { - return alert("ERROR: " + status); + alert("ERROR: " + status); } }); }; - return $scope.auth = function() { + $scope.auth = function() { var data; data = { username: $scope.loginUsername, password: $scope.loginPassword }; if ($scope.useUUID) { - return runAuth($scope.loginUsername, $scope.loginPassword); + runAuth($scope.loginUsername, $scope.loginPassword); } else { - return $http.post(API_URL + "/api/v1/user/auth/local", data).success(function(data, status, headers, config) { - return runAuth(data.id, data.token); + $http.post(API_URL + "/api/v1/user/auth/local", data).success(function(data, status, headers, config) { + runAuth(data.id, data.token); }).error(function(data, status, headers, config) { if (status === 0) { - return alert("Server not currently reachable, try again later"); + alert("Server not currently reachable, try again later"); } else if (!!data && !!data.err) { - return alert(data.err); + alert(data.err); } else { - return alert("ERROR: " + status); + alert("ERROR: " + status); } }); } diff --git a/assets/js/controllers/menuCtrl.js b/assets/js/controllers/menuCtrl.js index f3bfd3a797..5cbabe78d3 100644 --- a/assets/js/controllers/menuCtrl.js +++ b/assets/js/controllers/menuCtrl.js @@ -11,13 +11,13 @@ habitrpg.controller('MenuCtrl', function($scope, $rootScope, $location, User) { //FIXME where to implement this in rewrite? - + $scope.refreshing = function () { - return User.settings.fetching ? "spin" : "" + User.settings.fetching ? "spin" : "" }; $scope.queueLength = function () { - return User.settings.sync.queue.length || User.settings.sync.sent.length + User.settings.sync.queue.length || User.settings.sync.sent.length }; } diff --git a/assets/js/controllers/statsCtrl.js b/assets/js/controllers/statsCtrl.js index a49e9682c6..7bc12f472b 100644 --- a/assets/js/controllers/statsCtrl.js +++ b/assets/js/controllers/statsCtrl.js @@ -4,10 +4,10 @@ habitrpg.controller('StatsCtrl', ['$scope', 'User', function($scope, User) { $scope.refreshing = function () { - return User.settings.fetching ? "spin" : "" + User.settings.fetching ? "spin" : "" }; $scope.queueLength = function () { - return User.settings.sync.queue.length || User.settings.sync.sent.length + User.settings.sync.queue.length || User.settings.sync.sent.length }; $scope.stats = User.user.stats; } diff --git a/assets/js/controllers/taskDetailsCtrl.js b/assets/js/controllers/taskDetailsCtrl.js index 4bc5661c5c..abfc44eaf3 100644 --- a/assets/js/controllers/taskDetailsCtrl.js +++ b/assets/js/controllers/taskDetailsCtrl.js @@ -40,9 +40,9 @@ habitrpg.controller("TaskDetailsCtrl", function($scope, $rootScope, $location, U } } User.log(log); - return task._editing = false; + task._editing = false; }; - return $scope.cancel = function() { + $scope.cancel = function() { /* reset $scope.task to $scope.originalTask */ @@ -52,6 +52,6 @@ habitrpg.controller("TaskDetailsCtrl", function($scope, $rootScope, $location, U } $scope.originalTask = null; $scope.editedTask = null; - return $scope.editing = false; + $scope.editing = false; }; }); diff --git a/assets/js/controllers/tasksCtrl.js b/assets/js/controllers/tasksCtrl.js index 02c8ce0c81..995aaad441 100644 --- a/assets/js/controllers/tasksCtrl.js +++ b/assets/js/controllers/tasksCtrl.js @@ -45,7 +45,7 @@ habitrpg.controller("TasksCtrl", function($scope, $rootScope, $location, User, A var newValue; newValue = User.user.stats[key]; if (newValue !== value) { - return statsDiff[key] = newValue - value; + statsDiff[key] = newValue - value; } }); /*notify user if there are changes in stats. @@ -63,7 +63,7 @@ habitrpg.controller("TasksCtrl", function($scope, $rootScope, $location, User, A text: "Not enough GP." }); } - return User.log({ + User.log({ op: "score", data: task, dir: direction @@ -82,7 +82,7 @@ habitrpg.controller("TasksCtrl", function($scope, $rootScope, $location, User, A op: "addTask", data: newTask }); - return delete $scope.list.newTask; + delete $scope.list.newTask; }; /*Add the new task to the actions log */ @@ -92,9 +92,9 @@ habitrpg.controller("TasksCtrl", function($scope, $rootScope, $location, User, A /* This is calculated post-change, so task.completed=true if they just checked it */ if (task.completed) { - return $scope.score(task, "up"); + $scope.score(task, "up"); } else { - return $scope.score(task, "down"); + $scope.score(task, "down"); } }; /* TODO this should be somewhere else, but fits the html location better here @@ -102,7 +102,7 @@ habitrpg.controller("TasksCtrl", function($scope, $rootScope, $location, User, A $rootScope.revive = function() { window.habitrpgShared.algos.revive(User.user); - return User.log({ + User.log({ op: "revive" }); }; @@ -116,7 +116,7 @@ habitrpg.controller("TasksCtrl", function($scope, $rootScope, $location, User, A op: "delTask", data: task }); - return tasks.splice(tasks.indexOf(task), 1); + tasks.splice(tasks.indexOf(task), 1); }; /* ------------------------ @@ -131,9 +131,9 @@ habitrpg.controller("TasksCtrl", function($scope, $rootScope, $location, User, A */ sorted = [updated.weapon, updated.armor, updated.head, updated.shield, updated.potion, updated.reroll]; - return $scope.itemStore = sorted; + $scope.itemStore = sorted; }); - return $scope.buy = function(type) { + $scope.buy = function(type) { var hasEnough; hasEnough = window.habitrpgShared.items.buyItem(User.user, type); if (hasEnough) { @@ -141,12 +141,12 @@ habitrpg.controller("TasksCtrl", function($scope, $rootScope, $location, User, A op: "buy", type: type }); - return Notification.push({ + Notification.push({ type: "text", text: "Item bought!" }); } else { - return Notification.push({ + Notification.push({ type: "text", text: "Not enough GP." }); diff --git a/assets/js/controllers/userAvatarCtrl.js b/assets/js/controllers/userAvatarCtrl.js new file mode 100644 index 0000000000..dd888fe153 --- /dev/null +++ b/assets/js/controllers/userAvatarCtrl.js @@ -0,0 +1,23 @@ +"use strict"; + +habitrpg.controller("UserAvatarCtrl", function($scope, $location, filterFilter, User) { + debugger + $scope.profile = User.user; + $scope.hideUserAvatar = function() { + $(".userAvatar").hide(); + }; + + $scope.clickAvatar = function(profile) { + debugger + if (User.user.id == profile.id) { + if ($location.path() == '/tasks') { + $location.path('/options') + } else { + $location.path('/tasks'); + } + } else { + //TODO show party member modal + //$("#avatar-modal-#{uid}").modal('show') + } + } +}); diff --git a/assets/js/services/notificationServices.js b/assets/js/services/notificationServices.js index 0b18005699..739683af61 100644 --- a/assets/js/services/notificationServices.js +++ b/assets/js/services/notificationServices.js @@ -20,12 +20,12 @@ angular.module("notificationServices", []).factory("Notification", function() { $("#notification").css("webkit-transform", "none"); $("#notification").css("top", "-63px"); $("#notification").css("left", "0px"); - return setTimeout((function() { - return $("#notification").show(); + setTimeout((function() { + $("#notification").show(); }), 190); }); active = false; - return timer = null; + timer = null; }, animate: function() { if (timer) { @@ -38,7 +38,7 @@ angular.module("notificationServices", []).factory("Notification", function() { y: 63, x: 0 }); - return timer = setTimeout(this.hide, 2000); + timer = setTimeout(this.hide, 2000); } }, push: function(message) { @@ -58,7 +58,7 @@ angular.module("notificationServices", []).factory("Notification", function() { case "text": data.message = message.text; } - return this.animate(); + this.animate(); }, get: function() { return data; @@ -66,10 +66,10 @@ angular.module("notificationServices", []).factory("Notification", function() { clearTimer: function() { clearTimeout(timer); timer = null; - return active = false; + active = false; }, init: function() { - return timer = setTimeout(this.hide, 2000); + timer = setTimeout(this.hide, 2000); } }; }); diff --git a/bower.json b/bower.json index dda2f156a8..e6e91f2dd2 100644 --- a/bower.json +++ b/bower.json @@ -30,7 +30,8 @@ "jquery.cookie": "~1.3.1", "sticky": "*", "bootstrap-datepicker": "~1.2.0", - "bootstrap": "v2.3.2" + "bootstrap": "v2.3.2", + "angular-route": "1.2.0-rc.1" }, "resolutions": { "jquery": "~2.0.3", diff --git a/src/routes.coffee b/src/routes/api.coffee similarity index 97% rename from src/routes.coffee rename to src/routes/api.coffee index 1f27990a76..67a959ab59 100644 --- a/src/routes.coffee +++ b/src/routes/api.coffee @@ -1,6 +1,6 @@ express = require 'express' router = new express.Router() -api = require './controllers/api' +api = require '../controllers/api' ### ---------- /api/v1 API ------------ diff --git a/src/routes/pages.coffee b/src/routes/pages.coffee new file mode 100644 index 0000000000..044c274372 --- /dev/null +++ b/src/routes/pages.coffee @@ -0,0 +1,10 @@ +express = require 'express' +router = new express.Router() + +router.get '/', (req, res) -> + res.render 'index', {'HabitRPG | Your Life, The Role Playing Game'} + +router.get '/partials/tasks', (req, res) -> res.render 'tasks/index' +router.get '/partials/options', (req, res) -> res.render 'options/index' + +module.exports = router \ No newline at end of file diff --git a/src/server.coffee b/src/server.coffee index 65c5ac4042..d33b633feb 100644 --- a/src/server.coffee +++ b/src/server.coffee @@ -40,9 +40,8 @@ app.use express['static'](path.join(__dirname, "/../public")) app.use express.errorHandler() if "development" is app.get("env") # Custom Directives -app.get '/', (req, res) -> - res.render 'index', {'HabitRPG | Your Life, The Role Playing Game'} -app.use('/api/v1', require('./routes').middleware) +app.use(require('./routes/pages').middleware) +app.use('/api/v1', require('./routes/api').middleware) app.use(require('./controllers/deprecated').middleware) server = http.createServer(app).listen app.get("port"), -> diff --git a/views/index.jade b/views/index.jade index 5378a84a94..d119642c5d 100644 --- a/views/index.jade +++ b/views/index.jade @@ -1,29 +1,76 @@ -extends layout +doctype 5 +html + head + title HabitRPG | Your Life The Role Playing Game -block content - div(ng-app="habitrpg", ng-controller="RootCtrl") - include ./modals/index - include ./header/header + // CSS + link(rel='stylesheet', href='/bower_components/bootstrap/docs/assets/css/bootstrap.css') + link(rel='stylesheet', href='/bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css') + link(rel='stylesheet', href='/bower_components/angular-ui/build/angular-ui.css') + != css('index') - span(ng-hide='_gamePane') - app:filters:filters + // HabitRPG Shared + link(rel='stylesheet', href='/bower_components/habitrpg-shared/spritesheets.css') + + // JS + script(type='text/javascript', src='/bower_components/jquery/jquery.min.js') + script(type='text/javascript', src='/bower_components/lodash/lodash.js') + script(type='text/javascript', src='/bower_components/moment/moment.js') + script(type='text/javascript', src='/bower_components/angular/angular.js') + script(type='text/javascript', src='/bower_components/angular-route/angular-route.js') + script(type='text/javascript', src='/bower_components/angular-resource/angular-resource.js') + script(type='text/javascript', src='/bower_components/angular-ui/build/angular-ui.js') + script(type='text/javascript', src='/bower_components/angular-bootstrap/ui-bootstrap.js') + script(type='text/javascript', src='/bower_components/angular-bootstrap/ui-bootstrap-tpls.js') + + script(type='text/javascript', src='/bower_components/habitrpg-shared/dist/habitrpg-shared.js') + + != js('app') + + != js('services/authServices') + != js('services/notificationServices') + != js('services/sharedServices') + != js('services/userServices') + + != js('filters/filters') + + != js('directives/directives') + + != js('controllers/authCtrl') + != js('controllers/characterCtrl') + != js('controllers/menuCtrl') + != js('controllers/notificationCtrl') + != js('controllers/RootCtrl') + != js('controllers/settingsCtrl') + != js('controllers/statsCtrl') + != js('controllers/tasksCtrl') + != js('controllers/taskDetailsCtrl') + != js('controllers/userAvatarCtrl') + + //webfonts + link(href='//fonts.googleapis.com/css?family=Lato:300,400,700,400italic,700italic', rel='stylesheet', type='text/css') + meta(name='viewport', content='width=device-width') + meta(name='apple-mobile-web-app-capable', content='yes') + + body(ng-app="habitrpg", ng-controller="RootCtrl") + include ./shared/modals/index + include ./shared/header/header + + app:filters:filters(ng-hide='_gamePane') br #notification-area #wrap app:alerts:flash //if they hide the header, we still need user-menu visible - app:settings:menu(ng-show='_user.preferences.hideHeader') - .exp-chart(ng-show='_page.charts.exp') + app:settings:menu(ng-show='user.preferences.hideHeader') + .exp-chart(ng-show='page.charts.exp') #main.grid - div(ng-hide='_gamePane') - include ./tasks/task-list - div(ng-show='_gamePane') - app:game-pane:main - app:footer:footer - + div(ng-view) + //-app:footer:footer footer.footer .container a(target='_blank',href='https://workflowy.com/shared/9c77c53d-a174-d181-73a4-dc611508a936/') Roadmap + diff --git a/views/layout.jade b/views/layout.jade deleted file mode 100644 index 71b32369c7..0000000000 --- a/views/layout.jade +++ /dev/null @@ -1,55 +0,0 @@ -doctype 5 -html - head - title HabitRPG | Your Life The Role Playing Game - - // CSS - link(rel='stylesheet', href='/bower_components/bootstrap/docs/assets/css/bootstrap.css') - link(rel='stylesheet', href='/bower_components/bootstrap/docs/assets/css/bootstrap-responsive.css') - link(rel='stylesheet', href='/bower_components/angular-ui/build/angular-ui.css') - != css('index') - - // HabitRPG Shared - link(rel='stylesheet', href='/bower_components/habitrpg-shared/spritesheets.css') - - // JS - script(type='text/javascript', src='/bower_components/jquery/jquery.min.js') - script(type='text/javascript', src='/bower_components/lodash/lodash.js') - script(type='text/javascript', src='/bower_components/moment/moment.js') - script(type='text/javascript', src='/bower_components/angular/angular.js') - script(type='text/javascript', src='/bower_components/angular-resource/angular-resource.js') - script(type='text/javascript', src='/bower_components/angular-ui/build/angular-ui.js') - script(type='text/javascript', src='/bower_components/angular-bootstrap/ui-bootstrap.js') - script(type='text/javascript', src='/bower_components/angular-bootstrap/ui-bootstrap-tpls.js') - - script(type='text/javascript', src='/bower_components/habitrpg-shared/dist/habitrpg-shared.js') - - != js('app') - - != js('services/authServices') - != js('services/notificationServices') - != js('services/sharedServices') - != js('services/userServices') - - != js('filters/filters') - - != js('directives/directives') - - != js('controllers/authCtrl') - != js('controllers/characterCtrl') - != js('controllers/menuCtrl') - != js('controllers/notificationCtrl') - != js('controllers/RootCtrl') - != js('controllers/settingsCtrl') - != js('controllers/statsCtrl') - != js('controllers/tasksCtrl') - != js('controllers/taskDetailsCtrl') - != js('controllers/userAvatarCtrl') - - //webfonts - link(href='//fonts.googleapis.com/css?family=Lato:300,400,700,400italic,700italic', rel='stylesheet', type='text/css') - meta(name='viewport', content='width=device-width') - meta(name='apple-mobile-web-app-capable', content='yes') - - body - block content \ No newline at end of file diff --git a/views/modals/index.jade b/views/modals/index.jade deleted file mode 100644 index 15f116705b..0000000000 --- a/views/modals/index.jade +++ /dev/null @@ -1,4 +0,0 @@ -include ./achievements -include ./login -include ./reroll -include ./death \ No newline at end of file diff --git a/views/options/game-pane.html b/views/options/index-old.html similarity index 94% rename from views/options/game-pane.html rename to views/options/index-old.html index 5f148db398..48b87e4cf9 100644 --- a/views/options/game-pane.html +++ b/views/options/index-old.html @@ -8,10 +8,8 @@