Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | 33x 91x 91x 91x 91x 1x 1x 1x 91x 92x 91x 637x 652x 98x 41x 1x 91x | import { Button } from "../../../../../ahuora-design-system/ui/button";
import {
Dialog,
DialogClose,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
DialogTrigger,
} from "../../../../../ahuora-design-system/ui/dialog";
import { useUnitopsSimulationobjectsAddCustomPropertyTemplateCreateMutation } from "../../../../../api/apiStore.gen";
import {
useCurrentObject,
useCurrentObjectId,
} from "../../../../../hooks/flowsheetObjects";
import formulaTemplates from "@/data/formulaTemplates.json";
import type { FormulaTemplates } from "@/data/formulaTemplates.d.ts";
import { useState } from "react";
formulaTemplates as unknown as FormulaTemplates;
export function FormulaTemplates() {
const [addTemplate] = useUnitopsSimulationobjectsAddCustomPropertyTemplateCreateMutation();
const [open, setOpen] = useState(false);
const currentObject = useCurrentObject();
const onAddTemplate = (templateKey: string) => {
Iif (!currentObject) {
console.error("No current object found");
return;
}
setOpen(false);
addTemplate({
id: currentObject.id,
addPropertyTemplate: {
templateKey: templateKey,
},
});
};
const propertyKeys = currentObject?.properties.ContainedProperties.map(
(property) => property.key
);
const additionalMetrics = Object.entries(formulaTemplates).filter(
// Filter to only include templates that have all required properties
([key, template]) => (template.required_properties.every(
(prop) => propertyKeys?.includes(prop)
// And have not already been added to the model.
) && template.fields.every(
(field) => !propertyKeys?.includes(field.key)
)
)
).map(([key, template]) => (
<Button
key={key}
variant="outline"
className="text-wrap mr-2 mb-2"
onClick={() => onAddTemplate(key)}
>
{template.name}
</Button>
))
return (
additionalMetrics.length != 0 && <div>
<div className="py-2">
Additional Metrics
</div>
<div>
{additionalMetrics}
</div>
</div>
);
}
|