From 7c51117a561d9a978640febb36f7682a4fcbdba6 Mon Sep 17 00:00:00 2001 From: Matt Hill Date: Wed, 14 Jul 2021 00:40:36 -0600 Subject: [PATCH] skeleton list component --- .../skeleton-list.component.html | 16 +++++++ .../skeleton-list.component.module.ts | 18 ++++++++ .../skeleton-list.component.scss | 44 +++++++++++++++++++ .../skeleton-list/skeleton-list.component.ts | 20 +++++++++ .../app-metrics/app-metrics.module.ts | 2 + .../app-metrics/app-metrics.page.html | 15 +------ .../app-metrics/app-metrics.page.scss | 43 +----------------- .../server-metrics/server-metrics.module.ts | 4 +- .../server-metrics/server-metrics.page.html | 6 +-- 9 files changed, 107 insertions(+), 61 deletions(-) create mode 100644 ui/src/app/components/skeleton-list/skeleton-list.component.html create mode 100644 ui/src/app/components/skeleton-list/skeleton-list.component.module.ts create mode 100644 ui/src/app/components/skeleton-list/skeleton-list.component.scss create mode 100644 ui/src/app/components/skeleton-list/skeleton-list.component.ts diff --git a/ui/src/app/components/skeleton-list/skeleton-list.component.html b/ui/src/app/components/skeleton-list/skeleton-list.component.html new file mode 100644 index 000000000..5a43ad94f --- /dev/null +++ b/ui/src/app/components/skeleton-list/skeleton-list.component.html @@ -0,0 +1,16 @@ + + + +
+
+
+
+
+
+ + +
+
+
+
+
\ No newline at end of file diff --git a/ui/src/app/components/skeleton-list/skeleton-list.component.module.ts b/ui/src/app/components/skeleton-list/skeleton-list.component.module.ts new file mode 100644 index 000000000..e777c211c --- /dev/null +++ b/ui/src/app/components/skeleton-list/skeleton-list.component.module.ts @@ -0,0 +1,18 @@ +import { NgModule } from '@angular/core' +import { CommonModule } from '@angular/common' +import { SkeletonListComponent } from './skeleton-list.component' +import { IonicModule } from '@ionic/angular' +import { RouterModule } from '@angular/router' + +@NgModule({ + declarations: [ + SkeletonListComponent, + ], + imports: [ + CommonModule, + IonicModule, + RouterModule.forChild([]), + ], + exports: [SkeletonListComponent], +}) +export class SkeletonListComponentModule { } diff --git a/ui/src/app/components/skeleton-list/skeleton-list.component.scss b/ui/src/app/components/skeleton-list/skeleton-list.component.scss new file mode 100644 index 000000000..8ae532d55 --- /dev/null +++ b/ui/src/app/components/skeleton-list/skeleton-list.component.scss @@ -0,0 +1,44 @@ +$base-color: #3e3e3e; +$shine-color: #454545; +$animation-duration: 1.2s; + +@mixin background-gradient { + background-image: linear-gradient(90deg, $base-color 0px, $shine-color 40px, $base-color 80px); + background-size: 100px; +} + +.post { + height: 52px; + position: relative; + left: 12px; + background-color: var(--ion-item-background); + border-style: solid; + border-width: 0 0 1px 0; + border-color: #262626; + .label { + float: left; + left: 30px; + width: 50%; + height: 24px; + margin: 14px 0; + border-radius: 7px; + @include background-gradient; + animation: shine-lines $animation-duration infinite linear + } + .note { + float: right; + position: relative; + right: 24px; + width: 25%; + height: 24px; + margin: 14px 0; + border-radius: 7px; + @include background-gradient; + animation: shine-lines $animation-duration infinite linear + } +} + +@keyframes shine-lines { + 0% { background-position: -100px; } + 40%, 100% { background-position: 140px; } +} diff --git a/ui/src/app/components/skeleton-list/skeleton-list.component.ts b/ui/src/app/components/skeleton-list/skeleton-list.component.ts new file mode 100644 index 000000000..2f8e5d793 --- /dev/null +++ b/ui/src/app/components/skeleton-list/skeleton-list.component.ts @@ -0,0 +1,20 @@ +import { Component, Input } from '@angular/core' + +@Component({ + selector: 'skeleton-list', + templateUrl: './skeleton-list.component.html', + styleUrls: ['./skeleton-list.component.scss'], +}) +export class SkeletonListComponent { + @Input() groups: number + @Input() rows: number = 3 + groupsArr: number[] = [] + rowsArr: number[] = [] + + ngOnInit () { + if (this.groups) { + this.groupsArr = Array(Number(this.groups)).fill(0).map((_, i) => i) + } + this.rowsArr = Array(Number(this.rows)).fill(0).map((_, i) => i) + } +} diff --git a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.module.ts b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.module.ts index b15526a5d..a4afbc9d1 100644 --- a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.module.ts +++ b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.module.ts @@ -5,6 +5,7 @@ import { IonicModule } from '@ionic/angular' import { AppMetricsPage } from './app-metrics.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' import { SharingModule } from 'src/app/modules/sharing.module' +import { SkeletonListComponentModule } from 'src/app/components/skeleton-list/skeleton-list.component.module' const routes: Routes = [ { @@ -20,6 +21,7 @@ const routes: Routes = [ RouterModule.forChild(routes), PwaBackComponentModule, SharingModule, + SkeletonListComponentModule, ], declarations: [AppMetricsPage], }) diff --git a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html index d4813b285..e21c12060 100644 --- a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html +++ b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.html @@ -48,20 +48,7 @@ - -
-
-
-
-
-
-
-
-
-
-
-
-
+ diff --git a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.scss b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.scss index 29b21a6a0..eea898305 100644 --- a/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.scss +++ b/ui/src/app/pages/apps-routes/app-metrics/app-metrics.page.scss @@ -1,44 +1,3 @@ .metric-note { font-size: 16px; -} - -$base-color: #7b7b7b; -$shine-color: #8a8a8a; -$animation-duration: 1.2s; - -@mixin background-gradient { - background-image: linear-gradient(90deg, $base-color 0px, $shine-color 40px, $base-color 80px); - background-size: 100px; -} - -.post { - height: 52px; - position: relative; - left: 12px; - .label { - float: left; - left: 30px; - width: 55%; - height: 24px; - margin: 14px 0; - border-radius: 7px; - @include background-gradient; - animation: shine-lines $animation-duration infinite linear - } - .note { - float: right; - position: relative; - right: 12px; - width: 30%; - height: 24px; - margin: 14px 0; - border-radius: 7px; - @include background-gradient; - animation: shine-lines $animation-duration infinite linear - } -} - -@keyframes shine-lines { - 0% { background-position: -100px; } - 40%, 100% { background-position: 140px; } -} +} \ No newline at end of file diff --git a/ui/src/app/pages/server-routes/server-metrics/server-metrics.module.ts b/ui/src/app/pages/server-routes/server-metrics/server-metrics.module.ts index 5cc4b27bb..151a11da9 100644 --- a/ui/src/app/pages/server-routes/server-metrics/server-metrics.module.ts +++ b/ui/src/app/pages/server-routes/server-metrics/server-metrics.module.ts @@ -4,7 +4,7 @@ import { Routes, RouterModule } from '@angular/router' import { IonicModule } from '@ionic/angular' import { ServerMetricsPage } from './server-metrics.page' import { PwaBackComponentModule } from 'src/app/components/pwa-back-button/pwa-back.component.module' -import { TextSpinnerComponentModule } from 'src/app/components/text-spinner/text-spinner.component.module' +import { SkeletonListComponentModule } from 'src/app/components/skeleton-list/skeleton-list.component.module' const routes: Routes = [ { @@ -19,7 +19,7 @@ const routes: Routes = [ IonicModule, RouterModule.forChild(routes), PwaBackComponentModule, - TextSpinnerComponentModule, + SkeletonListComponentModule, ], declarations: [ServerMetricsPage], }) diff --git a/ui/src/app/pages/server-routes/server-metrics/server-metrics.page.html b/ui/src/app/pages/server-routes/server-metrics/server-metrics.page.html index a114156ae..72413763e 100644 --- a/ui/src/app/pages/server-routes/server-metrics/server-metrics.page.html +++ b/ui/src/app/pages/server-routes/server-metrics/server-metrics.page.html @@ -8,9 +8,9 @@ - + - + {{ metricGroup.key }} @@ -22,6 +22,6 @@ - + \ No newline at end of file