Merge branch 'master' into 12033-multisite-search
[arvados.git] / apps / workbench / app / assets / javascripts / components / sessions.js
1 // Copyright (C) The Arvados Authors. All rights reserved.
2 //
3 // SPDX-License-Identifier: AGPL-3.0
4
5 $(document).on('ready', function() {
6     var db = new SessionDB()
7     db.checkForNewToken()
8     db.fillMissingUUIDs()
9 })
10
11 window.SessionsTable = {
12     oninit: function(vnode) {
13         vnode.state.db = new SessionDB()
14         vnode.state.hostToAdd = m.stream('')
15     },
16     view: function(vnode) {
17         var db = vnode.state.db
18         var sessions = db.loadAll()
19         return m('.container', [
20             m('table.table.table-condensed.table-hover', [
21                 m('thead', m('tr', [
22                     m('th', 'status'),
23                     m('th', 'cluster ID'),
24                     m('th', 'username'),
25                     m('th', 'email'),
26                     m('th', 'actions'),
27                     m('th'),
28                 ])),
29                 m('tbody', [
30                     Object.keys(sessions).map(function(uuidPrefix) {
31                         var session = sessions[uuidPrefix]
32                         return m('tr', [
33                             session.token && session.user ? [
34                                 m('td', m('span.label.label-success', 'logged in')),
35                                 m('td', {title: session.baseURL}, uuidPrefix),
36                                 m('td', session.user.username),
37                                 m('td', session.user.email),
38                                 m('td', session.isFromRails ? null : m('button.btn.btn-xs.btn-default', {
39                                     uuidPrefix: uuidPrefix,
40                                     onclick: m.withAttr('uuidPrefix', db.logout),
41                                 }, 'Log out ', m('span.glyphicon.glyphicon-log-out'))),
42                             ] : [
43                                 m('td', m('span.label.label-default', 'logged out')),
44                                 m('td', {title: session.baseURL}, uuidPrefix),
45                                 m('td'),
46                                 m('td'),
47                                 m('td', m('a.btn.btn-xs.btn-primary', {
48                                     uuidPrefix: uuidPrefix,
49                                     onclick: db.login.bind(db, session.baseURL),
50                                 }, 'Log in ', m('span.glyphicon.glyphicon-log-in'))),
51                             ],
52                             m('td', session.isFromRails ? null : m('button.btn.btn-xs.btn-default', {
53                                 uuidPrefix: uuidPrefix,
54                                 onclick: m.withAttr('uuidPrefix', db.trash),
55                             }, 'Remove ', m('span.glyphicon.glyphicon-trash'))),
56                         ])
57                     }),
58                 ]),
59             ]),
60             m('.row', m('.col-md-6', [
61                 m('form', {
62                     onsubmit: function() {
63                         db.login(vnode.state.hostToAdd())
64                         return false
65                     },
66                 }, [
67                     m('.input-group', [
68                         m('input.form-control[type=text][name=apiHost][placeholder="API host"]', {
69                             oninput: m.withAttr('value', vnode.state.hostToAdd),
70                         }),
71                         m('.input-group-btn', [
72                             m('input.btn.btn-primary[type=submit][value="Log in"]', {
73                                 disabled: !vnode.state.hostToAdd(),
74                             }),
75                         ]),
76                     ]),
77                 ]),
78             ])),
79         ])
80     },
81 }