vue-gantt-3
Version:
A gantt component for Vue 3
1 lines • 4.28 kB
Source Map (JSON)
{"version":3,"file":"common.mjs","sources":["../../../src/utils/common.ts"],"sourcesContent":["\nexport const getRound = (floatNum: number, num = 3) => {\n return parseFloat(floatNum.toFixed(num));\n};\n\n/**\n * Traversing the tree, function will stop traversing once it returns false\n * @param {Array} tree\n * @param {Function} fn\n * @param {String} childrenKey\n * @param parent\n *\n */\nexport function treeForEachSkipChildren<T>(\n tree:T[],\n fn:(node:T, parent?:T|undefined) => boolean|void|'skipChildren',\n childrenKey = 'children',\n parent?:T\n) {\n let size = tree.length;\n for (let i = 0; i < size; i++) {\n const curNode = tree[i];\n const res = fn(curNode, parent);\n if (res === false) return false;\n if (res === 'skipChildren') continue;\n\n const children = (curNode as any)?.[childrenKey];\n if (children?.length) {\n if (treeForEachSkipChildren(children, fn, childrenKey, curNode) === false) {\n return false;\n }\n }\n\n }\n}\n\n/**\n * Traversing the tree, function will stop traversing once it returns false\n * @param {Array} tree\n * @param {Function} fn\n * @param {String} childrenKey\n * @param parent\n *\n */\nexport function treeForEach<T>(\n tree:T[],\n fn:(node:T, parent?:T|undefined) => boolean|void,\n childrenKey = 'children',\n parent?:T\n) {\n let size = tree.length;\n for (let i = 0; i < size; i++) {\n const curNode = tree[i];\n if (fn(curNode, parent) === false) return false;\n const children = (curNode as any)?.[childrenKey];\n if (children?.length) {\n if (treeForEach(children, fn, childrenKey, curNode) === false) {\n return false;\n }\n }\n\n }\n}\n\nexport const sleep = (s = 0) => new Promise(r => setTimeout(r, s * 1000));\n\nexport const toMap = <K=string, V=any>(items: Array<V> | Set<V>, idKey = 'id'): Map<K, V> => {\n const map = new Map<K, V>();\n for (let it of items) {\n map.set(it[idKey], it);\n }\n return map;\n};\n\nexport const arrangementArr = <T>(source: T[], target: T[], idKey = 'id') => {\n const targetIds = target.map(item => item[idKey] as string);\n const arr = new Array<T>(source.length);\n const indexMap = new Map<string, number>();\n\n targetIds.forEach((id, index) => {\n indexMap.set(id, index);\n });\n\n const unMatchArr = source.filter((item) => {\n const id = item[idKey] as string;\n if (indexMap.has(id)) {\n let index = indexMap.get(id) as number;\n arr[index] = item;\n }\n return !indexMap.has(id);\n });\n\n if (unMatchArr.length > 0) {\n let index = 0;\n for (let i = 0; i < arr.length; i++) {\n if (arr[i] === undefined) {\n arr[i] = unMatchArr[index++];\n }\n if (index >= unMatchArr.length) {\n break;\n }\n }\n }\n return arr.filter<T>(item => item !== undefined);\n};"],"names":[],"mappings":"AACO,MAAM,WAAW,CAAC,UAAkB,MAAM,MAAM;AACrD,SAAO,WAAW,SAAS,QAAQ,GAAG,CAAC;AACzC;AAUO,SAAS,wBACd,MACA,IACA,cAAc,YACd,QACA;AACA,MAAI,OAAO,KAAK;AAChB,WAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AACvB,UAAA,UAAU,KAAK,CAAC;AAChB,UAAA,MAAM,GAAG,SAAS,MAAM;AAC1B,QAAA,QAAQ,MAAc,QAAA;AAC1B,QAAI,QAAQ,eAAgB;AAEtB,UAAA,WAAY,mCAAkB;AACpC,QAAI,qCAAU,QAAQ;AACpB,UAAI,wBAAwB,UAAU,IAAI,aAAa,OAAO,MAAM,OAAO;AAClE,eAAA;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAGJ;AAUO,SAAS,YACd,MACA,IACA,cAAc,YACd,QACA;AACA,MAAI,OAAO,KAAK;AAChB,WAAS,IAAI,GAAG,IAAI,MAAM,KAAK;AACvB,UAAA,UAAU,KAAK,CAAC;AACtB,QAAI,GAAG,SAAS,MAAM,MAAM,MAAc,QAAA;AACpC,UAAA,WAAY,mCAAkB;AACpC,QAAI,qCAAU,QAAQ;AACpB,UAAI,YAAY,UAAU,IAAI,aAAa,OAAO,MAAM,OAAO;AACtD,eAAA;AAAA,MAAA;AAAA,IACT;AAAA,EACF;AAGJ;AAYO,MAAM,iBAAiB,CAAI,QAAa,QAAa,QAAQ,SAAS;AAC3E,QAAM,YAAY,OAAO,IAAI,CAAQ,SAAA,KAAK,KAAK,CAAW;AAC1D,QAAM,MAAM,IAAI,MAAS,OAAO,MAAM;AAChC,QAAA,+BAAe,IAAoB;AAE/B,YAAA,QAAQ,CAAC,IAAI,UAAU;AACtB,aAAA,IAAI,IAAI,KAAK;AAAA,EAAA,CACvB;AAED,QAAM,aAAa,OAAO,OAAO,CAAC,SAAS;AACnC,UAAA,KAAK,KAAK,KAAK;AACjB,QAAA,SAAS,IAAI,EAAE,GAAG;AAChB,UAAA,QAAQ,SAAS,IAAI,EAAE;AAC3B,UAAI,KAAK,IAAI;AAAA,IAAA;AAER,WAAA,CAAC,SAAS,IAAI,EAAE;AAAA,EAAA,CACxB;AAEG,MAAA,WAAW,SAAS,GAAG;AACzB,QAAI,QAAQ;AACZ,aAAS,IAAI,GAAG,IAAI,IAAI,QAAQ,KAAK;AAC/B,UAAA,IAAI,CAAC,MAAM,QAAW;AACpB,YAAA,CAAC,IAAI,WAAW,OAAO;AAAA,MAAA;AAEzB,UAAA,SAAS,WAAW,QAAQ;AAC9B;AAAA,MAAA;AAAA,IACF;AAAA,EACF;AAEF,SAAO,IAAI,OAAU,CAAQ,SAAA,SAAS,MAAS;AACjD;"}