Merge branch '12194-search-always-valid'
[arvados.git] / apps / workbench / app / assets / javascripts / components / sessions.js
index 17c144c589ac9e952b056ad263f01bf5b2b4cb47..3d127f1714d58a98eac115eeba96d9ebf95d39d4 100644 (file)
@@ -12,11 +12,18 @@ window.SessionsTable = {
     oninit: function(vnode) {
         vnode.state.db = new SessionDB()
         vnode.state.hostToAdd = m.stream('')
+        vnode.state.error = m.stream()
+        vnode.state.checking = m.stream()
     },
     view: function(vnode) {
         var db = vnode.state.db
         var sessions = db.loadAll()
         return m('.container', [
+            m('p', [
+                'You can log in to multiple Arvados sites here, then use the ',
+                m('a[href="/collections/multisite"]', 'multi-site search'),
+                ' page to search collections on all sites at once.',
+            ]),
             m('table.table.table-condensed.table-hover', [
                 m('thead', m('tr', [
                     m('th', 'status'),
@@ -60,12 +67,22 @@ window.SessionsTable = {
             m('.row', m('.col-md-6', [
                 m('form', {
                     onsubmit: function() {
-                        db.login(vnode.state.hostToAdd())
+                        vnode.state.error(null)
+                        vnode.state.checking(true)
+                        db.findAPI(vnode.state.hostToAdd())
+                            .then(db.login)
+                            .catch(function() {
+                                vnode.state.error(true)
+                            })
+                            .then(vnode.state.checking.bind(null, null))
                         return false
                     },
                 }, [
-                    m('.input-group', [
-                        m('input.form-control[type=text][name=apiHost][placeholder="API host"]', {
+                    m('p', [
+                        'To add a remote Arvados site, paste the remote site\'s host here (see "ARVADOS_API_HOST" on the "current token" page).',
+                    ]),
+                    m('.input-group', { className: vnode.state.error() && 'has-error' }, [
+                        m('input.form-control[type=text][name=apiHost][placeholder="zzzzz.arvadosapi.com"]', {
                             oninput: m.withAttr('value', vnode.state.hostToAdd),
                         }),
                         m('.input-group-btn', [
@@ -75,6 +92,9 @@ window.SessionsTable = {
                         ]),
                     ]),
                 ]),
+                m('p'),
+                vnode.state.error() && m('p.alert.alert-danger', 'Request failed. Make sure this is a working API server address.'),
+                vnode.state.checking() && m('p.alert.alert-info', 'Checking...'),
             ])),
         ])
     },