Files
lucent-laravel/front/js/svelte/records/Preview.js
T
2024-04-03 16:25:59 +03:00

57 lines
1.6 KiB
JavaScript

import Mustache from "mustache";
import {stripHtml} from "../../helpers";
import {getContext} from "svelte";
export function previewTitle(record) {
const channel = getContext("channel");
let schema = channel.schemas.find((aSchema) => aSchema.name === record?.schema);
if (!schema?.titleTemplate) {
return noTemplate(schema, record);
}
let template = Mustache.parse(schema.titleTemplate);
let render = Mustache.render(schema.titleTemplate, record.data);
if (!render || render === "") {
return noTemplate(schema, record);
}
return stripHtml(render.slice(0, 300));
}
export function previewEdgeTitle(edge) {
const channel = getContext("channel");
let edgeSchemaName = channel.schemas
.find((aSchema) => aSchema.name === edge?.sourceSchema)
.fields.find(f => f.name === edge.field).data;
let schema = channel.schemas.find((aSchema) => aSchema.name === edgeSchemaName);
if (!schema?.titleTemplate) {
return noTemplate(schema, edge);
}
let template = Mustache.parse(schema.titleTemplate);
let render = Mustache.render(schema.titleTemplate, edge.data);
if (!render || render === "") {
return noTemplate(schema, edge);
}
return stripHtml(render.slice(0, 300));
}
function noTemplate(schema, record) {
if (schema?.type === "files") {
return record._file.path;
}
let title = stripHtml(
record?.data[schema.fields.filter((f) => f.info.name === "text")[0]?.name]
).slice(0, 300);
if (title === "") {
return "Untitled";
}
return title;
}