Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/application/files/behavior-document-engine.js
Show First 20 Lines • Show All 67 Lines • ▼ Show 20 Lines | function onmenu(e) { | ||||
menu.open(); | menu.open(); | ||||
} | } | ||||
function onview(data, spec, immediate) { | function onview(data, spec, immediate) { | ||||
data.sequence = (data.sequence || 0) + 1; | data.sequence = (data.sequence || 0) + 1; | ||||
var handler = JX.bind(null, onrender, data, data.sequence); | var handler = JX.bind(null, onrender, data, data.sequence); | ||||
data.viewKey = spec.viewKey; | data.viewKey = spec.viewKey; | ||||
JX.History.replace(spec.viewURI); | |||||
new JX.Request(spec.engineURI, handler) | new JX.Request(spec.engineURI, handler) | ||||
.send(); | .send(); | ||||
if (data.loadingView) { | if (data.loadingView) { | ||||
// If we're already showing "Loading...", immediately change it to | // If we're already showing "Loading...", immediately change it to | ||||
// show the new document type. | // show the new document type. | ||||
onloading(data, spec); | onloading(data, spec); | ||||
} else if (!immediate) { | } else if (!immediate) { | ||||
// Otherwise, grey out the document and show "Loading..." after a | // Otherwise, grey out the document and show "Loading..." after a | ||||
// short delay. This prevents the content from flickering when rendering | // short delay. This prevents the content from flickering when rendering | ||||
// is fast. | // is fast. | ||||
var viewport = JX.$(data.viewportID); | var viewport = JX.$(data.viewportID); | ||||
JX.DOM.alterClass(viewport, 'document-engine-in-flight', true); | JX.DOM.alterClass(viewport, 'document-engine-in-flight', true); | ||||
var load = JX.bind(null, onloading, data, spec); | var load = JX.bind(null, onloading, data, spec); | ||||
data.loadTimer = setTimeout(load, 333); | data.loadTimer = setTimeout(load, 333); | ||||
// Replace the URI with the URI for the specific rendering the user | |||||
// has selected. | |||||
JX.History.replace(spec.viewURI); | |||||
} | } | ||||
} | } | ||||
function onloading(data, spec) { | function onloading(data, spec) { | ||||
data.loadingView = true; | data.loadingView = true; | ||||
var viewport = JX.$(data.viewportID); | var viewport = JX.$(data.viewportID); | ||||
JX.DOM.alterClass(viewport, 'document-engine-in-flight', false); | JX.DOM.alterClass(viewport, 'document-engine-in-flight', false); | ||||
Show All 21 Lines | function onrender(data, sequence, r) { | ||||
JX.DOM.setContent(viewport, JX.$H(r.markup)); | JX.DOM.setContent(viewport, JX.$H(r.markup)); | ||||
} | } | ||||
if (!statics.initialized) { | if (!statics.initialized) { | ||||
JX.Stratcom.listen('click', 'document-engine-view-dropdown', onmenu); | JX.Stratcom.listen('click', 'document-engine-view-dropdown', onmenu); | ||||
statics.initialized = true; | statics.initialized = true; | ||||
} | } | ||||
if (config.renderControlID) { | if (config && config.renderControlID) { | ||||
var control = JX.$(config.renderControlID); | var control = JX.$(config.renderControlID); | ||||
var data = JX.Stratcom.getData(control); | var data = JX.Stratcom.getData(control); | ||||
for (var ii = 0; ii < data.views.length; ii++) { | for (var ii = 0; ii < data.views.length; ii++) { | ||||
if (data.views[ii].viewKey == data.viewKey) { | if (data.views[ii].viewKey == data.viewKey) { | ||||
onview(data, data.views[ii], true); | onview(data, data.views[ii], true); | ||||
break; | break; | ||||
} | } | ||||
} | } | ||||
} | } | ||||
}); | }); |