This is an automated email from the ASF dual-hosted git repository.

zky pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/incubator-devlake.git


The following commit(s) were added to refs/heads/main by this push:
     new 857cb99fc feat(dashboard): add links for panel (#6755)
857cb99fc is described below

commit 857cb99fc496f6c1c21bc3aad40a0d9ad3921bd2
Author: Lynwee <[email protected]>
AuthorDate: Tue Jan 16 21:27:05 2024 +0800

    feat(dashboard): add links for panel (#6755)
    
    * feat(dashboard): add links for panel
    
    * feat(dashboard): add links
    
    * fix(dashboard): remove some panels' links
    
    * fix(dashboard): fix links
    
    * fix(dashboard): remove links in DORA relation dashboards
    
    * fix(dashboard): remove some links
    
    * fix(dashboard): fix links
---
 grafana/dashboards/AzureDevOps.json                | 120 ++++++++++++-
 grafana/dashboards/Bamboo.json                     |  64 ++++++-
 grafana/dashboards/BitBucket.json                  |  70 ++++++++
 grafana/dashboards/CircleCI.json                   |  64 ++++++-
 .../dashboards/ComponentAndFileLevelMetrics.json   |   9 +
 grafana/dashboards/ContributorExperience.json      |  15 ++
 grafana/dashboards/DORA.json                       |  10 ++
 grafana/dashboards/DORAByTeam.json                 |  10 ++
 grafana/dashboards/DORADebug.json                  |  31 ++++
 grafana/dashboards/EngineeringOverview.json        |  79 +++++++++
 .../EngineeringThroughputAndCycleTime.json         |  87 +++++++++-
 .../EngineeringThroughputAndCycleTimeTeamView.json | 127 ++++++++++++++
 grafana/dashboards/GitHub.json                     | 185 ++++++++++++++++++++-
 ...ithubReleaseQualityAndContributionAnalysis.json |  60 +++++++
 grafana/dashboards/Gitlab.json                     |  84 ++++++++++
 grafana/dashboards/Jenkins.json                    |  64 ++++++-
 grafana/dashboards/Jira.json                       |  71 +++++++-
 grafana/dashboards/Opsgenie.json                   |  87 +++++++++-
 grafana/dashboards/PagerDuty.json                  |  71 +++++++-
 grafana/dashboards/Sonarqube.json                  |  77 +++++++++
 grafana/dashboards/TAPD.json                       |  71 +++++++-
 grafana/dashboards/Teambition.json                 |  71 +++++++-
 grafana/dashboards/WeeklyBugRetro.json             | 106 ++++++++++++
 grafana/dashboards/WeeklyCommunityRetro.json       | 134 +++++++++++++++
 grafana/dashboards/Zentao.json                     |  71 +++++++-
 25 files changed, 1825 insertions(+), 13 deletions(-)

diff --git a/grafana/dashboards/AzureDevOps.json 
b/grafana/dashboards/AzureDevOps.json
index 207b3013e..029f4e1d7 100644
--- a/grafana/dashboards/AzureDevOps.json
+++ b/grafana/dashboards/AzureDevOps.json
@@ -34,6 +34,13 @@
         "y": 0
       },
       "id": 101,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Azure DevOps",
+          "url": "https://devlake.apache.org/docs/Plugins/azuredevops";
+        }
+      ],
       "options": {
         "code": {
           "language": "plaintext",
@@ -115,6 +122,13 @@
         "y": 4
       },
       "id": 68,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -219,6 +233,13 @@
         "y": 4
       },
       "id": 77,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -351,6 +372,13 @@
         "y": 10
       },
       "id": 59,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -470,6 +498,13 @@
         "y": 17
       },
       "id": 66,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -577,6 +612,13 @@
         "y": 17
       },
       "id": 79,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -659,6 +701,13 @@
         "y": 23
       },
       "id": 80,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -772,6 +821,13 @@
         "y": 23
       },
       "id": 81,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -854,6 +910,13 @@
         "y": 29
       },
       "id": 72,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -958,6 +1021,13 @@
         "y": 29
       },
       "id": 95,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1090,6 +1160,13 @@
         "y": 38
       },
       "id": 103,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1186,6 +1263,13 @@
         "y": 38
       },
       "id": 104,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Success Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildSuccessRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1353,7 +1437,13 @@
         "y": 38
       },
       "id": 105,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "displayLabels": [
           "value",
@@ -1463,6 +1553,13 @@
         "y": 38
       },
       "id": 106,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Duration",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildDuration";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1582,6 +1679,13 @@
         "y": 44
       },
       "id": 107,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1731,6 +1835,13 @@
       },
       "id": 108,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Success Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildSuccessRate";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1879,6 +1990,13 @@
         "y": 50
       },
       "id": 109,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Duration",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildDuration";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
diff --git a/grafana/dashboards/Bamboo.json b/grafana/dashboards/Bamboo.json
index 3235540f1..5993bffe0 100644
--- a/grafana/dashboards/Bamboo.json
+++ b/grafana/dashboards/Bamboo.json
@@ -34,6 +34,13 @@
         "y": 0
       },
       "id": 58,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bamboo",
+          "url": "https://devlake.apache.org/docs/Plugins/bamboo";
+        }
+      ],
       "options": {
         "code": {
           "language": "plaintext",
@@ -82,6 +89,13 @@
         "y": 3
       },
       "id": 4,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -178,6 +192,13 @@
         "y": 3
       },
       "id": 6,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Success Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildSuccessRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -345,7 +366,13 @@
         "y": 3
       },
       "id": 37,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "displayLabels": [
           "value",
@@ -455,6 +482,13 @@
         "y": 3
       },
       "id": 55,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Duration",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildDuration";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -574,6 +608,13 @@
         "y": 9
       },
       "id": 52,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -723,6 +764,13 @@
       },
       "id": 50,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Success Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildSuccessRate";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -877,6 +925,13 @@
         "y": 15
       },
       "id": 54,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -996,6 +1051,13 @@
         "y": 21
       },
       "id": 56,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Duration",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildDuration";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
diff --git a/grafana/dashboards/BitBucket.json 
b/grafana/dashboards/BitBucket.json
index 77ca6fda8..265548726 100644
--- a/grafana/dashboards/BitBucket.json
+++ b/grafana/dashboards/BitBucket.json
@@ -28,6 +28,13 @@
         "y": 0
       },
       "id": 101,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "BitBucket Cloud",
+          "url": "https://devlake.apache.org/docs/Plugins/bitbucket";
+        }
+      ],
       "options": {
         "content": "- Use Cases: This dashboard shows the basic Git and Code 
Review metrics from BitBucket.\n- Data Source Required: BitBucket",
         "mode": "markdown"
@@ -88,6 +95,13 @@
         "y": 4
       },
       "id": 68,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -183,6 +197,13 @@
         "y": 4
       },
       "id": 77,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
