Files
HiveGrid-Wireframes/hivegrid-cloud/apps/web/app/utils/helpers/RowColumnsHelper.ts
T

79 lines
2.3 KiB
TypeScript

import { Property } from "@toolctrl/db/prisma-browser";
import { EntityWithDetails } from "../db/entities/entities.db.server";
import { defaultDisplayProperties } from "./PropertyHelper";
function isPropertyVisible(property: Property) {
return !["id"].includes(property.name);
}
function getDefaultEntityColumns(entity: EntityWithDetails) {
let properties: { name: string; title: string; visible: boolean }[] = [];
// first default properties
properties = [
...properties,
...defaultDisplayProperties
.filter((f) => f.position === "before")
.map((p) => {
return { name: p.name, title: p.title, visible: p.displayedByDefault };
}),
];
// properties
const entityProperties = entity.properties
.filter((f) => !f.isDefault)
.map((i) => {
return { name: i.name, title: i.title, visible: true };
});
if (entityProperties.length > 0) {
properties = [...properties, ...entityProperties];
}
// parents
const parents = entity.parentEntities
.filter((f) => !f.hiddenIfEmpty)
.map((i) => {
return { name: "parent." + i.parent.name, title: i.parent.titlePlural, visible: true };
});
if (parents.length > 0) {
properties = [...properties, ...parents];
}
// children
const children = entity.childEntities
.filter((f) => !f.hiddenIfEmpty)
.map((i) => {
return { name: "child." + i.child.name, title: i.child.titlePlural, visible: true };
});
if (children.length > 0) {
properties = [...properties, ...children];
}
const hiddenParents = entity.parentEntities.filter((f) => f.hiddenIfEmpty);
if (hiddenParents.length > 0) {
properties = [...properties, { name: "default.hiddenParents", title: "", visible: true }];
}
const hiddenChildren = entity.childEntities.filter((f) => f.hiddenIfEmpty);
if (hiddenChildren.length > 0) {
properties = [...properties, { name: "default.hiddenChildren", title: "", visible: true }];
}
// last default properties
properties = [
...properties,
...defaultDisplayProperties
.filter((f) => f.position === "after")
.map((p) => {
return { name: p.name, title: p.title, visible: p.displayedByDefault };
}),
];
return properties;
}
export default {
isPropertyVisible,
getDefaultEntityColumns,
};