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" ]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
]
|
|
|
|
}
|