Fix binding for visible file number

File numbers were added to the diff view in c5069b1cd2, but would not
appear because the binding passed the file number whereas the visibility
method expected a file path. With this change, the method is rewritten
to accept the file number and a JSDoc comment is added to prevent the
type mismatch. The CSS is also modified to hide the element until the
dependent properties have evaluated.

Bug: Issue 4917
Change-Id: I7b880e65612e3b75e80b66dfd7a258608199c49b
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
index fd68d83..22433fc 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.html
@@ -124,10 +124,12 @@
       .editMode .hideOnEdit {
         display: none;
       }
-      .blameLoader {
+      .blameLoader,
+      .fileNum {
         display: none;
       }
       .blameLoader.show,
+      .fileNum.show ,
       .download,
       .preferences,
       .rightControls {
@@ -230,7 +232,7 @@
           </div>
         </h3>
         <div class="navLinks desktop">
-          <span class$="fileNum [[_computeFileNumVisible(_fileNum, _formattedFiles)]]">
+          <span class$="fileNum [[_computeFileNumClass(_fileNum, _formattedFiles)]]">
             File [[_fileNum]] of [[_formattedFiles.length]]
             <span class="separator"></span>
           </span>
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
index cd06174..5b85c20 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view.js
@@ -959,14 +959,16 @@
       return files.findIndex(({value}) => value === file) + 1;
     },
 
-    _computeFileNumVisible(file, files) {
-      if (!files) { return 'hidden'; }
-      const fileNum = this._computeFileNum(file, files);
-      if (!isNaN(fileNum) && isFinite(fileNum) && fileNum > 0) {
-        return '';
-      } else {
-        return 'hidden';
+    /**
+     * @param {number} fileNum
+     * @param {!Array<string>} files
+     * @return {string}
+     */
+    _computeFileNumClass(fileNum, files) {
+      if (files && fileNum > 0) {
+        return 'show';
       }
+      return '';
     },
   });
 })();
diff --git a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
index 6dff570..7c94a00 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff-view/gr-diff-view_test.html
@@ -988,10 +988,10 @@
           [{value: '/foo'}, {value: '/bar'}]), 2);
     });
 
-    test('_computeFileNumVisible', () => {
-      assert.equal(element._computeFileNumVisible('', []), 'hidden');
-      assert.equal(element._computeFileNumVisible('/bar',
-          [{value: '/foo'}, {value: '/bar'}]), '');
+    test('_computeFileNumClass', () => {
+      assert.equal(element._computeFileNumClass(0, []), '');
+      assert.equal(element._computeFileNumClass(1,
+          [{value: '/foo'}, {value: '/bar'}]), 'show');
     });
 
     suite('editMode behavior', () => {