from nicegui import ui from . import doc @doc.demo(ui.highchart) def main_demo() -> None: from random import random chart = ui.highchart({ 'title': False, 'chart': {'type': 'bar'}, 'xAxis': {'categories': ['A', 'B']}, 'series': [ {'name': 'Alpha', 'data': [0.1, 0.2]}, {'name': 'Beta', 'data': [0.3, 0.4]}, ], }).classes('w-full h-64') def update(): chart.options['series'][0]['data'][0] = random() chart.update() ui.button('Update', on_click=update) @doc.demo('Chart with extra dependencies', ''' To use a chart type that is not included in the default dependencies, you can specify extra dependencies. This demo shows a solid gauge chart. ''') def extra_dependencies() -> None: ui.highchart({ 'title': False, 'chart': {'type': 'solidgauge'}, 'yAxis': { 'min': 0, 'max': 1, }, 'series': [ {'data': [0.42]}, ], }, extras=['solid-gauge']).classes('w-full h-64') @doc.demo('Chart with draggable points', ''' This chart allows dragging the series points. You can register callbacks for the following events: - `on_point_click`: called when a point is clicked - `on_point_drag_start`: called when a point drag starts - `on_point_drag`: called when a point is dragged - `on_point_drop`: called when a point is dropped ''') def drag() -> None: ui.highchart( { 'title': False, 'plotOptions': { 'series': { 'stickyTracking': False, 'dragDrop': {'draggableY': True, 'dragPrecisionY': 1}, }, }, 'series': [ {'name': 'A', 'data': [[20, 10], [30, 20], [40, 30]]}, {'name': 'B', 'data': [[50, 40], [60, 50], [70, 60]]}, ], }, extras=['draggable-points'], on_point_click=lambda e: ui.notify(f'Click: {e}'), on_point_drag_start=lambda e: ui.notify(f'Drag start: {e}'), on_point_drop=lambda e: ui.notify(f'Drop: {e}') ).classes('w-full h-64') doc.reference(ui.highchart)