Use standard spinner for gallery loading.

This commit is contained in:
Dermot Duffy
2023-01-29 13:54:39 -08:00
parent 95ced8f177
commit 17c4a5a85f
4 changed files with 20 additions and 46 deletions
+13 -8
View File
@@ -27,13 +27,13 @@ import { View } from '../view/view.js';
import { renderProgressIndicator } from './message.js'; import { renderProgressIndicator } from './message.js';
import './thumbnail.js'; import './thumbnail.js';
import { THUMBNAIL_DETAILS_WIDTH_MIN } from './thumbnail.js'; import { THUMBNAIL_DETAILS_WIDTH_MIN } from './thumbnail.js';
import { createRef, ref, Ref } from 'lit/directives/ref.js'; import { createRef, Ref } from 'lit/directives/ref.js';
import { MediaQueriesClassifier } from '../view/media-queries-classifier'; import { MediaQueriesClassifier } from '../view/media-queries-classifier';
import { EventMediaQueries, RecordingMediaQueries } from '../view/media-queries'; import { EventMediaQueries, RecordingMediaQueries } from '../view/media-queries';
import { EventQuery, MediaQuery, RecordingQuery } from '../camera/types'; import { EventQuery, MediaQuery, RecordingQuery } from '../camera/types';
import { MediaQueriesResults } from '../view/media-queries-results'; import { MediaQueriesResults } from '../view/media-queries-results';
import { errorToConsole } from '../utils/basic'; import { errorToConsole } from '../utils/basic';
import "./media-filter"; import './media-filter';
const GALLERY_MEDIA_CHUNK_SIZE = 100; const GALLERY_MEDIA_CHUNK_SIZE = 100;
@@ -105,10 +105,10 @@ export class FrigateCardGallery extends LitElement {
return html` return html`
<frigate-card-surround-basic <frigate-card-surround-basic
.drawerIcons=${{ .drawerIcons=${{
'right': { right: {
closed: 'mdi:filter-cog-outline', closed: 'mdi:filter-cog-outline',
open: 'mdi:filter-cog' open: 'mdi:filter-cog',
} },
}} }}
> >
<frigate-card-media-filter <frigate-card-media-filter
@@ -126,6 +126,7 @@ export class FrigateCardGallery extends LitElement {
.galleryConfig=${this.galleryConfig} .galleryConfig=${this.galleryConfig}
.cameras=${this.cameras} .cameras=${this.cameras}
.cameraManager=${this.cameraManager} .cameraManager=${this.cameraManager}
.cardWideConfig=${this.cardWideConfig}
> >
</frigate-card-gallery-core> </frigate-card-gallery-core>
</frigate-card-surround-basic> </frigate-card-surround-basic>
@@ -163,6 +164,9 @@ export class FrigateCardGalleryCore extends LitElement {
@property({ attribute: false }) @property({ attribute: false })
public cameraManager?: CameraManager; public cameraManager?: CameraManager;
@property({ attribute: false })
public cardWideConfig?: CardWideConfig;
protected _intersectionObserver: IntersectionObserver; protected _intersectionObserver: IntersectionObserver;
protected _resizeObserver: ResizeObserver; protected _resizeObserver: ResizeObserver;
protected _refLoader: Ref<HTMLElement> = createRef(); protected _refLoader: Ref<HTMLElement> = createRef();
@@ -345,9 +349,10 @@ export class FrigateCardGalleryCore extends LitElement {
</frigate-card-thumbnail>`, </frigate-card-thumbnail>`,
)} )}
${this._showExtensionLoader ${this._showExtensionLoader
? html` <ha-card ${ref(this._refLoader)}> ? html`${renderProgressIndicator({
<span class="dotdotdot"></span> cardWideConfig: this.cardWideConfig,
</ha-card>` componentRef: this._refLoader,
})}`
: ''} : ''}
`; `;
} }
+3
View File
@@ -1,6 +1,7 @@
import { CSSResultGroup, html, LitElement, TemplateResult, unsafeCSS } from 'lit'; import { CSSResultGroup, html, LitElement, TemplateResult, unsafeCSS } from 'lit';
import { customElement, property } from 'lit/decorators.js'; import { customElement, property } from 'lit/decorators.js';
import { classMap } from 'lit/directives/class-map.js'; import { classMap } from 'lit/directives/class-map.js';
import { ref, Ref } from 'lit/directives/ref.js';
import { TROUBLESHOOTING_URL } from '../const.js'; import { TROUBLESHOOTING_URL } from '../const.js';
import { localize } from '../localize/localize.js'; import { localize } from '../localize/localize.js';
import messageStyle from '../scss/message.scss'; import messageStyle from '../scss/message.scss';
@@ -118,9 +119,11 @@ export function renderMessage(message: Message): TemplateResult {
export function renderProgressIndicator(options?: { export function renderProgressIndicator(options?: {
message?: string; message?: string;
cardWideConfig?: CardWideConfig; cardWideConfig?: CardWideConfig;
componentRef?: Ref<HTMLElement>,
}): TemplateResult { }): TemplateResult {
return html` return html`
<frigate-card-progress-indicator <frigate-card-progress-indicator
${options?.componentRef ? ref(options.componentRef) : ''}
.message=${options?.message || ''} .message=${options?.message || ''}
.animated=${options?.cardWideConfig?.performance?.features .animated=${options?.cardWideConfig?.performance?.features
.animated_progress_indicator ?? true} .animated_progress_indicator ?? true}
+4 -37
View File
@@ -1,5 +1,3 @@
@use 'dotdotdot.scss';
:host { :host {
width: 100%; width: 100%;
height: auto; height: auto;
@@ -25,41 +23,6 @@
display: none; display: none;
} }
:host ha-card {
min-width: 100%;
aspect-ratio: 1/1;
display: flex;
justify-content: center;
align-items: center;
box-sizing: border-box;
text-align: center;
color: var(--primary-text-color, white);
border: 1px solid var(--primary-color);
border-radius: var(
--frigate-card-css-border-radius,
var(--ha-card-border-radius, 4px)
);
// Folder background color should match the thumbnail element background
// color.
background-color: var(--primary-background-color, black);
padding: 10px;
line-height: 1;
overflow: hidden;
// Some themes override these values (with high CSS specificity) which is
// intended for full cards rather than internal ones. Since we use multiple of
// these for folders, we cannot use an ID and need to resort to !important.
margin: 0px !important;
box-shadow: none !important;
transition: transform 0.2s linear;
}
ha-card:hover {
transform: scale(1.04);
}
ha-card,
frigate-card-thumbnail { frigate-card-thumbnail {
height: 100%; height: 100%;
max-height: var(--frigate-card-thumbnail-size); max-height: var(--frigate-card-thumbnail-size);
@@ -67,3 +30,7 @@ frigate-card-thumbnail {
frigate-card-thumbnail:not([details]) { frigate-card-thumbnail:not([details]) {
width: 100%; width: 100%;
} }
frigate-card-progress-indicator {
// Progress indicator spans the grid.
grid-column: 1 / -1;
}
-1
View File
@@ -6,7 +6,6 @@
// - TODO: Debug statement in card wide config. // - TODO: Debug statement in card wide config.
// Gallery: // Gallery:
// - TODO: Use spinner for gallery loading / cardwideconfig not dotdotdot
// - TODO: Handle all TODOs in media filter and media filter core. // - TODO: Handle all TODOs in media filter and media filter core.
// - TODO: Make media filter slot choice configurable (gallery.ts). // - TODO: Make media filter slot choice configurable (gallery.ts).
// - TODO: Filter panel expands from right can occasionally 'stick' open. // - TODO: Filter panel expands from right can occasionally 'stick' open.