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

gongchao pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/hertzbeat.git


The following commit(s) were added to refs/heads/master by this push:
     new 3ab94a751 [Improve] optimize the dashboard page and adapt to the new 
theme (#3730)
3ab94a751 is described below

commit 3ab94a751b70618292e8f6317c0d6c0c8c1be628
Author: DeleiGuo <[email protected]>
AuthorDate: Sun Sep 7 23:00:12 2025 +0800

    [Improve] optimize the dashboard page and adapt to the new theme (#3730)
    
    Co-authored-by: Calvin <[email protected]>
    Co-authored-by: Tom <[email protected]>
---
 web-app/src/app/layout/basic/basic.component.less  |   1 +
 .../app/layout/basic/widgets/search.component.less |   2 +-
 .../app/routes/dashboard/dashboard.component.html  | 864 +++++++++++----------
 .../app/routes/dashboard/dashboard.component.less  |  38 +-
 .../app/routes/dashboard/dashboard.component.ts    |  47 +-
 5 files changed, 530 insertions(+), 422 deletions(-)

diff --git a/web-app/src/app/layout/basic/basic.component.less 
b/web-app/src/app/layout/basic/basic.component.less
index 12ba3b486..d9f7b0fd2 100644
--- a/web-app/src/app/layout/basic/basic.component.less
+++ b/web-app/src/app/layout/basic/basic.component.less
@@ -133,6 +133,7 @@
     z-index: 11 !important;
     display: flex !important;
     align-items: center !important;
+    justify-content: center !important;
   }
 
   /* Fix notification badge positioning */
diff --git a/web-app/src/app/layout/basic/widgets/search.component.less 
b/web-app/src/app/layout/basic/widgets/search.component.less
index 82cd1dd41..58e3e3ab5 100644
--- a/web-app/src/app/layout/basic/widgets/search.component.less
+++ b/web-app/src/app/layout/basic/widgets/search.component.less
@@ -1,6 +1,6 @@
 .search-input-group {
   margin: 10px 0;
-  border-radius: 8px;
+  border-radius: 16px !important;
   box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1);
 }
 
diff --git a/web-app/src/app/routes/dashboard/dashboard.component.html 
b/web-app/src/app/routes/dashboard/dashboard.component.html
index a3aa73891..8717762ea 100644
--- a/web-app/src/app/routes/dashboard/dashboard.component.html
+++ b/web-app/src/app/routes/dashboard/dashboard.component.html
@@ -18,428 +18,504 @@
 -->
 
 <div class="mobile-hide">
