IKHSAN
ENID Baca dalam Bahasa Indonesia

opendesk

Public
Branch
main
Latest commit
08d9f3328 October 2026

meta.ts

Open raw
import { createResource } from "frappe-ui";
import { reactive } from "vue";

const doctypeMeta = reactive({});
const userSettings = reactive({});

export function getMeta(doctype: string) {
  const meta = createResource({
    url: "frappe.desk.form.load.getdoctype",
    params: {
      doctype: doctype,
      with_parent: 1,
      cached_timestamp: null,
    },
    cache: ["Meta", doctype],
    onSuccess: (res) => {
      let dtMetas = res.docs;
      for (let dtMeta of dtMetas) {
        doctypeMeta[dtMeta.name] = dtMeta;
      }

      userSettings[doctype] = JSON.parse(res.user_settings);
    },
  });
  if (!doctypeMeta[doctype] && !meta.loading) {
    meta.fetch();
  }
  function getFields(dt = null) {
    dt = dt || doctype;
    return doctypeMeta[dt]?.fields.map((f) => f) || [];
  }

  function getField(fieldname: string) {
    return (
      doctypeMeta[doctype]?.fields.find((f) => f.fieldname === fieldname) ||
      null
    );
  }

  return { meta, doctypeMeta, getField, getFields };
}
bytes
1,010
lines
42
Type
ts
Latest commit
28 October 2026