antos-frontend/src/services/PushNotification.coffee

77 lines
2.4 KiB
CoffeeScript
Raw Normal View History

2017-08-15 02:56:04 +02:00
class PushNotification extends this.OS.GUI.BaseService
constructor: () ->
super "PushNotification"
@iconclass = "fa fa-commenting"
@onmenuselect = (e) -> console.log e
@cb = undefined
2017-08-15 02:56:04 +02:00
init: ->
@view = false
path = "resources/schemes/notifications.html"
@render path
main: ->
me = @
mfeed = @find "notifeed"
2017-08-17 00:42:05 +02:00
@nzone = @find "notifyzone"
mlist = @find "notifylist"
2017-08-17 00:42:05 +02:00
(@find "btclear").set "onbtclick", (e) -> mlist.set "items", []
#mlist.set "onlistselect", (e) -> console.log e
@subscribe "notification", (o) ->
d = {
header: "#{o.name} (#{o.id})"
text: "INFO: #{o.name} (#{o.id}): #{o.data.m}",
lite: o.data.m
icon: o.data.icon,
iconclass: o.data.iconclass,
closable: true }
mlist.push d, true
me.notifeed d, mfeed
@subscribe "fail", (o) ->
d = {
header: "#{o.name} (#{o.id})"
text: "FAIL: #{o.name} (#{o.id}): #{o.data.m}",
lite: o.data.m
icon: o.data.icon,
iconclass: o.data.iconclass,
closable: true }
mlist.push d, true
me.notifeed d, mfeed
2017-08-17 00:42:05 +02:00
($ @nzone).css "right", 0
.css "top", "-3px"
.css "height", ""
.css "bottom", "0"
.hide()
($ mfeed).css "right", "5px"
.css "top", "0"
notifeed: (d, mfeed) ->
2017-08-17 00:42:05 +02:00
mfeed.push d, true
($ mfeed).show()
timer = setTimeout () ->
2017-08-17 00:42:05 +02:00
mfeed.remove d, true
clearTimeout timer
, 3000
awake: (e) ->
2017-08-17 00:42:05 +02:00
if @view then ($ @nzone).hide() else ($ @nzone).show()
@view = not @view
me = @
if not @cb
@cb = (e) ->
return if e.originalEvent.item and e.originalEvent.item.closable
2017-08-17 00:42:05 +02:00
if not ($ e.target).closest($ me.nzone).length and not ($ e.target).closest($ me.holder.root).length
($ me.nzone).hide()
$(document).unbind "click", me.cb
me.view = not me.view
if @view
$(document).on "click", @cb
else
$(document).unbind "click", @cb
cleanup: (evt) ->
2017-08-15 02:56:04 +02:00
# do nothing
this.OS.register "PushNotification",PushNotification