@@ -281,6 +302,13 @@
         "y": 10
       },
       "id": 59,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
@@ -380,6 +408,13 @@
         "y": 17
       },
       "id": 66,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -484,6 +519,13 @@
         "y": 17
       },
       "id": 79,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -563,6 +605,13 @@
         "y": 23
       },
       "id": 80,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -673,6 +722,13 @@
         "y": 23
       },
       "id": 81,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -752,6 +808,13 @@
         "y": 29
       },
       "id": 72,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -847,6 +910,13 @@
         "y": 29
       },
       "id": 95,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
diff --git a/grafana/dashboards/CircleCI.json b/grafana/dashboards/CircleCI.json
index a928ee1f1..07203eb46 100644
--- a/grafana/dashboards/CircleCI.json
+++ b/grafana/dashboards/CircleCI.json
@@ -28,6 +28,13 @@
         "y": 0
       },
       "id": 58,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "CircleCI",
+          "url": "https://devlake.apache.org/docs/Plugins/circleci";
+        }
+      ],
       "options": {
         "content": "- Use Cases: This dashboard shows the basic CI/CD metrics 
from CircleCI, such as [Build 
Count](https://devlake.apache.org/docs/Metrics/BuildCount), [Build 
Duration](https://devlake.apache.org/docs/Metrics/BuildDuration) and [Build 
Success Rate](https://devlake.apache.org/docs/Metrics/BuildSuccessRate).\n- 
Data Source Required: CircleCI",
         "mode": "markdown"
@@ -67,6 +74,13 @@
         "y": 3
       },
       "id": 4,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -146,6 +160,13 @@
         "y": 3
       },
       "id": 6,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Success Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildSuccessRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -298,7 +319,13 @@
       },
       "id": 37,
       "interval": null,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "displayLabels": [
           "value",
@@ -389,6 +416,13 @@
         "y": 3
       },
       "id": 55,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Duration",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildDuration";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -483,6 +517,13 @@
         "y": 9
       },
       "id": 52,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
@@ -598,6 +639,13 @@
       },
       "id": 50,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Success Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildSuccessRate";
+        }
+      ],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
@@ -744,6 +792,13 @@
         "y": 15
       },
       "id": 54,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -852,6 +907,13 @@
         "y": 21
       },
       "id": 56,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Duration",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildDuration";
+        }
+      ],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
diff --git a/grafana/dashboards/ComponentAndFileLevelMetrics.json 
b/grafana/dashboards/ComponentAndFileLevelMetrics.json
index 0ce033689..b12c02553 100644
--- a/grafana/dashboards/ComponentAndFileLevelMetrics.json
+++ b/grafana/dashboards/ComponentAndFileLevelMetrics.json
@@ -78,6 +78,7 @@
         "y": 1
       },
       "id": 12,
+      "links": [],
       "options": {
         "barWidth": 0.78,
         "groupWidth": 0.7,
@@ -157,6 +158,7 @@
         "y": 1
       },
       "id": 2,
+      "links": [],
       "options": {
         "showHeader": true
       },
@@ -240,6 +242,7 @@
         "y": 9
       },
       "id": 10,
+      "links": [],
       "options": {
         "barWidth": 0.8,
         "groupWidth": 0.7,
@@ -334,6 +337,7 @@
         "y": 9
       },
       "id": 8,
+      "links": [],
       "options": {
         "barWidth": 0.79,
         "groupWidth": 0.7,
@@ -443,6 +447,7 @@
         "y": 18
       },
       "id": 16,
+      "links": [],
       "options": {
         "barWidth": 0.79,
         "groupWidth": 0.7,
@@ -538,6 +543,7 @@
         "y": 18
       },
       "id": 4,
+      "links": [],
       "options": {
         "barWidth": 0.55,
         "groupWidth": 0.7,
@@ -648,6 +654,7 @@
         "y": 27
       },
       "id": 22,
+      "links": [],
       "options": {
         "barWidth": 0.97,
         "groupWidth": 0.7,
@@ -858,6 +865,7 @@
         "y": 36
       },
       "id": 28,
+      "links": [],
       "options": {
         "barWidth": 0.97,
         "groupWidth": 0.7,
@@ -943,6 +951,7 @@
         "y": 36
       },
       "id": 30,
+      "links": [],
       "options": {
         "showHeader": true
       },
diff --git a/grafana/dashboards/ContributorExperience.json 
b/grafana/dashboards/ContributorExperience.json
index 8e99f5006..70edb4836 100644
--- a/grafana/dashboards/ContributorExperience.json
+++ b/grafana/dashboards/ContributorExperience.json
@@ -28,6 +28,7 @@
         "y": 0
       },
       "id": 24,
+      "links": [],
       "options": {
         "content": "- Use Cases: This dashboard answers the question \"What 
makes a great developer experience? And how can we define and track that?\". 
This dashboard heavily focuses on actionability. All metrics can be 
deterministically improved as long as OSS maintainers invested time into 
them.\n- Data Source Required: GitHub",
         "mode": "markdown"
@@ -74,6 +75,7 @@
         "y": 4
       },
       "id": 8,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -158,6 +160,7 @@
         "y": 4
       },
       "id": 4,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -240,6 +243,7 @@
         "y": 4
       },
       "id": 12,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -321,6 +325,7 @@
         "y": 4
       },
       "id": 10,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -403,6 +408,7 @@
         "y": 12
       },
       "id": 16,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -485,6 +491,7 @@
         "y": 12
       },
       "id": 14,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -567,6 +574,7 @@
         "y": 12
       },
       "id": 18,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -649,6 +657,13 @@
         "y": 12
       },
       "id": 20,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
diff --git a/grafana/dashboards/DORA.json b/grafana/dashboards/DORA.json
index 46b35c216..9f341b9f3 100644
--- a/grafana/dashboards/DORA.json
+++ b/grafana/dashboards/DORA.json
@@ -28,6 +28,7 @@
         "y": 0
       },
       "id": 16,
+      "links": [],
       "options": {
         "content": "- See [how to 
config](https://devlake.apache.org/docs/DORA) this dashboard\n- Data Sources 
Required: \n  - `Deployments` from Jenkins, GitLab CI, GitHub Action, webhook, 
etc. \n  - `Pull Requests` from GitHub PRs, GitLab MRs, BitBucket PRs, Azure 
DevOps PRs, etc.\n  - `Incidents` from Jira issues, GitHub issues, TAPD issues, 
PagerDuty Incidents, etc. \n- Transformation Required: Define `deployments` and 
`incidents` in [data transformations](https://devlake.apache.org/ [...]
         "mode": "markdown"
@@ -154,6 +155,7 @@
         "y": 6
       },
       "id": 8,
+      "links": [],
       "options": {
         "showHeader": true,
         "sortBy": []
@@ -242,6 +244,7 @@
         "y": 12
       },
       "id": 11,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -341,6 +344,7 @@
         "y": 12
       },
       "id": 12,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -444,6 +448,7 @@
         "y": 12
       },
       "id": 13,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -543,6 +548,7 @@
         "y": 12
       },
       "id": 14,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -637,6 +643,7 @@
         "y": 17
       },
       "id": 2,
