mirror of
https://github.com/atlanticbiomedical/biomedjs.git
synced 2025-07-02 00:47:26 -04:00
Added node-modules
This commit is contained in:
99
node_modules/piler/lib/livecss.coffee
generated
vendored
Normal file
99
node_modules/piler/lib/livecss.coffee
generated
vendored
Normal file
@ -0,0 +1,99 @@
|
||||
fs = require "fs"
|
||||
|
||||
|
||||
|
||||
try
|
||||
socketio = require('socket.io')
|
||||
catch e
|
||||
socketio = null
|
||||
|
||||
incUrlSeq = (url) ->
|
||||
seqRegexp = /(--([0-9]+))\..*$/
|
||||
match = url.match seqRegexp
|
||||
seq = parseInt match?[2] or 0, 10
|
||||
|
||||
if match
|
||||
cleanUrl = url.replace match[1], ""
|
||||
else
|
||||
cleanUrl = url
|
||||
|
||||
cleanUrl = cleanUrl.substr(0,cleanUrl.lastIndexOf('.'))+"--#{ seq+1 }"+cleanUrl.substr(cleanUrl.lastIndexOf('.'))
|
||||
|
||||
# Yep, this function will be executed in the browser.
|
||||
clientUpdater = ->
|
||||
console.log "CSS updater is active. Waiting for connection..."
|
||||
|
||||
pile = io.connect('/pile')
|
||||
|
||||
pile.on "connect", ->
|
||||
console.log "CSS updater has connected"
|
||||
|
||||
pile.on "disconnect", ->
|
||||
console.log "CSS updater has disconnected! Refresh to reconnect"
|
||||
|
||||
pile.on "update", (fileId) ->
|
||||
elem = document.getElementById "pile-" + fileId
|
||||
if elem
|
||||
console.log "updating", fileId, elem
|
||||
elem.href = PILE.incUrlSeq elem.href
|
||||
else
|
||||
console.log "id", fileId, "not found"
|
||||
|
||||
class LiveUpdateMixin
|
||||
|
||||
installSocketIo: (userio) ->
|
||||
|
||||
@addUrl "/socket.io/socket.io.js"
|
||||
@addOb PILE:
|
||||
incUrlSeq: incUrlSeq
|
||||
@addExec clientUpdater
|
||||
|
||||
if not userio
|
||||
io = socketio.listen @app
|
||||
else
|
||||
io = userio
|
||||
|
||||
# Why does not work?
|
||||
io.configure ->
|
||||
io.set 'log level', 0
|
||||
|
||||
@io = io.of "/pile"
|
||||
|
||||
|
||||
liveUpdate: (cssmanager, userio) ->
|
||||
if @production
|
||||
@logger.info "Not activating live update in production"
|
||||
return
|
||||
|
||||
if not @app
|
||||
throw new Error 'JSManager must be bind to a http server (Express app)
|
||||
before it can live update CSS'
|
||||
|
||||
@installSocketIo userio
|
||||
|
||||
listener = if @server then @server else @app
|
||||
listener.on "listening", =>
|
||||
@logger.info "Activating CSS updater"
|
||||
|
||||
for k, pile of cssmanager.piles
|
||||
for codeOb in pile.code
|
||||
@_watch pile, codeOb
|
||||
|
||||
|
||||
_watch: (pile, codeOb) ->
|
||||
return unless codeOb.type is "file"
|
||||
@logger.info "watching #{ codeOb.filePath } for changes"
|
||||
fs.watch codeOb.filePath, =>
|
||||
@logger.info "updated", codeOb.filePath
|
||||
@io.emit "update", codeOb.getId()
|
||||
|
||||
# For testing
|
||||
LiveUpdateMixin.incUrlSeq = incUrlSeq
|
||||
|
||||
if socketio?
|
||||
module.exports = LiveUpdateMixin
|
||||
else
|
||||
module.exports = class LiveUpdateDisabled
|
||||
liveUpdate: ->
|
||||
@logger.error "No socket.io installed. Live update won't work."
|
||||
|
Reference in New Issue
Block a user