1 // Copyright (C) The Arvados Authors. All rights reserved.
3 // SPDX-License-Identifier: AGPL-3.0
5 window.components = window.components || {}
6 window.components.collection_table = {
7 view: function(vnode) {
8 return m('table.table.table-condensed', [
13 m('th', 'last modified'),
16 vnode.attrs.loader.displayable.map(function(item) {
18 m('td', m('a.btn.btn-xs.btn-default', {href: item.session.baseURL.replace('://', '://workbench.')+'/collections/'+item.uuid}, 'Show')),
19 m('td.arvados-uuid', item.uuid),
20 m('td', item.name || '(unnamed)'),
21 m('td', m(window.components.datetime, {parse: item.modified_at})),
26 m('th[colspan=4]', m('button.btn.btn-xs', {
27 className: vnode.attrs.loader.loadMore ? 'btn-primary' : 'btn-default',
34 disabled: !vnode.attrs.loader.loadMore,
36 vnode.attrs.loader.loadMore()
39 }, vnode.attrs.loader.loadMore ? 'Load more' : '(loading)')),
45 window.components.collection_search = {
46 oninit: function(vnode) {
47 vnode.state.sessionDB = new window.models.SessionDB()
48 vnode.state.searchEntered = m.stream('')
49 vnode.state.searchStart = m.stream('')
50 vnode.state.searchStart.map(function(q) {
51 vnode.state.loader = new window.models.MultisiteLoader({
52 loadFunc: function(session, filters) {
54 filters.push(['any', '@@', q+':*'])
55 return vnode.state.sessionDB.request(session, 'arvados/v1/collections', {
57 filters: JSON.stringify(filters),
62 sessionDB: vnode.state.sessionDB,
66 view: function(vnode) {
67 var sessions = vnode.state.sessionDB.loadAll()
69 onsubmit: function() {
70 vnode.state.searchStart(vnode.state.searchEntered())
77 m('input#search.form-control[placeholder=Search]', {
78 oninput: m.withAttr('value', vnode.state.searchEntered),
80 m('.input-group-btn', [
81 m('input.btn.btn-primary[type=submit][value="Search"]'),
87 Object.keys(sessions).length == 0
88 ? m('span.label.label-xs.label-danger', 'none')
89 : Object.keys(sessions).sort().map(function(key) {
90 return [m('span.label.label-xs', {
91 className: vnode.state.loader.pagers[key].items() ? 'label-info' : 'label-default',
95 m('a[href="/sessions"]', 'Add/remove sites'),
98 m(window.components.collection_table, {
99 loader: vnode.state.loader,