+      "links": [],
       "options": {
         "barWidth": 0.6,
         "groupWidth": 0.7,
@@ -727,6 +734,7 @@
         "y": 17
       },
       "id": 6,
+      "links": [],
       "options": {
         "barWidth": 0.7,
         "groupWidth": 0.7,
@@ -841,6 +849,7 @@
         "y": 25
       },
       "id": 9,
+      "links": [],
       "options": {
         "barWidth": 0.6,
         "groupWidth": 0.7,
@@ -953,6 +962,7 @@
         "y": 25
       },
       "id": 5,
+      "links": [],
       "options": {
         "barWidth": 0.6,
         "groupWidth": 0.7,
diff --git a/grafana/dashboards/DORAByTeam.json 
b/grafana/dashboards/DORAByTeam.json
index 88a200188..708a7b4ec 100644
--- a/grafana/dashboards/DORAByTeam.json
+++ b/grafana/dashboards/DORAByTeam.json
@@ -40,6 +40,7 @@
         "y": 0
       },
       "id": 16,
+      "links": [],
       "options": {
         "code": {
           "language": "plaintext",
@@ -185,6 +186,7 @@
         "y": 6
       },
       "id": 8,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -279,6 +281,7 @@
         "y": 12
       },
       "id": 11,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -397,6 +400,7 @@
         "y": 12
       },
       "id": 12,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -497,6 +501,7 @@
         "y": 12
       },
       "id": 13,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -593,6 +598,7 @@
         "y": 12
       },
       "id": 14,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -692,6 +698,7 @@
         "y": 17
       },
       "id": 2,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.6,
@@ -794,6 +801,7 @@
         "y": 17
       },
       "id": 6,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.7,
@@ -918,6 +926,7 @@
         "y": 25
       },
       "id": 9,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.6,
@@ -1040,6 +1049,7 @@
         "y": 25
       },
       "id": 5,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.6,
diff --git a/grafana/dashboards/DORADebug.json 
b/grafana/dashboards/DORADebug.json
index eff26c0c1..b27f13e57 100644
--- a/grafana/dashboards/DORADebug.json
+++ b/grafana/dashboards/DORADebug.json
@@ -34,6 +34,7 @@
         "y": 0
       },
       "id": 63,
+      "links": [],
       "options": {
         "code": {
           "language": "plaintext",
@@ -176,6 +177,7 @@
         "y": 6
       },
       "id": 16,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -274,6 +276,7 @@
         "y": 6
       },
       "id": 15,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -384,6 +387,7 @@
         "y": 11
       },
       "id": 29,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -485,6 +489,7 @@
         "y": 15
       },
       "id": 34,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.6,
@@ -609,6 +614,7 @@
         "y": 16
       },
       "id": 49,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -726,6 +732,7 @@
         "y": 21
       },
       "id": 11,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -843,6 +850,7 @@
         "y": 21
       },
       "id": 50,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -989,6 +997,7 @@
         "y": 34
       },
       "id": 18,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1086,6 +1095,7 @@
         "y": 34
       },
       "id": 40,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1242,6 +1252,7 @@
         "y": 39
       },
       "id": 53,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1339,6 +1350,7 @@
         "y": 40
       },
       "id": 38,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.7,
@@ -1437,6 +1449,7 @@
         "y": 42
       },
       "id": 12,
+      "links": [],
       "options": {
         "orientation": "auto",
         "reduceOptions": {
@@ -1575,6 +1588,7 @@
         "y": 46
       },
       "id": 68,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1735,6 +1749,7 @@
         "y": 47
       },
       "id": 51,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1834,6 +1849,7 @@
         "y": 50
       },
       "id": 69,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1914,6 +1930,7 @@
         "y": 54
       },
       "id": 52,
+      "links": [],
       "options": {
         "orientation": "auto",
         "reduceOptions": {
@@ -2020,6 +2037,7 @@
         "y": 54
       },
       "id": 54,
+      "links": [],
       "options": {
         "orientation": "auto",
         "reduceOptions": {
@@ -2126,6 +2144,7 @@
         "y": 58
       },
       "id": 55,
+      "links": [],
       "options": {
         "orientation": "auto",
         "reduceOptions": {
@@ -2232,6 +2251,7 @@
         "y": 58
       },
       "id": 56,
+      "links": [],
       "options": {
         "orientation": "auto",
         "reduceOptions": {
@@ -2338,6 +2358,7 @@
         "y": 62
       },
       "id": 57,
+      "links": [],
       "options": {
         "orientation": "auto",
         "reduceOptions": {
@@ -2476,6 +2497,7 @@
         "y": 66
       },
       "id": 70,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -2668,6 +2690,7 @@
         "y": 83
       },
       "id": 31,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -2770,6 +2793,7 @@
         "y": 83
       },
       "id": 42,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -2871,6 +2895,7 @@
         "y": 89
       },
       "id": 14,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -2932,6 +2957,7 @@
         "y": 93
       },
       "id": 61,
+      "links": [],
       "options": {
         "code": {
           "language": "plaintext",
@@ -3025,6 +3051,7 @@
         "y": 93
       },
       "id": 46,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.6,
@@ -3132,6 +3159,7 @@
         "y": 103
       },
       "id": 44,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -3234,6 +3262,7 @@
         "y": 108
       },
       "id": 58,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -3334,6 +3363,7 @@
         "y": 108
       },
       "id": 59,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -3469,6 +3499,7 @@
         "y": 111
       },
       "id": 48,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.6,
diff --git a/grafana/dashboards/EngineeringOverview.json 
b/grafana/dashboards/EngineeringOverview.json
index 34ce98568..b03fefb20 100644
--- a/grafana/dashboards/EngineeringOverview.json
+++ b/grafana/dashboards/EngineeringOverview.json
@@ -34,6 +34,7 @@
         "y": 0
       },
       "id": 32,
+      "links": [],
       "options": {
         "code": {
           "language": "plaintext",
@@ -92,6 +93,7 @@
         "y": 3
       },
       "id": 8,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -195,6 +197,7 @@
         "y": 3
       },
       "id": 22,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.46,
@@ -285,6 +288,13 @@
         "y": 11
       },
       "id": 10,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Lead Time",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementLeadTime";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -390,6 +400,13 @@
       },
       "id": 23,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Lead Time",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementLeadTime";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -484,6 +501,7 @@
         "y": 17
       },
       "id": 14,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -587,6 +605,7 @@
         "y": 17
       },
       "id": 24,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -684,6 +703,13 @@
         "y": 25
       },
       "id": 6,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -798,6 +824,13 @@
         "y": 25
       },
       "id": 25,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [],
