{"id":20893410,"url":"https://github.com/arction/lcjs-example-0704-customcursorstackedy","last_synced_at":"2025-03-12T19:14:32.816Z","repository":{"id":98723659,"uuid":"383131712","full_name":"Arction/lcjs-example-0704-customcursorstackedy","owner":"Arction","description":"Example showcasing custom cursor implementation with stacked Y charts","archived":false,"fork":false,"pushed_at":"2025-02-05T11:38:31.000Z","size":12341,"stargazers_count":0,"open_issues_count":1,"forks_count":0,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-02-05T12:32:05.072Z","etag":null,"topics":["chart","cursor","datavisualization","demo","example","javascript","lightningchart-js","template"],"latest_commit_sha":null,"homepage":"https://www.arction.com/lightningchart-js-interactive-examples/examples/lcjs-example-0704-customCursorStackedY.html","language":"JavaScript","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/Arction.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-07-05T12:21:02.000Z","updated_at":"2025-02-05T11:36:23.000Z","dependencies_parsed_at":"2025-02-05T12:28:50.472Z","dependency_job_id":"578f2207-75f3-4f9d-9424-690cdf1a21fb","html_url":"https://github.com/Arction/lcjs-example-0704-customcursorstackedy","commit_stats":null,"previous_names":[],"tags_count":0,"template":true,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arction%2Flcjs-example-0704-customcursorstackedy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arction%2Flcjs-example-0704-customcursorstackedy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arction%2Flcjs-example-0704-customcursorstackedy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Arction%2Flcjs-example-0704-customcursorstackedy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Arction","download_url":"https://codeload.github.com/Arction/lcjs-example-0704-customcursorstackedy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243277498,"owners_count":20265352,"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":["chart","cursor","datavisualization","demo","example","javascript","lightningchart-js","template"],"created_at":"2024-11-18T10:15:44.387Z","updated_at":"2025-03-12T19:14:32.811Z","avatar_url":"https://github.com/Arction.png","language":"JavaScript","readme":"# JavaScript Custom Cursor with Stacked Y Dashboard\n\n![JavaScript Custom Cursor with Stacked Y Dashboard](customCursorStackedY-darkGold.png)\n\nThis demo application belongs to the set of examples for LightningChart JS, data visualization library for JavaScript.\r\n\r\nLightningChart JS is entirely GPU accelerated and performance optimized charting library for presenting massive amounts of data. It offers an easy way of creating sophisticated and interactive charts and adding them to your website or web application.\r\n\r\nThe demo can be used as an example or a seed project. Local execution requires the following steps:\r\n\r\n-   Make sure that relevant version of [Node.js](https://nodejs.org/en/download/) is installed\r\n-   Open the project folder in a terminal:\r\n\r\n          npm install              # fetches dependencies\r\n          npm start                # builds an application and starts the development server\r\n\r\n-   The application is available at _http://localhost:8080_ in your browser, webpack-dev-server provides hot reload functionality.\r\n\n\n## Description\n\nThis example serves as an example for custom data cursor implementation in _stacked Y charts dashboard_, where there are several XY charts stacked vertically on each other.\r\n\r\nCustom cursors can be required for different purposes - like major structural changes or very application specific styling requirements.\r\n\r\nIf lesser changes to default cursors are required then please see read about different methods of configuring cursor behavior - `ChartXY` API reference has good links and explanations to follow.\r\n\r\nIn this case, the X Axis of each chart are _synchronized_, and when user mouse is above the chart the data of all series `Y` coordinates is shown at the respective `X` coordinate.\r\n\r\nEach `LineSeries` contains 100 000 unique data points, coming to a total of **300 000** data points. Regardless, the interaction with cursor is instantaneous.\r\n\r\nCustom cursors are most importantly based on `LCJS` methods that allow solving nearest data points in series from any supplied location.\r\nCustom user interactions and data point solving require solid understanding of different coordinate systems in web and `LCJS`, which is the primary reason this example exists;\r\n\r\n```javascript\r\n// Add custom action when user moves mouse over series area.\r\nchart.seriesBackground.addEventListener('pointermove', (event) =\u003e {\r\n    // `event` is a native JavaScript event, which packs the active mouse location in `clientX` and `clientY` properties.\r\n    // it can be used for solving nearest data point ...\r\n    const nearestDataPoint = series.solveNearestFromScreen(event)\r\n\r\n    // ... or translated to a pair of Axes\r\n    const mouseLocationAxis = chart.translateCoordinate(event, chart.coordsAxis)\r\n})\r\n```\r\n\r\nThe default cursor can only display data from one chart at a time, but using the `LCJS` methods, the cursor can be configured to display data from all independent charts at the same time.\r\n\r\nMore custom cursor examples can be found by looking for \"cursor\" tag in the _Interactive Examples_ gallery.\r\n\n\n## API Links\n\n* [Lightning Chart top reference]\n* [Dashboard]\n* [Auto cursor modes]\n* [UI element builders]\n* [UI layout builders]\n* [UI backgrounds]\n* [UI position origin]\n* [Color factory css]\n* [Solid fill style]\n* [Solid line style]\n* [Chart XY]\n* [Axis XY]\n* [Custom tick]\n\n\n## Support\n\nIf you notice an error in the example code, please open an issue on [GitHub][0] repository of the entire example.\r\n\r\nOfficial [API documentation][1] can be found on [LightningChart][2] website.\r\n\r\nIf the docs and other materials do not solve your problem as well as implementation help is needed, ask on [StackOverflow][3] (tagged lightningchart).\r\n\r\nIf you think you found a bug in the LightningChart JavaScript library, please contact sales@lightningchart.com.\r\n\r\nDirect developer email support can be purchased through a [Support Plan][4] or by contacting sales@lightningchart.com.\r\n\r\n[0]: https://github.com/Arction/\r\n[1]: https://lightningchart.com/lightningchart-js-api-documentation/\r\n[2]: https://lightningchart.com\r\n[3]: https://stackoverflow.com/questions/tagged/lightningchart\r\n[4]: https://lightningchart.com/support-services/\r\n\n© LightningChart Ltd 2009-2022. All rights reserved.\r\n\n\n[Lightning Chart top reference]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/interfaces/LightningChart.html\n[Dashboard]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/classes/Dashboard.html\n[Auto cursor modes]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/enums/AutoCursorModes.html\n[UI element builders]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/variables/UIElementBuilders.html\n[UI layout builders]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/variables/UILayoutBuilders.html\n[UI backgrounds]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/variables/UIBackgrounds.html\n[UI position origin]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/variables/UIOrigins.html\n[Color factory css]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/functions/ColorCSS.html\n[Solid fill style]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/classes/SolidFill.html\n[Solid line style]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/classes/SolidLine.html\n[Chart XY]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/classes/ChartXY.html\n[Axis XY]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/classes/Axis.html\n[Custom tick]: https://lightningchart.com/js-charts/api-documentation/v7.0.1/classes/CustomTick.html\n\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farction%2Flcjs-example-0704-customcursorstackedy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Farction%2Flcjs-example-0704-customcursorstackedy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Farction%2Flcjs-example-0704-customcursorstackedy/lists"}