exports.errorHtml = errorHtml; exports.autoRefresh = autoRefresh; var errors = {}; function errorHtml(errors) { var text = '' , type, err; for (type in errors) { err = errors[type]; text += '

' + type + ' Error

' + err + '
'; } if (!text) return; return '
' + '
' + text + '
'; } function autoRefresh(view, model, appHash) { var socket = model.socket; model.on('connectionStatus', function(connected, canConnect) { if (!canConnect) window.location.reload(true); }); socket.on('connect', function() { socket.emit('derbyClient', appHash, function(reload) { if (reload) window.location.reload(true); }); }); socket.on('refreshCss', function(err, css) { var el = document.getElementById('$_css'); if (el) el.innerHTML = css; updateError('CSS', err); }); socket.on('refreshHtml', function(err, templates, instances, libraryData) { view._makeAll(templates, instances); view._makeComponents(libraryData); try { view.history.refresh(); } catch (_err) { err || (err = _err.stack); } updateError('Template', err); }); } function updateError(type, err) { if (err) { errors[type] = err; } else { delete errors[type]; } var el = document.getElementById('$_derbyError') , html = errorHtml(errors) , fragment, range; if (html) { if (el) { el.outerHTML = html; } else { range = document.createRange(); range.selectNode(document.body); fragment = range.createContextualFragment(html); document.body.appendChild(fragment); } } else { if (el) el.parentNode.removeChild(el); } }