IKHSAN
ENID Baca dalam Bahasa Indonesia

opendesk

Public
Branch
main
Latest commit
08d9f3328 October 2026

fieldDependency.ts

Open raw
import { call, createListResource } from "frappe-ui";
import { computed, reactive } from "vue";

export const fieldDependenciesList = createListResource({
  doctype: "OD Form Script",
  filters: { is_standard: 1, name: ["like", "%Field Dependency%"] },
  fields: ["name", "enabled", "owner"],
  cache: ["FD", "List"],
  orderBy: "modified desc",
  start: 0,
  pageLength: 999,
});

export const hiddenChildFields = computed(() => {
  let _fields = [];
  fieldDependenciesList.data?.forEach((item) => {
    let [_, parent, child] = item.name.split("-");
    if (parent && child) {
      _fields.push(child);
      _fields.push(parent);
    }
  });
  return _fields;
});

const optionsMap = reactive({});

export function clearFieldOptionsCache(): void {
  Object.keys(optionsMap).forEach((key) => delete optionsMap[key]);
}

export async function getFieldOptions(field: any): Promise<string[]> {
  if (optionsMap[field.value]) {
    return optionsMap[field.value];
  }

  if (field.type === "Select") {
    optionsMap[field.value] = field.options.split("\n");
    return optionsMap[field.value];
  } else if (field.type === "Link") {
    let options = await call("frappe.client.get_list", {
      doctype: field.options,
      fields: ["name"],
      limit_page_length: 999,
    });
    optionsMap[field.value] = options.map((o) => o.name);
    return optionsMap[field.value];
  }
}
bytes
1,382
lines
50
Type
ts
Latest commit
28 October 2026