Add todoapp benchmark
This commit is contained in:
parent
479db8c2cc
commit
02e7b40c07
218 changed files with 63168 additions and 0 deletions
18
bench/implementations/ember-2.6.3/app/app.js
Executable file
18
bench/implementations/ember-2.6.3/app/app.js
Executable file
|
|
@ -0,0 +1,18 @@
|
|||
import Ember from 'ember';
|
||||
import Resolver from './resolver';
|
||||
import loadInitializers from 'ember-load-initializers';
|
||||
import config from './config/environment';
|
||||
|
||||
let App;
|
||||
|
||||
Ember.MODEL_FACTORY_INJECTIONS = true;
|
||||
|
||||
App = Ember.Application.extend({
|
||||
modulePrefix: config.modulePrefix,
|
||||
podModulePrefix: config.podModulePrefix,
|
||||
Resolver
|
||||
});
|
||||
|
||||
loadInitializers(App, config.modulePrefix);
|
||||
|
||||
export default App;
|
||||
48
bench/implementations/ember-2.6.3/app/components/todo-item.js
Executable file
48
bench/implementations/ember-2.6.3/app/components/todo-item.js
Executable file
|
|
@ -0,0 +1,48 @@
|
|||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Component.extend({
|
||||
repo: Ember.inject.service(),
|
||||
tagName: 'li',
|
||||
editing: false,
|
||||
classNameBindings: ['todo.completed', 'editing'],
|
||||
|
||||
actions: {
|
||||
startEditing() {
|
||||
this.get('onStartEdit')();
|
||||
this.set('editing', true);
|
||||
Ember.run.scheduleOnce('afterRender', this, 'focusInput');
|
||||
},
|
||||
|
||||
doneEditing(todoTitle) {
|
||||
if (!this.get('editing')) { return; }
|
||||
if (Ember.isBlank(todoTitle)) {
|
||||
this.send('removeTodo');
|
||||
} else {
|
||||
this.set('todo.title', todoTitle.trim());
|
||||
this.set('editing', false);
|
||||
this.get('onEndEdit')();
|
||||
}
|
||||
},
|
||||
|
||||
handleKeydown(e) {
|
||||
if (e.keyCode === 13) {
|
||||
e.target.blur();
|
||||
} else if (e.keyCode === 27) {
|
||||
this.set('editing', false);
|
||||
}
|
||||
},
|
||||
|
||||
toggleCompleted(e) {
|
||||
let todo = this.get('todo');
|
||||
Ember.set(todo, 'completed', e.target.checked);
|
||||
},
|
||||
|
||||
removeTodo() {
|
||||
this.get('repo').delete(this.get('todo'));
|
||||
}
|
||||
},
|
||||
|
||||
focusInput() {
|
||||
this.element.querySelector('input.edit').focus();
|
||||
}
|
||||
});
|
||||
26
bench/implementations/ember-2.6.3/app/components/todo-list.js
Executable file
26
bench/implementations/ember-2.6.3/app/components/todo-list.js
Executable file
|
|
@ -0,0 +1,26 @@
|
|||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Component.extend({
|
||||
repo: Ember.inject.service(),
|
||||
tagName: 'section',
|
||||
elementId: 'main',
|
||||
canToggle: true,
|
||||
allCompleted: Ember.computed('todos.@each.completed', function () {
|
||||
return this.get('todos').isEvery('completed');
|
||||
}),
|
||||
|
||||
actions: {
|
||||
enableToggle() {
|
||||
this.set('canToggle', true);
|
||||
},
|
||||
|
||||
disableToggle() {
|
||||
this.set('canToggle', false);
|
||||
},
|
||||
|
||||
toggleAll() {
|
||||
let allCompleted = this.get('allCompleted');
|
||||
this.get('todos').forEach(todo => Ember.set(todo, 'completed', !allCompleted));
|
||||
}
|
||||
}
|
||||
});
|
||||
5
bench/implementations/ember-2.6.3/app/controllers/active.js
Executable file
5
bench/implementations/ember-2.6.3/app/controllers/active.js
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Controller.extend({
|
||||
todos: Ember.computed.filterBy('model', 'completed', false)
|
||||
});
|
||||
19
bench/implementations/ember-2.6.3/app/controllers/application.js
Executable file
19
bench/implementations/ember-2.6.3/app/controllers/application.js
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Controller.extend({
|
||||
repo: Ember.inject.service(),
|
||||
remaining: Ember.computed.filterBy('model', 'completed', false),
|
||||
completed: Ember.computed.filterBy('model', 'completed'),
|
||||
actions: {
|
||||
createTodo(e) {
|
||||
if (e.keyCode === 13 && !Ember.isBlank(e.target.value)) {
|
||||
this.get('repo').add({ title: e.target.value.trim(), completed: false });
|
||||
e.target.value = '';
|
||||
}
|
||||
},
|
||||
|
||||
clearCompleted() {
|
||||
this.get('model').removeObjects(this.get('completed'));
|
||||
}
|
||||
}
|
||||
});
|
||||
5
bench/implementations/ember-2.6.3/app/controllers/completed.js
Executable file
5
bench/implementations/ember-2.6.3/app/controllers/completed.js
Executable file
|
|
@ -0,0 +1,5 @@
|
|||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Controller.extend({
|
||||
todos: Ember.computed.filterBy('model', 'completed', true)
|
||||
});
|
||||
7
bench/implementations/ember-2.6.3/app/helpers/gt.js
Executable file
7
bench/implementations/ember-2.6.3/app/helpers/gt.js
Executable file
|
|
@ -0,0 +1,7 @@
|
|||
import Ember from 'ember';
|
||||
|
||||
export function gt([n1, n2]/*, hash*/) {
|
||||
return n1 > n2;
|
||||
}
|
||||
|
||||
export default Ember.Helper.helper(gt);
|
||||
8
bench/implementations/ember-2.6.3/app/helpers/pluralize.js
Executable file
8
bench/implementations/ember-2.6.3/app/helpers/pluralize.js
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
import Ember from 'ember';
|
||||
import { pluralize } from 'ember-inflector';
|
||||
|
||||
export function pluralizeHelper([singular, count]/*, hash*/) {
|
||||
return count === 1 ? singular : pluralize(singular);
|
||||
}
|
||||
|
||||
export default Ember.Helper.helper(pluralizeHelper);
|
||||
24
bench/implementations/ember-2.6.3/app/index.html
Executable file
24
bench/implementations/ember-2.6.3/app/index.html
Executable file
|
|
@ -0,0 +1,24 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<title>Todomvc</title>
|
||||
<meta name="description" content="">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
{{content-for "head"}}
|
||||
|
||||
<link rel="stylesheet" href="assets/vendor.css">
|
||||
<link rel="stylesheet" href="assets/todomvc.css">
|
||||
|
||||
{{content-for "head-footer"}}
|
||||
</head>
|
||||
<body>
|
||||
{{content-for "body"}}
|
||||
|
||||
<script src="assets/vendor.js"></script>
|
||||
<script src="assets/todomvc.js"></script>
|
||||
|
||||
{{content-for "body-footer"}}
|
||||
</body>
|
||||
</html>
|
||||
3
bench/implementations/ember-2.6.3/app/resolver.js
Executable file
3
bench/implementations/ember-2.6.3/app/resolver.js
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
import Resolver from 'ember-resolver';
|
||||
|
||||
export default Resolver;
|
||||
13
bench/implementations/ember-2.6.3/app/router.js
Executable file
13
bench/implementations/ember-2.6.3/app/router.js
Executable file
|
|
@ -0,0 +1,13 @@
|
|||
import Ember from 'ember';
|
||||
import config from './config/environment';
|
||||
|
||||
const Router = Ember.Router.extend({
|
||||
location: config.locationType
|
||||
});
|
||||
|
||||
Router.map(function () {
|
||||
this.route('active');
|
||||
this.route('completed');
|
||||
});
|
||||
|
||||
export default Router;
|
||||
8
bench/implementations/ember-2.6.3/app/routes/application.js
Executable file
8
bench/implementations/ember-2.6.3/app/routes/application.js
Executable file
|
|
@ -0,0 +1,8 @@
|
|||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Route.extend({
|
||||
repo: Ember.inject.service(),
|
||||
model() {
|
||||
return this.get('repo').findAll();
|
||||
}
|
||||
});
|
||||
19
bench/implementations/ember-2.6.3/app/services/repo.js
Executable file
19
bench/implementations/ember-2.6.3/app/services/repo.js
Executable file
|
|
@ -0,0 +1,19 @@
|
|||
import Ember from 'ember';
|
||||
|
||||
export default Ember.Service.extend({
|
||||
lastId: 0,
|
||||
data: null,
|
||||
findAll() {
|
||||
return this.get('data') || this.set('data', []);
|
||||
},
|
||||
|
||||
add(attrs) {
|
||||
let todo = Object.assign({ id: this.incrementProperty('lastId') }, attrs);
|
||||
this.get('data').pushObject(todo);
|
||||
return todo;
|
||||
},
|
||||
|
||||
delete(todo) {
|
||||
this.get('data').removeObject(todo);
|
||||
}
|
||||
});
|
||||
0
bench/implementations/ember-2.6.3/app/styles/app.css
Executable file
0
bench/implementations/ember-2.6.3/app/styles/app.css
Executable file
1
bench/implementations/ember-2.6.3/app/templates/active.hbs
Executable file
1
bench/implementations/ember-2.6.3/app/templates/active.hbs
Executable file
|
|
@ -0,0 +1 @@
|
|||
{{todo-list todos=todos}}
|
||||
29
bench/implementations/ember-2.6.3/app/templates/application.hbs
Executable file
29
bench/implementations/ember-2.6.3/app/templates/application.hbs
Executable file
|
|
@ -0,0 +1,29 @@
|
|||
<section id="todoapp">
|
||||
<header id="header">
|
||||
<h1>todos</h1>
|
||||
<input type="text" id="new-todo" class="new-todo" onkeydown={{action 'createTodo'}} placeholder="What needs to be done?" autofocus>
|
||||
</header>
|
||||
{{outlet}}
|
||||
{{#if (gt model.length 0)}}
|
||||
<footer id="footer">
|
||||
<span id="todo-count"><strong>{{remaining.length}}</strong> {{pluralize 'item' remaining.length}} left</span>
|
||||
<ul id="filters">
|
||||
<li>{{#link-to "index" activeClass="selected"}}All{{/link-to}}</li>
|
||||
<li>{{#link-to "active" activeClass="selected"}}Active{{/link-to}}</li>
|
||||
<li>{{#link-to "completed" activeClass="selected"}}Completed{{/link-to}}</li>
|
||||
</ul>
|
||||
{{#if completed.length}}
|
||||
<button id="clear-completed" onclick={{action 'clearCompleted'}}>Clear completed</button>
|
||||
{{/if}}
|
||||
</footer>
|
||||
{{/if}}
|
||||
</section>
|
||||
<footer id="info">
|
||||
<p>Double-click to edit a todo</p>
|
||||
<p>
|
||||
Created by
|
||||
<a href="http://github.com/cibernox">Miguel Camba</a>,
|
||||
<a href="http://github.com/addyosmani">Addy Osmani</a>
|
||||
</p>
|
||||
<p>Part of <a href="http://todomvc.com">TodoMVC</a></p>
|
||||
</footer>
|
||||
1
bench/implementations/ember-2.6.3/app/templates/completed.hbs
Executable file
1
bench/implementations/ember-2.6.3/app/templates/completed.hbs
Executable file
|
|
@ -0,0 +1 @@
|
|||
{{todo-list todos=todos}}
|
||||
6
bench/implementations/ember-2.6.3/app/templates/components/todo-item.hbs
Executable file
6
bench/implementations/ember-2.6.3/app/templates/components/todo-item.hbs
Executable file
|
|
@ -0,0 +1,6 @@
|
|||
<div class="view">
|
||||
<input type="checkbox" class="toggle" checked={{todo.completed}} onchange={{action 'toggleCompleted'}}>
|
||||
<label ondblclick={{action 'startEditing'}}>{{todo.title}}</label>
|
||||
<button onclick={{action 'removeTodo'}} class="destroy"></button>
|
||||
</div>
|
||||
<input type="text" class="edit" value={{todo.title}} onblur={{action 'doneEditing' value='target.value'}} onkeydown={{action 'handleKeydown'}} autofocus>
|
||||
10
bench/implementations/ember-2.6.3/app/templates/components/todo-list.hbs
Executable file
10
bench/implementations/ember-2.6.3/app/templates/components/todo-list.hbs
Executable file
|
|
@ -0,0 +1,10 @@
|
|||
{{#if todos.length}}
|
||||
{{#if canToggle}}
|
||||
<input type="checkbox" id="toggle-all" checked={{allCompleted}} onchange={{action 'toggleAll'}}>
|
||||
{{/if}}
|
||||
<ul id="todo-list" class="todo-list">
|
||||
{{#each todos as |todo|}}
|
||||
{{todo-item todo=todo onStartEdit=(action 'disableToggle') onEndEdit=(action 'enableToggle')}}
|
||||
{{/each}}
|
||||
</ul>
|
||||
{{/if}}
|
||||
3
bench/implementations/ember-2.6.3/app/templates/index.hbs
Executable file
3
bench/implementations/ember-2.6.3/app/templates/index.hbs
Executable file
|
|
@ -0,0 +1,3 @@
|
|||
{{#if model.length}}
|
||||
{{todo-list todos=model}}
|
||||
{{/if}}
|
||||
Loading…
Add table
Add a link
Reference in a new issue