Skip to content

Instantly share code, notes, and snippets.

@jelhan
Last active December 19, 2018 10:25
Show Gist options
  • Save jelhan/c0377e10c5736f9583282895d41ad268 to your computer and use it in GitHub Desktop.
Save jelhan/c0377e10c5736f9583282895d41ad268 to your computer and use it in GitHub Desktop.
table with filter and pagination
import Ember from 'ember';
import { computed } from '@ember/object';
export default Ember.Controller.extend({
appName: 'Ember Twiddle',
items: [
{ firstName: 'Max', lastName: 'Mustermann', email: '[email protected]' },
{ firstName: 'Sven', lastName: 'Adam', email: '[email protected]' },
{ firstName: 'Karl', lastName: 'Käfer', email: '[email protected]' },
],
filteredItems: computed('filterFirstName', 'filterLastName', 'filterEmail', 'items.[]', function() {
return this.items.filter((item) => {
return (!this.filterFirstName || item.firstName.includes(this.filterFirstName)) &&
(!this.filterLastName || item.lastName.includes(this.filterLastName)) &&
(!this.filterEmail || item.email.includes(this.filterEmail));
});
}),
pagedItems: computed('filteredItems.[]', function() {
return this.filteredItems.slice(0, 2);
}),
});
<h1>Welcome to {{appName}}</h1>
<br>
<br>
<table>
<thead>
<tr>
<th>Vorname</th>
<th>Nachname</th>
<th>Email</th>
</tr>
<tr>
<th><input oninput={{action (mut filterFirstName) value="target.value"}}></th>
<th><input oninput={{action (mut filterLastName) value="target.value"}}></th>
<th><input oninput={{action (mut filterEmail) value="target.value"}}></th>
</tr>
</thead>
<tbody>
{{#each this.pagedItems as |item|}}
<tr>
<td>{{item.firstName}}</td>
<td>{{item.lastName}}</td>
<td>{{item.email}}</td>
</tr>
{{/each}}
</tbody>
</table>
{{#if (gt this.filteredItems.length this.pagedItems.length)}}
<p>
Erste {{this.pagedItems.length}} von {{this.filteredItems.length}} Datensätzen. Für weitere Datensätze bitte Filter genauer machen.
</p>
{{/if}}
{
"version": "0.15.1",
"EmberENV": {
"FEATURES": {}
},
"options": {
"use_pods": false,
"enable-testing": false
},
"dependencies": {
"jquery": "https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.js",
"ember": "3.4.3",
"ember-template-compiler": "3.4.3",
"ember-testing": "3.4.3"
},
"addons": {
"ember-data": "3.4.2",
"ember-truth-helpers": "2.1.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment