mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-19 15:48:04 +01:00
[#1710] some simplification on Groups memoization. No need for all that
special handling of Header Party, just have it's own controller and do specific-handling. Also, removing MenuCtrl & StatsCtrl - they weren't used TMK, I think twas a vestige of mobile. @paglias give that a gander
This commit is contained in:
@@ -57,11 +57,10 @@ module.exports = function(grunt) {
|
||||
'public/js/directives/directives.js',
|
||||
|
||||
'public/js/controllers/authCtrl.js',
|
||||
'public/js/controllers/menuCtrl.js',
|
||||
'public/js/controllers/notificationCtrl.js',
|
||||
'public/js/controllers/rootCtrl.js',
|
||||
'public/js/controllers/settingsCtrl.js',
|
||||
'public/js/controllers/statsCtrl.js',
|
||||
'public/js/controllers/headerCtrl.js',
|
||||
'public/js/controllers/tasksCtrl.js',
|
||||
'public/js/controllers/filtersCtrl.js',
|
||||
'public/js/controllers/userCtrl.js',
|
||||
|
||||
@@ -25,12 +25,6 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
||||
group.websites.splice($index,1);
|
||||
}
|
||||
|
||||
// ------ Loading ------
|
||||
|
||||
$scope.groups = Groups.groups;
|
||||
$scope.fetchGuilds = Groups.fetchGuilds;
|
||||
$scope.fetchTavern = Groups.fetchTavern;
|
||||
|
||||
// ------ Modals ------
|
||||
|
||||
$scope.clickMember = function(uid, forceShow) {
|
||||
@@ -130,7 +124,10 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
||||
|
||||
.controller("GuildsCtrl", ['$scope', 'Groups', 'User', '$rootScope', '$state', '$location',
|
||||
function($scope, Groups, User, $rootScope, $state, $location) {
|
||||
Groups.fetchGuilds();
|
||||
$scope.groups = {
|
||||
guilds: Groups.myGuilds(),
|
||||
"public": Groups.publicGuilds()
|
||||
}
|
||||
$scope.type = 'guild';
|
||||
$scope.text = 'Guild';
|
||||
$scope.newGroup = new Groups.Group({type:'guild', privacy:'private', leader: User.user._id, members: [User.user._id]});
|
||||
@@ -193,7 +190,7 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
||||
function($scope, Groups, User, $state) {
|
||||
$scope.type = 'party';
|
||||
$scope.text = 'Party';
|
||||
$scope.group = Groups.groups.party;
|
||||
$scope.group = Groups.party();
|
||||
$scope.newGroup = new Groups.Group({type:'party', leader: User.user._id, members: [User.user._id]});
|
||||
$scope.create = function(group){
|
||||
group.$save(function(newGroup){
|
||||
@@ -222,17 +219,12 @@ habitrpg.controller("GroupsCtrl", ['$scope', '$rootScope', 'Groups', '$http', 'A
|
||||
User.user.invitations.party = undefined;
|
||||
User.log({op:'set',data:{'invitations.party':{}}});
|
||||
}
|
||||
|
||||
$scope.removeSelf = function(member){
|
||||
return member._id !== User.user._id;
|
||||
}
|
||||
}
|
||||
])
|
||||
|
||||
.controller("TavernCtrl", ['$scope', 'Groups', 'User',
|
||||
function($scope, Groups, User) {
|
||||
Groups.fetchTavern();
|
||||
$scope.group = Groups.groups.tavern;
|
||||
$scope.group = Groups.tavern();
|
||||
$scope.rest = function(){
|
||||
User.user.flags.rest = !User.user.flags.rest;
|
||||
User.log({op:'set',data:{'flags.rest':User.user.flags.rest}});
|
||||
|
||||
10
public/js/controllers/headerCtrl.js
Normal file
10
public/js/controllers/headerCtrl.js
Normal file
@@ -0,0 +1,10 @@
|
||||
"use strict";
|
||||
|
||||
habitrpg.controller("HeaderCtrl", ['$scope', 'Groups', 'User',
|
||||
function($scope, Groups, User) {
|
||||
$scope.party = Groups.party();
|
||||
$scope.partyMinusSelf = _.filter($scope.party, function(member){
|
||||
return member._id !== User.user._id;
|
||||
});
|
||||
}
|
||||
]);
|
||||
@@ -1,24 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
/**
|
||||
* The menu controller:
|
||||
* - sets the menu options, should we do it dynamic so it generates the menu like: width = 1/elements * 100 ?
|
||||
* - exposes the model to the template and provides event handlers
|
||||
*/
|
||||
|
||||
habitrpg.controller('MenuCtrl',
|
||||
['$scope', '$rootScope', 'User',
|
||||
function($scope, $rootScope, User) {
|
||||
|
||||
//FIXME are these used anywhere? can we get rid of this file?
|
||||
|
||||
$scope.refreshing = function () {
|
||||
User.settings.fetching ? "spin" : ""
|
||||
};
|
||||
|
||||
$scope.queueLength = function () {
|
||||
User.settings.sync.queue.length || User.settings.sync.sent.length
|
||||
};
|
||||
|
||||
}
|
||||
]);
|
||||
@@ -1,14 +0,0 @@
|
||||
'use strict';
|
||||
|
||||
habitrpg.controller('StatsCtrl',
|
||||
['$scope', 'User',
|
||||
function($scope, User) {
|
||||
$scope.refreshing = function () {
|
||||
User.settings.fetching ? "spin" : ""
|
||||
};
|
||||
$scope.queueLength = function () {
|
||||
User.settings.sync.queue.length || User.settings.sync.sent.length
|
||||
};
|
||||
$scope.stats = User.user.stats;
|
||||
}
|
||||
]);
|
||||
@@ -5,8 +5,8 @@
|
||||
*/
|
||||
|
||||
angular.module('groupServices', ['ngResource']).
|
||||
factory('Groups', ['API_URL', '$resource', 'User', '$q', 'Members',
|
||||
function(API_URL, $resource, User, $q, Members) {
|
||||
factory('Groups', ['API_URL', '$resource', '$q',
|
||||
function(API_URL, $resource, $q) {
|
||||
var Group = $resource(API_URL + '/api/v1/groups/:gid',
|
||||
{gid:'@_id', messageId: '@_messageId'},
|
||||
{
|
||||
@@ -19,44 +19,31 @@ angular.module('groupServices', ['ngResource']).
|
||||
removeMember: {method: "POST", url: API_URL + '/api/v1/groups/:gid/removeMember'}
|
||||
});
|
||||
|
||||
// The user may not visit the public guilds, personal guilds, and tavern pages. So
|
||||
// we defer loading them to the html until they've clicked the tabs
|
||||
var partyQ = $q.defer();
|
||||
|
||||
var groups = {
|
||||
party: partyQ.promise
|
||||
};
|
||||
// Defer loading everything until they're requested
|
||||
var party, myGuilds, publicGuilds, tavern;
|
||||
|
||||
// But we don't defer triggering Party, since we always need it for the header if nothing else
|
||||
Group.get({gid:'party'}, function(party){
|
||||
partyQ.resolve(party);
|
||||
});
|
||||
party = Group.get({gid: 'party'});
|
||||
|
||||
return {
|
||||
|
||||
// Note the _.once() to make sure it can never be called again
|
||||
fetchGuilds: _.once(function(){
|
||||
party: function(){
|
||||
return party;
|
||||
},
|
||||
publicGuilds: function(){
|
||||
//TODO combine these as {type:'guilds,public'} and create a $filter() to separate them
|
||||
Group.query({type:'guilds'}, function(_groups){
|
||||
groups.guilds = _groups;
|
||||
//Members.populate(_groups);
|
||||
});
|
||||
Group.query({type:'public'}, function(_groups){
|
||||
groups.public = _groups;
|
||||
//Members.populate(_groups);
|
||||
});
|
||||
}),
|
||||
|
||||
fetchTavern: _.once(function(){
|
||||
Group.get({gid:'habitrpg'}, function(_group){
|
||||
groups.tavern = _group;
|
||||
})
|
||||
}),
|
||||
|
||||
Group: Group,
|
||||
|
||||
groups: groups
|
||||
if (!publicGuilds) publicGuilds = Group.query({type:'public'});
|
||||
return publicGuilds;
|
||||
},
|
||||
myGuilds: function(){
|
||||
if (!myGuilds) myGuilds = Group.query({type:'guilds'});
|
||||
return myGuilds;
|
||||
},
|
||||
tavern: function(){
|
||||
if (!tavern) tavern = Group.get({gid:'habitrpg'});
|
||||
return tavern;
|
||||
},
|
||||
|
||||
Group: Group
|
||||
}
|
||||
}
|
||||
]);
|
||||
|
||||
@@ -68,11 +68,10 @@ html
|
||||
script(type='text/javascript', src='/js/directives/directives.js')
|
||||
|
||||
script(type='text/javascript', src='/js/controllers/authCtrl.js')
|
||||
script(type='text/javascript', src='/js/controllers/menuCtrl.js')
|
||||
script(type='text/javascript', src='/js/controllers/notificationCtrl.js')
|
||||
script(type='text/javascript', src='/js/controllers/rootCtrl.js')
|
||||
script(type='text/javascript', src='/js/controllers/settingsCtrl.js')
|
||||
script(type='text/javascript', src='/js/controllers/statsCtrl.js')
|
||||
script(type='text/javascript', src='/js/controllers/headerCtrl.js')
|
||||
script(type='text/javascript', src='/js/controllers/tasksCtrl.js')
|
||||
script(type='text/javascript', src='/js/controllers/filtersCtrl.js')
|
||||
script(type='text/javascript', src='/js/controllers/userCtrl.js')
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
// @TODO ui:connectionAlert
|
||||
.header-wrap
|
||||
.header-wrap(ng-controller='HeaderCtrl')
|
||||
a.label.undo-button(x-bind='click:undo', ng-show='_undo') Undo
|
||||
div(ng-if='!user.preferences.hideHeader')
|
||||
include menu
|
||||
@@ -27,7 +27,7 @@
|
||||
i.icon-signal
|
||||
// party
|
||||
span(ng-controller='PartyCtrl')
|
||||
.herobox-wrap(ng-repeat='profile in groups.party.members | filter:removeSelf')
|
||||
.herobox-wrap(ng-repeat='profile in party.members | filter:removeSelf')
|
||||
include avatar
|
||||
|
||||
.NPC-Bailey-Head(ng-show='user.flags.newStuff', tooltip='Psst', tooltip-placement='top', ng-click='modals.newStuff=true')
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
.user-menu(ng-controller='AuthCtrl')
|
||||
button.task-action-btn.tile.solid(ng-hide='authenticated()', style='cursor: pointer;', ng-click="modals.login = true") Login / Register
|
||||
ul.nav.site-nav(ng-show='authenticated()')
|
||||
li.flyout(ng-controller='MenuCtrl')
|
||||
li.flyout
|
||||
h1.task-action-btn.tile.solid.user-reporter {{user.profile.name}}
|
||||
ul.flyout-content.nav.stacked
|
||||
li
|
||||
|
||||
Reference in New Issue
Block a user