Commit 6e43c8dd authored by Pascal Hartig's avatar Pascal Hartig

AngularJS + require.js: jshint style

parent 9b5e8b15
<!doctype html> <!doctype html>
<html lang="en"> <html lang="en">
<head> <head>
<meta charset="utf-8"> <meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>AngularJS • TodoMVC</title> <title>AngularJS • TodoMVC</title>
<link rel="stylesheet" href="../../../assets/base.css"> <link rel="stylesheet" href="../../../assets/base.css">
<style>[ng-cloak] {display: none}</style> <style>[ng-cloak] {display: none}</style>
<!--[if IE]> <!--[if IE]>
<script src="../../../assets/ie.js"></script> <script src="../../../assets/ie.js"></script>
<![endif]--> <![endif]-->
<script> <script>
// Include angular-loader to allow modules to be loaded in any order. // Include angular-loader to allow modules to be loaded in any order.
/* /*
AngularJS v1.0.2 AngularJS v1.0.2
(c) 2010-2012 Google, Inc. http://angularjs.org (c) 2010-2012 Google, Inc. http://angularjs.org
License: MIT License: MIT
*/ */
(function(i){'use strict';function d(c,b,e){return c[b]||(c[b]=e())}return d(d(i,"angular",Object),"module",function(){var c={};return function(b,e,f){e&&c.hasOwnProperty(b)&&(c[b]=null);return d(c,b,function(){function a(a,b,d){return function(){c[d||"push"]([a,b,arguments]);return g}}if(!e)throw Error("No module: "+b);var c=[],d=[],h=a("$injector","invoke"),g={_invokeQueue:c,_runBlocks:d,requires:e,name:b,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"), (function(i){'use strict';function d(c,b,e){return c[b]||(c[b]=e())}return d(d(i,"angular",Object),"module",function(){var c={};return function(b,e,f){e&&c.hasOwnProperty(b)&&(c[b]=null);return d(c,b,function(){function a(a,b,d){return function(){c[d||"push"]([a,b,arguments]);return g}}if(!e)throw Error("No module: "+b);var c=[],d=[],h=a("$injector","invoke"),g={_invokeQueue:c,_runBlocks:d,requires:e,name:b,provider:a("$provide","provider"),factory:a("$provide","factory"),service:a("$provide","service"), value:a("$provide","value"),constant:a("$provide","constant","unshift"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:h,run:function(a){d.push(a);return this}};f&&h(f);return g})}})})(window);
value:a("$provide","value"),constant:a("$provide","constant","unshift"),filter:a("$filterProvider","register"),controller:a("$controllerProvider","register"),directive:a("$compileProvider","directive"),config:h,run:function(a){d.push(a);return this}};f&&h(f);return g})}})})(window); </script>
</script>
</head> </head>
<body> <body>
<section id="todoapp" ng-controller="TodoController"> <section id="todoapp" ng-controller="TodoController">
<header id="header"> <header id="header">
<h1>todos</h1> <h1>todos</h1>
<form id="todo-form" ng-submit="addTodo()"> <form id="todo-form" ng-submit="addTodo()">
<input id="new-todo" placeholder="What needs to be done?" ng-model="newTodo" autofocus> <input id="new-todo" placeholder="What needs to be done?" ng-model="newTodo" autofocus>
</form> </form>
</header> </header>
<section id="main" ng-show="todos.length" ng-cloak> <section id="main" ng-show="todos.length" ng-cloak>
<input id="toggle-all" type="checkbox" ng-model="allChecked" ng-click="markAll(allChecked)"> <input id="toggle-all" type="checkbox" ng-model="allChecked" ng-click="markAll(allChecked)">
<label for="toggle-all">Mark all as complete</label> <label for="toggle-all">Mark all as complete</label>
<ul id="todo-list"> <ul id="todo-list">
<li ng-repeat="todo in todos | filter:statusFilter" ng-class="{completed: todo.completed, editing: todo == editedTodo}"> <li ng-repeat="todo in todos | filter:statusFilter" ng-class="{completed: todo.completed, editing: todo == editedTodo}">
<div class="view"> <div class="view">
<input class="toggle" type="checkbox" ng-model="todo.completed"> <input class="toggle" type="checkbox" ng-model="todo.completed">
<label ng-dblclick="editTodo(todo)">{{todo.title}}</label> <label ng-dblclick="editTodo(todo)">{{todo.title}}</label>
<button class="destroy" ng-click="removeTodo(todo)"></button> <button class="destroy" ng-click="removeTodo(todo)"></button>
</div> </div>
<form ng-submit="doneEditing(todo)"> <form ng-submit="doneEditing(todo)">
<input class="edit" ng-model="todo.title" todo-blur="doneEditing(todo)" todo-focus="todo == editedTodo"> <input class="edit" ng-model="todo.title" todo-blur="doneEditing(todo)" todo-focus="todo == editedTodo">
</form> </form>
</li> </li>
</ul> </ul>
</section> </section>
<footer id="footer" ng-show="todos.length" ng-cloak> <footer id="footer" ng-show="todos.length" ng-cloak>
<span id="todo-count"><strong>{{remainingCount}}</strong> <span id="todo-count"><strong>{{remainingCount}}</strong>
<ng-pluralize count="remainingCount" when="{ one: 'item left', other: 'items left' }"></ng-pluralize> <ng-pluralize count="remainingCount" when="{ one: 'item left', other: 'items left' }"></ng-pluralize>
</span> </span>
<ul id="filters"> <ul id="filters">
<li> <li>
<a ng-class="{selected: location.path() == '/'} " href="#/">All</a> <a ng-class="{selected: location.path() == '/'} " href="#/">All</a>
</li> </li>
<li> <li>
<a ng-class="{selected: location.path() == '/active'}" href="#/active">Active</a> <a ng-class="{selected: location.path() == '/active'}" href="#/active">Active</a>
</li> </li>
<li> <li>
<a ng-class="{selected: location.path() == '/completed'}" href="#/completed">Completed</a> <a ng-class="{selected: location.path() == '/completed'}" href="#/completed">Completed</a>
</li> </li>
</ul> </ul>
<button id="clear-completed" ng-click="clearDoneTodos()" ng-show="remainingCount < todos.length">Clear completed ({{todos.length - remainingCount}})</button> <button id="clear-completed" ng-click="clearDoneTodos()" ng-show="remainingCount < todos.length">Clear completed ({{todos.length - remainingCount}})</button>
</footer> </footer>
</section> </section>
<footer id="info"> <footer id="info">
<p>Double-click to edit a todo</p> <p>Double-click to edit a todo</p>
<p>Credits: <p>Credits:
<a href="http://twitter.com/cburgdorf">Christoph Burgdorf</a>, <a href="http://twitter.com/cburgdorf">Christoph Burgdorf</a>,
<a href="http://ericbidelman.com">Eric Bidelman</a>, <a href="http://ericbidelman.com">Eric Bidelman</a>,
<a href="http://jacobmumm.com">Jacob Mumm</a>, <a href="http://jacobmumm.com">Jacob Mumm</a>,
<a href="http://igorminar.com">Igor Minar</a> and <a href="http://igorminar.com">Igor Minar</a> and
<a href="http://twitter.com/passy">Pascal Hartig</a> <a href="http://twitter.com/passy">Pascal Hartig</a>
</p> </p>
<p>Part of <a href="http://todomvc.com">TodoMVC</a></p> <p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
</footer> </footer>
<script src="../../../assets/base.js"></script> <script src="../../../assets/base.js"></script>
<script data-main="js/main" src="../../../assets/require.min.js"></script> <script data-main="js/main" src="../../../assets/require.min.js"></script>
</body> </body>
</html> </html>
/*global define*/
'use strict'; 'use strict';
define(['angular'], function (angular) { define(['angular'], function (angular) {
return angular.module('todomvc', []); return angular.module('todomvc', []);
}); });
/*global define*/
'use strict'; 'use strict';
/** /**
...@@ -7,74 +8,77 @@ ...@@ -7,74 +8,77 @@
*/ */
define(['app', 'services/todoStorage'], function (app) { define(['app', 'services/todoStorage'], function (app) {
return app.controller('TodoController', ['$scope', '$location', 'todoStorage', 'filterFilter', return app.controller('TodoController', ['$scope', '$location', 'todoStorage', 'filterFilter',
function TodoController( $scope, $location, todoStorage, filterFilter ) { function TodoController($scope, $location, todoStorage, filterFilter) {
var todos = $scope.todos = todoStorage.get(); var todos = $scope.todos = todoStorage.get();
$scope.newTodo = ""; $scope.newTodo = '';
$scope.editedTodo = null; $scope.editedTodo = null;
$scope.$watch('todos', function() { $scope.$watch('todos', function () {
$scope.remainingCount = filterFilter(todos, {completed: false}).length; $scope.remainingCount = filterFilter(todos, {completed: false}).length;
$scope.doneCount = todos.length - $scope.remainingCount; $scope.doneCount = todos.length - $scope.remainingCount;
$scope.allChecked = !$scope.remainingCount $scope.allChecked = !$scope.remainingCount;
todoStorage.put(todos); todoStorage.put(todos);
}, true); }, true);
if ( $location.path() === '' ) $location.path('/'); if ($location.path() === '') {
$scope.location = $location; $location.path('/');
}
$scope.$watch( 'location.path()', function( path ) { $scope.location = $location;
$scope.statusFilter = (path == '/active') ?
{ completed: false } : (path == '/completed') ?
{ completed: true } : null;
});
$scope.$watch('location.path()', function (path) {
$scope.statusFilter = (path === '/active') ?
{ completed: false } : (path === '/completed') ?
{ completed: true } : null;
});
$scope.addTodo = function() {
if ( !$scope.newTodo.length ) {
return;
}
todos.push({ $scope.addTodo = function () {
title: $scope.newTodo, if (!$scope.newTodo.length) {
completed: false return;
}); }
$scope.newTodo = ''; todos.push({
}; title: $scope.newTodo,
completed: false
});
$scope.newTodo = '';
};
$scope.editTodo = function( todo ) {
$scope.editedTodo = todo;
};
$scope.editTodo = function (todo) {
$scope.editedTodo = todo;
};
$scope.doneEditing = function( todo ) {
$scope.editedTodo = null;
if ( !todo.title ) {
$scope.removeTodo(todo);
}
};
$scope.doneEditing = function (todo) {
$scope.editedTodo = null;
if (!todo.title) {
$scope.removeTodo(todo);
}
};
$scope.removeTodo = function( todo ) {
todos.splice(todos.indexOf(todo), 1);
};
$scope.removeTodo = function (todo) {
todos.splice(todos.indexOf(todo), 1);
};
$scope.clearDoneTodos = function() {
$scope.todos = todos = todos.filter(function( val ) {
return !val.completed;
});
};
$scope.clearDoneTodos = function () {
$scope.todos = todos = todos.filter(function (val) {
return !val.completed;
});
};
$scope.markAll = function( done ) {
todos.forEach(function( todo ) { $scope.markAll = function (done) {
todo.completed = done; todos.forEach(function (todo) {
}); todo.completed = done;
}; });
} };
]); }
]);
}); });
/*global define*/
'use strict'; 'use strict';
/** /**
* Directive that executes an expression when the element it is applied to loses focus. * Directive that executes an expression when the element it is applied to loses focus.
*/ */
define(['app'], function ( app ) { define(['app'], function (app) {
app.directive('todoBlur', function() { app.directive('todoBlur', function () {
return function( scope, elem, attrs ) { return function (scope, elem, attrs) {
elem.bind('blur', function() { elem.bind('blur', function () {
scope.$apply(attrs.todoBlur); scope.$apply(attrs.todoBlur);
}); });
}; };
}); });
}); });
/*global define*/
'use strict'; 'use strict';
/** /**
* Directive that places focus on the element it is applied to when the expression it binds to evaluates to true. * Directive that places focus on the element it is applied to when the expression it binds to evaluates to true.
*/ */
define(['app'], function ( app ) { define(['app'], function (app) {
app.directive('todoFocus', ['$timeout', function( $timeout ) { app.directive('todoFocus', ['$timeout', function ($timeout) {
return function( scope, elem, attrs ) { return function (scope, elem, attrs) {
scope.$watch(attrs.todoFocus, function( newval ) { scope.$watch(attrs.todoFocus, function (newval) {
if ( newval ) { if (newval) {
$timeout(function() { $timeout(function () {
elem[0].focus(); elem[0].focus();
}, 0, false); }, 0, false);
} }
}); });
}; };
}]); }]);
}); });
/*global require*/
'use strict'; 'use strict';
require.config({ require.config({
paths: { paths: {
angular: 'libs/angular/angular.min' angular: 'libs/angular/angular.min'
}, },
shim: { shim: {
angular: { angular: {
exports: 'angular' exports: 'angular'
} }
} }
}); });
require(['angular', 'app', 'controllers/todo', 'directives/todoFocus', 'directives/todoBlur'], function (angular) { require(['angular', 'app', 'controllers/todo', 'directives/todoFocus', 'directives/todoBlur'], function (angular) {
angular.bootstrap(document, ['todomvc']); angular.bootstrap(document, ['todomvc']);
}); });
/*global define*/
'use strict'; 'use strict';
/** /**
* Services that persists and retrieves TODOs from localStorage. * Services that persists and retrieves TODOs from localStorage.
*/ */
define(['app'], function (app) { define(['app'], function (app) {
app.factory( 'todoStorage', function() { app.factory('todoStorage', function () {
var STORAGE_ID = 'todos-angularjs-requirejs'; var STORAGE_ID = 'todos-angularjs-requirejs';
return { return {
get: function() { get: function () {
return JSON.parse(localStorage.getItem(STORAGE_ID) || '[]'); return JSON.parse(localStorage.getItem(STORAGE_ID) || '[]');
}, },
put: function( todos ) { put: function (todos) {
localStorage.setItem(STORAGE_ID, JSON.stringify(todos)); localStorage.setItem(STORAGE_ID, JSON.stringify(todos));
} }
}; };
}); });
}); });
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment