rewrite: remove the rest of litenull_rewrite

This commit is contained in:
Tyler Renelle 2013-08-29 01:47:25 -04:00
parent e568a5ba31
commit df080c4368
6 changed files with 1 additions and 515 deletions

View file

@ -1 +1 @@
web: coffee src/server.coffee
web: node src/server.js

View file

@ -1,23 +0,0 @@
'use strict';
/*
Statz controller
- Retrieves statz from localStorage.
- Exposes the model to the template and provides event handlers
*/
habitrpg.controller( 'StatsCtrl', function StatsCtrl( $scope, $location, filterFilter, User ) {
$scope.refreshing = function () {
return User.settings.fetching ? "spin" : ""
};
$scope.queueLength = function () {
return User.settings.sync.queue.length || User.settings.sync.sent.length
};
$scope.stats = User.user.stats;
});

View file

@ -1,111 +0,0 @@
'use strict';
habitrpg.controller('TasksCtrl', function TasksCtrl($scope, $rootScope, $location, filterFilter, User, Algos, Helpers, Notification) {
$scope.user = User.user;
$scope.score = function (task, direction) {
//save current stats to compute the difference after scoring.
var statsDiff = {};
var oldStats = _.clone(User.user.stats);
Algos.score(User.user, task, direction);
//compute the stats change.
_.each(oldStats, function (value, key) {
var newValue = User.user.stats[key];
if (newValue !== value) {
statsDiff[key] = newValue - value;
}
});
//notify user if there are changes in stats.
if (Object.keys(statsDiff).length > 0) {
// Notification.push({type: 'stats', stats: statsDiff});
}
User.log({op: 'score', task: task, dir: direction});
};
$scope.save = function(task) {
var ops = ([
{op: 'set', path: "tasks." + task.id + ".text", value: task.text},
{op: 'set', path: "tasks." + task.id + ".notes", value: task.notes},
{op: 'set', path: "tasks." + task.id + ".up", value: task.up},
{op: 'set', path: "tasks." + task.id + ".down", value: task.down},
{op: 'set', path: "tasks." + task.id + ".priority", value: task.priority},
{op: 'set', path: "tasks." + task.id + ".date", value: task.date},
{op: 'set', path: "tasks." + task.id + ".price", value: task.price},
])
_.each(task.tags, function(el, key, list) {
ops.push({op: 'set', path: "tasks." + task.id + ".tags." + key, value: el})
})
_.each(task.repeat, function(el, key, list) {
ops.push({op: 'set', path: "tasks." + task.id + ".repeat." + key, value: el})
})
User.log(ops)
task.editing = false
}
$scope.getRepeat = function(task, repeat) {
var enabled = '';
_.each(task.repeat, function(el, key, list) {
if (key == repeat && el == true) {
enabled = true
}
})
if (enabled) {
return true
}else{
return false
}
}
$scope.setRepeat = function(task, repeat) {
if (typeof task.repeat == 'undefined') {
var obj = {}
obj[repeat] = true;
task.repeat = {}
task.repeat = obj
return true
}
if (!task.repeat[repeat]) {
task.repeat[repeat] = true
}else{
task.repeat[repeat] = false
}
}
$scope.addTag = function(task, tag) {
var obj = {}
obj[tag] = true
task.tags.push(obj)
}
$scope.toggleTag = function(task, tag) {
var obj = {}
if (typeof task.tags != 'undefined') {
if (!task.tags[tag]) {
task.tags[tag] = false;
}else{
task.tags[tag] = true
}
}else{
task.tags = {}
task.tags[tag] = true
}
}
});

View file

