import { Text } from "../../tremor/Text"; import { LanguageIcon, PhotoIcon, DivideIcon, } from "@heroicons/react/20/solid"; import { Tooltip } from "../../tremor/Tooltip/Tooltip"; import React from "react"; import { useTextWidgetModal } from "../TextWidgetModal"; import { useImageWidgetModal } from "../ImageWidgetModal"; import { useDashboard } from "../../layouts/Dashboard/useDashboard"; import { useBackend } from "../../layouts/Wrapper"; import { useMaxHeight } from "../../lib/useMaxHeight"; import { CubeTransparentIcon, LightBulbIcon, PlusIcon } from "@heroicons/react/24/outline"; import { ChartBarIcon } from "@heroicons/react/24/solid"; import { useEditWidgetModal } from "../EditWidgetModal"; import { useWidgetSuggestionsModal } from "../WidgetSuggestionsModal"; import { Popover, PopoverContent, PopoverTrigger } from "../../tremor/Popover"; const BLANK_CODE = `def main(): return [] `; export const CreateToolbar: React.FC<{}> = ({ }) => { const { setOpen: setTextModalOpen } = useTextWidgetModal(); const { setOpen: setImageModalOpen } = useImageWidgetModal(); const { setOpen: setAdvancedModalOpen } = useEditWidgetModal(); const { setOpen: setSuggestionsModalOpen, open: suggestionsModalOpen } = useWidgetSuggestionsModal(); const { setOpen: setEditModalOpen } = useEditWidgetModal(); const { dashboard, refreshWidgets, tab } = useDashboard(); const { backend, adminMode } = useBackend(); const { lg, sm } = useMaxHeight(); const createWidget = async () => { if (!dashboard || !backend) return; const widget = await backend.widgets.create({ dashboard: dashboard.id, layouts: { lg: { x: 0, y: lg, w: 4, h: 20, }, sm: { x: 0, y: sm, w: 3, h: 20, }, }, use_in_library: false, use_in_chat: false, title: "New widget", type: "", team: dashboard.team, code: "", messages: [], settings: {}, error: null, tab: tab || 0, engine: "python-v1", config: {}, drilldown_widget: null, }); setEditModalOpen(true, widget); } const addDividerWidget = async () => { if (!dashboard || !backend) return; let cache = { type: "divider", data: { datasets: [{ data: [], label: "" }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { divider: { display: true, }, title: { display: false, }, legend: { display: false, }, subtitle: { display: false, }, } }, }; await backend.widgets.create({ dashboard: dashboard.id, layouts: { lg: { x: 0, y: lg, w: 12, h: 4, }, sm: { x: 0, y: sm, w: 3, h: 4, }, }, use_in_library: false, use_in_chat: false, title: "Divider", type: "divider", team: dashboard.team, code: "", messages: [], settings: {}, error: null, tab: tab || 0, engine: "manual-v1", config: cache, drilldown_widget: null, }); refreshWidgets(backend); }; const addAdvancedWidget = async () => { if (!dashboard || !backend) return; let cache = { type: "line", data: { datasets: [{ data: [], label: "" }] }, options: { responsive: true, maintainAspectRatio: false, plugins: { title: { display: true, text: "New Widget" }, legend: { display: false, }, subtitle: { display: false, }, }, scales: { x: { display: true }, y: { display: true } } }, }; let wid = await backend.widgets.create({ dashboard: dashboard.id, layouts: { lg: { x: 0, y: lg, w: 4, h: 4, }, sm: { x: 0, y: sm, w: 3, h: 4, }, }, use_in_library: false, use_in_chat: false, type: "bar", title: "New widget", team: dashboard.team, code: BLANK_CODE, messages: [], settings: {}, error: null, tab: tab || 0, engine: "manual-v1", config: cache, drilldown_widget: null, }); refreshWidgets(backend); setAdvancedModalOpen(true, wid); }; if ( !dashboard?.settings?.can_ask_questions && !dashboard?.settings?.can_create_widgets && !adminMode ) { return <>>; } return ( <>