@@ -878,6 +911,13 @@
         "y": 33
       },
       "id": 4,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -982,6 +1022,13 @@
         "y": 33
       },
       "id": 26,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1078,6 +1125,13 @@
         "y": 41
       },
       "id": 16,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1191,6 +1245,13 @@
         "y": 41
       },
       "id": 28,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [],
@@ -1271,6 +1332,7 @@
         "y": 49
       },
       "id": 12,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1384,6 +1446,7 @@
         "y": 49
       },
       "id": 29,
+      "links": [],
       "options": {
         "legend": {
           "calcs": [],
@@ -1466,6 +1529,13 @@
         "y": 57
       },
       "id": 2,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1581,6 +1651,13 @@
         "y": 57
       },
       "id": 30,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [],
@@ -1700,6 +1777,7 @@
         "y": 65
       },
       "id": 20,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.27,
@@ -1784,6 +1862,7 @@
         "y": 65
       },
       "id": 21,
+      "links": [],
       "options": {
         "displayLabels": [
           "name",
diff --git a/grafana/dashboards/EngineeringThroughputAndCycleTime.json 
b/grafana/dashboards/EngineeringThroughputAndCycleTime.json
index 5511a8af4..8ab742be7 100644
--- a/grafana/dashboards/EngineeringThroughputAndCycleTime.json
+++ b/grafana/dashboards/EngineeringThroughputAndCycleTime.json
@@ -28,6 +28,7 @@
         "y": 0
       },
       "id": 111,
+      "links": [],
       "options": {
         "content": "- Use Cases: This dashboard shows the engineering 
throughput and and cycle time, which helps to identify productivity and 
bottlenecks of the development process.\n- Data Source Required: GitHub and 
Jira([transformation](https://devlake.apache.org/docs/UserManuals/ConfigUI/Jira#step-3---adding-transformation-rules-optional)
 required to tell DevLake what the story_points field is)",
         "mode": "markdown"
@@ -147,6 +148,13 @@
         "y": 4
       },
       "id": 79,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -285,6 +293,13 @@
         "y": 4
       },
       "id": 74,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -392,6 +407,13 @@
         "y": 4
       },
       "id": 98,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Granularity",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementGranularity";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -499,6 +521,13 @@
         "y": 11
       },
       "id": 99,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Review Depth",
+          "url": "https://devlake.apache.org/docs/Metrics/PRReviewDepth";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -607,6 +636,13 @@
         "y": 11
       },
       "id": 100,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -714,6 +750,13 @@
         "y": 11
       },
       "id": 101,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Size",
+          "url": "https://devlake.apache.org/docs/Metrics/PRSize";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -818,6 +861,13 @@
         "y": 18
       },
       "id": 108,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -967,6 +1017,13 @@
         "y": 26
       },
       "id": 109,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Cycle Time",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCycleTime";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1071,6 +1128,13 @@
         "y": 33
       },
       "id": 120,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Coding Time",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCodingTime";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1206,6 +1270,13 @@
         "y": 33
       },
       "id": 117,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Pickup Time",
+          "url": "https://devlake.apache.org/docs/Metrics/PRPickupTime";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1341,6 +1412,13 @@
         "y": 33
       },
       "id": 118,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Review Time",
+          "url": "https://devlake.apache.org/docs/Metrics/PRReviewTime";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1476,6 +1554,13 @@
         "y": 33
       },
       "id": 119,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Deploy Time",
+          "url": "https://devlake.apache.org/docs/Metrics/PRDeployTime";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1649,4 +1734,4 @@
   "title": "Engineering Throughput and Cycle Time",
   "uid": "Jaaimc67k",
   "version": 3
-} 
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/grafana/dashboards/EngineeringThroughputAndCycleTimeTeamView.json 
b/grafana/dashboards/EngineeringThroughputAndCycleTimeTeamView.json
index c6c484ebc..6749577d2 100644
--- a/grafana/dashboards/EngineeringThroughputAndCycleTimeTeamView.json
+++ b/grafana/dashboards/EngineeringThroughputAndCycleTimeTeamView.json
@@ -28,6 +28,7 @@
         "y": 0
       },
       "id": 142,
+      "links": [],
       "options": {
         "content": "- Use Cases: This dashboard shows the engineering 
throughput and and cycle time, which helps to identify productivity and 
bottlenecks of the development process.\n- Data Source Required: GitHub and 
Jira([transformation](https://devlake.apache.org/docs/UserManuals/ConfigUI/Jira#step-3---adding-transformation-rules-optional)
 required to tell DevLake what the story_points field is). You also need to do 
[team configuration](https://devlake.apache.org/docs/Configuration/Te [...]
         "mode": "markdown"
@@ -147,6 +148,13 @@
         "y": 4
       },
       "id": 111,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -285,6 +293,13 @@
         "y": 4
       },
       "id": 110,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -423,6 +438,13 @@
         "y": 11
       },
       "id": 79,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -561,6 +583,13 @@
         "y": 11
       },
       "id": 112,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -713,6 +742,13 @@
         "y": 19
       },
       "id": 74,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -851,6 +887,13 @@
         "y": 19
       },
       "id": 115,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1003,6 +1046,13 @@
         "y": 27
       },
       "id": 116,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1141,6 +1191,13 @@
         "y": 27
       },
       "id": 117,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1293,6 +1350,13 @@
         "y": 35
       },
       "id": 122,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Review Depth",
+          "url": "https://devlake.apache.org/docs/Metrics/PRReviewDepth";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1431,6 +1495,13 @@
         "y": 35
       },
       "id": 127,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Size",
+          "url": "https://devlake.apache.org/docs/Metrics/PRSize";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1583,6 +1654,13 @@
         "y": 43
       },
       "id": 100,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1721,6 +1799,13 @@
         "y": 43
       },
       "id": 121,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1870,6 +1955,13 @@
         "y": 51
       },
       "id": 136,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Cycle Time",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCycleTime";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -2005,6 +2097,13 @@
         "y": 58
       },
       "id": 140,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Coding Time",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCodingTime";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -2140,6 +2239,13 @@
         "y": 58
       },
       "id": 134,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Pickup Time",
+          "url": "https://devlake.apache.org/docs/Metrics/PRPickupTime";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -2275,6 +2381,13 @@
         "y": 58
       },
       "id": 135,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Review Time",
+          "url": "https://devlake.apache.org/docs/Metrics/PRReviewTime";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -2410,6 +2523,13 @@
         "y": 58
       },
       "id": 145,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Deploy Time",
+          "url": "https://devlake.apache.org/docs/Metrics/PRDeployTime";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -2559,6 +2679,13 @@
         "y": 66
       },
       "id": 108,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
