Skip to content
Snippets Groups Projects
InspectorPanel.tsx 2.90 KiB
import React, { useMemo } from "react";
import { Button, Panel } from "../components";
import { useFocus, useSelection, useVisualization } from "../data-access";
import { resultSetFocus } from "../data-access/store/interactionSlice";
import { useDispatch } from "react-redux";
import { ConnectionInspector } from "./ConnectionInspector";
import { VisualizationSettings } from "../vis/components/config/VisualizationSettings";
import { SelectionConfig } from "../vis/components/config/SelectionConfig";
import { SchemaSettings } from "../schema/panel/SchemaSettings";
import { QuerySettings } from "../querybuilder/panel/querysidepanel/QuerySettings";
import { useActiveVisualization } from "@graphpolaris/shared/lib/data-access";
import { getEnvVariable } from "@/config";

export function InspectorPanel(props: { children?: React.ReactNode }) {
  const buildInfo = getEnvVariable("GRAPHPOLARIS_VERSION") === "prod";
  const selection = useSelection();
  const focus = useFocus();
  const dispatch = useDispatch();

  const inspector = useMemo(() => {
    if (selection) return <SelectionConfig />;
    // if (!focus) return <ConnectionInspector />;
    // if (activeVisualizationIndex !== -1) return <ConnectionInspector  />;
    return <VisualizationSettings />;
    // if (focus.focusType === 'visualization') return <VisualizationConfigPanel />;
    // else if (focus.focusType === 'schema') return <SchemaDialog />;
    // else if (focus.focusType === 'query') return <QuerySettings />;
    return null;
  }, [focus, selection]);

  return (
    <Panel
      title={
        <div className="flex flex-row gap-0.5 items-center align-middle">
          <Button variant="ghost" size="2xs" className="hover:underline p-0" onClick={() => dispatch(resultSetFocus(undefined))}>
            GP
          </Button>
          {focus && (
            <>
              <span className="pb-0.5">{">"}</span>
              <Button variant="ghost" size="2xs" className="hover:underline p-0 capitalize">
                {focus.focusType}
              </Button>
            </>
          )}
          {selection && (
            <>
              <span className="pb-0.5">{">"}</span>
              <Button variant="ghost" size="2xs" className="hover:underline p-0">
                Selection
              </Button>
            </>
          )}
        </div>
      }
    >
      {inspector}

      <div className="flex flex-col w-full">
        <div className="mt-auto p-2 bg-light">
          <Button
            variantType="primary"
            variant="outline"
            size="xs"
            label="Report an issue"
            onClick={() =>
              window.open(
                "https://app.asana.com/-/login?u=https%3A%2F%2Fform.asana.com%2F%3Fk%3D2QEC88Dl7ETs2wYYWjkMXg%26d%3D1206648675960041&error=01",
                "_blank",
              )
            }
            className="block w-full"
          />
        </div>
      </div>
    </Panel>
  );
}