{"id":22555467,"url":"https://github.com/eclipse-cdt-cloud/timeline-chart","last_synced_at":"2025-04-05T08:09:44.434Z","repository":{"id":37799115,"uuid":"154318742","full_name":"eclipse-cdt-cloud/timeline-chart","owner":"eclipse-cdt-cloud","description":"A timeline / gantt chart library for large data (e.g. traces)","archived":false,"fork":false,"pushed_at":"2025-02-10T16:29:51.000Z","size":4367,"stargazers_count":29,"open_issues_count":16,"forks_count":32,"subscribers_count":16,"default_branch":"master","last_synced_at":"2025-03-29T07:07:06.006Z","etag":null,"topics":["eclipse","eclipse-foundation","javascript","npm","timeline-chart","trace","trace-visualization","typescript"],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/eclipse-cdt-cloud.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-10-23T11:47:03.000Z","updated_at":"2025-02-11T22:40:06.000Z","dependencies_parsed_at":"2024-05-02T14:58:11.420Z","dependency_job_id":"59cf686b-d6d2-42f1-9b0c-264b070b086f","html_url":"https://github.com/eclipse-cdt-cloud/timeline-chart","commit_stats":null,"previous_names":["theia-ide/timeline-chart"],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-cdt-cloud%2Ftimeline-chart","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-cdt-cloud%2Ftimeline-chart/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-cdt-cloud%2Ftimeline-chart/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/eclipse-cdt-cloud%2Ftimeline-chart/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/eclipse-cdt-cloud","download_url":"https://codeload.github.com/eclipse-cdt-cloud/timeline-chart/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305935,"owners_count":20917208,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["eclipse","eclipse-foundation","javascript","npm","timeline-chart","trace","trace-visualization","typescript"],"created_at":"2024-12-07T19:07:57.735Z","updated_at":"2025-04-05T08:09:44.418Z","avatar_url":"https://github.com/eclipse-cdt-cloud.png","language":"TypeScript","readme":"# Time Graph - Developer's README\n\n[![Gitpod - Code Now][gitpod-icon-small]][gitpod-link]\n[![Build Status][build-status-icon]][build-status-link]\n\n\nA time graph / gantt chart library for large data (e.g. traces)\n\n## Prerequisites\n\nFirst, you need Node.js and yarn:\n\nIt's suggested to install [nvm](https://github.com/nvm-sh/nvm#installing-and-updating) to manage node on your machine. Once that's done, install the required version:\n\n```bash\n   nvm install 18\n   # optional: make it the default version\n   nvm alias default\n   # or set it every time like so\n   nvm use 18\n```\n\nThen install `yarn`:\n\n```bash\nnpm i -g yarn  # the default version should be ok\n```\n\n# Build\n\nTo build, from the root type `yarn`\n\nTo test an application type `yarn start` then open localhost:8080 on your web browser\n\n[![Open in Gitpod][gitpod-icon-large]][gitpod-link]\n\n**👋 Want to help?** Read our [contributor guide][contributing].\n\n## Documentation\n\nFor detailed description of the timeline chart library and it's components see [here][documentation].\n\n## Screenshots\n\n![timeline-chart][screenshot-1]\n![timeline-chart][screenshot-2]\n\n## Applications\n\nThe following list of applications are currently making use of the timeline-chart library;\n\n* [Theia Trace Extension][trace-extension]\n* [Example Timeline Application][sample-app]\n\n## Tests\n\nTests can be executed from the root of the project with:\n\n```shell\nyarn test\n```\n\nOr from `./timeline-chart`, where the tests outputs are formatted in a more readable way:\n\n```shell\ncd timeline-chart\nyarn test --verbose --watch\n```\n\n### Performance tests\n\nDevelopers can use unit tests to measure the performance improvement of their changes. The following section is a quick guide on how to set up unit tests.\n\n#### Set up\n\nThe `TimeGraphPerformanceTest` is a class that conveniently creates a timeline chart for performance tests. To construct a chart for testing, trace data and its corresponding view range is required. The class provides some methods that return important test data, such as the total length of a trace for assertions. The code is taken from the timeline chart example.\n\nYou can view an example [here](./timeline-chart/src/layer/__tests__/time-graph-chart-long-removal-test.ts). In this example, test data are 'packaged' into a single object for better readability.\n\n#### Useful tips\n\n1. The `getTimeGraphChart()` method returns the constructed timeline chart. From here, developers can call any methods that they want to test on the returned chart. If the methods are protected or private, using the `@ts-ignore` annotation will bypass typescript checks.\n2. It is important to re-construct the timeline chart before each test to make sure the results are consistent.\n3. The tests themselves only print out the results and don't compare them to an actual value, because the threshold depends on the environment it runs. Therefore, make sure to output the performance measurement to the output console, so that it can be viewed once the tests finished running.\n\n### Test coverage\n\nThe following command prints a coverage report to the terminal. As of now it covers all typescript files of the project, including those that are not supposed to have tests.\n\n```shell\nyarn test --coverage --collectCoverageFrom='src/**/*.ts'\n```\n\n## Release/publish\n\nPublishing of npm package and creating GitHub releases / git tags, all happen on GitHub CI.\n\n### Publish next package\n\nA `next` package is automatically published to `npm` every time a PR is merged.\n\n### publish latest / release\n\nWhenever a new release is desired, including publishing a corresponding `latest` package to `npm`, it can be triggered through a PR. The following has to be done:\n\nCreate a new branch for your PR. e.g. \n```bash\ngit branch new-release \u0026\u0026 git checkout new-release\n```\n\nThen decide if the release shall be a `Major`, `Minor` or `Patch` release and use the corresponding command below to step packages versions, according to the release type. A new release commit will be created:\n\n``` bash\nyarn version:major\n# or\nyarn version:minor\n# or\nyarn version:patch\n```\n\nModify the _version tag_ in file `./RELEASE`, to match the new release. Amend the release commit to include this change:\n\n```bash\ngit add RELEASE \u0026\u0026 git commit --amend\n```\n\nFinally, push the branch to the main repository (not a fork) and use it to create a PR. When the PR is merged, a GitHub release should be created with auto-generated release notes, as well as a git tag. Then the `publish-latest` CI job should trigger and if everything goes well, publish the new version of the package to `npm`.\n\n[build-status-icon]: https://github.com/eclipse-cdt-cloud/timeline-chart/workflows/CI-CD/badge.svg?branch=master\n[build-status-link]: https://github.com/eclipse-cdt-cloud/timeline-chart/actions?query=branch%3Amaster\n[contributing]: CONTRIBUTING.md\n[documentation]: https://github.com/eclipse-cdt-cloud/timeline-chart/blob/master/doc/documentation.md\n[gitpod-icon-large]: https://gitpod.io/button/open-in-gitpod.svg\n[gitpod-icon-small]: https://img.shields.io/badge/Gitpod-code%20now-blue.svg?longCache=true\n[gitpod-link]: https://gitpod.io#https://github.com/eclipse-cdt-cloud/timeline-chart\n[sample-app]: https://github.com/eclipse-cdt-cloud/timeline-chart/blob/master/example/\n[screenshot-1]: https://raw.githubusercontent.com/eclipse-cdt-cloud/timeline-chart/master/doc/images/screenshot1-0.0.1.png\n[screenshot-2]: https://raw.githubusercontent.com/eclipse-cdt-cloud/timeline-chart/master/doc/images/screenshot2-0.0.1.png\n[trace-extension]: https://github.com/eclipse-cdt-cloud/theia-trace-extension\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-cdt-cloud%2Ftimeline-chart","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Feclipse-cdt-cloud%2Ftimeline-chart","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Feclipse-cdt-cloud%2Ftimeline-chart/lists"}