diff --git a/grafana/dashboards/GitHub.json b/grafana/dashboards/GitHub.json
index 8f3637283..a5c819bd5 100644
--- a/grafana/dashboards/GitHub.json
+++ b/grafana/dashboards/GitHub.json
@@ -34,6 +34,13 @@
         "y": 0
       },
       "id": 99,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "GitHub",
+          "url": "https://devlake.apache.org/docs/Plugins/github";
+        }
+      ],
       "options": {
         "code": {
           "language": "plaintext",
@@ -115,6 +122,13 @@
         "y": 4
       },
       "id": 62,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -219,6 +233,13 @@
         "y": 4
       },
       "id": 74,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -339,6 +360,13 @@
         "y": 11
       },
       "id": 43,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -468,6 +496,13 @@
         "y": 11
       },
       "id": 76,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -550,6 +585,13 @@
         "y": 17
       },
       "id": 64,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -654,6 +696,13 @@
         "y": 17
       },
       "id": 75,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Lead Time",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementLeadTime";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -768,6 +817,7 @@
         "y": 23
       },
       "id": 93,
+      "links": [],
       "options": {
         "barRadius": 0,
         "barWidth": 0.1,
@@ -977,6 +1027,7 @@
         "y": 29
       },
       "id": 92,
+      "links": [],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1084,6 +1135,13 @@
         "y": 36
       },
       "id": 68,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1188,6 +1246,13 @@
         "y": 36
       },
       "id": 77,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1302,6 +1367,13 @@
         "y": 42
       },
       "id": 59,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1421,6 +1493,13 @@
         "y": 49
       },
       "id": 66,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1528,6 +1607,13 @@
         "y": 49
       },
       "id": 79,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -1610,6 +1696,13 @@
         "y": 55
       },
       "id": 80,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1723,6 +1816,13 @@
         "y": 55
       },
       "id": 81,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [],
@@ -1803,6 +1903,13 @@
         "y": 61
       },
       "id": 72,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1907,6 +2014,13 @@
         "y": 61
       },
       "id": 95,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1999,6 +2113,13 @@
         "y": 67
       },
       "id": 96,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -2101,6 +2222,13 @@
         "y": 67
       },
       "id": 97,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -2199,6 +2327,13 @@
         "y": 74
       },
       "id": 103,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -2295,6 +2430,13 @@
         "y": 74
       },
       "id": 104,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Success Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildSuccessRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -2462,7 +2604,13 @@
         "y": 74
       },
       "id": 105,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "displayLabels": [
           "value",
@@ -2572,6 +2720,13 @@
         "y": 74
       },
       "id": 106,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Duration",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildDuration";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -2691,6 +2846,13 @@
         "y": 80
       },
       "id": 107,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -2840,6 +3002,13 @@
       },
       "id": 108,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Success Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildSuccessRate";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -3012,6 +3181,13 @@
         "y": 86
       },
       "id": 109,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -3149,6 +3325,13 @@
         "y": 92
       },
       "id": 110,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Duration",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildDuration";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
diff --git 
a/grafana/dashboards/GithubReleaseQualityAndContributionAnalysis.json 
b/grafana/dashboards/GithubReleaseQualityAndContributionAnalysis.json
index 6929eb6bc..3996f72f8 100644
--- a/grafana/dashboards/GithubReleaseQualityAndContributionAnalysis.json
+++ b/grafana/dashboards/GithubReleaseQualityAndContributionAnalysis.json
@@ -28,6 +28,7 @@
         "y": 0
       },
       "id": 57,
+      "links": [],
       "options": {
         "content": "- Use Cases: This dashboard can be used to track bugs.\n- 
Data Source Required: GitHub 
([transformation](https://devlake.apache.org/docs/UserManuals/ConfigUI/GitHub#step-3---adding-transformation-rules-optional)
 required. Additional settings are required to get version data).",
         "mode": "markdown"
@@ -83,6 +84,7 @@
         "y": 4
       },
       "id": 15,
+      "links": [],
       "options": {
         "displayLabels": [
           "name",
@@ -218,6 +220,7 @@
         "y": 4
       },
       "id": 29,
+      "links": [],
       "options": {
         "barWidth": 0.7,
         "groupWidth": 0.3,
@@ -295,6 +298,7 @@
         "y": 11
       },
       "id": 55,
+      "links": [],
       "options": {
         "displayLabels": [
           "percent"
@@ -450,6 +454,7 @@
         "y": 11
       },
       "id": 53,
+      "links": [],
       "options": {
         "displayLabels": [
           "percent"
@@ -535,6 +540,7 @@
         "y": 11
       },
       "id": 51,
+      "links": [],
       "options": {
         "displayLabels": [
           "percent"
@@ -716,6 +722,7 @@
         "y": 18
       },
       "id": 43,
+      "links": [],
       "options": {
         "showHeader": true,
         "sortBy": []
@@ -782,6 +789,7 @@
         "y": 25
       },
       "id": 30,
+      "links": [],
       "options": {
         "displayLabels": [
           "percent",
@@ -868,6 +876,7 @@
         "y": 25
       },
       "id": 31,
+      "links": [],
       "options": {
         "displayLabels": [
           "percent",
@@ -964,6 +973,7 @@
         "y": 32
       },
       "id": 23,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1060,6 +1070,7 @@
         "y": 32
       },
       "id": 18,
+      "links": [],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
@@ -1144,6 +1155,13 @@
         "y": 39
       },
       "id": 33,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Age",
+          "url": "https://devlake.apache.org/docs/Metrics/BugAge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1240,6 +1258,13 @@
         "y": 39
       },
       "id": 32,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Age",
+          "url": "https://devlake.apache.org/docs/Metrics/BugAge";
+        }
+      ],
       "options": {
         "barWidth": 0.7,
         "groupWidth": 0.3,
@@ -1324,6 +1349,13 @@
         "y": 45
       },
       "id": 34,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Age",
+          "url": "https://devlake.apache.org/docs/Metrics/BugAge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1496,6 +1528,13 @@
         "y": 45
       },
       "id": 38,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Age",
+          "url": "https://devlake.apache.org/docs/Metrics/BugAge";
+        }
+      ],
       "options": {
         "showHeader": true,
         "sortBy": []
@@ -1617,6 +1656,13 @@
         "y": 51
       },
       "id": 35,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Age",
+          "url": "https://devlake.apache.org/docs/Metrics/BugAge";
+        }
+      ],
       "options": {
         "displayLabels": [
           "name",
@@ -1793,6 +1839,13 @@
         "y": 51
       },
       "id": 39,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Age",
+          "url": "https://devlake.apache.org/docs/Metrics/BugAge";
+        }
+      ],
       "options": {
         "showHeader": true,
         "sortBy": []
@@ -1890,6 +1943,7 @@
         "y": 58
       },
       "id": 41,
