From 15a7037b0451ca8047a34c7c5812f47dfcb4e5e7 Mon Sep 17 00:00:00 2001 From: csantosm <4a.santos@gmail.com> Date: Fri, 10 Jun 2022 11:27:43 +0200 Subject: [PATCH] openvidu-components: Added admin dashboard --- .../openvidu-angular/doc/tsconfig.doc.json | 1 + .../admin/dashboard/dashboard.component.css | 186 ++++++++++++++++++ .../admin/dashboard/dashboard.component.html | 145 ++++++++++++++ .../dashboard/dashboard.component.spec.ts | 25 +++ .../admin/dashboard/dashboard.component.ts | 153 ++++++++++++++ .../src/lib/admin/login/login.component.css | 68 +++++++ .../src/lib/admin/login/login.component.html | 44 +++++ .../lib/admin/login/login.component.spec.ts | 25 +++ .../src/lib/admin/login/login.component.ts | 110 +++++++++++ .../src/lib/directives/api/admin.directive.ts | 86 ++++++++ .../directives/api/api.directive.module.ts | 10 +- .../src/lib/openvidu-angular.module.ts | 11 +- .../src/lib/pipes/recording.pipe.ts | 31 +++ .../config/openvidu-angular.config.service.ts | 7 + .../openvidu-angular/src/public-api.ts | 3 + 15 files changed, 900 insertions(+), 5 deletions(-) create mode 100644 openvidu-components-angular/projects/openvidu-angular/src/lib/admin/dashboard/dashboard.component.css create mode 100644 openvidu-components-angular/projects/openvidu-angular/src/lib/admin/dashboard/dashboard.component.html create mode 100644 openvidu-components-angular/projects/openvidu-angular/src/lib/admin/dashboard/dashboard.component.spec.ts create mode 100644 openvidu-components-angular/projects/openvidu-angular/src/lib/admin/dashboard/dashboard.component.ts create mode 100644 openvidu-components-angular/projects/openvidu-angular/src/lib/admin/login/login.component.css create mode 100644 openvidu-components-angular/projects/openvidu-angular/src/lib/admin/login/login.component.html create mode 100644 openvidu-components-angular/projects/openvidu-angular/src/lib/admin/login/login.component.spec.ts create mode 100644 openvidu-components-angular/projects/openvidu-angular/src/lib/admin/login/login.component.ts create mode 100644 openvidu-components-angular/projects/openvidu-angular/src/lib/directives/api/admin.directive.ts diff --git a/openvidu-components-angular/projects/openvidu-angular/doc/tsconfig.doc.json b/openvidu-components-angular/projects/openvidu-angular/doc/tsconfig.doc.json index eee9aaee..40ed982c 100644 --- a/openvidu-components-angular/projects/openvidu-angular/doc/tsconfig.doc.json +++ b/openvidu-components-angular/projects/openvidu-angular/doc/tsconfig.doc.json @@ -1,5 +1,6 @@ { "include": [ + "../src/lib/admin/**/*.ts", "../src/lib/components/**/*.ts", "../src/lib/directives/**/*.ts", "../src/lib/services/**/*.ts", diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/admin/dashboard/dashboard.component.css b/openvidu-components-angular/projects/openvidu-angular/src/lib/admin/dashboard/dashboard.component.css new file mode 100644 index 00000000..6d98062f --- /dev/null +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/admin/dashboard/dashboard.component.css @@ -0,0 +1,186 @@ +.dashboard-container { + height: 100%; +} + +.header { + height: 50px; + background-color: var(--ov-secondary-color); + color: var(--ov-text-color); +} +.dashboard-body { + height: calc(100% - 75px); +} + +#toolbar-search { + width: 100%; + height: 40px; + background-color: var(--ov-light-color); + padding: 6px; + display: flex; + align-items: center; +} + +#toolbar-sort-div { + display: flex; + flex-direction: row; + align-items: center; +} + +#sort-menu-btn { + margin-left: 5px; + background-color: var(--ov-panel-background); +} + +.search-bar { + height: 95%; + width: 30%; + display: flex; + background-color: var(--ov-panel-background); + padding: 0px 10px; + border-radius: var(--ov-panel-radius); +} + +#search-input { + width: 100%; + height: 16px; + margin: auto; + background-color: transparent; + display: block; + border: none; + padding: 0; + word-wrap: break-word; + white-space: pre-wrap; + resize: none; + outline: none; + + -webkit-box-shadow: none; + -moz-box-shadow: none; + box-shadow: none; + font-family: 'Roboto', 'RobotoDraft', Helvetica, Arial, sans-serif; +} +#refresh-btn { + float: right; +} + +#refresh-btn mat-icon { + color: inherit; +} + +.refresh-btn { + position: absolute; + right: 0; + display: inline-flex; +} + +.recordings-container { + height: calc(100% - 51px); + display: grid; + grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); + overflow-y: auto; + overflow-x: hidden; +} + +.recording-card { + background-color: var(--ov-panel-background); +} + +.video-div-container { + position: relative; + text-align: center; + width: 100%; + height: 42%; + overflow: hidden; + background-color: var(--ov-light-color); + display: flex; + justify-content: center; + align-items: center; +} +.video-div-container img { + border-radius: var(--ov-video-radius); + display: inline; + position: relative; + max-width: 100%; + max-height: 100%; +} + +.item { + flex-grow: 1; + margin: 10px; +} + +.item + .item { + margin-left: 2%; +} + +.video-btns { + position: absolute; + transform: translate(-50%, -50%); + margin-right: -50%; + top: 50%; + left: 50%; + background-color: var(--ov-logo-background-color); + border-radius: var(--ov-panel-radius); +} + +.video-btns button #play { + color: var(--ov-text-color); +} +.video-btns button #download { + color: var(--ov-tertiary-color); +} +.video-btns button #delete { + color: var(--ov-warn-color); +} + +.video-info-container > div { + width: 100%; + height: 100%; + display: table; + table-layout: fixed; + box-sizing: border-box; + margin-top: 20px; +} +.video-div-tag:first-child { + margin-top: 20px; +} + +.video-div-tag { + display: table-row; +} + +.video-card-tag { + font-size: 13px; + color: var(--ov-panel-text-color); +} +.video-card-value { + float: right; + font-size: 13.5px; +} + +.footer { + height: 25px; + background-color: var(--ov-secondary-color); + color: var(--ov-text-color); + position: absolute; + bottom: 0; + left: 0; + font-size: 12px; +} +.footer a { + color: var(--ov-tertiary-color); +} + +.no-recordings-warn { + height: calc(100% - 52px); + width: 100%; + display: table; + text-align: center; +} +::ng-deep .mat-form-field-appearance-fill .mat-form-field-flex { + padding: 0px !important; + background-color: var(--ov-light-color) !important; +} + +::ng-deep .mat-form-field-wrapper { + height: 100% !important; +} diff --git a/openvidu-components-angular/projects/openvidu-angular/src/lib/admin/dashboard/dashboard.component.html b/openvidu-components-angular/projects/openvidu-angular/src/lib/admin/dashboard/dashboard.component.html new file mode 100644 index 00000000..59f13eaf --- /dev/null +++ b/openvidu-components-angular/projects/openvidu-angular/src/lib/admin/dashboard/dashboard.component.html @@ -0,0 +1,145 @@ +