-  <ngx-slick-carousel nz-row class="carousel" [config]="slideConfig">
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountService.size 
}}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="cloud" nzTheme="outline"></i>
-              {{ 'monitor.category.service' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountService.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountService.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountService.unManageSize }}</span>
-            </nz-tag>
+  <div nz-row nzGutter="16">
+    <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ span: 24 
}" style="height: 100%">
+      <ngx-slick-carousel nz-row class="carousel" [config]="slideConfig">
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountService.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="cloud" nzTheme="outline"></i>
+                  {{ 'monitor.category.service' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountService.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountService.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountService.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
-    </div>
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountProgram.size 
}}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="code" nzTheme="outline"></i>
-              {{ 'monitor.category.program' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountProgram.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountProgram.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountProgram.unManageSize }}</span>
-            </nz-tag>
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountProgram.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="code" nzTheme="outline"></i>
+                  {{ 'monitor.category.program' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountProgram.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountProgram.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountProgram.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
-    </div>
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountDb.size }}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="database" nzTheme="outline"></i>
-              {{ 'monitor.category.db' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountDb.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountDb.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountDb.unManageSize }}</span>
-            </nz-tag>
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountDb.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="database" nzTheme="outline"></i>
+                  {{ 'monitor.category.db' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountDb.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountDb.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountDb.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
-    </div>
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountCache.size }}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="group" nzTheme="outline"></i>
-              {{ 'monitor.category.cache' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountCache.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountCache.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountCache.unManageSize }}</span>
-            </nz-tag>
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountCache.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="group" nzTheme="outline"></i>
+                  {{ 'monitor.category.cache' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountCache.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountCache.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountCache.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
-    </div>
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountOs.size }}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="windows" nzTheme="outline"></i>
-              {{ 'monitor.category.os' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountOs.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountOs.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountOs.unManageSize }}</span>
-            </nz-tag>
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountOs.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="windows" nzTheme="outline"></i>
+                  {{ 'monitor.category.os' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountOs.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountOs.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountOs.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
-    </div>
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountMid.size }}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="merge-cells" nzTheme="outline"></i>
-              {{ 'monitor.category.mid' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountMid.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountMid.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountMid.unManageSize }}</span>
-            </nz-tag>
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountMid.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="merge-cells" nzTheme="outline"></i>
+                  {{ 'monitor.category.mid' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountMid.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountMid.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountMid.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
-    </div>
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountBigdata.size 
}}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="dot-chart" nzTheme="outline"></i>
-              {{ 'monitor.category.bigdata' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountBigdata.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountBigdata.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountBigdata.unManageSize }}</span>
-            </nz-tag>
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountBigdata.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="dot-chart" nzTheme="outline"></i>
+                  {{ 'monitor.category.bigdata' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountBigdata.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountBigdata.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountBigdata.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
-    </div>
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountWebserver.size 
}}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="database" nzTheme="outline"></i>
-              {{ 'monitor.category.webserver' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountWebserver.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span
-              ><span style="font-weight: bolder">{{ 
appCountWebserver.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span
-              ><span style="font-weight: bolder">{{ 
appCountWebserver.unManageSize }}</span>
-            </nz-tag>
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountWebserver.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="database" nzTheme="outline"></i>
+                  {{ 'monitor.category.webserver' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountWebserver.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span
+                    ><span style="font-weight: bolder">{{ 
appCountWebserver.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span
+                    ><span style="font-weight: bolder">{{ 
appCountWebserver.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
-    </div>
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountCn.size }}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="cloud-server" nzTheme="outline"></i>
-              {{ 'monitor.category.cn' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountCn.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountCn.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountCn.unManageSize }}</span>
-            </nz-tag>
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountCn.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="cloud-server" nzTheme="outline"></i>
+                  {{ 'monitor.category.cn' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountCn.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountCn.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountCn.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
-    </div>
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountNetwork.size 
}}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="global" nzTheme="outline"></i>
-              {{ 'monitor.category.network' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountNetwork.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountNetwork.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountNetwork.unManageSize }}</span>
-            </nz-tag>
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountNetwork.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="global" nzTheme="outline"></i>
+                  {{ 'monitor.category.network' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountNetwork.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountNetwork.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountNetwork.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
-    </div>
-    <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
-      <div class="mb-md hoverCard">
-        <div nz-row nzAlign="middle" class="bg-primary rounded-lg">
-          <div nz-col nzSpan="9" class="p-md text-white">
-            <div class="h2 mt0 font-weight-bold">{{ appCountCustom.size 
}}</div>
-            <p class="h5 text-nowrap mb0">
-              <i nz-icon nzType="project" nzTheme="outline"></i>
-              {{ 'monitor.category.custom' | i18n }}
-            </p>
-          </div>
-          <div nz-col nzSpan="15">
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.up' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountCustom.availableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.down' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountCustom.unAvailableSize }}</span>
-            </nz-tag>
-            <nz-tag class="mb-xs">
-              <span>{{ 'monitor.status.paused' | i18n }} </span><span 
style="font-weight: bolder">{{ appCountCustom.unManageSize }}</span>
-            </nz-tag>
+        <div style="width: 25%; margin: 3px" ngxSlickItem class="slide">
+          <div class="hoverCard">
+            <div nz-row nzAlign="middle" class="bg-primary dashboard-rounded">
+              <div nz-col nzSpan="9" class="p-md text-white">
+                <div class="h2 mt0 font-weight-bold">{{ appCountCustom.size 
}}</div>
+                <p class="h5 text-nowrap mb0">
+                  <i nz-icon nzType="project" nzTheme="outline"></i>
+                  {{ 'monitor.category.custom' | i18n }}
+                </p>
+              </div>
+              <div nz-col nzSpan="15">
+                <div class="dashboard-slider-tag">
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.up' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountCustom.availableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.down' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountCustom.unAvailableSize }}</span>
+                  </nz-tag>
+                  <nz-tag [nzBordered]="false" class="mb-xs">
+                    <span>{{ 'monitor.status.paused' | i18n }} </span>
+                    <span style="font-weight: bolder">{{ 
appCountCustom.unManageSize }}</span>
+                  </nz-tag>
+                </div>
+              </div>
+            </div>
           </div>
         </div>
-      </div>
+      </ngx-slick-carousel>
     </div>
-  </ngx-slick-carousel>
-</div>
-
-<div nz-row nzGutter="16" style="margin-top: 25px; height: 500px">
-  <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ span: 6 }" 
style="height: 100%">
-    <nz-spin [nzSpinning]="wordCloudDataLoading">
-      <angular-tag-cloud
-        class="br-4"
-        *ngIf="!wordCloudDataLoading"
-        (clicked)="onLabelCloudClick($event)"
-        [font]="'italic bold 6px monospace'"
-        [data]="wordCloudData"
-        [width]="1"
-        [height]="1"
-        [step]="2"
-        [strict]="true"
-        [randomizeAngle]="true"
-        [realignOnResize]="true"
-        [delay]="300"
-        [zoomOnHover]="{ scale: 1.4, transitionTime: 0.6, delay: 0.4 }"
-        [overflow]="false"
-        [background]="theme == 'dark' ? '#141414' : 'white'"
-      >
-      </angular-tag-cloud>
-    </nz-spin>
-  </div>
-  <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ span: 12 
}" style="height: 100%">
-    <nz-spin [nzSpinning]="appsCountLoading">
-      <div
-        echarts
-        [options]="appsCountEChartOption"
-        theme="default"
-        [autoResize]="true"
-        [loading]="appsCountLoading"
-        (chartClick)="onChartClick($event)"
-        (chartInit)="onAppsCountChartInit($event)"
-        style="width: 100%; height: inherit"
-      ></div>
-    </nz-spin>
   </div>
-  <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ span: 6 }" 
style="height: 100%">
-    <nz-spin [nzSpinning]="collectorsLoading">
-      <div style="overflow-y: auto; height: inherit">
-        <nz-card
-          *ngFor="let item of collectors; let i = index"
-          class="rounded-lg collectors"
-          nzBordered="false"
-          [nzTitle]="collectorCardTitle"
-        >
-          <ng-template #collectorCardTitle>
-            <span style="font-size: medium; font-weight: bold" nz-tooltip 
[nzTooltipTitle]="item.collector.name">
-              <span nz-icon nzType="bug" nzTheme="outline" 
style="margin-right: 4px"></span>
-              <span>{{ 'collector' | i18n }} : {{ item.collector.name }}</span>
-            </span>
-          </ng-template>
-          <nz-card-tab>
-            <nz-tabset nzSize="small" 
[(nzSelectedIndex)]="collectorsTabSelectedIndex">
-              <nz-tab [nzTitle]="'collector.status' | i18n" />
-              <nz-tab [nzTitle]="'collector.task' | i18n" />
-              <nz-tab [nzTitle]="'collector.start-time' | i18n" />
-              <nz-tab [nzTitle]="'collector.ip' | i18n" />
-              <nz-tab [nzTitle]="'collector.node' | i18n" />
-            </nz-tabset>
-          </nz-card-tab>
-          <ng-container *ngIf="collectorsTabSelectedIndex === 0">
-            <div class="rounded-lg" style="text-align: center; width: 100%; 
background-color: #8fccca; padding: 2%">
-              <span [style]="'font-size: x-large; font-weight: bolder;' + 
(item.collector.status == 0 ? 'color: green' : 'color: red')">
-                {{ item.collector.status == 0 ? 
('monitor.collector.status.online' | i18n) : 
('monitor.collector.status.offline' | i18n) }}
-              </span>
-            </div>
-          </ng-container>
-          <ng-container *ngIf="collectorsTabSelectedIndex === 1">
-            <div class="rounded-lg" style="text-align: center; width: 100%; 
background-color: #8fccca; padding: 2%">
-              <span style="font-size: xxx-large; font-weight: bolder; color: 
white">
-                {{ item.pinMonitorNum + item.dispatchMonitorNum }}
-              </span>
-              <br />
-              <nz-tag style="margin-bottom: 4%; font-weight: bolder">{{ 
'collector.pinned' | i18n }}: {{ item.pinMonitorNum }}</nz-tag>
-              <nz-tag style="margin-bottom: 4%; font-weight: bolder"
-                >{{ 'collector.dispatched' | i18n }}: {{ 
item.dispatchMonitorNum }}</nz-tag
-              >
-            </div>
-          </ng-container>
-          <ng-container *ngIf="collectorsTabSelectedIndex === 2">
-            <div class="rounded-lg" style="text-align: center; width: 100%; 
background-color: #8fccca; padding: 2%">
-              <span style="font-size: x-large; font-weight: bolder; color: 
white">{{
-                (item.collector.gmtUpdate | date : 'YYYY-MM-dd 
HH:mm:ss')?.trim()
-              }}</span>
-            </div>
-          </ng-container>
-          <ng-container *ngIf="collectorsTabSelectedIndex === 3">
-            <div class="rounded-lg" style="text-align: center; width: 100%; 
background-color: #8fccca; padding: 2%">
-              <span style="font-size: x-large; font-weight: bolder; color: 
white">{{ item.collector.ip }}</span>
-            </div>
-          </ng-container>
-          <ng-container *ngIf="collectorsTabSelectedIndex === 4">
-            <div class="rounded-lg" style="text-align: center; width: 100%; 
background-color: #8fccca; padding: 2%">
-              <span style="font-size: x-large; font-weight: bolder; color: 
white">{{ item.collector.name }}</span>
-            </div>
-          </ng-container>
+
+  <div nz-row nzGutter="16" style="margin-top: 20px; height: 500px">
+    <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ span: 6 
}" style="height: 100%">
+      <nz-spin [nzSpinning]="wordCloudDataLoading">
+        <nz-card class="dashboard-chart-card" style="border-radius: 16px 
!important; height: 100%; width: 100%">
+          <angular-tag-cloud
+            class="br-4"
+            *ngIf="!wordCloudDataLoading"
+            (clicked)="onLabelCloudClick($event)"
+            [font]="'italic bold 6px monospace'"
+            [data]="wordCloudData"
+            [width]="1"
+            [height]="1"
+            [step]="2"
+            [strict]="true"
+            [randomizeAngle]="true"
+            [realignOnResize]="true"
+            [delay]="300"
+            [zoomOnHover]="{ scale: 1.2, transitionTime: 0.6, delay: 0.4 }"
+            [overflow]="false"
+            [background]="'transparent'"
+          >
+          </angular-tag-cloud>
         </nz-card>
-      </div>
-    </nz-spin>
+      </nz-spin>
+    </div>
+    <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ span: 12 
}" style="height: 100%">
+      <nz-spin [nzSpinning]="appsCountLoading">
+        <nz-card class="dashboard-chart-card" style="border-radius: 16px 
!important; height: inherit; overflow: hidden">
+          <div
+            echarts
+            [options]="appsCountEChartOption"
+            theme="default"
+            [autoResize]="true"
+            [loading]="appsCountLoading"
+            (chartClick)="onChartClick($event)"
+            (chartInit)="onAppsCountChartInit($event)"
+            style="width: 100%; height: inherit"
+          ></div>
+        </nz-card>
+      </nz-spin>
+    </div>
+    <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ span: 6 
}" style="height: 100%">
+      <nz-spin [nzSpinning]="collectorsLoading">
+        <div style="overflow-y: auto; height: inherit">
+          <nz-card
+            *ngFor="let item of collectors; let i = index"
+            class="dashboard-chart-card"
+            nzBordered="false"
+            [nzTitle]="collectorCardTitle"
+            style="border-radius: 16px !important"
+          >
+            <ng-template #collectorCardTitle>
+              <span style="font-size: medium; font-weight: bold" nz-tooltip 
[nzTooltipTitle]="item.collector.name">
+                <span nz-icon nzType="bug" nzTheme="outline" 
style="margin-right: 4px"></span>
+                <span>{{ 'collector' | i18n }} : {{ item.collector.name 
}}</span>
+              </span>
+            </ng-template>
+            <nz-card-tab>
+              <nz-tabset nzSize="small" 
[(nzSelectedIndex)]="collectorsTabSelectedIndex">
+                <nz-tab [nzTitle]="'collector.status' | i18n" />
+                <nz-tab [nzTitle]="'collector.task' | i18n" />
+                <nz-tab [nzTitle]="'collector.start-time' | i18n" />
+                <nz-tab [nzTitle]="'collector.ip' | i18n" />
+                <nz-tab [nzTitle]="'collector.node' | i18n" />
+              </nz-tabset>
+            </nz-card-tab>
+            <ng-container *ngIf="collectorsTabSelectedIndex === 0">
+              <div class="rounded-lg" style="text-align: center; width: 100%; 
background-color: transparent; padding: 2%">
+                <span [style]="'font-size: x-large; font-weight: bolder;' + 
(item.collector.status == 0 ? 'color: green' : 'color: red')">
+                  {{
+                    item.collector.status == 0 ? 
('monitor.collector.status.online' | i18n) : 
('monitor.collector.status.offline' | i18n)
+                  }}
+                </span>
+              </div>
+            </ng-container>
+            <ng-container *ngIf="collectorsTabSelectedIndex === 1">
+              <div class="rounded-lg" style="text-align: center; width: 100%; 
background-color: transparent; padding: 2%">
+                <span style="font-size: xxx-large; font-weight: bolder">
+                  {{ item.pinMonitorNum + item.dispatchMonitorNum }}
+                </span>
+                <br />
+                <nz-tag style="margin-bottom: 4%; font-weight: bolder">{{ 
'collector.pinned' | i18n }}: {{ item.pinMonitorNum }}</nz-tag>
+                <nz-tag style="margin-bottom: 4%; font-weight: bolder"
+                  >{{ 'collector.dispatched' | i18n }}: {{ 
item.dispatchMonitorNum }}</nz-tag
+                >
+              </div>
+            </ng-container>
+            <ng-container *ngIf="collectorsTabSelectedIndex === 2">
+              <div class="rounded-lg" style="text-align: center; width: 100%; 
background-color: transparent; padding: 2%">
+                <span style="font-size: x-large; font-weight: bolder">{{
+                  (item.collector.gmtUpdate | date : 'YYYY-MM-dd 
HH:mm:ss')?.trim()
+                }}</span>
+              </div>
+            </ng-container>
+            <ng-container *ngIf="collectorsTabSelectedIndex === 3">
+              <div class="rounded-lg" style="text-align: center; width: 100%; 
background-color: transparent; padding: 2%">
+                <span style="font-size: x-large; font-weight: bolder">{{ 
item.collector.ip }}</span>
+              </div>
+            </ng-container>
+            <ng-container *ngIf="collectorsTabSelectedIndex === 4">
+              <div class="rounded-lg" style="text-align: center; width: 100%; 
background-color: transparent; padding: 2%">
+                <span style="font-size: x-large; font-weight: bolder">{{ 
item.collector.name }}</span>
+              </div>
+            </ng-container>
+          </nz-card>
+        </div>
+      </nz-spin>
+    </div>
   </div>
-</div>
 
-<div nz-row nzGutter="16" style="margin-top: 25px; height: 420px">
-  <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ span: 15 
}" class="mb-md timeline-card" style="height: 100%">
-    <nz-spin [nzSpinning]="alertContentLoading">
-      <nz-card nzHoverable [nzTitle]="alertCardTitleTemplate" 
[nzExtra]="extraTemplate" style="height: inherit; overflow: hidden">
-        <nz-timeline nzMode="left">
-          <nz-timeline-item *ngFor="let alert of alerts; let i = index" 
[nzLabel]="(alert.activeAt | date : 'YYYY-MM-dd HH:mm:ss')?.trim()">
-            <p style="font-weight: 400">
-              <nz-tag *ngIf="alert.labels.severity == 'emergency'" 
nzColor="red">
-                <i nz-icon nzType="bell" nzTheme="outline"></i>
-                <span>{{ 'alert.severity.0' | i18n }}</span>
-              </nz-tag>
-              <nz-tag *ngIf="alert.labels.severity == 'critical'" 
nzColor="orange">
-                <i nz-icon nzType="bell" nzTheme="outline"></i>
-                <span>{{ 'alert.severity.1' | i18n }}</span>
-              </nz-tag>
-              <nz-tag *ngIf="alert.labels.severity == 'warning'" 
nzColor="yellow">
-                <i nz-icon nzType="bell" nzTheme="outline"></i>
-                <span>{{ 'alert.severity.2' | i18n }}</span>
-              </nz-tag>
-              <nz-tag *ngIf="alert.labels.alertname">
-                <span>{{ alert.labels.alertname }}</span>
-              </nz-tag>
-              {{ alert.content }}
-            </p>
-          </nz-timeline-item>
-        </nz-timeline>
+  <div nz-row nzGutter="16" style="margin-top: 20px; height: 420px">
+    <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ span: 24 
}" class="timeline-card" style="height: 100%">
+      <nz-card
+        nzHoverable
+        [nzTitle]="alertCardTitleTemplate"
+        [nzExtra]="extraTemplate"
+        class="dashboard-card-alert"
+        style="border-radius: 16px !important; height: inherit; overflow: 
hidden"
+      >
+        <div nz-row nzGutter="16" style="margin: 0; height: 100%">
+          <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ 
span: 15 }" class="timeline-card" style="height: 100%">
+            <nz-spin [nzSpinning]="alertContentLoading">
+              <nz-timeline nzMode="left">
+                <nz-timeline-item
+                  *ngFor="let alert of alerts; let i = index"
+                  [nzLabel]="(alert.activeAt | date : 'YYYY-MM-dd 
HH:mm:ss')?.trim()"
+                >
+                  <p style="font-weight: 400">
+                    <nz-tag *ngIf="alert.labels.severity == 'emergency'" 
nzColor="red">
+                      <i nz-icon nzType="bell" nzTheme="outline"></i>
+                      <span>{{ 'alert.severity.0' | i18n }}</span>
+                    </nz-tag>
+                    <nz-tag *ngIf="alert.labels.severity == 'critical'" 
nzColor="orange">
+                      <i nz-icon nzType="bell" nzTheme="outline"></i>
+                      <span>{{ 'alert.severity.1' | i18n }}</span>
+                    </nz-tag>
+                    <nz-tag *ngIf="alert.labels.severity == 'warning'" 
nzColor="yellow">
+                      <i nz-icon nzType="bell" nzTheme="outline"></i>
+                      <span>{{ 'alert.severity.2' | i18n }}</span>
+                    </nz-tag>
+                    <nz-tag *ngIf="alert.labels.alertname">
+                      <span>{{ alert.labels.alertname }}</span>
+                    </nz-tag>
+                    {{ alert.content }}
+                  </p>
+                </nz-timeline-item>
+              </nz-timeline>
+            </nz-spin>
+          </div>
+          <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 24 }" [nzMd]="{ 
span: 9 }" class="timeline-card" style="height: 100%">
+            <nz-spin [nzSpinning]="alertsLoading">
+              <div
+                echarts
+                [options]="alertsEChartOption"
+                theme="default"
+                [autoResize]="true"
+                [loading]="alertsLoading"
+                (chartInit)="onAlertNumChartInit($event)"
+                style="width: 100%; height: inherit"
+              ></div>
+            </nz-spin>
+          </div>
+        </div>
       </nz-card>