+      "links": [],
       "options": {
         "barWidth": 0.3,
         "groupWidth": 0.7,
@@ -2012,6 +2066,7 @@
         "y": 58
       },
       "id": 42,
+      "links": [],
       "options": {
         "showHeader": true,
         "sortBy": []
@@ -2107,6 +2162,7 @@
         "y": 65
       },
       "id": 26,
+      "links": [],
       "options": {
         "displayLabels": [
           "percent"
@@ -2223,6 +2279,7 @@
         "y": 65
       },
       "id": 36,
+      "links": [],
       "options": {
         "displayLabels": [
           "percent"
@@ -2339,6 +2396,7 @@
         "y": 65
       },
       "id": 37,
+      "links": [],
       "options": {
         "displayLabels": [
           "percent"
@@ -2435,6 +2493,7 @@
         "y": 72
       },
       "id": 27,
+      "links": [],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -2530,6 +2589,7 @@
         "y": 72
       },
       "id": 3,
+      "links": [],
       "options": {
         "barWidth": 0.3,
         "groupWidth": 0.7,
diff --git a/grafana/dashboards/Gitlab.json b/grafana/dashboards/Gitlab.json
index f16c55573..e084668a0 100644
--- a/grafana/dashboards/Gitlab.json
+++ b/grafana/dashboards/Gitlab.json
@@ -34,6 +34,13 @@
         "y": 0
       },
       "id": 101,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "GitLab",
+          "url": "https://devlake.apache.org/docs/Plugins/gitlab";
+        }
+      ],
       "options": {
         "code": {
           "language": "plaintext",
@@ -115,6 +122,13 @@
         "y": 4
       },
       "id": 68,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -218,6 +232,13 @@
         "y": 4
       },
       "id": 77,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -348,6 +369,13 @@
         "y": 10
       },
       "id": 59,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -463,6 +491,13 @@
         "y": 17
       },
       "id": 66,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -569,6 +604,13 @@
         "y": 17
       },
       "id": 79,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -650,6 +692,13 @@
         "y": 23
       },
       "id": 80,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -762,6 +811,13 @@
         "y": 23
       },
       "id": 81,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -843,6 +899,13 @@
         "y": 29
       },
       "id": 72,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -946,6 +1009,13 @@
         "y": 29
       },
       "id": 95,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1054,6 +1124,13 @@
         "y": 35
       },
       "id": 96,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1155,6 +1232,13 @@
         "y": 35
       },
       "id": 97,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
diff --git a/grafana/dashboards/Jenkins.json b/grafana/dashboards/Jenkins.json
index 46989f9fa..0268063e4 100644
--- a/grafana/dashboards/Jenkins.json
+++ b/grafana/dashboards/Jenkins.json
@@ -34,6 +34,13 @@
         "y": 0
       },
       "id": 58,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Jenkins",
+          "url": "https://devlake.apache.org/docs/Plugins/jenkins";
+        }
+      ],
       "options": {
         "code": {
           "language": "plaintext",
@@ -82,6 +89,13 @@
         "y": 3
       },
       "id": 4,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -160,6 +174,13 @@
         "y": 3
       },
       "id": 6,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Success Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildSuccessRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -309,7 +330,13 @@
         "y": 3
       },
       "id": 37,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "displayLabels": [
           "value",
@@ -401,6 +428,13 @@
         "y": 3
       },
       "id": 55,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Duration",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildDuration";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -502,6 +536,13 @@
         "y": 9
       },
       "id": 52,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -633,6 +674,13 @@
       },
       "id": 50,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Success Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildSuccessRate";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -787,6 +835,13 @@
         "y": 15
       },
       "id": 54,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Count",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -906,6 +961,13 @@
         "y": 21
       },
       "id": 56,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Build Duration",
+          "url": "https://devlake.apache.org/docs/Metrics/BuildDuration";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
diff --git a/grafana/dashboards/Jira.json b/grafana/dashboards/Jira.json
index 66bf76e38..da4b0768c 100644
--- a/grafana/dashboards/Jira.json
+++ b/grafana/dashboards/Jira.json
@@ -55,6 +55,13 @@
         "y": 0
       },
       "id": 128,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Jira",
+          "url": "https://devlake.apache.org/docs/Plugins/jira";
+        }
+      ],
       "options": {
         "content": "- Use Cases: This dashboard shows the basic project 
management metrics from Jira.\n- Data Source Required: Jira",
         "mode": "markdown"
@@ -109,6 +116,13 @@
         "y": 4
       },
       "id": 114,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -186,6 +200,13 @@
         "y": 4
       },
       "id": 116,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -296,6 +317,13 @@
       },
       "id": 120,
       "interval": null,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -376,6 +404,13 @@
         "y": 10
       },
       "id": 117,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -486,7 +521,13 @@
         "y": 10
       },
       "id": 121,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [],
@@ -576,6 +617,13 @@
         "y": 17
       },
       "id": 12,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Lead Time",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementLeadTime";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -656,6 +704,13 @@
         "y": 17
       },
       "id": 13,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -754,6 +809,13 @@
       },
       "id": 17,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
@@ -837,6 +899,13 @@
       },
       "lines": true,
       "linewidth": 8,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "nullPointMode": "null",
       "options": {
         "alertThreshold": false
diff --git a/grafana/dashboards/Opsgenie.json b/grafana/dashboards/Opsgenie.json
index 05c3c06ce..c95f1bd21 100644
--- a/grafana/dashboards/Opsgenie.json
+++ b/grafana/dashboards/Opsgenie.json
@@ -61,6 +61,13 @@
         "y": 0
       },
       "id": 128,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Opsgenie",
+          "url": "https://devlake.apache.org/docs/Plugins/opsgenie";
+        }
+      ],
       "options": {
         "code": {
           "language": "plaintext",
@@ -138,6 +145,13 @@
         "y": 4
       },
       "id": 114,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -234,6 +248,13 @@
         "y": 4
       },
       "id": 116,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -361,6 +382,13 @@
         "y": 4
       },
       "id": 131,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -455,6 +483,13 @@
         "y": 7
       },
       "id": 134,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -555,6 +590,13 @@
         "y": 10
       },
       "id": 117,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -685,7 +727,13 @@
         "y": 10
       },
       "id": 121,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [],
@@ -811,6 +859,13 @@
         "y": 17
       },
       "id": 12,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -913,6 +968,13 @@
         "y": 17
       },
       "id": 13,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1036,6 +1098,13 @@
       },
       "id": 17,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1143,6 +1212,13 @@
       },
       "lines": true,
       "linewidth": 8,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "nullPointMode": "null",
       "options": {
         "alertThreshold": false
@@ -1363,6 +1439,13 @@
         "y": 32
       },
       "id": 133,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1451,4 +1534,4 @@
   "uid": "b4556439-f173-4411-93d4-65f261726d24",
   "version": 2,
   "weekStart": ""
