1
0
Fork 0
mirror of https://we.phorge.it/source/phorge.git synced 2024-12-23 14:00:56 +01:00
phorge-phorge/webroot/rsrc/js/application/diffusion/behavior-locate-file.js
Benjamin Kausch 87db482897 Adds "Locate File" input to every browse directory view in Diffusion
Summary:
Ref T15645

The very helpful "Locate File" input in Diffusion was so far only visible in the homepage route of any repository (`/repository`).

With this revision you can now locate a file from every browsed directory and in any selected commit.

The finder was already "directory sensitive" meaning: if you are trying to locate a file from within a browsed directory, only the children of this path will be searched.

For the searching in a specified commit (for example: https://we.phorge.it/source/phorge/browse/master/src/;05f4d5071fdca02123bd1ff4c0935b847c7f9963), I had to do a little JS magic adding the commit to the URI on the client side.

Test Plan: Checkout, browse through your repos with Diffusion trying to find files. (I tested only with Git repos.)

Reviewers: O1 Blessed Committers, speck

Reviewed By: O1 Blessed Committers, speck

Subscribers: speck, tobiaswiese, valerio.bozzolan, Matthew, Cigaryno

Maniphest Tasks: T15645

Differential Revision: https://we.phorge.it/D25521
2024-01-28 12:51:35 +01:00

35 lines
885 B
JavaScript

/**
* @provides javelin-behavior-diffusion-locate-file
* @requires javelin-behavior
* javelin-diffusion-locate-file-source
* javelin-dom
* javelin-typeahead
* javelin-uri
*/
JX.behavior('diffusion-locate-file', function(config) {
var control = JX.$(config.controlID);
var input = JX.$(config.inputID);
var datasource = new JX.DiffusionLocateFileSource(config.uri);
var typeahead = new JX.Typeahead(control, input);
typeahead.setDatasource(datasource);
typeahead.listen('choose', function(r) {
var browseURI = config.browseBaseURI + r.ref;
if (config.symbolicCommit) {
browseURI += ';' + config.symbolicCommit;
}
JX.$U(browseURI).go();
});
var started = false;
JX.DOM.listen(input, 'click', null, function() {
if (!started) {
started = true;
typeahead.start();
}
});
});