123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- """The dashboard page for the template."""
- import reflex as rx
- from ..states.pie_state import PieChartState
- from ..styles import *
- data_1 = [
- {"name": "Page A", "uv": 4000, "pv": 2400, "amt": 2400},
- {"name": "Page B", "uv": 3000, "pv": 1398, "amt": 2210},
- {"name": "Page C", "uv": 2000, "pv": 9800, "amt": 2290},
- {"name": "Page D", "uv": 2780, "pv": 3908, "amt": 2000},
- {"name": "Page E", "uv": 1890, "pv": 4800, "amt": 2181},
- {"name": "Page F", "uv": 2390, "pv": 3800, "amt": 2500},
- {"name": "Page G", "uv": 3490, "pv": 4300, "amt": 2100},
- ]
- data_1_show = """[
- {"name": "Page A", "uv": 4000, "pv": 2400, "amt": 2400},
- {"name": "Page B", "uv": 3000, "pv": 1398, "amt": 2210},
- {"name": "Page C", "uv": 2000, "pv": 9800, "amt": 2290},
- {"name": "Page D", "uv": 2780, "pv": 3908, "amt": 2000},
- {"name": "Page E", "uv": 1890, "pv": 4800, "amt": 2181},
- {"name": "Page F", "uv": 2390, "pv": 3800, "amt": 2500},
- {"name": "Page G", "uv": 3490, "pv": 4300, "amt": 2100},
- ]"""
- graph_1_code = """rx.recharts.composed_chart(
- rx.recharts.area(
- data_key="uv", stroke="#8884d8", fill="#8884d8"
- ),
- rx.recharts.bar(
- data_key="amt", bar_size=20, fill="#413ea0"
- ),
- rx.recharts.line(
- data_key="pv", type_="monotone", stroke="#ff7300"
- ),
- rx.recharts.x_axis(data_key="name"),
- rx.recharts.y_axis(),
- rx.recharts.cartesian_grid(stroke_dasharray="3 3"),
- rx.recharts.graphing_tooltip(),
- data=data,
- )"""
- graph_2_code = """rx.recharts.pie_chart(
- rx.recharts.pie(
- data=PieChartState.resources,
- data_key="count",
- name_key="type_",
- cx="50%",
- cy="50%",
- start_angle=180,
- end_angle=0,
- fill="#8884d8",
- label=True,
- ),
- rx.recharts.graphing_tooltip(),
- ),
- rx.vstack(
- rx.foreach(
- PieChartState.resource_types,
- lambda type_, i: rx.hstack(
- rx.button(
- "-",
- on_click=PieChartState.decrement(type_),
- ),
- rx.text(
- type_,
- PieChartState.resources[i]["count"],
- ),
- rx.button(
- "+",
- on_click=PieChartState.increment(type_),
- ),
- ),
- ),
- )"""
- graph_2_state = """class PieChartState(rx.State):
- resources: list[dict[str, Any]] = [
- dict(type_="🏆", count=1),
- dict(type_="🪵", count=1),
- dict(type_="🥑", count=1),
- dict(type_="🧱", count=1),
- ]
- @rx.cached_var
- def resource_types(self) -> list[str]:
- return [r["type_"] for r in self.resources]
- def increment(self, type_: str):
- for resource in self.resources:
- if resource["type_"] == type_:
- resource["count"] += 1
- break
- def decrement(self, type_: str):
- for resource in self.resources:
- if (
- resource["type_"] == type_
- and resource["count"] > 0
- ):
- resource["count"] -= 1
- break
- """
- def graphing_page() -> rx.Component:
- """The UI for the dashboard page.
- Returns:
- rx.Component: The UI for the dashboard page.
- """
- return rx.box(
- rx.vstack(
- rx.heading(
- "Graphing Demo",
- font_size="3em",
- ),
- rx.heading(
- "Composed Chart",
- font_size="2em",
- ),
- rx.stack(
- rx.recharts.composed_chart(
- rx.recharts.area(data_key="uv", stroke="#8884d8", fill="#8884d8"),
- rx.recharts.bar(data_key="amt", bar_size=20, fill="#413ea0"),
- rx.recharts.line(data_key="pv", type_="monotone", stroke="#ff7300"),
- rx.recharts.x_axis(data_key="name"),
- rx.recharts.y_axis(),
- rx.recharts.cartesian_grid(stroke_dasharray="3 3"),
- rx.recharts.graphing_tooltip(),
- data=data_1,
- # height="15em",
- ),
- width="100%",
- height="20em",
- ),
- rx.tabs(
- rx.tab_list(
- rx.tab("Code", style=tab_style),
- rx.tab("Data", style=tab_style),
- padding_x=0,
- ),
- rx.tab_panels(
- rx.tab_panel(
- rx.code_block(
- graph_1_code,
- language="python",
- show_line_numbers=True,
- ),
- width="100%",
- padding_x=0,
- padding_y=".25em",
- ),
- rx.tab_panel(
- rx.code_block(
- data_1_show,
- language="python",
- show_line_numbers=True,
- ),
- width="100%",
- padding_x=0,
- padding_y=".25em",
- ),
- width="100%",
- ),
- variant="unstyled",
- color_scheme="purple",
- align="end",
- width="100%",
- padding_top=".5em",
- ),
- rx.heading("Interactive Example", font_size="2em"),
- rx.hstack(
- rx.recharts.pie_chart(
- rx.recharts.pie(
- data=PieChartState.resources,
- data_key="count",
- name_key="type_",
- cx="50%",
- cy="50%",
- start_angle=180,
- end_angle=0,
- fill="#8884d8",
- label=True,
- ),
- rx.recharts.graphing_tooltip(),
- ),
- rx.vstack(
- rx.foreach(
- PieChartState.resource_types,
- lambda type_, i: rx.hstack(
- rx.button(
- "-",
- on_click=PieChartState.decrement(type_),
- ),
- rx.text(
- type_,
- PieChartState.resources[i]["count"],
- ),
- rx.button(
- "+",
- on_click=PieChartState.increment(type_),
- ),
- ),
- ),
- ),
- width="100%",
- height="15em",
- ),
- rx.tabs(
- rx.tab_list(
- rx.tab("Code", style=tab_style),
- rx.tab("State", style=tab_style),
- padding_x=0,
- ),
- rx.tab_panels(
- rx.tab_panel(
- rx.code_block(
- graph_2_code,
- language="python",
- show_line_numbers=True,
- ),
- width="100%",
- padding_x=0,
- padding_y=".25em",
- ),
- rx.tab_panel(
- rx.code_block(
- graph_2_state,
- language="python",
- show_line_numbers=True,
- ),
- width="100%",
- padding_x=0,
- padding_y=".25em",
- ),
- width="100%",
- ),
- variant="unstyled",
- color_scheme="purple",
- align="end",
- width="100%",
- padding_top=".5em",
- ),
- style=template_content_style,
- min_h="100vh",
- ),
- style=template_page_style,
- min_h="100vh",
- )
|