{"_id":"@aardpro/ganttable","_rev":"9-80a9f90f7a8081fa95be2439609c74fc","name":"@aardpro/ganttable","dist-tags":{"latest":"1.4.0"},"versions":{"0.0.1":{"name":"@aardpro/ganttable","version":"0.0.1","keywords":["gantt","chart","d3","typescript","project-management","timeline","visualization"],"author":{"name":"aardpro"},"license":"MIT","_id":"@aardpro/ganttable@0.0.1","maintainers":[{"name":"aardpro","email":"chileehong@outlook.com"}],"homepage":"https://github.com/aardpro/ganttable#readme","bugs":{"url":"https://github.com/aardpro/ganttable/issues"},"dist":{"shasum":"ce30423a494a07cc84048de35cf5145a9fe59ccc","tarball":"https://registry.npmjs.org/@aardpro/ganttable/-/ganttable-0.0.1.tgz","fileCount":21,"integrity":"sha512-0XrolhDlDC30sIyfxFWARKb+maZeTCgw8UVBIu25PuXUSG9RN1DYEAWDI+VAsqjn3xiPX9i4DJPR4XdzcagLgw==","signatures":[{"sig":"MEYCIQDX6+j+QdYLQ+4jokDAAHuX1B3w5btCouDA0QUZGKpg5gIhANkoo9varQQBI6ggakDk4dwXpko4f/xjLjFNbmLjpSUg","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3583592},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"3a51ca59780ae1905a08f1cf356197f8d882d5b0","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","build:lib":"rollup -c","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"aardpro","email":"chileehong@outlook.com"},"repository":{"url":"git+https://github.com/aardpro/ganttable.git","type":"git"},"_npmVersion":"10.9.2","description":"A powerful and customizable Gantt chart library built with D3.js and TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"d3":"^7.0.0","aardpro-tree":"^1.2.0","aardpro-time-id":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.0","tslib":"^2.8.1","rollup":"^4.46.2","@types/d3":"^7.4.3","typescript":"~5.8.3","rollup-plugin-dts":"^6.2.1","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^15.3.1"},"peerDependencies":{"d3":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ganttable_0.0.1_1754838649269_0.7966445641903517","host":"s3://npm-registry-packages-npm-production"}},"0.0.2":{"name":"@aardpro/ganttable","version":"0.0.2","keywords":["gantt","chart","d3","typescript","project-management","timeline","visualization"],"author":{"name":"aardpro"},"license":"MIT","_id":"@aardpro/ganttable@0.0.2","maintainers":[{"name":"aardpro","email":"chileehong@outlook.com"}],"homepage":"https://github.com/aardpro/ganttable#readme","bugs":{"url":"https://github.com/aardpro/ganttable/issues"},"dist":{"shasum":"00c8b1c6e96a8d2e65f9bdd6e56eeae832cc039e","tarball":"https://registry.npmjs.org/@aardpro/ganttable/-/ganttable-0.0.2.tgz","fileCount":21,"integrity":"sha512-cG/maDMZN32aOOwt/TUGwUKOKWEyzadx6joZ8YjTVjU3UflfpEudp/umC9+qcteoE8cjZwRfdK+FL0xFVwquuw==","signatures":[{"sig":"MEUCIQCNUbdHMvthjzF91e9+QeoD+idzHl09DluwCtOkzI8d/AIgTUBoRxFi+Qb7COTcHqOO3TGxuTpROAZzS3Pesy5boMM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3587315},"main":"dist/index.js","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"19f42c245ffffffd30b56a6b30e3273534efa9f6","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","build:lib":"rollup -c","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"aardpro","email":"chileehong@outlook.com"},"repository":{"url":"git+https://github.com/aardpro/ganttable.git","type":"git"},"_npmVersion":"10.9.2","description":"A powerful and customizable Gantt chart library built with D3.js and TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"d3":"^7.0.0","aardpro-tree":"^1.2.0","aardpro-time-id":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.0","tslib":"^2.8.1","rollup":"^4.46.2","@types/d3":"^7.4.3","typescript":"~5.8.3","rollup-plugin-dts":"^6.2.1","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^15.3.1"},"peerDependencies":{"d3":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ganttable_0.0.2_1754920149080_0.24267908128513382","host":"s3://npm-registry-packages-npm-production"}},"0.0.3":{"name":"@aardpro/ganttable","version":"0.0.3","keywords":["gantt","chart","d3","typescript","project-management","timeline","visualization"],"author":{"name":"aardpro"},"license":"MIT","_id":"@aardpro/ganttable@0.0.3","maintainers":[{"name":"aardpro","email":"chileehong@outlook.com"}],"homepage":"https://github.com/aardpro/ganttable#readme","bugs":{"url":"https://github.com/aardpro/ganttable/issues"},"dist":{"shasum":"0af864a84850217823a48f2f51f3b86f42bd230d","tarball":"https://registry.npmjs.org/@aardpro/ganttable/-/ganttable-0.0.3.tgz","fileCount":21,"integrity":"sha512-ojx1cYv4+Xu2fkLLKIkCE9GGErC+ne66IbpnJXHrkWnYb8uolgTJz9UZlHaMm7sH0PC7x1QkcBfVOmgN/dF0bw==","signatures":[{"sig":"MEYCIQCIqu4iZPWd7C1oum/3Z6+rlm3VJ+96fx9W5BpQQHVK2AIhANgHQXrBbHesuHeJXgaKElDbTcxO0LOWXtj4EyHW0bIn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3596463},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","module":"dist/index.esm.js","gitHead":"163f9d86ac94cec937d249b20d192fade8f6af26","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","build:lib":"rollup -c","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"aardpro","email":"chileehong@outlook.com"},"repository":{"url":"git+https://github.com/aardpro/ganttable.git","type":"git"},"_npmVersion":"10.9.2","description":"A powerful and customizable Gantt chart library built with D3.js and TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"d3":"^7.0.0","aardpro-tree":"^1.2.0","aardpro-time-id":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.0","tslib":"^2.8.1","rollup":"^4.46.2","@types/d3":"^7.4.3","typescript":"~5.8.3","rollup-plugin-dts":"^6.2.1","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^15.3.1"},"peerDependencies":{"d3":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ganttable_0.0.3_1754928472119_0.6005394351060971","host":"s3://npm-registry-packages-npm-production"}},"0.0.4":{"name":"@aardpro/ganttable","version":"0.0.4","keywords":["gantt","chart","d3","typescript","project-management","timeline","visualization"],"author":{"name":"aardpro"},"license":"MIT","_id":"@aardpro/ganttable@0.0.4","maintainers":[{"name":"aardpro","email":"chileehong@outlook.com"}],"homepage":"https://github.com/aardpro/ganttable#readme","bugs":{"url":"https://github.com/aardpro/ganttable/issues"},"dist":{"shasum":"39ac4e6ec156d9e0de678dcc22d91f14eb514682","tarball":"https://registry.npmjs.org/@aardpro/ganttable/-/ganttable-0.0.4.tgz","fileCount":21,"integrity":"sha512-pDn7Jh5yWgwNp3r4YB4kiixRjNo/894lAn4gS8DnE/iTaQZ1rybDYpppyIecaC8fZCbr6pvU/KPZBvEF8QiYbg==","signatures":[{"sig":"MEUCIQDKsElpI3tiFZM9YAevbsVWskfKWq8KJsG63FuNp4+iQQIgOk5vd8nwdAvUtpVNQ8qRYVV+mlogVPgATDneDYlH+ZE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3595609},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"56a690f3947ae2816c754f539a81f948dc7e707e","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","build:lib":"rollup -c","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"aardpro","email":"chileehong@outlook.com"},"repository":{"url":"git+https://github.com/aardpro/ganttable.git","type":"git"},"_npmVersion":"10.9.2","description":"A powerful and customizable Gantt chart library built with D3.js and TypeScript","directories":{},"_nodeVersion":"22.17.0","dependencies":{"d3":"^7.0.0","aardpro-tree":"^1.2.0","aardpro-time-id":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.0","tslib":"^2.8.1","rollup":"^4.46.2","@types/d3":"^7.4.3","typescript":"~5.8.3","rollup-plugin-dts":"^6.2.1","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^15.3.1"},"peerDependencies":{"d3":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ganttable_0.0.4_1755090772362_0.13784551647725762","host":"s3://npm-registry-packages-npm-production"}},"1.0.0":{"name":"@aardpro/ganttable","version":"1.0.0","keywords":["gantt","chart","d3","typescript","project-management","timeline","visualization"],"author":{"name":"aardpro"},"license":"MIT","_id":"@aardpro/ganttable@1.0.0","maintainers":[{"name":"aardpro","email":"chileehong@outlook.com"}],"homepage":"https://github.com/aardpro/ganttable#readme","bugs":{"url":"https://github.com/aardpro/ganttable/issues"},"dist":{"shasum":"29ca34eeb9f462a9ab9165ff5434158732794107","tarball":"https://registry.npmjs.org/@aardpro/ganttable/-/ganttable-1.0.0.tgz","fileCount":19,"integrity":"sha512-zrBWk4UAMQVmrTK377XCrd2J/2h5fT1QiJ88nrSllRIrhQ0uJxgHI/CFCF+aH2aP8bZaMPau4uf4TKttDCU/vg==","signatures":[{"sig":"MEUCIFFQ4YqPv6YSWMuUmTpjKkSbqB0+a0WlcgK43asKVlE8AiEA1ZTni+97vocbmSM3/2MmSgwwSbpxw1HjQVHnAzwbLKU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3496259},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"5fb0a2e2b4624926c3a84916efdfa31a335aad87","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","build:lib":"rollup -c","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"aardpro","email":"chileehong@outlook.com"},"repository":{"url":"git+https://github.com/aardpro/ganttable.git","type":"git"},"_npmVersion":"11.6.0","description":"A powerful and customizable Gantt chart library built with D3.js and TypeScript","directories":{},"_nodeVersion":"22.19.0","dependencies":{"d3":"^7.0.0","aardpro-tree":"^1.2.0","aardpro-time-id":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.0","tslib":"^2.8.1","rollup":"^4.46.2","@types/d3":"^7.4.3","typescript":"~5.8.3","rollup-plugin-dts":"^6.2.1","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^15.3.1"},"peerDependencies":{"d3":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ganttable_1.0.0_1760195192517_0.12880274682691795","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@aardpro/ganttable","version":"1.1.0","keywords":["gantt","chart","d3","typescript","project-management","timeline","visualization"],"author":{"name":"aardpro"},"license":"MIT","_id":"@aardpro/ganttable@1.1.0","maintainers":[{"name":"aardpro","email":"chileehong@outlook.com"}],"homepage":"https://github.com/aardpro/ganttable#readme","bugs":{"url":"https://github.com/aardpro/ganttable/issues"},"dist":{"shasum":"2a1badfc568cc6a7ee9e9b896beb328c384f0693","tarball":"https://registry.npmjs.org/@aardpro/ganttable/-/ganttable-1.1.0.tgz","fileCount":19,"integrity":"sha512-TvpX93OuNMsxxUZrcmpXwswqSaz74NdFpCvyoQ+/lcg3QixNdR5hWzMz5HiiX0rPBebQ7ppvRQD10vxFNArzmQ==","signatures":[{"sig":"MEYCIQCihbxGE2TVjjEodW1uOH9vtLltTPgduH33aGG4zhsTYQIhAO+CsUTP+X6tpVl/CqD+LCn1MQin36r24ilr5GEkd/jL","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3501901},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"98e615f861deddb427969a63564288f22e167d59","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","build:lib":"rollup -c","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"aardpro","email":"chileehong@outlook.com"},"repository":{"url":"git+https://github.com/aardpro/ganttable.git","type":"git"},"_npmVersion":"11.6.0","description":"A powerful and customizable Gantt chart library built with D3.js and TypeScript","directories":{},"_nodeVersion":"22.19.0","dependencies":{"d3":"^7.0.0","aardpro-tree":"^1.2.0","aardpro-time-id":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.0","tslib":"^2.8.1","rollup":"^4.46.2","@types/d3":"^7.4.3","typescript":"~5.8.3","rollup-plugin-dts":"^6.2.1","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^15.3.1"},"peerDependencies":{"d3":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ganttable_1.1.0_1760224124456_0.39998252248889177","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@aardpro/ganttable","version":"1.2.0","keywords":["gantt","chart","d3","typescript","project-management","timeline","visualization"],"author":{"name":"aardpro"},"license":"MIT","_id":"@aardpro/ganttable@1.2.0","maintainers":[{"name":"aardpro","email":"chileehong@outlook.com"}],"homepage":"https://github.com/aardpro/ganttable#readme","bugs":{"url":"https://github.com/aardpro/ganttable/issues"},"dist":{"shasum":"3637f869da33b4fcfcd24238c7756b3a725aa962","tarball":"https://registry.npmjs.org/@aardpro/ganttable/-/ganttable-1.2.0.tgz","fileCount":19,"integrity":"sha512-H3YTkJP++AbweyEI1+mnYIkB0OAec0Apn4mxmlXu+v4aZ+eMqU4XiH5QPf/yS+qTCosBZTwKhKGmfLw9DuDHCg==","signatures":[{"sig":"MEUCIDXX69RUFWPzZ3yypL+vh2+I7lvaANz/wCAf3hYYOeVnAiEAr4NrFNl7Godf9P72G+ShRea6RutXwkCM2IxyerZ20bM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":3508353},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"fd8a4643e2756d12c8203f28318f4f2d56025e09","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","build:lib":"rollup -c","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"aardpro","email":"chileehong@outlook.com"},"repository":{"url":"git+https://github.com/aardpro/ganttable.git","type":"git"},"_npmVersion":"11.6.0","description":"A powerful and customizable Gantt chart library built with D3.js and TypeScript","directories":{},"_nodeVersion":"22.19.0","dependencies":{"d3":"^7.0.0","aardpro-tree":"^1.2.0","aardpro-time-id":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.0","tslib":"^2.8.1","rollup":"^4.46.2","@types/d3":"^7.4.3","typescript":"~5.8.3","rollup-plugin-dts":"^6.2.1","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^15.3.1"},"peerDependencies":{"d3":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ganttable_1.2.0_1760252819723_0.6460434957211816","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@aardpro/ganttable","version":"1.3.0","keywords":["gantt","chart","d3","typescript","project-management","timeline","visualization"],"author":{"name":"aardpro"},"license":"MIT","_id":"@aardpro/ganttable@1.3.0","maintainers":[{"name":"aardpro","email":"chileehong@outlook.com"}],"homepage":"https://github.com/aardpro/ganttable#readme","bugs":{"url":"https://github.com/aardpro/ganttable/issues"},"dist":{"shasum":"1bc5bd9c2b7f86907ecac2d1bfc82c65f4491c03","tarball":"https://registry.npmjs.org/@aardpro/ganttable/-/ganttable-1.3.0.tgz","fileCount":23,"integrity":"sha512-iMg2w2SzQlTDdqJgXXsAoWiOBsU0EBHFJjslenH3imFbxC8OCC7lzQEY1hTC5adWwdMjRDy7R7WlWD8EsiGC7A==","signatures":[{"sig":"MEUCIQCWg47ppNN0Q6aGelXFyoINxw5nkSdPZGVLZHemJmCj5gIgI2QGIOysCcC1d4Or8GDpWynQYmU1yB7A+NN2eyyQ0kk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":5430201},"main":"dist/index.js","type":"module","types":"dist/index.d.ts","gitHead":"b300e71274ea14fec472acd26102d385d900d092","scripts":{"dev":"vite","build":"tsc && vite build","preview":"vite preview","build:lib":"rollup -c","prepublishOnly":"npm run build:lib"},"_npmUser":{"name":"aardpro","email":"chileehong@outlook.com"},"repository":{"url":"git+https://github.com/aardpro/ganttable.git","type":"git"},"_npmVersion":"11.6.0","description":"A powerful and customizable Gantt chart library built with D3.js and TypeScript","directories":{},"_nodeVersion":"22.19.0","dependencies":{"d3":"^7.0.0","aardpro-tree":"^1.2.0","aardpro-time-id":"^1.3.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.1.0","tslib":"^2.8.1","rollup":"^4.46.2","@types/d3":"^7.4.3","typescript":"~5.8.3","rollup-plugin-dts":"^6.2.1","@rollup/plugin-typescript":"^12.1.4","@rollup/plugin-node-resolve":"^15.3.1"},"peerDependencies":{"d3":"^7.0.0"},"_npmOperationalInternal":{"tmp":"tmp/ganttable_1.3.0_1760364624911_0.2874041879975615","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@aardpro/ganttable","version":"1.4.0","description":"A powerful and customizable Gantt chart library built with D3.js and TypeScript","type":"module","main":"dist/index.js","types":"dist/index.d.ts","scripts":{"dev":"vite","build":"tsc && vite build","build:lib":"rollup -c","preview":"vite preview","prepublishOnly":"npm run build:lib"},"keywords":["gantt","chart","d3","typescript","project-management","timeline","visualization"],"author":{"name":"aardpro"},"license":"MIT","repository":{"type":"git","url":"git+https://github.com/aardpro/ganttable.git"},"bugs":{"url":"https://github.com/aardpro/ganttable/issues"},"homepage":"https://github.com/aardpro/ganttable#readme","devDependencies":{"@rollup/plugin-node-resolve":"^15.3.1","@rollup/plugin-typescript":"^12.1.4","@types/d3":"^7.4.3","rollup":"^4.46.2","rollup-plugin-dts":"^6.2.1","tslib":"^2.8.1","typescript":"~5.8.3","vite":"^7.1.0"},"dependencies":{"aardpro-time-id":"^1.3.0","aardpro-tree":"^1.2.0","d3":"^7.0.0"},"peerDependencies":{"d3":"^7.0.0"},"_id":"@aardpro/ganttable@1.4.0","gitHead":"15c60d53054e74d939cf3edb0dc245c55f3895fe","_nodeVersion":"22.17.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-k+GWer+h6s+8G11yfEoDid4PGazkFjZOjCxtRHMYlk83sgYO+JzRItyLK1OYHiV2QAUQ37Tev3Pfiz1r5/R/2g==","shasum":"563fbc25308c82da1200784daacddb8d175cb59a","tarball":"https://registry.npmjs.org/@aardpro/ganttable/-/ganttable-1.4.0.tgz","fileCount":23,"unpackedSize":5462657,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEJFqVb1EKeropUX3W0IskiE1hF72d6mia7dQKPue3UpAiAf6VGxonBUrss+ZPZxtCwGZ32VOv84yNFtH7/pFXN2dQ=="}]},"_npmUser":{"name":"aardpro","email":"chileehong@outlook.com"},"directories":{},"maintainers":[{"name":"aardpro","email":"chileehong@outlook.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/ganttable_1.4.0_1762401316465_0.26294550586525767"},"_hasShrinkwrap":false}},"time":{"created":"2025-08-10T15:10:49.193Z","modified":"2025-11-06T03:55:17.015Z","0.0.1":"2025-08-10T15:10:49.448Z","0.0.2":"2025-08-11T13:49:09.311Z","0.0.3":"2025-08-11T16:07:52.341Z","0.0.4":"2025-08-13T13:12:52.617Z","1.0.0":"2025-10-11T15:06:32.740Z","1.1.0":"2025-10-11T23:08:44.723Z","1.2.0":"2025-10-12T07:06:59.990Z","1.3.0":"2025-10-13T14:10:25.138Z","1.4.0":"2025-11-06T03:55:16.803Z"},"bugs":{"url":"https://github.com/aardpro/ganttable/issues"},"author":{"name":"aardpro"},"license":"MIT","homepage":"https://github.com/aardpro/ganttable#readme","keywords":["gantt","chart","d3","typescript","project-management","timeline","visualization"],"repository":{"type":"git","url":"git+https://github.com/aardpro/ganttable.git"},"description":"A powerful and customizable Gantt chart library built with D3.js and TypeScript","maintainers":[{"name":"aardpro","email":"chileehong@outlook.com"}],"readme":"# @aardpro/ganttable\r\n\r\nA powerful and customizable Gantt chart library built with D3.js and TypeScript.\r\n\r\n## Features\r\n\r\n- 📊 **Interactive Gantt Charts**: Rich, interactive timeline visualization\r\n- 🎨 **Customizable Themes**: Flexible color schemes and styling\r\n- 🌳 **Hierarchical Data**: Support for nested tasks and subtasks\r\n- 📅 **Flexible Date Handling**: Support for various date formats and ranges\r\n- 🔗 **Dependencies**: Visual representation of task dependencies\r\n- 📱 **Responsive Design**: Works on desktop and mobile devices\r\n- ⚡ **High Performance**: Optimized for large datasets\r\n\r\n![Gantt Chart Example](public/snapshot.png)\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @aardpro/ganttable\r\n# or\r\nyarn add @aardpro/ganttable\r\n# or\r\npnpm add @aardpro/ganttable\r\n```\r\n\r\n## Quick Start\r\n\r\n```typescript\r\nimport { GanttTable } from '@aardpro/ganttable';\r\nimport type { IGanttNode } from '@aardpro/ganttable';\r\n\r\nconst data: IGanttNode[] = [\r\n  {\r\n    id: '1',\r\n    label: 'Project Planning',\r\n    start_date: new Date('2024-01-01'),\r\n    end_date: new Date('2024-01-15'),\r\n    budget: 10000,\r\n    cost: 8000,\r\n    progress: 75,\r\n    dependencies: [],\r\n    is_milestone: false,\r\n    children: [\r\n      {\r\n        id: '1.1',\r\n        label: 'Research Phase',\r\n        start_date: new Date('2024-01-01'),\r\n        end_date: new Date('2024-01-05'),\r\n        budget: 3000,\r\n        cost: 2500,\r\n        progress: 100,\r\n        dependencies: [],\r\n        is_milestone: false\r\n      }\r\n    ]\r\n  }\r\n];\r\n\r\nconst gantt = new GanttTable({\r\n  target: document.getElementById('gantt-container'),\r\n  data: data,\r\n  colors: {\r\n    tableHeaderBackground: '#f5f5f5',\r\n    ganttBarBackground: '#a0c4ff',\r\n    ganttBarProgress: '#4a90e2'\r\n  }\r\n});\r\n```\r\n\r\n## API Reference\r\n\r\n### GanttTable\r\n\r\n#### Constructor\r\n\r\n```typescript\r\nnew GanttTable(params: GanttTableParams)\r\n```\r\n\r\n#### Parameters\r\n\r\n```typescript\r\ninterface GanttTableParams {\r\n  target: HTMLElement;           // Target container element\r\n  data: IGanttNode[];             // Array of IGanttNode objects\r\n  tableHeaderOptions?: ITableHeaderOption[]; // Custom column configuration\r\n  expandedAll?: boolean;        // Expand all nodes by default\r\n  showAdd?: boolean;            // Show add buttons\r\n  showAction?: boolean;         // Show action column\r\n  colors?: IGanttTableColorScheme; // Custom color scheme\r\n  timeUnit?: IGanttTimeUnit;    // Time axis unit (default 'week')\r\n  showGantt?: boolean;           // Show Gantt chart area (default: true)\r\n  \r\n  // Callbacks\r\n  cellMenu?: (params: { row: IGanttNode; field: string; menu: HTMLElement; ptr?: { x: number; y: number; w: number; h: number } }) => void;\r\n  rowMenu?: (params: { row: IGanttNode; menu: HTMLElement }) => void;\r\n  askAdd?: (params: { row?: IGanttNode }) => void;\r\n}\r\n```\r\n\r\n#### Methods\r\n\r\n##### capture\r\n\r\nCapture and download the rendered content as a PNG image.\r\n\r\n```typescript\r\ncapture(\r\n  mode?: 'table' | 'gantt' | 'total',\r\n  params?: { scale?: number; quality?: number; filename?: string; background?: string }\r\n): Promise<void>\r\n```\r\n\r\n- `mode`:\r\n  - `table` — export only the table area\r\n  - `gantt` — export only the gantt area\r\n  - `total` — export both table and gantt (default)\r\n- `scale` (default `2`) — pixel density multiplier for sharper export\r\n- `quality` (default `0.92`) — kept for compatibility; browsers may ignore for PNG\r\n- `filename` (default `ganttable-{mode}.png`) — output file name\r\n- `background` (default `#ffffff`) — canvas background fill color\r\n\r\nExample usages:\r\n\r\n```typescript\r\n// Export both table and gantt\r\ninstance.capture('total', { scale: 2, quality: 0.92, filename: 'export-total.png' });\r\n\r\n// Export only table\r\ninstance.capture('table', { scale: 2, filename: 'export-table.png' });\r\n\r\n// Export only gantt\r\ninstance.capture('gantt', { scale: 3, filename: 'export-gantt.png' });\r\n```\r\n\r\nDemo buttons in the playground (`src/main.ts`) are bound to:\r\n\r\n- `下载总览图` → `capture('total', { scale: 2 })`\r\n- `下载表格` → `capture('table', { scale: 2 })`\r\n- `下载甘特图` → `capture('gantt', { scale: 2 })`\r\n\r\n### IGanttNode\r\n\r\n```typescript\r\ninterface IGanttNode {\r\n  id: string;                    // Unique identifier\r\n  pid?: string;                 // Parent ID\r\n  label: string;                // Task name\r\n  start_date: Date;             // Planned start date\r\n  end_date: Date;               // Planned end date\r\n  actual_start_date?: Date;     // Actual start date\r\n  actual_end_date?: Date;       // Actual end date\r\n  budget: number;               // Planned budget\r\n  actual_budget?: number;       // Actual budget\r\n  cost: number;                 // Planned cost\r\n  actual_cost?: number;         // Actual cost\r\n  progress: number;             // Progress percentage (0-100)\r\n  dependencies: string[];       // Array of dependent task IDs\r\n  is_milestone: boolean;        // Is this a milestone\r\n  children?: IGanttNode[];       // Child tasks\r\n  is_expanded?: boolean;        // Is node expanded\r\n  level?: number;               // Tree level (auto-calculated)\r\n}\r\n```\r\n\r\n### Color Scheme\r\n\r\n```typescript\r\ninterface IGanttTableColorScheme {\r\n  tableHeaderBackground?: string;\r\n  tableBorder?: string;\r\n  tableCellBackground?: string;\r\n  ganttBarBackground?: string;\r\n  ganttBarProgress?: string;\r\n  ganttConnectionLine?: string;\r\n  highlightOverlay?: string;\r\n  textPrimary?: string;\r\n  textSecondary?: string;\r\n  textInverse?: string;\r\n  iconColor?: string;\r\n  milestoneColor?: string;\r\n  // NEW: Actual duration overlay colors\r\n  actualDueColor?: string;     // Default: #22c55e (on-time/early)\r\n  actualDelayColor?: string;   // Default: #ef4444 (delay)\r\n}\r\n```\r\n\r\n### Actual Duration Overlay\r\n\r\n- When both `actual_start_date` and `actual_end_date` are present for a task, the chart renders a thin overlay bar within the main Gantt bar to visualize the actual duration.\r\n- Color logic:\r\n  - `actual_end_date` > `end_date` → uses `actualDelayColor` (default `#ef4444`).\r\n - `actual_end_date` ≤ `end_date` → uses `actualDueColor` (default `#22c55e`).\r\n - You can customize these via `colors.actualDueColor` and `colors.actualDelayColor`.\r\n\r\n### Time Unit Configuration\r\n\r\n- Use `timeUnit` to control the granularity of the time axis. Default is `week`.\r\n- Range extension by unit:\r\n  - `day`: extends ±1 day\r\n  - `week`: extends ±7 days\r\n  - `month`: extends ±1 month\r\n  - `season` (quarter): extends ±3 months\r\n- Axis label rules by unit:\r\n  - `day`: show `M/D` (month start bold), other days `DD`\r\n  - `week`: show `MM/DD`\r\n  - `month`: show Chinese month names `一月 … 十二月`\r\n  - `season`: show `Q1`, `Q2`, `Q3`, `Q4`\r\n- Pixel density (approximate width per unit):\r\n  - `day`: `36px`\r\n  - `week`: `80px`\r\n  - `month`: `120px`\r\n  - `season`: `180px`\r\n- Example:\r\n\r\n```typescript\r\nconst gantt = new GanttTable({\r\n  target: document.getElementById('gantt'),\r\n  data: ganttData,\r\n  timeUnit: 'day', // daily axis with M/D for month start, DD for other days\r\n  showGantt: true, // set to false to hide the Gantt area initially\r\n});\r\n```\r\n\r\n// Switch time unit without recreating the instance\r\ngantt.update({ timeUnit: 'week' });\r\n\r\n#### Demo Selector\r\n- The demo page includes a time unit selector in `src/main.ts` bound to `div#time-unit-selector`.\r\n- Changing the selector updates the instance via `gantt.update({ timeUnit })` (`day`, `week`, `month`, `season`).\r\n - The demo also includes a Gantt visibility toggle checkbox in `div#toggle-gantt` and a status display in `div#gantt-status`.\r\n\r\n### Show/Hide Gantt\r\n\r\n- Visibility control:\r\n  - `showGantt` (constructor param): controls initial visibility; default `true`.\r\n  - `ganttStatus` (instance property): current visibility state (`true` shown, `false` hidden).\r\n  - `toggleGantt(show: boolean)` (instance method): programmatically toggle visibility.\r\n\r\n```typescript\r\n// Create instance with initial hidden Gantt area\r\nconst gantt = new GanttTable({\r\n  target: document.getElementById('gantt'),\r\n  data: ganttData,\r\n  showGantt: false,\r\n});\r\n\r\n// Later, show the Gantt area\r\ngantt.toggleGantt(true);\r\n\r\n// Hook up to a checkbox\r\nconst checkbox = document.getElementById('toggleGanttCheckbox') as HTMLInputElement;\r\ncheckbox.addEventListener('change', () => {\r\n  gantt.toggleGantt(checkbox.checked);\r\n  console.log('Gantt visible:', gantt.ganttStatus);\r\n});\r\n```\r\n\r\n## Usage Examples\r\n\r\n### Basic Usage\r\n\r\n```typescript\r\nimport { GanttTable } from '@aardpro/ganttable';\r\n\r\nconst gantt = new GanttTable({\r\n  target: document.getElementById('gantt'),\r\n  data: ganttData\r\n});\r\n```\r\n\r\n### With Custom Configuration\r\n\r\n```typescript\r\nconst gantt = new GanttTable({\r\n  target: document.getElementById('gantt'),\r\n  data: ganttData,\r\n  tableHeaderOptions: [\r\n    { field: 'label', label: 'Task', width: 200 },\r\n    { field: 'start_date', label: 'Start', width: 100 },\r\n    { field: 'end_date', label: 'End', width: 100 },\r\n    { field: 'progress', label: 'Progress', width: 80 }\r\n  ],\r\n  colors: {\r\n    ganttBarBackground: '#4CAF50',\r\n    ganttBarProgress: '#2E7D32'\r\n  },\r\n  expandedAll: true\r\n});\r\n```\r\n\r\n### With Event Handlers\r\n\r\n```typescript\r\nconst gantt = new GanttTable({\r\n  target: document.getElementById('gantt'),\r\n  data: ganttData,\r\n  askAdd: ({ row }) => {\r\n    console.log('Add new task under:', row?.label);\r\n  },\r\n  cellMenu: ({ row, field, menu, ptr }) => {\r\n    // Custom cell menu implementation\r\n    menu.innerHTML = `\r\n      <div class=\"menu-item\">Edit ${field}</div>\r\n      <div class=\"menu-item\">Delete</div>\r\n    `;\r\n    // Access the clicked cell's viewport rect if needed\r\n    if (ptr) {\r\n      console.log('Cell rect:', ptr);\r\n    }\r\n  }\r\n});\r\n```\r\n\r\n## Browser Support\r\n\r\n- Chrome (latest)\r\n- Firefox (latest)\r\n- Safari (latest)\r\n- Edge (latest)\r\n\r\n## License\r\n\r\nMIT License - see [LICENSE](LICENSE) file for details.\r\n\r\n## Contributing\r\n\r\nContributions are welcome! Please feel free to submit a Pull Request.\r\n\r\n## Changelog\r\n\r\n### 1.0.0\r\n- Initial release\r\n- Basic Gantt chart functionality\r\n- Hierarchical task support\r\n- Customizable themes\r\n- Interactive features","readmeFilename":"README.md"}