| import {RgthreeCustomElement} from "rgthree/common/components/base_custom_element";
|
| import {RgthreeModelInfo} from "typings/rgthree";
|
|
|
| export class RgthreeModelInfoCard extends RgthreeCustomElement {
|
| static override readonly NAME = "rgthree-model-info-card";
|
| static override readonly TEMPLATES = "components/model-info-card.html";
|
| static override readonly CSS = "components/model-info-card.css";
|
| static override readonly USE_SHADOW = false;
|
|
|
| private data: RgthreeModelInfo = {};
|
|
|
| getModified(
|
| value: number,
|
| data: any,
|
| currentElement: HTMLElement,
|
| contextElement: RgthreeModelInfoCard,
|
| ) {
|
| const date = new Date(value);
|
| return String(`${date.toLocaleDateString()} ${date.toLocaleTimeString()}`);
|
| }
|
|
|
| getCivitaiLink(links: string[] | undefined) {
|
| return links?.find((i) => i.includes("civitai.com/models")) || null;
|
| }
|
|
|
| setModelData(data: RgthreeModelInfo) {
|
| this.data = data;
|
| }
|
|
|
| hasBaseModel(baseModel: string) {
|
| return this.data.baseModel === baseModel;
|
| }
|
|
|
| hasData(field: string) {
|
|
|
| if (field === "civitai") {
|
| return !!this.getCivitaiLink(this.data.links)?.length;
|
| }
|
| return !!(this.data as any)[field];
|
| }
|
|
|
| matchesQueryText(query: string) {
|
| return (this.data.name || this.data.file)?.includes(query);
|
| }
|
|
|
| hide() {
|
| this.classList.add("-is-hidden");
|
| }
|
|
|
| show() {
|
| this.classList.remove("-is-hidden");
|
| }
|
| }
|
|
|