2011-02-08 19:53:59 +01:00
|
|
|
/**
|
|
|
|
* @provides javelin-behavior-maniphest-transaction-controls
|
Bring Javelin into Phabricator via git submodule, not copy-and-paste
Summary:
Javelin is currently embedded in Phabricator via copy-and-paste of prebuilt
packages. This is not so great.
Pull it in as a submodule instead and make all the Phabriator resources declare
proper dependency trees. Add Javelin linting.
Test Plan:
I tried to run through pretty much all the JS functionality on the site. This is
still a high-risk change, but I did a pretty thorough test
Differential: inline comments, revealing diffs, list tokenizers, comment
preview, editing/deleting comments, add review action.
Maniphest: list tokenizer, comment actions
Herald: rule editing, tokenizers, add/remove rows
Reviewed By: tomo
Reviewers: aran, tomo, mroch, jungejason, tuomaspelkonen
CC: aran, tomo, epriestley
Differential Revision: 223
2011-05-04 00:11:55 +02:00
|
|
|
* @requires javelin-behavior
|
|
|
|
* javelin-dom
|
|
|
|
* javelin-tokenizer
|
|
|
|
* javelin-typeahead
|
|
|
|
* javelin-typeahead-preloaded-source
|
2011-02-08 19:53:59 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
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);
|
2011-10-08 03:25:54 +02:00
|
|
|
|
|
|
|
var datasource;
|
|
|
|
if (tconfig.ondemand) {
|
|
|
|
datasource = new JX.TypeaheadOnDemandSource(tconfig.src);
|
|
|
|
} else {
|
|
|
|
datasource = new JX.TypeaheadPreloadedSource(tconfig.src);
|
|
|
|
}
|
2011-02-08 19:53:59 +01:00
|
|
|
|
|
|
|
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]));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|
|
|
|
|