@ -1,74 +0,0 @@
angular.module('notificationServices', []).
factory('Notification', function () {
var data = {message:''};
var active = false;
var timer = null;
return {
hide: function () {
$('#notification').fadeOut(function () {
$('#notification').css('top', '-60px').css('webkit-transform', 'none').show().css('left', '0px');
});
active = false;
timer = null;
},
animate: function () {
if (timer) {
clearTimeout(timer);
timer = setTimeout(this.hide, 2000)
}
if (active == false) {
active = true;
$('#notification').transition({ y: 60, x: 0 });
timer = setTimeout(this.hide, 2000);
}
},
push: function (message) {
data.message = ''
// TODO implement message growl type notifications instead.
// {type:'stats',stats:stats} and {type:"text", text:"text"}
// {hp:1,gp:-2.2}
switch(message.type) {
case 'stats':
var keys = Object.keys(message.stats)
_.each(keys, function(el, index) {
if (message.stats[el] < 0) {
data.message += el + ':' + '<font style="color:red">' + message.stats[el] + '</font>'
}else{
data.message += el + ':' + message.stats[el]
}
})
break;
case 'text':
data.message = message.text
break;
}
this.animate()
},
get: function () {
return data;
},
clearTimer: function () {
clearTimeout(timer);
timer = null;
active = false;
},
init: function () {
timer = setTimeout(this.hide, 2000);
}
}
});

View file

@ -1,34 +0,0 @@
<div class='login-page' ng-controller='AuthCtrl'>
<h2>Existing User</h2>
<div>
<!-- Facebook -->
<button class='btn' ng-click="Facebook.login()">Connect with Facebook</button>
<div ng-show="Facebook.getAuth()">
<h4>Access Token:</h4>
<p ng-bind="Facebook.getAuth().accessToken"></p>
<button class='btn btn-small' ng-click="Facebook.logout()">Logout</button>
</div>
<div id='fb-root'></div>
<button class='btn' ng-click="showLocalLogin = !showLocalLogin;">Username / Password</button>
<form ng-show="showLocalLogin" ng-submit="localLogin()">
<label for="username">Username</label><input type='text' id="username" required />
<label for="password">Password</label><input type='password' id="password" required />
<input class='btn' type='submit' value="Submit" />
</form>
<button class='btn' ng-click="showAPILogin = !showAPILogin;">ID / API Token</button>
<form ng-show="showAPILogin" ng-submit="apiLogin()" id="apiLoginForm">
<label for="uuid">UUID</label><input type='text' id="uuid" required />
<label for="apiToken">API Token</label><input type='text' id="apiToken" required />
<input class='btn' type='submit' value="Submit" />
</form>
</div>
<h2>New User</h2>
<button class='btn' ng-click="newGame()">Start New Game</button>
</div>

View file

