todo-webclient/client/authd.ls

129 lines
2.5 KiB
Plaintext
Raw Normal View History

2019-11-20 19:22:51 +01:00
bulma = require "./bulma.ls"
h = require 'maquette' .h
module.exports = {
2019-11-22 18:42:46 +01:00
create-socket: ->
self = {}
# users can record functions to run on events
self.user-on-error = []
self.user-on-close = []
self.user-on-message = []
self.open-socket = ->
console.log "Opening socket to #{socket-url}"
self.socket := new WebSocket socket-url
self.socket.onerror = (event) ->
for f in self.user-on-error
f event
self.socket.close!
self.socket.onclose = (event) ->
for f in self.user-on-close
f event
self.socket.onmessage = (event) ->
data = JSON.parse(event.data).payload
for f in self.user-on-message
f data
self.reopen = ->
self.socket.close!
self.open-socket!
self.open-socket!
self.send = (opts) ->
console.log JSON.stringify { mtype: 0, payload: opts }
self.socket.send JSON.stringify { mtype: 0, payload: opts }
self.login = (login, password) ->
self.send JSON.stringify {
type: "login",
login: login
password: password
}
self
login-widget: (model) ->
2019-11-20 19:22:51 +01:00
h \div.container [
h \div.box [
if model.login-error
h \div.notification.is-danger [
model.login-error
]
h \form [
bulma.field [
bulma.label "Login"
bulma.input {
oninput: (e) ->
model.login = e.target.value
name: \login
id: \login-input
}
]
bulma.field [
bulma.label "Password"
bulma.input {
oninput: (e) ->
model.password = e.target.value
name: \password
type: \password
id: \password-input
}
]
h \button.button.is-primary {
onclick: (e) ->
e.prevent-default!
model.login-error = undefined
2019-11-22 18:42:46 +01:00
model.authd-ws.login model.login, model.password
2019-11-20 19:22:51 +01:00
} [ "Connexion" ]
]
]
]
2019-11-22 18:42:46 +01:00
login-page: (model) ->
2019-11-20 19:22:51 +01:00
h \div.container [
h \div.box [
if model.login-error
h \div.notification.is-danger [
model.login-error
]
h \form [
bulma.field [
bulma.label "Login"
bulma.input {
oninput: (e) ->
model.login = e.target.value
name: \login
id: \login-input
}
]
bulma.field [
bulma.label "Password"
bulma.input {
oninput: (e) ->
model.password = e.target.value
name: \password
type: \password
id: \password-input
}
]
h \button.button.is-fullwidth.is-primary {
onclick: (e) ->
e.prevent-default!
2019-11-22 18:42:46 +01:00
model.authd-ws.login model.login, model.password
2019-11-20 19:22:51 +01:00
} [ "Connexion" ]
]
]
]
}