-}
+}
\ No newline at end of file
diff --git a/grafana/dashboards/PagerDuty.json 
b/grafana/dashboards/PagerDuty.json
index cb72090e1..59a93e946 100644
--- a/grafana/dashboards/PagerDuty.json
+++ b/grafana/dashboards/PagerDuty.json
@@ -61,6 +61,13 @@
         "y": 0
       },
       "id": 128,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PagerDuty",
+          "url": "https://devlake.apache.org/docs/Plugins/pagerduty";
+        }
+      ],
       "options": {
         "code": {
           "language": "plaintext",
@@ -136,6 +143,13 @@
         "y": 4
       },
       "id": 114,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -232,6 +246,13 @@
         "y": 4
       },
       "id": 116,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -347,6 +368,13 @@
         "y": 4
       },
       "id": 131,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -445,6 +473,13 @@
         "y": 10
       },
       "id": 117,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -575,7 +610,13 @@
         "y": 10
       },
       "id": 121,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [],
@@ -701,6 +742,13 @@
         "y": 17
       },
       "id": 12,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -803,6 +851,13 @@
         "y": 17
       },
       "id": 13,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -926,6 +981,13 @@
       },
       "id": 17,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1033,6 +1095,13 @@
       },
       "lines": true,
       "linewidth": 8,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Incident Age",
+          "url": "https://devlake.apache.org/docs/Metrics/IncidentAge";
+        }
+      ],
       "nullPointMode": "null",
       "options": {
         "alertThreshold": false
diff --git a/grafana/dashboards/Sonarqube.json 
b/grafana/dashboards/Sonarqube.json
index b9c8c2a6a..9b323adbe 100644
--- a/grafana/dashboards/Sonarqube.json
+++ b/grafana/dashboards/Sonarqube.json
@@ -34,6 +34,13 @@
         "y": 0
       },
       "id": 19,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "SonarQube",
+          "url": "https://devlake.apache.org/docs/Plugins/sonarqube";
+        }
+      ],
       "options": {
         "code": {
           "language": "plaintext",
@@ -116,6 +123,13 @@
         "y": 5
       },
       "id": 2,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Code Quality Issue Count",
+          "url": "https://devlake.apache.org/docs/Metrics/CQIssueCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -220,6 +234,13 @@
         "y": 5
       },
       "id": 3,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Code Quality Issue Count",
+          "url": "https://devlake.apache.org/docs/Metrics/CQIssueCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -325,6 +346,13 @@
         "y": 5
       },
       "id": 4,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Code Quality Issue Count",
+          "url": "https://devlake.apache.org/docs/Metrics/CQIssueCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -429,6 +457,13 @@
         "y": 5
       },
       "id": 13,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Code Quality Issue Count",
+          "url": "https://devlake.apache.org/docs/Metrics/CQIssueCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -559,6 +594,13 @@
         "y": 10
       },
       "id": 8,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Code Quality Test",
+          "url": "https://devlake.apache.org/docs/Metrics/CQTest";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "none",
@@ -664,6 +706,13 @@
         "y": 10
       },
       "id": 7,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Code Quality Maintainability-Debt",
+          "url": 
"https://devlake.apache.org/docs/Metrics/CQMaintainability-Debt";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -769,6 +818,13 @@
         "y": 10
       },
       "id": 14,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Code Quality Maintainability-Debt",
+          "url": 
"https://devlake.apache.org/docs/Metrics/CQMaintainability-Debt";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -899,6 +955,13 @@
         "y": 16
       },
       "id": 10,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Code Quality Duplicated Blocks",
+          "url": "https://devlake.apache.org/docs/Metrics/CQDuplicatedBlocks";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1003,6 +1066,13 @@
         "y": 16
       },
       "id": 9,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Code Quality Duplicated Lines",
+          "url": "https://devlake.apache.org/docs/Metrics/CQDuplicatedLines";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "none",
@@ -1098,6 +1168,13 @@
         "y": 21
       },
       "id": 17,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Code Quality Issue Count",
+          "url": "https://devlake.apache.org/docs/Metrics/CQIssueCount";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
diff --git a/grafana/dashboards/TAPD.json b/grafana/dashboards/TAPD.json
index e3c585f9e..da0737ff0 100644
--- a/grafana/dashboards/TAPD.json
+++ b/grafana/dashboards/TAPD.json
@@ -55,6 +55,13 @@
         "y": 0
       },
       "id": 128,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "TAPD",
+          "url": "https://devlake.apache.org/docs/Plugins/tapd";
+        }
+      ],
       "options": {
         "content": "- Use Cases: This dashboard shows the basic project 
management metrics from TAPD.\n- Data Source Required: TAPD",
         "mode": "markdown"
@@ -109,6 +116,13 @@
         "y": 4
       },
       "id": 114,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -186,6 +200,13 @@
         "y": 4
       },
       "id": 116,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -296,6 +317,13 @@
       },
       "id": 120,
       "interval": null,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -376,6 +404,13 @@
         "y": 10
       },
       "id": 117,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -486,7 +521,13 @@
         "y": 10
       },
       "id": 121,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [],
@@ -576,6 +617,13 @@
         "y": 17
       },
       "id": 12,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Lead Time",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementLeadTime";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -656,6 +704,13 @@
         "y": 17
       },
       "id": 13,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -754,6 +809,13 @@
       },
       "id": 17,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
@@ -837,6 +899,13 @@
       },
       "lines": true,
       "linewidth": 8,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "nullPointMode": "null",
       "options": {
         "alertThreshold": false
diff --git a/grafana/dashboards/Teambition.json 
b/grafana/dashboards/Teambition.json
index b71b8810b..7f04ddba3 100644
--- a/grafana/dashboards/Teambition.json
+++ b/grafana/dashboards/Teambition.json
@@ -55,6 +55,13 @@
         "y": 0
       },
       "id": 128,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Teambition",
+          "url": "https://devlake.apache.org/docs/Plugins/teambition";
+        }
+      ],
       "options": {
         "content": "- Use Cases: This dashboard shows the basic project 
management metrics from Teambition.\n- Data Source Required: Teambition",
         "mode": "markdown"
@@ -109,6 +116,13 @@
         "y": 4
       },
       "id": 114,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -186,6 +200,13 @@
         "y": 4
       },
       "id": 116,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -296,6 +317,13 @@
       },
       "id": 120,
       "interval": null,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -376,6 +404,13 @@
         "y": 10
       },
       "id": 117,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -486,7 +521,13 @@
         "y": 10
       },
       "id": 121,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [],
@@ -576,6 +617,13 @@
         "y": 17
       },
       "id": 12,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Lead Time",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementLeadTime";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -656,6 +704,13 @@
         "y": 17
       },
       "id": 13,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -754,6 +809,13 @@
       },
       "id": 17,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
