UNPKG

@xpyjs/gantt-vue

Version:

Vue wrapper for x-gantt

133 lines (132 loc) 3.56 kB
import { defineComponent as f, ref as p, watch as k, onMounted as v, onUnmounted as b, createElementBlock as x, openBlock as _, nextTick as g } from "vue"; import { XGantt as w } from "@xpyjs/gantt-core"; import { colorjs as j, dayjs as V, generateId as C } from "@xpyjs/gantt-core"; const h = /* @__PURE__ */ f({ __name: "GanttVue", props: { options: { default: () => ({}) } }, emits: ["loaded", "error", "update:link", "create:link", "select:link", "contextmenu:link", "select", "click:row", "dblclick:row", "contextmenu:row", "drag:row", "click:slider", "dblclick:slider", "contextmenu:slider", "move", "enter:slider", "hover:slider", "leave:slider", "click:baseline", "contextmenu:baseline", "enter:baseline", "hover:baseline", "leave:baseline"], setup(n, { expose: a, emit: o }) { const l = n, i = o, c = p(); let e = null; const d = async () => { c.value && (await g(), e = new w(c.value, l.options), u()); }, u = () => { if (!e) return; [ "loaded", "error", "update:link", "create:link", "select:link", "contextmenu:link", "select", "click:row", "dblclick:row", "contextmenu:row", "drag:row", "click:slider", "dblclick:slider", "contextmenu:slider", "move", "enter:slider", "hover:slider", "leave:slider", "click:baseline", "contextmenu:baseline", "enter:baseline", "hover:baseline", "leave:baseline" ].forEach((r) => { e.on( r, (...m) => { i(r, ...m); } ); }); }; return k( () => l, (t) => { e && e.update(t.options); }, { deep: !0 } ), a({ /** * 获取甘特图实例 */ getInstance: () => e, /** * 跳转日期 */ jumpTo: (t) => { e && e.jumpTo(t); }, /** * 获取指定任务的所有相关联的完整路径,包含所有连接线与任务节点 */ getDataChain: (t) => { if (e) return e.getDataChain(t); }, /** * 滚动到指定任务位置 */ scrollTo: (t, r) => { e && e.scrollTo(t, r); }, /** * 获取某一条数据 */ getDataById: (t) => { if (e) return e.getDataById(t); }, /** * 获取当前数据集合的数量 */ getDataSize: () => { if (e) return e.getDataSize(); }, /** * 移除指定 ID 的数据。该操作会直接修改当前数据源,并且不可逆,请谨慎使用 * @param id 数据 ID * @returns 是否成功移除 * * @example * ```typescript * const success = gantt.removeDataById('task-1'); * ``` */ removeDataById(t) { return (e == null ? void 0 : e.removeDataById(t)) || !1; } }), v(() => { d(); }), b(() => { e && (e.destroy(), e = null); }), (t, r) => (_(), x("div", { ref_key: "containerRef", ref: c, class: "x-gantt-container" }, null, 512)); } }), y = (n, a) => { const o = n.__vccOpts || n; for (const [l, i] of a) o[l] = i; return o; }, D = /* @__PURE__ */ y(h, [["__scopeId", "data-v-b602ee75"]]), s = D; s.install = (n) => { n.component("XGanttVue", s); }; export { s as XGanttVue, j as colorjs, V as dayjs, s as default, C as generateId };