mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-23 05:50:55 +01:00
Merge "differential-dropdown-menus" behavior into DiffChangesetList
Summary: Ref T12616. This ends up being a little messy ("one giant function") and maybe I'll clean it up a bit later, but continue consolidating the wild jungle of behaviors into a smaller set of responsible objects. Test Plan: Clicked all the menu options, saw them work properly. Grepped for removed methods. Reviewers: chad Reviewed By: chad Maniphest Tasks: T12616 Differential Revision: https://secure.phabricator.com/D17845
This commit is contained in:
parent
63450cc48e
commit
64a54aac9d
7 changed files with 285 additions and 309 deletions
|
@ -13,7 +13,7 @@ return array(
|
||||||
'core.pkg.js' => '2ff7879f',
|
'core.pkg.js' => '2ff7879f',
|
||||||
'darkconsole.pkg.js' => '1f9a31bc',
|
'darkconsole.pkg.js' => '1f9a31bc',
|
||||||
'differential.pkg.css' => '90b30783',
|
'differential.pkg.css' => '90b30783',
|
||||||
'differential.pkg.js' => 'ef6c7cfc',
|
'differential.pkg.js' => '51d9bebe',
|
||||||
'diffusion.pkg.css' => 'b93d9b8c',
|
'diffusion.pkg.css' => 'b93d9b8c',
|
||||||
'diffusion.pkg.js' => '84c8f8fd',
|
'diffusion.pkg.js' => '84c8f8fd',
|
||||||
'favicon.ico' => '30672e08',
|
'favicon.ico' => '30672e08',
|
||||||
|
@ -390,17 +390,16 @@ return array(
|
||||||
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '408bf173',
|
'rsrc/js/application/dashboard/behavior-dashboard-move-panels.js' => '408bf173',
|
||||||
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375',
|
'rsrc/js/application/dashboard/behavior-dashboard-query-panel-select.js' => '453c5375',
|
||||||
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63',
|
'rsrc/js/application/dashboard/behavior-dashboard-tab-panel.js' => 'd4eecc63',
|
||||||
'rsrc/js/application/diff/DiffChangeset.js' => 'a1189df6',
|
'rsrc/js/application/diff/DiffChangeset.js' => 'ed7bc580',
|
||||||
'rsrc/js/application/diff/DiffChangesetList.js' => '2329e40e',
|
'rsrc/js/application/diff/DiffChangesetList.js' => 'f9ea2d8b',
|
||||||
'rsrc/js/application/diff/behavior-preview-link.js' => '051c7832',
|
'rsrc/js/application/diff/behavior-preview-link.js' => '051c7832',
|
||||||
'rsrc/js/application/differential/DifferentialInlineCommentEditor.js' => '2e3f9738',
|
'rsrc/js/application/differential/DifferentialInlineCommentEditor.js' => '2e3f9738',
|
||||||
'rsrc/js/application/differential/behavior-comment-jump.js' => '4fdb476d',
|
'rsrc/js/application/differential/behavior-comment-jump.js' => '4fdb476d',
|
||||||
'rsrc/js/application/differential/behavior-comment-preview.js' => 'b064af76',
|
'rsrc/js/application/differential/behavior-comment-preview.js' => 'b064af76',
|
||||||
'rsrc/js/application/differential/behavior-diff-radios.js' => 'e1ff79b1',
|
'rsrc/js/application/differential/behavior-diff-radios.js' => 'e1ff79b1',
|
||||||
'rsrc/js/application/differential/behavior-dropdown-menus.js' => 'c3d216cb',
|
|
||||||
'rsrc/js/application/differential/behavior-edit-inline-comments.js' => 'c0f1c3b5',
|
'rsrc/js/application/differential/behavior-edit-inline-comments.js' => 'c0f1c3b5',
|
||||||
'rsrc/js/application/differential/behavior-keyboard-nav.js' => '92904457',
|
'rsrc/js/application/differential/behavior-keyboard-nav.js' => '92904457',
|
||||||
'rsrc/js/application/differential/behavior-populate.js' => '00d88bc4',
|
'rsrc/js/application/differential/behavior-populate.js' => '7356b23d',
|
||||||
'rsrc/js/application/differential/behavior-toggle-files.js' => 'ca3f91eb',
|
'rsrc/js/application/differential/behavior-toggle-files.js' => 'ca3f91eb',
|
||||||
'rsrc/js/application/differential/behavior-user-select.js' => 'a8d8459d',
|
'rsrc/js/application/differential/behavior-user-select.js' => 'a8d8459d',
|
||||||
'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => 'c93358e3',
|
'rsrc/js/application/diffusion/DiffusionLocateFileSource.js' => 'c93358e3',
|
||||||
|
@ -624,11 +623,10 @@ return array(
|
||||||
'javelin-behavior-diff-preview-link' => '051c7832',
|
'javelin-behavior-diff-preview-link' => '051c7832',
|
||||||
'javelin-behavior-differential-comment-jump' => '4fdb476d',
|
'javelin-behavior-differential-comment-jump' => '4fdb476d',
|
||||||
'javelin-behavior-differential-diff-radios' => 'e1ff79b1',
|
'javelin-behavior-differential-diff-radios' => 'e1ff79b1',
|
||||||
'javelin-behavior-differential-dropdown-menus' => 'c3d216cb',
|
|
||||||
'javelin-behavior-differential-edit-inline-comments' => 'c0f1c3b5',
|
'javelin-behavior-differential-edit-inline-comments' => 'c0f1c3b5',
|
||||||
'javelin-behavior-differential-feedback-preview' => 'b064af76',
|
'javelin-behavior-differential-feedback-preview' => 'b064af76',
|
||||||
'javelin-behavior-differential-keyboard-navigation' => '92904457',
|
'javelin-behavior-differential-keyboard-navigation' => '92904457',
|
||||||
'javelin-behavior-differential-populate' => '00d88bc4',
|
'javelin-behavior-differential-populate' => '7356b23d',
|
||||||
'javelin-behavior-differential-toggle-files' => 'ca3f91eb',
|
'javelin-behavior-differential-toggle-files' => 'ca3f91eb',
|
||||||
'javelin-behavior-differential-user-select' => 'a8d8459d',
|
'javelin-behavior-differential-user-select' => 'a8d8459d',
|
||||||
'javelin-behavior-diffusion-browse-file' => '054a0f0b',
|
'javelin-behavior-diffusion-browse-file' => '054a0f0b',
|
||||||
|
@ -786,8 +784,8 @@ return array(
|
||||||
'phabricator-darklog' => 'c8e1ffe3',
|
'phabricator-darklog' => 'c8e1ffe3',
|
||||||
'phabricator-darkmessage' => 'c48cccdd',
|
'phabricator-darkmessage' => 'c48cccdd',
|
||||||
'phabricator-dashboard-css' => 'fe5b1869',
|
'phabricator-dashboard-css' => 'fe5b1869',
|
||||||
'phabricator-diff-changeset' => 'a1189df6',
|
'phabricator-diff-changeset' => 'ed7bc580',
|
||||||
'phabricator-diff-changeset-list' => '2329e40e',
|
'phabricator-diff-changeset-list' => 'f9ea2d8b',
|
||||||
'phabricator-drag-and-drop-file-upload' => '58dea2fa',
|
'phabricator-drag-and-drop-file-upload' => '58dea2fa',
|
||||||
'phabricator-draggable-list' => 'bea6e7f4',
|
'phabricator-draggable-list' => 'bea6e7f4',
|
||||||
'phabricator-fatal-config-template-css' => '8f18fa41',
|
'phabricator-fatal-config-template-css' => '8f18fa41',
|
||||||
|
@ -922,14 +920,6 @@ return array(
|
||||||
'unhandled-exception-css' => '4c96257a',
|
'unhandled-exception-css' => '4c96257a',
|
||||||
),
|
),
|
||||||
'requires' => array(
|
'requires' => array(
|
||||||
'00d88bc4' => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'phabricator-tooltip',
|
|
||||||
'phabricator-diff-changeset-list',
|
|
||||||
'phabricator-diff-changeset',
|
|
||||||
),
|
|
||||||
'013ffff9' => array(
|
'013ffff9' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
|
@ -1087,9 +1077,6 @@ return array(
|
||||||
'javelin-workflow',
|
'javelin-workflow',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
),
|
),
|
||||||
'2329e40e' => array(
|
|
||||||
'javelin-install',
|
|
||||||
),
|
|
||||||
26167537 => array(
|
26167537 => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
|
@ -1471,6 +1458,14 @@ return array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
|
'7356b23d' => array(
|
||||||
|
'javelin-behavior',
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'phabricator-tooltip',
|
||||||
|
'phabricator-diff-changeset-list',
|
||||||
|
'phabricator-diff-changeset',
|
||||||
|
),
|
||||||
'73d09eef' => array(
|
'73d09eef' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-vector',
|
'javelin-vector',
|
||||||
|
@ -1706,16 +1701,6 @@ return array(
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
'phabricator-keyboard-shortcut',
|
'phabricator-keyboard-shortcut',
|
||||||
),
|
),
|
||||||
'a1189df6' => array(
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-util',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-install',
|
|
||||||
'javelin-workflow',
|
|
||||||
'javelin-router',
|
|
||||||
'javelin-behavior-device',
|
|
||||||
'javelin-vector',
|
|
||||||
),
|
|
||||||
'a155550f' => array(
|
'a155550f' => array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
|
@ -1942,18 +1927,6 @@ return array(
|
||||||
'javelin-vector',
|
'javelin-vector',
|
||||||
'differential-inline-comment-editor',
|
'differential-inline-comment-editor',
|
||||||
),
|
),
|
||||||
'c3d216cb' => array(
|
|
||||||
'javelin-behavior',
|
|
||||||
'javelin-dom',
|
|
||||||
'javelin-util',
|
|
||||||
'javelin-stratcom',
|
|
||||||
'javelin-workflow',
|
|
||||||
'phuix-dropdown-menu',
|
|
||||||
'phuix-action-list-view',
|
|
||||||
'phuix-action-view',
|
|
||||||
'phabricator-phtize',
|
|
||||||
'phabricator-diff-changeset',
|
|
||||||
),
|
|
||||||
'c420b0b9' => array(
|
'c420b0b9' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-behavior-device',
|
'javelin-behavior-device',
|
||||||
|
@ -2182,6 +2155,16 @@ return array(
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
'phabricator-draggable-list',
|
'phabricator-draggable-list',
|
||||||
),
|
),
|
||||||
|
'ed7bc580' => array(
|
||||||
|
'javelin-dom',
|
||||||
|
'javelin-util',
|
||||||
|
'javelin-stratcom',
|
||||||
|
'javelin-install',
|
||||||
|
'javelin-workflow',
|
||||||
|
'javelin-router',
|
||||||
|
'javelin-behavior-device',
|
||||||
|
'javelin-vector',
|
||||||
|
),
|
||||||
'eded9ee8' => array(
|
'eded9ee8' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-typeahead-ondemand-source',
|
'javelin-typeahead-ondemand-source',
|
||||||
|
@ -2239,6 +2222,9 @@ return array(
|
||||||
'javelin-install',
|
'javelin-install',
|
||||||
'javelin-dom',
|
'javelin-dom',
|
||||||
),
|
),
|
||||||
|
'f9ea2d8b' => array(
|
||||||
|
'javelin-install',
|
||||||
|
),
|
||||||
'fbe497e7' => array(
|
'fbe497e7' => array(
|
||||||
'javelin-behavior',
|
'javelin-behavior',
|
||||||
'javelin-util',
|
'javelin-util',
|
||||||
|
@ -2465,7 +2451,6 @@ return array(
|
||||||
'javelin-behavior-repository-crossreference',
|
'javelin-behavior-repository-crossreference',
|
||||||
'javelin-behavior-load-blame',
|
'javelin-behavior-load-blame',
|
||||||
'differential-inline-comment-editor',
|
'differential-inline-comment-editor',
|
||||||
'javelin-behavior-differential-dropdown-menus',
|
|
||||||
'javelin-behavior-differential-toggle-files',
|
'javelin-behavior-differential-toggle-files',
|
||||||
'javelin-behavior-differential-user-select',
|
'javelin-behavior-differential-user-select',
|
||||||
'javelin-behavior-aphront-more',
|
'javelin-behavior-aphront-more',
|
||||||
|
|
|
@ -204,7 +204,6 @@ return array(
|
||||||
'javelin-behavior-load-blame',
|
'javelin-behavior-load-blame',
|
||||||
|
|
||||||
'differential-inline-comment-editor',
|
'differential-inline-comment-editor',
|
||||||
'javelin-behavior-differential-dropdown-menus',
|
|
||||||
'javelin-behavior-differential-toggle-files',
|
'javelin-behavior-differential-toggle-files',
|
||||||
'javelin-behavior-differential-user-select',
|
'javelin-behavior-differential-user-select',
|
||||||
'javelin-behavior-aphront-more',
|
'javelin-behavior-aphront-more',
|
||||||
|
|
|
@ -138,29 +138,6 @@ final class DifferentialChangesetListView extends AphrontView {
|
||||||
),
|
),
|
||||||
));
|
));
|
||||||
|
|
||||||
Javelin::initBehavior(
|
|
||||||
'differential-dropdown-menus',
|
|
||||||
array(
|
|
||||||
'pht' => array(
|
|
||||||
'Open in Editor' => pht('Open in Editor'),
|
|
||||||
'Show All Context' => pht('Show All Context'),
|
|
||||||
'All Context Shown' => pht('All Context Shown'),
|
|
||||||
"Can't Toggle Unloaded File" => pht("Can't Toggle Unloaded File"),
|
|
||||||
'Expand File' => pht('Expand File'),
|
|
||||||
'Collapse File' => pht('Collapse File'),
|
|
||||||
'Browse in Diffusion' => pht('Browse in Diffusion'),
|
|
||||||
'View Standalone' => pht('View Standalone'),
|
|
||||||
'Show Raw File (Left)' => pht('Show Raw File (Left)'),
|
|
||||||
'Show Raw File (Right)' => pht('Show Raw File (Right)'),
|
|
||||||
'Configure Editor' => pht('Configure Editor'),
|
|
||||||
'Load Changes' => pht('Load Changes'),
|
|
||||||
'View Side-by-Side' => pht('View Side-by-Side'),
|
|
||||||
'View Unified' => pht('View Unified'),
|
|
||||||
'Change Text Encoding...' => pht('Change Text Encoding...'),
|
|
||||||
'Highlight As...' => pht('Highlight As...'),
|
|
||||||
),
|
|
||||||
));
|
|
||||||
|
|
||||||
$renderer = DifferentialChangesetParser::getDefaultRendererForViewer(
|
$renderer = DifferentialChangesetParser::getDefaultRendererForViewer(
|
||||||
$viewer);
|
$viewer);
|
||||||
|
|
||||||
|
@ -238,8 +215,28 @@ final class DifferentialChangesetListView extends AphrontView {
|
||||||
|
|
||||||
$this->requireResource('aphront-tooltip-css');
|
$this->requireResource('aphront-tooltip-css');
|
||||||
|
|
||||||
$this->initBehavior('differential-populate', array(
|
$this->initBehavior(
|
||||||
|
'differential-populate',
|
||||||
|
array(
|
||||||
'changesetViewIDs' => $ids,
|
'changesetViewIDs' => $ids,
|
||||||
|
'pht' => array(
|
||||||
|
'Open in Editor' => pht('Open in Editor'),
|
||||||
|
'Show All Context' => pht('Show All Context'),
|
||||||
|
'All Context Shown' => pht('All Context Shown'),
|
||||||
|
"Can't Toggle Unloaded File" => pht("Can't Toggle Unloaded File"),
|
||||||
|
'Expand File' => pht('Expand File'),
|
||||||
|
'Collapse File' => pht('Collapse File'),
|
||||||
|
'Browse in Diffusion' => pht('Browse in Diffusion'),
|
||||||
|
'View Standalone' => pht('View Standalone'),
|
||||||
|
'Show Raw File (Left)' => pht('Show Raw File (Left)'),
|
||||||
|
'Show Raw File (Right)' => pht('Show Raw File (Right)'),
|
||||||
|
'Configure Editor' => pht('Configure Editor'),
|
||||||
|
'Load Changes' => pht('Load Changes'),
|
||||||
|
'View Side-by-Side' => pht('View Side-by-Side'),
|
||||||
|
'View Unified' => pht('View Unified'),
|
||||||
|
'Change Text Encoding...' => pht('Change Text Encoding...'),
|
||||||
|
'Highlight As...' => pht('Highlight As...'),
|
||||||
|
),
|
||||||
));
|
));
|
||||||
|
|
||||||
$this->initBehavior('differential-comment-jump', array());
|
$this->initBehavior('differential-comment-jump', array());
|
||||||
|
|
|
@ -174,6 +174,20 @@ JX.install('DiffChangeset', {
|
||||||
return this;
|
return this;
|
||||||
},
|
},
|
||||||
|
|
||||||
|
loadAllContext: function() {
|
||||||
|
var nodes = JX.DOM.scry(this._node, 'tr', 'context-target');
|
||||||
|
for (var ii = 0; ii < nodes.length; ii++) {
|
||||||
|
var show = JX.DOM.scry(nodes[ii], 'a', 'show-more');
|
||||||
|
for (var jj = 0; jj < show.length; jj++) {
|
||||||
|
var data = JX.Stratcom.getData(show[jj]);
|
||||||
|
if (data.type != 'all') {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
this.loadContext(data.range, nodes[ii], true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
_startContentWorkflow: function(workflow) {
|
_startContentWorkflow: function(workflow) {
|
||||||
var routable = workflow.getRoutable();
|
var routable = workflow.getRoutable();
|
||||||
|
|
||||||
|
|
|
@ -13,6 +13,13 @@ JX.install('DiffChangesetList', {
|
||||||
|
|
||||||
var onmore = JX.bind(this, this._ifawake, this._onmore);
|
var onmore = JX.bind(this, this._ifawake, this._onmore);
|
||||||
JX.Stratcom.listen('click', 'show-more', onmore);
|
JX.Stratcom.listen('click', 'show-more', onmore);
|
||||||
|
|
||||||
|
var onmenu = JX.bind(this, this._ifawake, this._onmenu);
|
||||||
|
JX.Stratcom.listen('click', 'differential-view-options', onmenu);
|
||||||
|
},
|
||||||
|
|
||||||
|
properties: {
|
||||||
|
translations: null
|
||||||
},
|
},
|
||||||
|
|
||||||
members: {
|
members: {
|
||||||
|
@ -80,8 +87,221 @@ JX.install('DiffChangesetList', {
|
||||||
var target = e.getNode('context-target');
|
var target = e.getNode('context-target');
|
||||||
|
|
||||||
changeset.loadContext(data.range, target);
|
changeset.loadContext(data.range, target);
|
||||||
|
},
|
||||||
|
|
||||||
|
_onmenu: function(e) {
|
||||||
|
var button = e.getNode('differential-view-options');
|
||||||
|
|
||||||
|
var data = JX.Stratcom.getData(button);
|
||||||
|
if (data.menu) {
|
||||||
|
// We've already built this menu, so we can let the menu itself handle
|
||||||
|
// the event.
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
e.prevent();
|
||||||
|
|
||||||
|
var pht = this.getTranslations();
|
||||||
|
|
||||||
|
var node = JX.DOM.findAbove(
|
||||||
|
button,
|
||||||
|
'div',
|
||||||
|
'differential-changeset');
|
||||||
|
|
||||||
|
var changeset = this.getChangesetForNode(node);
|
||||||
|
|
||||||
|
var menu = new JX.PHUIXDropdownMenu(button);
|
||||||
|
var list = new JX.PHUIXActionListView();
|
||||||
|
|
||||||
|
var add_link = function(icon, name, href, local) {
|
||||||
|
if (!href) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
var link = new JX.PHUIXActionView()
|
||||||
|
.setIcon(icon)
|
||||||
|
.setName(name)
|
||||||
|
.setHref(href)
|
||||||
|
.setHandler(function(e) {
|
||||||
|
if (local) {
|
||||||
|
window.location.assign(href);
|
||||||
|
} else {
|
||||||
|
window.open(href);
|
||||||
|
}
|
||||||
|
menu.close();
|
||||||
|
e.prevent();
|
||||||
|
});
|
||||||
|
|
||||||
|
list.addItem(link);
|
||||||
|
return link;
|
||||||
|
};
|
||||||
|
|
||||||
|
var reveal_item = new JX.PHUIXActionView()
|
||||||
|
.setIcon('fa-eye');
|
||||||
|
list.addItem(reveal_item);
|
||||||
|
|
||||||
|
var visible_item = new JX.PHUIXActionView()
|
||||||
|
.setHandler(function(e) {
|
||||||
|
var diff = JX.DOM.scry(
|
||||||
|
JX.$(data.containerID),
|
||||||
|
'table',
|
||||||
|
'differential-diff');
|
||||||
|
|
||||||
|
JX.Stratcom.invoke('differential-toggle-file', null, {diff: diff});
|
||||||
|
e.prevent();
|
||||||
|
menu.close();
|
||||||
|
});
|
||||||
|
list.addItem(visible_item);
|
||||||
|
|
||||||
|
add_link('fa-file-text', pht('Browse in Diffusion'), data.diffusionURI);
|
||||||
|
add_link('fa-file-o', pht('View Standalone'), data.standaloneURI);
|
||||||
|
|
||||||
|
var up_item = new JX.PHUIXActionView()
|
||||||
|
.setHandler(function(e) {
|
||||||
|
if (changeset.isLoaded()) {
|
||||||
|
var renderer = changeset.getRenderer();
|
||||||
|
if (renderer == '1up') {
|
||||||
|
renderer = '2up';
|
||||||
|
} else {
|
||||||
|
renderer = '1up';
|
||||||
|
}
|
||||||
|
changeset.setRenderer(renderer);
|
||||||
|
}
|
||||||
|
changeset.reload();
|
||||||
|
|
||||||
|
e.prevent();
|
||||||
|
menu.close();
|
||||||
|
});
|
||||||
|
list.addItem(up_item);
|
||||||
|
|
||||||
|
var encoding_item = new JX.PHUIXActionView()
|
||||||
|
.setIcon('fa-font')
|
||||||
|
.setName(pht('Change Text Encoding...'))
|
||||||
|
.setHandler(function(e) {
|
||||||
|
var params = {
|
||||||
|
encoding: changeset.getEncoding()
|
||||||
|
};
|
||||||
|
|
||||||
|
new JX.Workflow('/services/encoding/', params)
|
||||||
|
.setHandler(function(r) {
|
||||||
|
changeset.setEncoding(r.encoding);
|
||||||
|
changeset.reload();
|
||||||
|
})
|
||||||
|
.start();
|
||||||
|
|
||||||
|
e.prevent();
|
||||||
|
menu.close();
|
||||||
|
});
|
||||||
|
list.addItem(encoding_item);
|
||||||
|
|
||||||
|
var highlight_item = new JX.PHUIXActionView()
|
||||||
|
.setIcon('fa-sun-o')
|
||||||
|
.setName(pht('Highlight As...'))
|
||||||
|
.setHandler(function(e) {
|
||||||
|
var params = {
|
||||||
|
highlight: changeset.getHighlight()
|
||||||
|
};
|
||||||
|
|
||||||
|
new JX.Workflow('/services/highlight/', params)
|
||||||
|
.setHandler(function(r) {
|
||||||
|
changeset.setHighlight(r.highlight);
|
||||||
|
changeset.reload();
|
||||||
|
})
|
||||||
|
.start();
|
||||||
|
|
||||||
|
e.prevent();
|
||||||
|
menu.close();
|
||||||
|
});
|
||||||
|
list.addItem(highlight_item);
|
||||||
|
|
||||||
|
add_link('fa-arrow-left', pht('Show Raw File (Left)'), data.leftURI);
|
||||||
|
add_link('fa-arrow-right', pht('Show Raw File (Right)'), data.rightURI);
|
||||||
|
add_link('fa-pencil', pht('Open in Editor'), data.editor, true);
|
||||||
|
add_link('fa-wrench', pht('Configure Editor'), data.editorConfigure);
|
||||||
|
|
||||||
|
menu.setContent(list.getNode());
|
||||||
|
|
||||||
|
menu.listen('open', function() {
|
||||||
|
// When the user opens the menu, check if there are any "Show More"
|
||||||
|
// links in the changeset body. If there aren't, disable the "Show
|
||||||
|
// Entire File" menu item since it won't change anything.
|
||||||
|
|
||||||
|
var nodes = JX.DOM.scry(JX.$(data.containerID), 'a', 'show-more');
|
||||||
|
if (nodes.length) {
|
||||||
|
reveal_item
|
||||||
|
.setDisabled(false)
|
||||||
|
.setName(pht('Show All Context'))
|
||||||
|
.setIcon('fa-file-o')
|
||||||
|
.setHandler(function(e) {
|
||||||
|
changeset.loadAllContext();
|
||||||
|
e.prevent();
|
||||||
|
menu.close();
|
||||||
|
});
|
||||||
|
} else {
|
||||||
|
reveal_item
|
||||||
|
.setDisabled(true)
|
||||||
|
.setIcon('fa-file')
|
||||||
|
.setName(pht('All Context Shown'))
|
||||||
|
.setHandler(function(e) { e.prevent(); });
|
||||||
|
}
|
||||||
|
|
||||||
|
encoding_item.setDisabled(!changeset.isLoaded());
|
||||||
|
highlight_item.setDisabled(!changeset.isLoaded());
|
||||||
|
|
||||||
|
if (changeset.isLoaded()) {
|
||||||
|
if (changeset.getRenderer() == '2up') {
|
||||||
|
up_item
|
||||||
|
.setIcon('fa-list-alt')
|
||||||
|
.setName(pht('View Unified'));
|
||||||
|
} else {
|
||||||
|
up_item
|
||||||
|
.setIcon('fa-files-o')
|
||||||
|
.setName(pht('View Side-by-Side'));
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
up_item
|
||||||
|
.setIcon('fa-refresh')
|
||||||
|
.setName(pht('Load Changes'));
|
||||||
|
}
|
||||||
|
|
||||||
|
visible_item
|
||||||
|
.setDisabled(true)
|
||||||
|
.setIcon('fa-expand')
|
||||||
|
.setName(pht('Can\'t Toggle Unloaded File'));
|
||||||
|
var diffs = JX.DOM.scry(
|
||||||
|
JX.$(data.containerID),
|
||||||
|
'table',
|
||||||
|
'differential-diff');
|
||||||
|
|
||||||
|
if (diffs.length > 1) {
|
||||||
|
JX.$E(
|
||||||
|
'More than one node with sigil "differential-diff" was found in "'+
|
||||||
|
data.containerID+'."');
|
||||||
|
} else if (diffs.length == 1) {
|
||||||
|
var diff = diffs[0];
|
||||||
|
visible_item.setDisabled(false);
|
||||||
|
if (JX.Stratcom.getData(diff).hidden) {
|
||||||
|
visible_item
|
||||||
|
.setName(pht('Expand File'))
|
||||||
|
.setIcon('fa-expand');
|
||||||
|
} else {
|
||||||
|
visible_item
|
||||||
|
.setName(pht('Collapse File'))
|
||||||
|
.setIcon('fa-compress');
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
// Do nothing when there is no diff shown in the table. For example,
|
||||||
|
// the file is binary.
|
||||||
|
}
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
data.menu = menu;
|
||||||
|
menu.open();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,240 +0,0 @@
|
||||||
/**
|
|
||||||
* @provides javelin-behavior-differential-dropdown-menus
|
|
||||||
* @requires javelin-behavior
|
|
||||||
* javelin-dom
|
|
||||||
* javelin-util
|
|
||||||
* javelin-stratcom
|
|
||||||
* javelin-workflow
|
|
||||||
* phuix-dropdown-menu
|
|
||||||
* phuix-action-list-view
|
|
||||||
* phuix-action-view
|
|
||||||
* phabricator-phtize
|
|
||||||
* phabricator-diff-changeset
|
|
||||||
*/
|
|
||||||
|
|
||||||
JX.behavior('differential-dropdown-menus', function(config) {
|
|
||||||
var pht = JX.phtize(config.pht);
|
|
||||||
|
|
||||||
function show_more(container) {
|
|
||||||
var view = JX.DiffChangeset.getForNode(container);
|
|
||||||
|
|
||||||
var nodes = JX.DOM.scry(container, 'tr', 'context-target');
|
|
||||||
for (var ii = 0; ii < nodes.length; ii++) {
|
|
||||||
var show = JX.DOM.scry(nodes[ii], 'a', 'show-more');
|
|
||||||
for (var jj = 0; jj < show.length; jj++) {
|
|
||||||
var data = JX.Stratcom.getData(show[jj]);
|
|
||||||
if (data.type != 'all') {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
view.loadContext(data.range, nodes[ii], true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var buildmenu = function(e) {
|
|
||||||
var button = e.getNode('differential-view-options');
|
|
||||||
var data = JX.Stratcom.getData(button);
|
|
||||||
if (data.menu) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
e.prevent();
|
|
||||||
|
|
||||||
var changeset = JX.DOM.findAbove(
|
|
||||||
button,
|
|
||||||
'div',
|
|
||||||
'differential-changeset');
|
|
||||||
|
|
||||||
var view = JX.DiffChangeset.getForNode(changeset);
|
|
||||||
var menu = new JX.PHUIXDropdownMenu(button);
|
|
||||||
var list = new JX.PHUIXActionListView();
|
|
||||||
|
|
||||||
var add_link = function(icon, name, href, local) {
|
|
||||||
if (!href) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
var link = new JX.PHUIXActionView()
|
|
||||||
.setIcon(icon)
|
|
||||||
.setName(name)
|
|
||||||
.setHref(href)
|
|
||||||
.setHandler(function(e) {
|
|
||||||
if (local) {
|
|
||||||
window.location.assign(href);
|
|
||||||
} else {
|
|
||||||
window.open(href);
|
|
||||||
}
|
|
||||||
menu.close();
|
|
||||||
e.prevent();
|
|
||||||
});
|
|
||||||
|
|
||||||
list.addItem(link);
|
|
||||||
return link;
|
|
||||||
};
|
|
||||||
|
|
||||||
var reveal_item = new JX.PHUIXActionView()
|
|
||||||
.setIcon('fa-eye');
|
|
||||||
list.addItem(reveal_item);
|
|
||||||
|
|
||||||
var visible_item = new JX.PHUIXActionView()
|
|
||||||
.setHandler(function(e) {
|
|
||||||
var diff = JX.DOM.scry(
|
|
||||||
JX.$(data.containerID),
|
|
||||||
'table',
|
|
||||||
'differential-diff');
|
|
||||||
|
|
||||||
JX.Stratcom.invoke('differential-toggle-file', null, {diff: diff});
|
|
||||||
e.prevent();
|
|
||||||
menu.close();
|
|
||||||
});
|
|
||||||
list.addItem(visible_item);
|
|
||||||
|
|
||||||
add_link('fa-file-text', pht('Browse in Diffusion'), data.diffusionURI);
|
|
||||||
add_link('fa-file-o', pht('View Standalone'), data.standaloneURI);
|
|
||||||
|
|
||||||
var up_item = new JX.PHUIXActionView()
|
|
||||||
.setHandler(function(e) {
|
|
||||||
if (view.isLoaded()) {
|
|
||||||
var renderer = view.getRenderer();
|
|
||||||
if (renderer == '1up') {
|
|
||||||
renderer = '2up';
|
|
||||||
} else {
|
|
||||||
renderer = '1up';
|
|
||||||
}
|
|
||||||
view.setRenderer(renderer);
|
|
||||||
}
|
|
||||||
view.reload();
|
|
||||||
|
|
||||||
e.prevent();
|
|
||||||
menu.close();
|
|
||||||
});
|
|
||||||
list.addItem(up_item);
|
|
||||||
|
|
||||||
var encoding_item = new JX.PHUIXActionView()
|
|
||||||
.setIcon('fa-font')
|
|
||||||
.setName(pht('Change Text Encoding...'))
|
|
||||||
.setHandler(function(e) {
|
|
||||||
var params = {
|
|
||||||
encoding: view.getEncoding()
|
|
||||||
};
|
|
||||||
|
|
||||||
new JX.Workflow('/services/encoding/', params)
|
|
||||||
.setHandler(function(r) {
|
|
||||||
view.setEncoding(r.encoding);
|
|
||||||
view.reload();
|
|
||||||
})
|
|
||||||
.start();
|
|
||||||
|
|
||||||
e.prevent();
|
|
||||||
menu.close();
|
|
||||||
});
|
|
||||||
list.addItem(encoding_item);
|
|
||||||
|
|
||||||
var highlight_item = new JX.PHUIXActionView()
|
|
||||||
.setIcon('fa-sun-o')
|
|
||||||
.setName(pht('Highlight As...'))
|
|
||||||
.setHandler(function(e) {
|
|
||||||
var params = {
|
|
||||||
highlight: view.getHighlight()
|
|
||||||
};
|
|
||||||
|
|
||||||
new JX.Workflow('/services/highlight/', params)
|
|
||||||
.setHandler(function(r) {
|
|
||||||
view.setHighlight(r.highlight);
|
|
||||||
view.reload();
|
|
||||||
})
|
|
||||||
.start();
|
|
||||||
|
|
||||||
e.prevent();
|
|
||||||
menu.close();
|
|
||||||
});
|
|
||||||
list.addItem(highlight_item);
|
|
||||||
|
|
||||||
add_link('fa-arrow-left', pht('Show Raw File (Left)'), data.leftURI);
|
|
||||||
add_link('fa-arrow-right', pht('Show Raw File (Right)'), data.rightURI);
|
|
||||||
add_link('fa-pencil', pht('Open in Editor'), data.editor, true);
|
|
||||||
add_link('fa-wrench', pht('Configure Editor'), data.editorConfigure);
|
|
||||||
|
|
||||||
menu.setContent(list.getNode());
|
|
||||||
|
|
||||||
menu.listen('open', function() {
|
|
||||||
// When the user opens the menu, check if there are any "Show More"
|
|
||||||
// links in the changeset body. If there aren't, disable the "Show
|
|
||||||
// Entire File" menu item since it won't change anything.
|
|
||||||
|
|
||||||
var nodes = JX.DOM.scry(JX.$(data.containerID), 'a', 'show-more');
|
|
||||||
if (nodes.length) {
|
|
||||||
reveal_item
|
|
||||||
.setDisabled(false)
|
|
||||||
.setName(pht('Show All Context'))
|
|
||||||
.setIcon('fa-file-o')
|
|
||||||
.setHandler(function(e) {
|
|
||||||
show_more(JX.$(data.containerID));
|
|
||||||
e.prevent();
|
|
||||||
menu.close();
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
reveal_item
|
|
||||||
.setDisabled(true)
|
|
||||||
.setIcon('fa-file')
|
|
||||||
.setName(pht('All Context Shown'))
|
|
||||||
.setHandler(function(e) { e.prevent(); });
|
|
||||||
}
|
|
||||||
|
|
||||||
encoding_item.setDisabled(!view.isLoaded());
|
|
||||||
highlight_item.setDisabled(!view.isLoaded());
|
|
||||||
|
|
||||||
if (view.isLoaded()) {
|
|
||||||
if (view.getRenderer() == '2up') {
|
|
||||||
up_item
|
|
||||||
.setIcon('fa-list-alt')
|
|
||||||
.setName(pht('View Unified'));
|
|
||||||
} else {
|
|
||||||
up_item
|
|
||||||
.setIcon('fa-files-o')
|
|
||||||
.setName(pht('View Side-by-Side'));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
up_item
|
|
||||||
.setIcon('fa-refresh')
|
|
||||||
.setName(pht('Load Changes'));
|
|
||||||
}
|
|
||||||
|
|
||||||
visible_item
|
|
||||||
.setDisabled(true)
|
|
||||||
.setIcon('fa-expand')
|
|
||||||
.setName(pht('Can\'t Toggle Unloaded File'));
|
|
||||||
var diffs = JX.DOM.scry(
|
|
||||||
JX.$(data.containerID),
|
|
||||||
'table',
|
|
||||||
'differential-diff');
|
|
||||||
|
|
||||||
if (diffs.length > 1) {
|
|
||||||
JX.$E(
|
|
||||||
'More than one node with sigil "differential-diff" was found in "'+
|
|
||||||
data.containerID+'."');
|
|
||||||
} else if (diffs.length == 1) {
|
|
||||||
var diff = diffs[0];
|
|
||||||
visible_item.setDisabled(false);
|
|
||||||
if (JX.Stratcom.getData(diff).hidden) {
|
|
||||||
visible_item
|
|
||||||
.setName(pht('Expand File'))
|
|
||||||
.setIcon('fa-expand');
|
|
||||||
} else {
|
|
||||||
visible_item
|
|
||||||
.setName(pht('Collapse File'))
|
|
||||||
.setIcon('fa-compress');
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
// Do nothing when there is no diff shown in the table. For example,
|
|
||||||
// the file is binary.
|
|
||||||
}
|
|
||||||
|
|
||||||
});
|
|
||||||
|
|
||||||
data.menu = menu;
|
|
||||||
menu.open();
|
|
||||||
};
|
|
||||||
|
|
||||||
JX.Stratcom.listen('click', 'differential-view-options', buildmenu);
|
|
||||||
});
|
|
|
@ -58,7 +58,8 @@ JX.behavior('differential-populate', function(config, statics) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
var changeset_list = new JX.DiffChangesetList();
|
var changeset_list = new JX.DiffChangesetList()
|
||||||
|
.setTranslations(JX.phtize(config.pht));
|
||||||
|
|
||||||
// Install and activate the current page.
|
// Install and activate the current page.
|
||||||
var page_id = JX.Quicksand.getCurrentPageID();
|
var page_id = JX.Quicksand.getCurrentPageID();
|
||||||
|
|
Loading…
Reference in a new issue