-    </nz-spin>
-  </div>
-  <div nz-col [nzXs]="{ span: 24 }" [nzSm]="{ span: 12 }" [nzMd]="{ span: 9 }" 
class="mb-md" style="height: 100%">
-    <nz-spin [nzSpinning]="alertsLoading">
-      <div
-        echarts
-        [options]="alertsEChartOption"
-        theme="default"
-        [autoResize]="true"
-        [loading]="alertsLoading"
-        (chartInit)="onAlertNumChartInit($event)"
-        style="width: 100%; height: inherit; padding-left: 30px"
-        class="ant-card ant-card-bordered ant-card-hoverable"
-      ></div>
-    </nz-spin>
+    </div>
   </div>
-</div>
 
-<ng-template #extraTemplate>
-  <a [routerLink]="['/alert/center']" style="font-weight: bold">{{ 
'dashboard.alerts.enter' | i18n }}</a>
-</ng-template>
+  <ng-template #extraTemplate>
+    <a [routerLink]="['/alert/center']" style="font-weight: bold">{{ 
'dashboard.alerts.enter' | i18n }}</a>
+  </ng-template>
 
-<ng-template #alertCardTitleTemplate>
-  <span style="font-size: 14px; font-weight: bold">{{ 'dashboard.alerts.title' 
| i18n }}</span>
-</ng-template>
+  <ng-template #alertCardTitleTemplate>
+    <span style="font-size: 14px; font-weight: bold">{{ 
'dashboard.alerts.title' | i18n }}</span>
+  </ng-template>
+</div>
diff --git a/web-app/src/app/routes/dashboard/dashboard.component.less 
b/web-app/src/app/routes/dashboard/dashboard.component.less
index 0f8756cb6..4f13f5978 100644
--- a/web-app/src/app/routes/dashboard/dashboard.component.less
+++ b/web-app/src/app/routes/dashboard/dashboard.component.less
@@ -1,3 +1,5 @@
+@import '@delon/theme/index';
+@import '../../../styles/theme.less';
 :host ::ng-deep {
   .ant-timeline {
     .ant-timeline-label {
@@ -54,11 +56,39 @@
         overflow-y: auto;
         margin-bottom: 12px;
       }
+      .ant-timeline{
+        margin-top: 20px !important;
+      }
+    }
+  }
+  .dashboard-chart-card{
+    .ant-card-body {
+      padding: 10px !important;
+      height: inherit !important;
     }
   }
