1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-11-30 10:42:41 +01:00
phorge-phorge/webroot/rsrc/js/application/maniphest/behavior-transaction-controls.js
Jason Ge 1e3c10379a Enable typeahead's ondemand on details view page
Summary:
the details pages are using preload instead of ondemand for
typeahead, but the most common actions on the pages are commenting which
would not need the preloaded info. To improve the performance of the
pages, turn on ondemand according to the setting in the config file.

Test Plan: verify it is working with both modes, for both pages.

Reviewers: epriestley, nh

Reviewed By: epriestley

CC: aran, epriestley

Differential Revision: 995
2011-10-09 12:33:08 -07:00

65 lines
1.4 KiB
JavaScript

/**
* @provides javelin-behavior-maniphest-transaction-controls
* @requires javelin-behavior
* javelin-dom
* javelin-tokenizer
* javelin-typeahead
* javelin-typeahead-preloaded-source
*/
JX.behavior('maniphest-transaction-controls', function(config) {
var tokenizers = {};
for (var k in config.tokenizers) {
var tconfig = config.tokenizers[k];
var root = JX.$(tconfig.id);
var datasource;
if (tconfig.ondemand) {
datasource = new JX.TypeaheadOnDemandSource(tconfig.src);
} else {
datasource = new JX.TypeaheadPreloadedSource(tconfig.src);
}
var typeahead = new JX.Typeahead(root);
typeahead.setDatasource(datasource);
var tokenizer = new JX.Tokenizer(root);
tokenizer.setTypeahead(typeahead);
if (tconfig.limit) {
tokenizer.setLimit(tconfig.limit);
}
tokenizer.start();
if (tconfig.value) {
for (var jj in tconfig.value) {
tokenizer.addToken(jj, tconfig.value[jj]);
}
}
tokenizers[k] = tokenizer;
}
JX.DOM.listen(
JX.$(config.select),
'change',
null,
function(e) {
for (var k in config.controlMap) {
if (k == JX.$(config.select).value) {
JX.DOM.show(JX.$(config.controlMap[k]));
if (tokenizers[k]) {
tokenizers[k].refresh();
}
} else {
JX.DOM.hide(JX.$(config.controlMap[k]));
}
}
});
});