Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/application/conpherence/behavior-menu.js
Show All 31 Lines | threadManager.setWillLoadThreadCallback(function() { | ||||
markThreadLoading(true); | markThreadLoading(true); | ||||
}); | }); | ||||
threadManager.setDidLoadThreadCallback(function(r) { | threadManager.setDidLoadThreadCallback(function(r) { | ||||
var header = JX.$H(r.header); | var header = JX.$H(r.header); | ||||
var messages = JX.$H(r.messages); | var messages = JX.$H(r.messages); | ||||
var form = JX.$H(r.form); | var form = JX.$H(r.form); | ||||
var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | ||||
var header_root = JX.DOM.find(root, 'div', 'conpherence-header-pane'); | var header_root = JX.DOM.find(root, 'div', 'conpherence-header-pane'); | ||||
var messages_root = JX.DOM.find(root, 'div', 'conpherence-messages'); | |||||
var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); | var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); | ||||
JX.DOM.setContent(header_root, header); | JX.DOM.setContent(header_root, header); | ||||
JX.DOM.setContent(messages_root, messages); | JX.DOM.setContent(scrollbar.getContentNode(), messages); | ||||
JX.DOM.setContent(form_root, form); | JX.DOM.setContent(form_root, form); | ||||
markThreadLoading(false); | markThreadLoading(false); | ||||
didRedrawThread(true); | didRedrawThread(true); | ||||
}); | }); | ||||
threadManager.setDidUpdateThreadCallback(function(r) { | threadManager.setDidUpdateThreadCallback(function(r) { | ||||
var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | JX.DOM.appendContent(scrollbar.getContentNode(), JX.$H(r.transactions)); | ||||
var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane'); | |||||
var messages = JX.DOM.find(messages_root, 'div', 'conpherence-messages'); | |||||
JX.DOM.appendContent(messages, JX.$H(r.transactions)); | |||||
_scrollMessageWindow(); | _scrollMessageWindow(); | ||||
}); | }); | ||||
threadManager.setWillSendMessageCallback(function () { | threadManager.setWillSendMessageCallback(function () { | ||||
var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | ||||
var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); | var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); | ||||
markThreadLoading(true); | markThreadLoading(true); | ||||
JX.DOM.alterClass(form_root, 'loading', true); | JX.DOM.alterClass(form_root, 'loading', true); | ||||
}); | }); | ||||
threadManager.setDidSendMessageCallback(function (r, non_update) { | threadManager.setDidSendMessageCallback(function (r, non_update) { | ||||
var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | ||||
var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); | var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); | ||||
var textarea = JX.DOM.find(form_root, 'textarea'); | var textarea = JX.DOM.find(form_root, 'textarea'); | ||||
if (!non_update) { | if (!non_update) { | ||||
var messages_root = JX.DOM.find(root, 'div', 'conpherence-message-pane'); | |||||
var messages = JX.DOM.find(messages_root, 'div', 'conpherence-messages'); | |||||
var fileWidget = null; | var fileWidget = null; | ||||
try { | try { | ||||
fileWidget = JX.DOM.find(root, 'div', 'widgets-files'); | fileWidget = JX.DOM.find(root, 'div', 'widgets-files'); | ||||
} catch (ex) { | } catch (ex) { | ||||
// Ignore; maybe no files widget | // Ignore; maybe no files widget | ||||
} | } | ||||
JX.DOM.appendContent(messages, JX.$H(r.transactions)); | JX.DOM.appendContent(scrollbar.getContentNode(), JX.$H(r.transactions)); | ||||
_scrollMessageWindow(); | _scrollMessageWindow(); | ||||
if (fileWidget) { | if (fileWidget) { | ||||
JX.DOM.setContent( | JX.DOM.setContent( | ||||
fileWidget, | fileWidget, | ||||
JX.$H(r.file_widget) | JX.$H(r.file_widget)); | ||||
); | |||||
} | } | ||||
textarea.value = ''; | textarea.value = ''; | ||||
} | } | ||||
markThreadLoading(false); | markThreadLoading(false); | ||||
setTimeout(function() { JX.DOM.focus(textarea); }, 100); | setTimeout(function() { JX.DOM.focus(textarea); }, 100); | ||||
}); | }); | ||||
threadManager.start(); | threadManager.start(); | ||||
▲ Show 20 Lines • Show All 226 Lines • ▼ Show 20 Lines | JX.Stratcom.invoke( | ||||
{ | { | ||||
widget : getDefaultWidget(), | widget : getDefaultWidget(), | ||||
threadID : _thread.selected, | threadID : _thread.selected, | ||||
buildDeviceWidgetSelector : build_device_widget_selector | buildDeviceWidgetSelector : build_device_widget_selector | ||||
}); | }); | ||||
} | } | ||||
var _firstScroll = true; | var _firstScroll = true; | ||||
function _scrollMessageWindow() { | function _scrollMessageWindow() { | ||||
var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | |||||
var messages_root = JX.DOM.find(root, 'div', 'conpherence-messages'); | |||||
if (_firstScroll) { | if (_firstScroll) { | ||||
_firstScroll = false; | _firstScroll = false; | ||||
// let the standard #anchor tech take over | // let the standard #anchor tech take over | ||||
if (window.location.hash) { | if (window.location.hash) { | ||||
return; | return; | ||||
} | } | ||||
} | } | ||||
scrollbar.scrollTo(messages_root.scrollHeight); | scrollbar.scrollTo(scrollbar.getViewportNode().scrollHeight); | ||||
} | } | ||||
function _focusTextarea() { | function _focusTextarea() { | ||||
var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | var root = JX.DOM.find(document, 'div', 'conpherence-layout'); | ||||
var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); | var form_root = JX.DOM.find(root, 'div', 'conpherence-form'); | ||||
try { | try { | ||||
var textarea = JX.DOM.find(form_root, 'textarea'); | var textarea = JX.DOM.find(form_root, 'textarea'); | ||||
// We may have a draft so do this JS trick so we end up focused at the | // We may have a draft so do this JS trick so we end up focused at the | ||||
// end of the draft. | // end of the draft. | ||||
▲ Show 20 Lines • Show All 198 Lines • Show Last 20 Lines |