Page MenuHomePhabricator

D8233.id19585.diff
No OneTemporary

D8233.id19585.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -7,14 +7,14 @@
return array(
'names' =>
array(
- 'core.pkg.css' => '044c2f0c',
- 'core.pkg.js' => '0dc59a05',
+ 'core.pkg.css' => '1ccefdc6',
+ 'core.pkg.js' => 'ee746639',
'darkconsole.pkg.js' => 'ca8671ce',
'differential.pkg.css' => '5a65a762',
'differential.pkg.js' => '322ea941',
'diffusion.pkg.css' => '3783278d',
'diffusion.pkg.js' => '7b51e80a',
- 'javelin.pkg.js' => '896bb02e',
+ 'javelin.pkg.js' => '80949312',
'maniphest.pkg.css' => 'f1887d71',
'maniphest.pkg.js' => '1e8f11af',
'rsrc/css/aphront/aphront-bars.css' => '231ac33c',
@@ -37,7 +37,7 @@
'rsrc/css/aphront/tooltip.css' => '9c90229d',
'rsrc/css/aphront/transaction.css' => 'ce491938',
'rsrc/css/aphront/two-column.css' => '16ab3ad2',
- 'rsrc/css/aphront/typeahead.css' => '104a6525',
+ 'rsrc/css/aphront/typeahead.css' => 'd24b4228',
'rsrc/css/application/auth/auth.css' => '1e655982',
'rsrc/css/application/base/main-menu-view.css' => 'd36e0c11',
'rsrc/css/application/base/notification-menu.css' => 'fc9a363c',
@@ -208,13 +208,13 @@
'rsrc/externals/javelin/lib/__tests__/URI.js' => 'ece3ddb3',
'rsrc/externals/javelin/lib/__tests__/behavior.js' => 'c1d75ee6',
'rsrc/externals/javelin/lib/behavior.js' => '8a3ed18b',
- 'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => 'e7c21fb3',
- 'rsrc/externals/javelin/lib/control/typeahead/Typeahead.js' => 'c22f4c01',
+ 'rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js' => '1c1a6cdf',
+ 'rsrc/externals/javelin/lib/control/typeahead/Typeahead.js' => '007e4bb2',
'rsrc/externals/javelin/lib/control/typeahead/normalizer/TypeaheadNormalizer.js' => '5f850b5c',
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadCompositeSource.js' => 'dbd9cd11',
- 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js' => '1f595fb0',
+ 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js' => '7383383f',
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadPreloadedSource.js' => 'e9b95df3',
- 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => 'f4412299',
+ 'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js' => '74fe50ac',
'rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadStaticSource.js' => 'c2b8bf64',
'rsrc/externals/raphael/g.raphael.js' => '40dde778',
'rsrc/externals/raphael/g.raphael.line.js' => '40da039e',
@@ -288,6 +288,7 @@
'rsrc/image/loading/loading_48.gif' => '6a4994c7',
'rsrc/image/loading/loading_d48.gif' => 'cdcbe900',
'rsrc/image/loading/loading_w24.gif' => '7662fa2b',
+ 'rsrc/image/loading/tokenizer_loading.gif' => '93622511',
'rsrc/image/main_texture.png' => '29a2c5ad',
'rsrc/image/menu_texture.png' => '5a17580d',
'rsrc/image/people/harding.png' => '45aa614e',
@@ -432,7 +433,7 @@
'rsrc/js/core/KeyboardShortcutManager.js' => 'ad7a69ca',
'rsrc/js/core/MultirowRowManager.js' => 'e7076916',
'rsrc/js/core/Notification.js' => '95944043',
- 'rsrc/js/core/Prefab.js' => '979f864d',
+ 'rsrc/js/core/Prefab.js' => '83ee580c',
'rsrc/js/core/ShapedRequest.js' => 'dfa181a4',
'rsrc/js/core/TextAreaUtils.js' => 'b3ec3cfc',
'rsrc/js/core/ToolTip.js' => '0a81ea29',
@@ -493,7 +494,7 @@
'aphront-tokenizer-control-css' => '08ea6326',
'aphront-tooltip-css' => '9c90229d',
'aphront-two-column-view-css' => '16ab3ad2',
- 'aphront-typeahead-control-css' => '104a6525',
+ 'aphront-typeahead-control-css' => 'd24b4228',
'auth-css' => '1e655982',
'config-options-css' => '7fedf08b',
'conpherence-menu-css' => '561348ac',
@@ -643,13 +644,13 @@
'javelin-request' => '23f9bb8d',
'javelin-resource' => '356de121',
'javelin-stratcom' => 'c293f7b9',
- 'javelin-tokenizer' => 'e7c21fb3',
- 'javelin-typeahead' => 'c22f4c01',
+ 'javelin-tokenizer' => '1c1a6cdf',
+ 'javelin-typeahead' => '007e4bb2',
'javelin-typeahead-composite-source' => 'dbd9cd11',
'javelin-typeahead-normalizer' => '5f850b5c',
- 'javelin-typeahead-ondemand-source' => '1f595fb0',
+ 'javelin-typeahead-ondemand-source' => '7383383f',
'javelin-typeahead-preloaded-source' => 'e9b95df3',
- 'javelin-typeahead-source' => 'f4412299',
+ 'javelin-typeahead-source' => '74fe50ac',
'javelin-typeahead-static-source' => 'c2b8bf64',
'javelin-uri' => 'd9a9b862',
'javelin-util' => '7501647b',
@@ -703,7 +704,7 @@
'phabricator-object-list-view-css' => '1a1ea560',
'phabricator-object-selector-css' => '029a133d',
'phabricator-phtize' => 'd254d646',
- 'phabricator-prefab' => '979f864d',
+ 'phabricator-prefab' => '83ee580c',
'phabricator-profile-css' => '3a7e04ca',
'phabricator-project-tag-css' => '095c9404',
'phabricator-remarkup-css' => 'ca7f2265',
@@ -800,6 +801,13 @@
),
'requires' =>
array(
+ '007e4bb2' =>
+ array(
+ 0 => 'javelin-install',
+ 1 => 'javelin-dom',
+ 2 => 'javelin-vector',
+ 3 => 'javelin-util',
+ ),
'029a133d' =>
array(
0 => 'aphront-dialog-view-css',
@@ -911,6 +919,13 @@
4 => 'javelin-workflow',
5 => 'phabricator-draggable-list',
),
+ '1c1a6cdf' =>
+ array(
+ 0 => 'javelin-dom',
+ 1 => 'javelin-util',
+ 2 => 'javelin-stratcom',
+ 3 => 'javelin-install',
+ ),
'1e1c8a59' =>
array(
0 => 'javelin-behavior',
@@ -930,13 +945,6 @@
5 => 'phabricator-drag-and-drop-file-upload',
6 => 'phabricator-draggable-list',
),
- '1f595fb0' =>
- array(
- 0 => 'javelin-install',
- 1 => 'javelin-util',
- 2 => 'javelin-request',
- 3 => 'javelin-typeahead-source',
- ),
'2290aeef' =>
array(
0 => 'javelin-install',
@@ -1228,6 +1236,20 @@
0 => 'javelin-behavior',
1 => 'javelin-dom',
),
+ '7383383f' =>
+ array(
+ 0 => 'javelin-install',
+ 1 => 'javelin-util',
+ 2 => 'javelin-request',
+ 3 => 'javelin-typeahead-source',
+ ),
+ '74fe50ac' =>
+ array(
+ 0 => 'javelin-install',
+ 1 => 'javelin-util',
+ 2 => 'javelin-dom',
+ 3 => 'javelin-typeahead-normalizer',
+ ),
'75e50c72' =>
array(
0 => 'javelin-behavior',
@@ -1295,6 +1317,19 @@
1 => 'javelin-dom',
2 => 'javelin-reactor-dom',
),
+ '83ee580c' =>
+ array(
+ 0 => 'javelin-install',
+ 1 => 'javelin-util',
+ 2 => 'javelin-dom',
+ 3 => 'javelin-typeahead',
+ 4 => 'javelin-tokenizer',
+ 5 => 'javelin-typeahead-preloaded-source',
+ 6 => 'javelin-typeahead-ondemand-source',
+ 7 => 'javelin-dom',
+ 8 => 'javelin-stratcom',
+ 9 => 'javelin-util',
+ ),
'8454ce4f' =>
array(
0 => 'javelin-behavior',
@@ -1400,19 +1435,6 @@
2 => 'javelin-view-visitor',
3 => 'javelin-util',
),
- '979f864d' =>
- array(
- 0 => 'javelin-install',
- 1 => 'javelin-util',
- 2 => 'javelin-dom',
- 3 => 'javelin-typeahead',
- 4 => 'javelin-tokenizer',
- 5 => 'javelin-typeahead-preloaded-source',
- 6 => 'javelin-typeahead-ondemand-source',
- 7 => 'javelin-dom',
- 8 => 'javelin-stratcom',
- 9 => 'javelin-util',
- ),
'9b9197be' =>
array(
0 => 'javelin-behavior',
@@ -1606,13 +1628,6 @@
5 => 'javelin-workflow',
6 => 'javelin-vector',
),
- 'c22f4c01' =>
- array(
- 0 => 'javelin-install',
- 1 => 'javelin-dom',
- 2 => 'javelin-vector',
- 3 => 'javelin-util',
- ),
'c293f7b9' =>
array(
0 => 'javelin-install',
@@ -1817,13 +1832,6 @@
2 => 'javelin-dom',
3 => 'javelin-util',
),
- 'e7c21fb3' =>
- array(
- 0 => 'javelin-dom',
- 1 => 'javelin-util',
- 2 => 'javelin-stratcom',
- 3 => 'javelin-install',
- ),
'e9b95df3' =>
array(
0 => 'javelin-install',
@@ -1876,13 +1884,6 @@
2 => 'javelin-vector',
3 => 'javelin-dom',
),
- 'f4412299' =>
- array(
- 0 => 'javelin-install',
- 1 => 'javelin-util',
- 2 => 'javelin-dom',
- 3 => 'javelin-typeahead-normalizer',
- ),
'f6b56f7a' =>
array(
0 => 'javelin-behavior',
diff --git a/webroot/rsrc/css/aphront/typeahead.css b/webroot/rsrc/css/aphront/typeahead.css
--- a/webroot/rsrc/css/aphront/typeahead.css
+++ b/webroot/rsrc/css/aphront/typeahead.css
@@ -47,3 +47,21 @@
input.jx-typeahead-placeholder {
color: {$lightgreytext};
}
+
+.jx-typeahead-waiting-indicator {
+ position: absolute;
+ right: 8px;
+ top: 2px;
+ width: 24px;
+ height: 24px;
+ background-image: url(/rsrc/image/loading/tokenizer_loading.gif);
+ display: none;
+}
+
+.jx-typeahead-waiting .jx-typeahead-waiting-indicator {
+ display: inline-block;
+}
+
+div.jx-tokenizer-container-focused.jx-typeahead-waiting {
+ border-color: {$lightblueborder};
+}
diff --git a/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js b/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js
--- a/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js
+++ b/webroot/rsrc/externals/javelin/lib/control/tokenizer/Tokenizer.js
@@ -36,6 +36,7 @@
JX.install('Tokenizer', {
construct : function(containerNode) {
this._containerNode = containerNode;
+ this._uiNodes = [];
},
events : [
@@ -63,6 +64,7 @@
_seq : 0,
_lastvalue : null,
_placeholder : null,
+ _uinodes : null,
start : function() {
if (__DEV__) {
@@ -124,6 +126,7 @@
this._root = root;
root.appendChild(focus);
+ JX.DOM.appendContent(root, this._uiNodes);
var typeahead = this._typeahead;
typeahead.setInputNode(this._focus);
@@ -232,6 +235,12 @@
return this;
},
+ addUINode : function(node) {
+ this._uiNodes.push(node);
+ this._typeahead.addUINode(node);
+ return this;
+ },
+
_redraw : function(force) {
// If there are tokens in the tokenizer, never show a placeholder.
diff --git a/webroot/rsrc/externals/javelin/lib/control/typeahead/Typeahead.js b/webroot/rsrc/externals/javelin/lib/control/typeahead/Typeahead.js
--- a/webroot/rsrc/externals/javelin/lib/control/typeahead/Typeahead.js
+++ b/webroot/rsrc/externals/javelin/lib/control/typeahead/Typeahead.js
@@ -124,6 +124,7 @@
_datasource : null,
_waitingListener : null,
_readyListener : null,
+ _completeListener : null,
/**
* Activate your properly configured typeahead. It won't do anything until
@@ -160,15 +161,20 @@
this._datasource.unbindFromTypeahead();
this._waitingListener.remove();
this._readyListener.remove();
+ this._completeListener.remove();
}
this._waitingListener = datasource.listen(
'waiting',
- JX.bind(this, this.waitForResults)
- );
+ JX.bind(this, this.waitForResults));
+
this._readyListener = datasource.listen(
'resultsready',
- JX.bind(this, this.showResults)
- );
+ JX.bind(this, this.showResults));
+
+ this._completeListener = datasource.listen(
+ 'complete',
+ JX.bind(this, this.doneWaitingForResults));
+
datasource.bindToTypeahead(this);
this._datasource = datasource;
},
@@ -190,6 +196,20 @@
return this;
},
+ /**
+ * Add an arbitrary node to the UI. Phabricator uses this to add a
+ * "waiting" graphic.
+ *
+ * @param node An arbitrary display node for the UI.
+ * @return this
+ * @task config
+ */
+ addUINode : function(node) {
+ JX.log('adding~~');
+ JX.DOM.appendContent(this._hardpoint, node);
+ return this;
+ },
+
/**
* Hide the typeahead's dropdown suggestion menu.
@@ -247,18 +267,27 @@
this._value = this._control.value;
this.invoke('change', this._value);
},
+
/**
- * Show a "waiting for results" UI in place of the typeahead's dropdown
- * suggestion menu. NOTE: currently there's no such UI, lolol.
+ * Show a "waiting for results" UI. We may be showing a partial result set
+ * at this time, if the user is extending a query we already have results
+ * for.
*
* @task control
* @return void
*/
waitForResults : function() {
- // TODO: Build some sort of fancy spinner or "..." type UI here to
- // visually indicate that we're waiting on the server.
- // Wait on the datasource 'complete' event for hiding the spinner.
- this.hide();
+ JX.DOM.alterClass(this._hardpoint, 'jx-typeahead-waiting', true);
+ },
+
+ /**
+ * Hide the "waiting for results" UI.
+ *
+ * @task control
+ * @return void
+ */
+ doneWaitingForResults : function() {
+ JX.DOM.alterClass(this._hardpoint, 'jx-typeahead-waiting', false);
},
/**
diff --git a/webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js b/webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js
--- a/webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js
+++ b/webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadOnDemandSource.js
@@ -48,6 +48,19 @@
if (this.haveData[value]) {
this.matchResults(value);
} else {
+ // If we have data for any prefix of the query, send those results
+ // back immediately. This allows "alinc" -> "alinco" to show partial
+ // results without the UI flickering. We'll still show the loading
+ // state, and then can show better results once we get everything
+ // back.
+ for (var ii = value.length - 1; ii > 0; ii--) {
+ var substr = value.substring(0, ii);
+ if (this.haveData[substr]) {
+ this.matchResults(value, false);
+ break;
+ }
+ }
+
this.waitForResults();
setTimeout(
JX.bind(this, this.sendRequest, this.lastChange, value, raw_value),
diff --git a/webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js b/webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js
--- a/webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js
+++ b/webroot/rsrc/externals/javelin/lib/control/typeahead/source/TypeaheadSource.js
@@ -211,7 +211,7 @@
},
- matchResults : function(value) {
+ matchResults : function(value, partial) {
// This table keeps track of the number of tokens each potential match
// has actually matched. When we're done, the real matches are those
@@ -279,7 +279,9 @@
var nodes = this.renderNodes(value, hits);
this.invoke('resultsready', nodes);
- this.invoke('complete');
+ if (!partial) {
+ this.invoke('complete');
+ }
},
sortHits : function(value, hits) {
diff --git a/webroot/rsrc/image/loading/tokenizer_loading.gif b/webroot/rsrc/image/loading/tokenizer_loading.gif
new file mode 100644
index 0000000000000000000000000000000000000000..7ac990cf04f2323f9723518bfd72ce102222cefa
GIT binary patch
literal 2545
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
F_HPt1AiMwo
literal 0
Hc$@<O00001
diff --git a/webroot/rsrc/js/core/Prefab.js b/webroot/rsrc/js/core/Prefab.js
--- a/webroot/rsrc/js/core/Prefab.js
+++ b/webroot/rsrc/js/core/Prefab.js
@@ -222,6 +222,12 @@
tokenizer.setInitialValue(config.value);
}
+ tokenizer.addUINode(
+ JX.$N(
+ 'span',
+ {className: 'jx-typeahead-waiting-indicator'},
+ null));
+
JX.Stratcom.addData(root, {'tokenizer' : tokenizer});
return {

File Metadata

Mime Type
text/plain
Expires
Mon, May 13, 3:42 AM (3 w, 4 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6292190
Default Alt Text
D8233.id19585.diff (18 KB)

Event Timeline