-  .collectors {
+  .dashboard-card-alert {
     .ant-card-body {
-      padding: 6px;
+      padding: 20px 10px !important;
+    }
+  }
+  .dashboard-slider-tag{
+    display: flex;
+    align-items: center;
+    justify-content: right;
+    padding:0 16px;
+  }
+  .slick-prev{
+    left: -12px;
+  }
+  .slick-next{
+    right: -12px;
+  }
+  .slick-prev,
+  .slick-next {
+    z-index:10;
+    &:before {
+      color: @primary-color !important;
     }
   }
 }
@@ -115,6 +145,10 @@
   }
 }
 
+.dashboard-rounded{
+  border-radius: 16px !important;
+}
+
 .hoverCard {
   &:hover {
     transform: scale(104%);
diff --git a/web-app/src/app/routes/dashboard/dashboard.component.ts 
b/web-app/src/app/routes/dashboard/dashboard.component.ts
index 21496e04b..e73c58e9a 100644
--- a/web-app/src/app/routes/dashboard/dashboard.component.ts
+++ b/web-app/src/app/routes/dashboard/dashboard.component.ts
@@ -186,13 +186,14 @@ export class DashboardComponent implements OnInit, 
OnDestroy {
       title: {
         text: `{a|${this.i18nSvc.fanyi('dashboard.monitors.title')}}`,
         subtext: `{b|${this.i18nSvc.fanyi('dashboard.monitors.sub-title')}}`,
+        show: false,
         left: 'center',
         textStyle: {
           rich: {
             a: {
               fontWeight: 'bolder',
               align: 'center',
-              fontSize: 26
+              fontSize: 14
             }
           }
         },
@@ -201,7 +202,7 @@ export class DashboardComponent implements OnInit, 
OnDestroy {
             b: {
               fontWeight: 'normal',
               align: 'center',
-              fontSize: 14
+              fontSize: 12
             }
           }
         }
@@ -246,34 +247,23 @@ export class DashboardComponent implements OnInit, 
OnDestroy {
             length: 30
           },
           label: {
-            formatter: '{a|{a}}{abg|}\n{hr|}\n  {b|{b}}   {per|{d}%}  ',
-            backgroundColor: '#F6F8FC',
-            borderColor: '#8C8D8E',
-            borderWidth: 1,
+            formatter: '{b|{b}}{per|({d}%)}',
+            backgroundColor: 'transparent',
+            borderColor: '#D9D9D9',
+            borderWidth: 0.5,
             borderRadius: 4,
             rich: {
-              a: {
-                color: '#6E7079',
-                lineHeight: 22,
-                align: 'center'
-              },
-              hr: {
-                borderColor: '#8C8D8E',
-                width: '100%',
-                borderWidth: 1,
-                height: 0
-              },
               b: {
-                color: '#4C5058',
-                fontSize: 14,
+                color: '#6E7079',
+                lineHeight: 30,
                 fontWeight: 'bold',
-                lineHeight: 33
+                align: 'center',
+                padding: [4, 4]
               },
               per: {
-                color: '#fff',
-                backgroundColor: '#4C5058',
-                padding: [3, 4],
-                borderRadius: 4
+                color: '#6E7079',
+                align: 'center',
+                padding: [4, 4]
               }
             }
           }
@@ -300,12 +290,19 @@ export class DashboardComponent implements OnInit, 
OnDestroy {
           type: 'shadow'
         }
       },
+      grid: {
+        top: '20%',
+        right: 0,
+        bottom: '20%',
+        left: 0
+      },
       xAxis: {
         type: 'category',
         data: [this.i18nSvc.fanyi('alert.severity.2'), 
this.i18nSvc.fanyi('alert.severity.1'), this.i18nSvc.fanyi('alert.severity.0')]
       },
       yAxis: {
-        type: 'value'
+        type: 'value',
+        show: false
       },
       series: [
         {


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to