Dictionary.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. import React, { useEffect } from "react";
  2. import InputRow from "../../form-components/InputRow";
  3. import useFormField from "../hooks/useFormField";
  4. import {
  5. type GetFinalVariablesFunction,
  6. type DictionaryField,
  7. type DictionaryFieldState,
  8. } from "../types";
  9. import DictionaryEditor from "components/porter/DictionaryEditor";
  10. import { hasSetValue } from "../utils";
  11. const Dictionary: React.FC<DictionaryField> = (props) => {
  12. const {
  13. state,
  14. variables,
  15. setVars,
  16. setValidation,
  17. } = useFormField<DictionaryFieldState>(props.id, {
  18. initValidation: {
  19. validated: hasSetValue(props),
  20. },
  21. initVars: {
  22. [props.variable]: hasSetValue(props) ? props.value[0] : undefined,
  23. },
  24. });
  25. if (state == undefined) return <></>;
  26. return (
  27. <DictionaryEditor
  28. value={props?.value?.[0]}
  29. onChange={(x: any) => {
  30. setVars((vars) => {
  31. return {
  32. ...vars,
  33. [props.variable]: x,
  34. };
  35. });
  36. setValidation((prev) => {
  37. return {
  38. ...prev,
  39. validated: true,
  40. };
  41. });
  42. }}
  43. />
  44. );
  45. };
  46. export const getFinalVariablesForStringInput: GetFinalVariablesFunction = (
  47. vars,
  48. props: DictionaryField
  49. ) => {
  50. const val =
  51. vars[props.variable] != undefined && vars[props.variable] != null
  52. ? vars[props.variable] : hasSetValue(props)
  53. ? props.value[0] : undefined;
  54. return {
  55. [props.variable]:
  56. props.settings?.unit && !props.settings.omitUnitFromValue
  57. ? val + props.settings.unit
  58. : val,
  59. };
  60. };
  61. export default Dictionary;