@ -1,272 +0,0 @@
<div ng-controller="NotificationCtrl">
<div id="notification"><div ng-bind-html-unsafe="data.message">aaaa</div></div>
</div>
<div id="wrap">
<div ng-controller="TasksCtrl">
<div id="main" class="grid">
<div class="module">
<div class="task-column habits">
<h2 class="task-column_title">Habits</h2>
<form id="new-habit" class="addtask-form form-inline new-task-form " ng-submit="addTask('habit')">
<span class="addtask-field">
<input value="" type="text" placeholder="New Habit" ng-model="newTaskHabit">
</span>
<input class="addtask-btn" type="submit" value="">
</form>
<hr>
<ul class="habits ui-sortable" sort>
<li ng-repeat="task in tasks() | filter:{type:'habit'}" class="task habit {{getClass(task)}}" ng-class="{'habit-wide':task.up && task.down}">
<div class="task-meta-controls">
<a rel="toolitp" ng-click="editTask(task)"><i class="icon-pencil"></i></a>
<a rel="toolitp"><i class="icon-trash" ng-click="deleteTask(task)"></i></a>
<a rel="toolitp"><i class="icon-signal"></i></a>
<a rel="toolitp" ng-show="task.notes"><i class="icon-comment"></i></a>
</div>
<div class="task-controls task-primary">
<a class="task-action-btn" ng-click="score(task, 'up')" ng-show="task.up == true"></a>
<a class="task-action-btn" ng-click="score(task, 'down')" ng-show="task.down == true" style="margin-left:-3px"></a>
</div>
<p class="task-text">{{task.text}}</p>
<div ng-show="task.editing == true">
<div class="task-options">
<fieldset class="option-group">
<label class="option-title">Text</label>
<input class="option-content" type="text" value="{{task.text}}" ng-model="task.text">
<label class="option-title">Extra notes</label>
<textarea class="option-content" rows="3" ng-model="task.notes">{{task.notes}}</textarea>
</fieldset>
<fieldset class="option-group">
<legend class="option-title">Direction/Actions</legend>
<span class="task-checker action-plusminus select-toggle">
<input id="{{task.id}}-option-plus" class="visuallyhidden focusable" type="checkbox" checked="" autocomplete="off" ng-model="task.up">
<label for="{{task.id}}-option-plus"></label>
</span>
<span class="task-checker action-plusminus select-toggle">
<input id="{{task.id}}-option-minus" class="visuallyhidden focusable" type="checkbox" checked="" autocomplete="off" ng-model="task.down">
<label for="{{task.id}}-option-minus"></label>
</span>
</fieldset>
<fieldset class="option-group">
<legend class="option-title">Tags</legend>
<label class="checkbox" ng-repeat="tag in user.tags">
<input type="checkbox" autocomplete="off" ng-model="task['tags'][tag.id]">
{{tag.name}}
</fieldset>
<p class="option-title mega"><a href="" ng-click="showAdvancedOptions(task)">Advanced options</a></p>
<fieldset class="option-group advanced-option" ng-show="task.advanced">
<legend class="option-title">
<i class="icon-question-sign"></i>
Difficulty
</legend>
<div class="task-controls tile-group priority-multiplier">
<button type="button" class="task-action-btn tile" data-priority="!" ng-class="{active:getPriority(task, '!')}" ng-click="setPriority(task, '!')">Easy</button>
<button type="button" class="task-action-btn tile " data-priority="!!" ng-class="{active: getPriority(task, '!!')}" ng-click="setPriority(task, '!!')">Medium</button>
<button type="button" class="task-action-btn tile " data-priority="!!!" ng-class="{active: getPriority(task, '!!!')}" ng-click="setPriority(task, '!!!')">Hard</button>
</div>
</fieldset>
<fieldset class="option-group">
<button type="submit" class="task-action-btn tile spacious" ng-click="save(task)">Save & Close</button>
</fieldset>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="module">
<div class="task-column dailies">
<h2 class="task-column_title">Dailies</h2>
<form id="new-habit" class="addtask-form form-inline new-task-form " data-task-type="habit" ng-submit="addTask('daily')">
<span class="addtask-field">
<input value="" type="text" placeholder="New Daily" ng-model="newTaskDailies"></span>
<input class="addtask-btn" type="submit" value="">
</form>
<hr>
<ul class="habits ui-sortable" sort>
<li ng-repeat="task in tasks() | filter:{type:'daily'}" class="task habit {{getClass(task)}}">
<div class="task-meta-controls">
<a rel="toolitp"><i class="icon-pencil" ng-click="editTask(task)"></i></a>
<a rel="toolitp"><i class="icon-trash" ng-click="deleteTask(task)"></i></a>
<a rel="toolitp"><i class="icon-signal"></i></a>
<a rel="toolitp"><i class="icon-comment" ng-show="task.notes"></i></a>
</div>
<div class="task-controls task-primary">
<span class="task-checker action-yesno">
<input id="{{task.id}}" type="checkbox" class="visuallyhidden focusable" autocomplete="off" ng-model="task.completed" ng-change="changeCheck(task)">
<label for="{{task.id}}"></label>
</span>
</div>
<p class="task-text">{{task.text}}</p>
<div ng-show="task.editing == true">
<div class="task-options">
<fieldset class="option-group">
<label class="option-title">Text</label>
<input class="option-content" type="text" value="{{task.text}}" ng-model="task.text">
<label class="option-title">Extra notes</label>
<textarea class="option-content" rows="3" ng-model="task.notes">{{task.notes}}</textarea>
</fieldset>
<fieldset class="option-group">
<legend class="option-title">Repeat</legend>
<div class="task-controls tile-group repeat-days">
<button type="button" class="task-action-btn tile" ng-class="{active:getRepeat(task, 'su')}" ng-click="setRepeat(task, 'su')">Su</button>
<button type="button" class="task-action-btn tile" ng-class="{active:getRepeat(task, 'm')}" ng-click="setRepeat(task, 'm')">M</button>
<button type="button" class="task-action-btn tile" ng-class="{active:getRepeat(task, 't')}" ng-click="setRepeat(task, 't')">T</button>
<button type="button" class="task-action-btn tile" ng-class="{active:getRepeat(task, 'w')}" ng-click="setRepeat(task, 'w')">W</button>
<button type="button" class="task-action-btn tile" ng-class="{active:getRepeat(task, 'th')}" ng-click="setRepeat(task, 'th')">Th</button>
<button type="button" class="task-action-btn tile" ng-class="{active:getRepeat(task, 'f')}" ng-click="setRepeat(task, 'f')">F</button>
<button type="button" class="task-action-btn tile" ng-class="{active:getRepeat(task, 's')}" ng-click="setRepeat(task, 's')">S</button>
</div>
</fieldset>
<fieldset class="option-group">
<legend class="option-title">Tags</legend>
<label class="checkbox" ng-repeat="tag in user.tags">
<input type="checkbox" autocomplete="off" ng-model="task.tags[tag.id]">
{{tag.name}}
</fieldset>
<p class="option-title mega"><a href="" ng-click="showAdvancedOptions(task)">Advanced options</a></p>
<fieldset class="option-group advanced-option" ng-show="task.advanced">
<legend class="option-title">
<i class="icon-question-sign"></i>
Difficulty
</legend>
<div class="task-controls tile-group priority-multiplier">
<button type="button" class="task-action-btn tile" data-priority="!" ng-class="{active:getPriority(task, '!')}" ng-click="setPriority(task, '!')">Easy</button>
<button type="button" class="task-action-btn tile " data-priority="!!" ng-class="{active: getPriority(task, '!!')}" ng-click="setPriority(task, '!!')">Medium</button>
<button type="button" class="task-action-btn tile " data-priority="!!!" ng-class="{active: getPriority(task, '!!!')}" ng-click="setPriority(task, '!!!')">Hard</button>
</div>
</fieldset>
<fieldset class="option-group">
<button type="submit" class="task-action-btn tile spacious" ng-click="save(task)">Save & Close</button>
</fieldset>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="module">
<div class="task-column todos">
<h2 class="task-column_title">Todos</h2>
<form id="new-habit" class="addtask-form form-inline new-task-form " data-task-type="habit" ng-submit="addTask('todo')">
<span class="addtask-field">
<input value="" type="text" placeholder="New Todo" ng-model="newTaskTodo">
</span>
<input class="addtask-btn" type="submit" value="">
</form>
<hr>
<ul class="habits ui-sortable" sort>
<li ng-repeat="task in tasks() | filter:{type:'todo'}" class="task habit {{getClass(task)}}">
<div class="task-meta-controls">
<a rel="toolitp"><i class="icon-pencil" ng-click="editTask(task)"></i></a>
<a rel="toolitp"><i class="icon-trash" ng-click="deleteTask(task)"></i></a>
<a rel="toolitp"><i class="icon-comment" ng-show="task.notes"></i></a>
</div>
<div class="task-controls task-primary">
<span class="task-checker action-yesno">
<input type="checkbox" class="visuallyhidden focusable" autocomplete="off" ng-model="task.completed" ng-model="task.completed" ng-change="changeCheck(task)" id="{{task.id}}">
<label for="{{task.id}}"></label>
</span>
</div>
<p class="task-text">{{task.text}}</p>
<div ng-show="task.editing == true">
<div class="task-options">
<fieldset class="option-group">
<label class="option-title">Text</label>
<input class="option-content" type="text" value="{{task.text}}" ng-model="task.text">
<label class="option-title">Extra notes</label>
<textarea class="option-content" rows="3" ng-model="task.notes">{{task.notes}}</textarea>
</fieldset>
<fieldset>
<legend class="option-title">Due date</legend>
<input class="option-content" type="date" ng-model="task.date">
<div class="money input-suffix">
<span class="shop-gold"></span>
</div>
<fieldset class="option-group">
<legend class="option-title">Tags</legend>
<label class="checkbox" ng-repeat="tag in user.tags">
<input type="checkbox" autocomplete="off" ng-model="task.tags[tag.id]">
{{tag.name}}
</fieldset>
<p class="option-title mega"><a href="" ng-click="showAdvancedOptions(task)">Advanced options</a></p>
<fieldset class="option-group advanced-option" ng-show="task.advanced">
<legend class="option-title">
<i class="icon-question-sign"></i>
Difficulty
</legend>
<div class="task-controls tile-group priority-multiplier">
<button type="button" class="task-action-btn tile" data-priority="!" ng-class="{active:getPriority(task, '!')}" ng-click="setPriority(task, '!')">Easy</button>
<button type="button" class="task-action-btn tile " data-priority="!!" ng-class="{active: getPriority(task, '!!')}" ng-click="setPriority(task, '!!')">Medium</button>
<button type="button" class="task-action-btn tile " data-priority="!!!" ng-class="{active: getPriority(task, '!!!')}" ng-click="setPriority(task, '!!!')">Hard</button>
</div>
</fieldset>
<fieldset class="option-group">
<button type="submit" class="task-action-btn tile spacious" ng-click="save(task)">Save & Close</button>
</fieldset>
</div>
</div>
</li>
</ul>
</div>
</div>
<div class="module rewards-module">
<div class="task-column rewards">
<span class="option-box pull-right wallet">
<div class="money">
{{money_gold}}
<span class="shop_gold" rel="tooltip" data-original-title="Gold"></span>
</div>
<div class="money">
{{money_silver}}
<span class="shop_silver" rel="tooltip" data-original-title="Silver"></span>
</div>
</span>
<h2 class="task-column_title">Rewards</h2>
<form id="new-habit" class="addtask-form form-inline new-task-form " data-task-type="habit" onsubmit="return false"><span class="addtask-field"><input id="$2y" value="" type="text" placeholder="New Habit"></span><input class="addtask-btn" type="submit" value=""></form>
<hr>
<ul class="habits ui-sortable" sort>
<li ng-repeat="task in tasks() | filter:{type:'reward'}" class="task reward">
<div class="task-meta-controls">
<a rel="toolitp" data-original-title="Edit"><i class="icon-pencil" ng-click="editTask(task)"></i></a>
<a rel="toolitp" data-original-title="Delete"><i class="icon-trash" ng-click="deleteTask(task)"></i></a>
<a rel="toolitp"><i class="icon-comment" ng-show="task.notes"></i></a>
</div>
<div class="task-controls task-primary">
<a class="money btn-buy" ng-click="score(task, 'down')">
<span class="reward-cost">{{task.value}}</span>
<span class="shop_gold"></span>
</a>
</div>
<p class="task-text">{{task.text}}</p>
<div ng-show="task.editing == true">
<div class="task-options">
<fieldset class="option-group">
<label class="option-title">Text</label>
<input class="option-content" type="text" value="{{task.text}}" ng-model="task.text">
<label class="option-title">Extra notes</label>
<textarea class="option-content" rows="3" ng-model="task.notes">{{task.notes}}</textarea>
</fieldset>
<fieldset>
<legend class="option-title">Price:</legend>
<input class="option-content" type="number" ng-model="task.price">
<fieldset class="option-group">
<legend class="option-title">Tags</legend>
<label class="checkbox" ng-repeat="tag in user.tags">
<input type="checkbox" autocomplete="off" ng-model="task.tags[tag.id]">
{{tag.name}}
</fieldset>
<fieldset class="option-group">
<button type="submit" class="task-action-btn tile spacious" ng-click="save(task)">Save & Close</button>
</fieldset>
</div>
</div>
</li>
</ul>
</div>
</div>
</div>
</div>
</div>