[results feed] Add anchors for each commit, allowing deep linking.

Each commit or blamelist shown in the results feed now has an
id attribute which can be the target of a fragment identifier in
the URL. For single commits it is the commit hash, for larger
blamelists is the the last commit hash followed by the length of
the blamelist, in parentheses.

Change-Id: Ice1aa919ae180f457a211a5a31fbd8622183cfee
Reviewed-on: https://dart-review.googlesource.com/c/dart_ci/+/128593
Reviewed-by: Alexander Thomas <athom@google.com>
diff --git a/results_feed/lib/src/components/commit_component.css b/results_feed/lib/src/components/commit_component.css
index 2177799..3785e66 100644
--- a/results_feed/lib/src/components/commit_component.css
+++ b/results_feed/lib/src/components/commit_component.css
@@ -7,6 +7,12 @@
 material-button {text-align: center; clear: both; }
 material-input { width: 80% }
 
+.anchor {
+  display: block;
+  height: 64px;
+  margin-top: -64px;
+  visibility: hidden;
+}
 .commit { margin: 12px; background-color: white; box-shadow: 8px 8px 5px lightgray; }
 .commit-panel { margin: 8px; }
 @media screen and (min-width: 992px) {
diff --git a/results_feed/lib/src/components/commit_component.html b/results_feed/lib/src/components/commit_component.html
index d7362af..3000158 100644
--- a/results_feed/lib/src/components/commit_component.html
+++ b/results_feed/lib/src/components/commit_component.html
@@ -1,3 +1,7 @@
+<span
+    class="anchor"
+    *ngIf="changeGroup.commits.length == 1"
+    [id]="changeGroup.commits.first.hash"></span>
 <div class="commit" *ngIf="changeGroup.show(filter)">
   <div *ngIf="!chooseCommit && !approving">
     <blamelist-panel
diff --git a/results_feed/web/main.dart b/results_feed/web/main.dart
index bceb6d7..9329437 100644
--- a/results_feed/web/main.dart
+++ b/results_feed/web/main.dart
@@ -10,7 +10,7 @@
 import 'main.template.dart' as self;
 
 // Local testing use
-/// @GenerateInjector([ClassProvider(FirestoreService, useClass: TestingFirestoreService), ...routerProvidersHash])
+// @GenerateInjector([ClassProvider(FirestoreService, useClass: TestingFirestoreService), ...routerProvidersHash])
 // Use for deploying on staging website:
 // @GenerateInjector([ClassProvider(FirestoreService, useClass: StagingFirestoreService), ...routerProviders])