Skip to content

Instantly share code, notes, and snippets.

@onechiporenko
Last active August 29, 2019 13:12
Show Gist options
  • Save onechiporenko/c8995fdd91788b165b63d5b10906f38c to your computer and use it in GitHub Desktop.
Save onechiporenko/c8995fdd91788b165b63d5b10906f38c to your computer and use it in GitHub Desktop.
Custom filter with date
import Ember from 'ember';
export default Ember.Component.extend({
options: Ember.computed('column.filterOptions.[]', function() {
return this.get('column.filterOptions').map(opt => {
return {value: opt.value, label: opt.label ? new Date(opt.value).getFullYear() : ''};
}).uniqBy('label');
})
});
import Ember from 'ember';
export default Ember.Controller.extend({
appName: 'Ember Twiddle'
});
import Ember from 'ember';
export default Ember.Controller.extend({
data: [
{id: '1', date: new Date(1567058063000)},
{id: '2', date: new Date(1535518463000)},
{id: '3', date: new Date(1535518163000)}
],
columns: [
{propertyName: 'id'},
{
propertyName: 'date',
filterWithSelect: true,
componentForFilterCell: 'filterByDate',
filterFunction (cell, filter) {
return new Date(cell).getFullYear() === new Date(filter).getFullYear();
}
}
]
});
export function initialize(appInstance) {
appInstance.inject('component:models-table', 'themeInstance', 'theme:ember-bootstrap-v4');
appInstance.inject('component:models-table-server-paginated', 'themeInstance', 'theme:ember-bootstrap-v4');
}
export default {
name: 'emt-inject-2',
initialize
};
import Ember from 'ember';
export default Ember.Route.extend({
});
<h1>Welcome to {{appName}}</h1>
{{outlet}}
{{#bs-form model=column as |form|}}
{{#form.element property="filterString" class="input-group" as |el|}}
{{component
themeInstance.components.select
id=inputId
options=options
cssPropertyName=column.cssPropertyName
value=column.filterString
class=(concat themeInstance.input " changeFilterForColumn")
}}
<div class="input-group-append">
{{#bs-button
type="secondary"
class=(concat "clearFilterIcon btn-outline-secondary " themeInstance.buttonLink)
disabled=(unless column.filterUsed "disabled")
onClick=(action (mut column.filterString) "")}}
<i class={{themeInstance.clearFilterIcon}}></i>
<span class="emt-sr-only">{{themeInstance.messages.clearFilter}}</span>
{{/bs-button}}
</div>
{{/form.element}}
{{/bs-form}}
{{yield}}
{{models-table
data=data
columns=columns
columnComponents=(hash filterByDate=(component "filter-by-date"))
}}
{
"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",
"fa": "https://stackpath.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css"
},
"addons": {
"ember-data": "3.4.2",
"ember-models-table": "2.10.1",
"ember-bootstrap": "2.8.0"
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment