X-Git-Url: https://git.arvados.org/arvados.git/blobdiff_plain/ef2889f20ad25c30abb05c53cc5e08e2c2ed97d3..74fec3cd8284eae4829dad2c287588d52c621c4b:/apps/workbench/app/assets/javascripts/components/search.js diff --git a/apps/workbench/app/assets/javascripts/components/search.js b/apps/workbench/app/assets/javascripts/components/search.js index 5cb292bd7a..83ed1a68d4 100644 --- a/apps/workbench/app/assets/javascripts/components/search.js +++ b/apps/workbench/app/assets/javascripts/components/search.js @@ -41,6 +41,8 @@ window.SearchResultsTable = { collections: m('i.fa.fa-fw.fa-archive'), projects: m('i.fa.fa-fw.fa-folder'), } + var db = new SessionDB() + var sessions = db.loadActive() return m('table.table.table-condensed', [ m('thead', m('tr', [ m('th'), @@ -50,18 +52,29 @@ window.SearchResultsTable = { ])), m('tbody', [ loader.items().map(function(item) { + var session = sessions[item.uuid.slice(0,5)] + var tokenParam = '' + // Add the salted token to search result links from federated + // remote hosts. + if (!session.isFromRails && session.token.indexOf('v2/') == 0) { + tokenParam = session.token + } return m('tr', [ - m('td', [ + m('td', m('form', { + action: item.workbenchBaseURL() + '/' + item.objectType.wb_path + '/' + item.uuid, + method: 'GET' + }, [ + tokenParam !== '' && + m('input[type=hidden][name=api_token]', {value: tokenParam}), item.workbenchBaseURL() && - m('a.btn.btn-xs.btn-default', { + m('button.btn.btn-xs.btn-default[type=submit]', { 'data-original-title': 'show '+item.objectType.description, 'data-placement': 'top', 'data-toggle': 'tooltip', - href: item.workbenchBaseURL()+'/'+item.objectType.wb_path+'/'+item.uuid, // Bootstrap's tooltip feature oncreate: function(vnode) { $(vnode.dom).tooltip() }, }, iconsMap[item.objectType.wb_path]), - ]), + ])), m('td.arvados-uuid', item.uuid), m('td', item.name || '(unnamed)'), m('td', m(LocalizedDateTime, {parse: item.modified_at})), @@ -90,7 +103,8 @@ window.SearchResultsTable = { window.Search = { oninit: function(vnode) { - vnode.state.sessionDB = new SessionDB(vnode.attrs.remoteHosts) + vnode.state.sessionDB = new SessionDB() + vnode.state.sessionDB.autoRedirectToHomeCluster('/search') vnode.state.searchEntered = m.stream() vnode.state.searchActive = m.stream() // When searchActive changes (e.g., when restoring state @@ -113,6 +127,12 @@ window.Search = { filters: [['group_class', '=', 'project']], description: 'project', }, + { + wb_path: 'projects', + api_path: 'arvados/v1/groups', + filters: [['group_class', '=', 'filter']], + description: 'project', + }, { wb_path: 'collections', api_path: 'arvados/v1/collections', @@ -128,11 +148,7 @@ window.Search = { sessionKey: key, loadFunc: function(filters) { // Apply additional type dependant filters - filters = filters.concat(obj_type.filters) - var tsquery = to_tsquery(q) - if (tsquery) { - filters.push(['any', '@@', tsquery]) - } + filters = filters.concat(obj_type.filters).concat(ilike_filters(q)) return vnode.state.sessionDB.request(session, obj_type.api_path, { data: { filters: JSON.stringify(filters), @@ -154,8 +170,6 @@ window.Search = { }) }, view: function(vnode) { - // FIXME: The line below seems superfluous - // var sessions = vnode.state.sessionDB.loadAll() return m('form', { onsubmit: function() { vnode.state.searchActive(vnode.state.searchEntered())