4831: Set initial values for filters.
[arvados.git] / apps / backstage / app / filter.js
1 module.exports = {
2     AnyText: FilterAnyText,
3     ObjectType: FilterObjectType,
4 };
5
6 var m = require('mithril');
7
8 function FilterAnyText() {
9     this.view = function(ctrl) {
10         return m('.input-group.input-group-sm', [
11             m('input.form-control[type="text"][placeholder="Search"]',
12               {value: getFilter(),
13                oninput: m.withAttr('value', setFilter)}),
14         ]);
15         function getFilter() {
16             return ctrl.currentFilter() ? ctrl.currentFilter()[2].replace(/^%(.*)%$/, '$1') : ''
17         }
18         function setFilter(value) {
19             ctrl.currentFilter('any', 'ilike', '%'+value+'%')
20         }
21     };
22 }
23
24 function FilterObjectType(opts) {
25     this.view = function(ctrl) {
26         return [
27             m('.input-group.input-group-sm', [
28                 m('.input-group-btn', [
29                     m('button.btn.btn-default.dropdown-toggle[type="button"][data-toggle="dropdown"]', [
30                         ctrl.currentFilter() ? ctrl.currentFilter()[2].replace(/^.*#/,'') : 'Type',
31                         ' ',
32                         m('span.caret'),
33                     ]),
34                     m('ul.dropdown-menu[role="menu"]', [
35                         m('li', [
36                             m('a[href="#"][data-value="arvados#collection"]', {onclick: ctrl.currentFilter.bind(ctrl, opts.attr, 'is_a', 'arvados#collection')}, 'Collection'),
37                         ]),
38                         m('li', [
39                             m('a[href="#"][data-value="arvados#pipelineInstance"]', {onclick: ctrl.currentFilter.bind(ctrl, opts.attr, 'is_a', 'arvados#pipelineInstance')}, 'Pipeline instance'),
40                         ]),
41                     ]),
42                 ]),
43             ]),
44         ];
45     };
46 }