@xpyjs/gantt-vue
Version:
Vue wrapper for x-gantt
133 lines (132 loc) • 3.56 kB
JavaScript
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
};