// Copyright (C) The Arvados Authors. All rights reserved. // // SPDX-License-Identifier: AGPL-3.0 // Example plugin. import { PluginConfig } from '~/common/plugintypes'; import * as React from 'react'; import { Dispatch } from 'redux'; import { RootState } from '~/store/store'; import { push } from "react-router-redux"; import { Typography } from "@material-ui/core"; import { Route, matchPath } from "react-router"; import { RootStore } from '~/store/store'; import { activateSidePanelTreeItem } from '~/store/side-panel-tree/side-panel-tree-actions'; import { setSidePanelBreadcrumbs } from '~/store/breadcrumbs/breadcrumbs-actions'; const categoryName = "Plugin Example"; export const routePath = "/examplePlugin"; const ExamplePluginMainPanel = (props: {}) => { return This is a example main panel plugin. ; }; export const register = (pluginConfig: PluginConfig) => { pluginConfig.centerPanelList.push((elms) => { elms.push(); return elms; }); pluginConfig.navigateToHandlers.push((dispatch: Dispatch, getState: () => RootState, uuid: string) => { if (uuid === categoryName) { dispatch(push(routePath)); return true; } return false; }); pluginConfig.sidePanelCategories.push((cats: string[]): string[] => { cats.push(categoryName); return cats; }); pluginConfig.locationChangeHandlers.push((store: RootStore, pathname: string): boolean => { if (matchPath(pathname, { path: routePath, exact: true })) { store.dispatch(activateSidePanelTreeItem(categoryName)); store.dispatch(setSidePanelBreadcrumbs(categoryName)); return true; } return false; }); };