@@ -837,6 +899,13 @@
       },
       "lines": true,
       "linewidth": 8,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "nullPointMode": "null",
       "options": {
         "alertThreshold": false
diff --git a/grafana/dashboards/WeeklyBugRetro.json 
b/grafana/dashboards/WeeklyBugRetro.json
index 1623b1074..4c78520bb 100644
--- a/grafana/dashboards/WeeklyBugRetro.json
+++ b/grafana/dashboards/WeeklyBugRetro.json
@@ -34,6 +34,7 @@
         "y": 0
       },
       "id": 28,
+      "links": [],
       "options": {
         "code": {
           "language": "plaintext",
@@ -88,6 +89,13 @@
         "y": 3
       },
       "id": 6,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -164,6 +172,13 @@
         "y": 3
       },
       "id": 26,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "displayLabels": [
           "name",
@@ -341,6 +356,13 @@
         "y": 3
       },
       "id": 4,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -421,6 +443,13 @@
         "y": 11
       },
       "id": 8,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -508,6 +537,13 @@
         "y": 11
       },
       "id": 24,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Age",
+          "url": "https://devlake.apache.org/docs/Metrics/BugAge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -648,6 +684,13 @@
         "y": 11
       },
       "id": 10,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -750,6 +793,13 @@
         "y": 19
       },
       "id": 23,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.3,
@@ -841,6 +891,13 @@
         "y": 27
       },
       "id": 16,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -923,6 +980,13 @@
         "y": 27
       },
       "id": 25,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1086,6 +1150,13 @@
         "y": 27
       },
       "id": 14,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1187,6 +1258,13 @@
         "y": 36
       },
       "id": 18,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Age",
+          "url": "https://devlake.apache.org/docs/Metrics/BugAge";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.3,
@@ -1339,6 +1417,13 @@
         "y": 36
       },
       "id": 31,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Age",
+          "url": "https://devlake.apache.org/docs/Metrics/BugAge";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1440,6 +1525,13 @@
         "y": 45
       },
       "id": 2,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.71,
@@ -1551,6 +1643,13 @@
         "y": 54
       },
       "id": 20,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.71,
@@ -1662,6 +1761,13 @@
         "y": 64
       },
       "id": 21,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Bug Count per 1k Lines of Code",
+          "url": 
"https://devlake.apache.org/docs/Metrics/BugCountPer1kLinesOfCode";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.71,
diff --git a/grafana/dashboards/WeeklyCommunityRetro.json 
b/grafana/dashboards/WeeklyCommunityRetro.json
index 92c34d020..032764ec5 100644
--- a/grafana/dashboards/WeeklyCommunityRetro.json
+++ b/grafana/dashboards/WeeklyCommunityRetro.json
@@ -34,6 +34,7 @@
         "y": 0
       },
       "id": 48,
+      "links": [],
       "options": {
         "code": {
           "language": "plaintext",
@@ -114,6 +115,13 @@
         "y": 5
       },
       "id": 6,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -196,6 +204,13 @@
         "y": 5
       },
       "id": 22,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -279,6 +294,13 @@
         "y": 5
       },
       "id": 23,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -368,6 +390,13 @@
         "y": 5
       },
       "id": 45,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -452,6 +481,13 @@
         "y": 13
       },
       "id": 24,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -616,6 +652,13 @@
         "y": 13
       },
       "id": 25,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -719,6 +762,13 @@
         "y": 21
       },
       "id": 26,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -888,6 +938,13 @@
         "y": 21
       },
       "id": 28,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1013,6 +1070,13 @@
         "y": 30
       },
       "id": 31,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1096,6 +1160,13 @@
         "y": 30
       },
       "id": 34,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1179,6 +1250,13 @@
         "y": 30
       },
       "id": 35,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1262,6 +1340,13 @@
         "y": 38
       },
       "id": 36,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1346,6 +1431,13 @@
         "y": 38
       },
       "id": 39,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Time To Merge",
+          "url": "https://devlake.apache.org/docs/Metrics/PRTimeToMerge";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1436,6 +1528,13 @@
         "y": 38
       },
       "id": 46,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1539,6 +1638,13 @@
         "y": 46
       },
       "id": 37,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Merge Rate",
+          "url": "https://devlake.apache.org/docs/Metrics/PRMergeRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1656,6 +1762,13 @@
         "y": 46
       },
       "id": 51,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "cellHeight": "sm",
         "footer": {
@@ -1777,6 +1890,13 @@
         "y": 54
       },
       "id": 33,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "barRadius": 0,
         "barWidth": 0.5,
@@ -1883,6 +2003,13 @@
         "y": 54
       },
       "id": 52,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -1980,6 +2107,13 @@
         "y": 54
       },
       "id": 40,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "PR Count",
+          "url": "https://devlake.apache.org/docs/Metrics/PRCount";
+        }
+      ],
       "options": {
         "displayMode": "gradient",
         "minVizHeight": 10,
diff --git a/grafana/dashboards/Zentao.json b/grafana/dashboards/Zentao.json
index 54cd538a8..a0832c9ef 100644
--- a/grafana/dashboards/Zentao.json
+++ b/grafana/dashboards/Zentao.json
@@ -55,6 +55,13 @@
         "y": 0
       },
       "id": 128,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Zentao",
+          "url": "https://devlake.apache.org/docs/Plugins/zentao";
+        }
+      ],
       "options": {
         "content": "- Use Cases: This dashboard shows the basic project 
management metrics from Zentao.\n- Data Source Required: Zentao",
         "mode": "markdown"
@@ -109,6 +116,13 @@
         "y": 4
       },
       "id": 114,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -186,6 +200,13 @@
         "y": 4
       },
       "id": 116,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -296,6 +317,13 @@
       },
       "id": 120,
       "interval": null,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Count",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementCount";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [
@@ -376,6 +404,13 @@
         "y": 10
       },
       "id": 117,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -486,7 +521,13 @@
         "y": 10
       },
       "id": 121,
-      "links": [],
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "legend": {
           "calcs": [],
@@ -576,6 +617,13 @@
         "y": 17
       },
       "id": 12,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Lead Time",
+          "url": "https://devlake.apache.org/docs/Metrics/RequirementLeadTime";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -656,6 +704,13 @@
         "y": 17
       },
       "id": 13,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "colorMode": "value",
         "graphMode": "area",
@@ -754,6 +809,13 @@
       },
       "id": 17,
       "interval": "",
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "options": {
         "barWidth": 0.5,
         "groupWidth": 0.7,
@@ -837,6 +899,13 @@
       },
       "lines": true,
       "linewidth": 8,
+      "links": [
+        {
+          "targetBlank": true,
+          "title": "Requirement Delivery Rate",
+          "url": 
"https://devlake.apache.org/docs/Metrics/RequirementDeliveryRate";
+        }
+      ],
       "nullPointMode": "null",
       "options": {
         "alertThreshold": false

Reply via email to