From d93e6a996e60fb6abce9a870cef6b2d57bfa70fd Mon Sep 17 00:00:00 2001 From: Herbert Eiselt Date: Fri, 7 Jun 2019 17:40:50 +0200 Subject: SDNR Add missing status bar to ODLUX Framework Modify framework and adapt all apps Issue-ID: SDNC-789 Signed-off-by: Herbert Eiselt Change-Id: I1ea0a3df6c3f6db08f2bd7a21eb3b4cbf230a08a Signed-off-by: Herbert Eiselt --- .../apps/helpApp/src/components/helpStatus.tsx | 63 ++++++++++++++++++++++ sdnr/wt/odlux/apps/helpApp/src/index.html | 14 +++-- sdnr/wt/odlux/apps/helpApp/src/models/tocNode.ts | 3 +- sdnr/wt/odlux/apps/helpApp/src/plugin.tsx | 2 + .../odlux/apps/helpApp/src/services/helpService.ts | 1 + sdnr/wt/odlux/apps/helpApp/webpack.config.js | 1 - 6 files changed, 77 insertions(+), 7 deletions(-) create mode 100644 sdnr/wt/odlux/apps/helpApp/src/components/helpStatus.tsx (limited to 'sdnr/wt/odlux/apps/helpApp') diff --git a/sdnr/wt/odlux/apps/helpApp/src/components/helpStatus.tsx b/sdnr/wt/odlux/apps/helpApp/src/components/helpStatus.tsx new file mode 100644 index 000000000..813fffd19 --- /dev/null +++ b/sdnr/wt/odlux/apps/helpApp/src/components/helpStatus.tsx @@ -0,0 +1,63 @@ +import * as React from 'react'; + +import { withStyles, WithStyles, createStyles, Theme } from '@material-ui/core/styles'; +import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons'; // select app icon + +import connect, { Connect } from '../../../../framework/src/flux/connect'; +import { IApplicationStoreState } from '../../../../framework/src/store/applicationStore'; + +import Typography from '@material-ui/core/Typography'; +import { FontAwesomeIcon } from '@fortawesome/react-fontawesome'; +import { faQuestionCircle } from '@fortawesome/free-solid-svg-icons'; +import { withRouter, RouteComponentProps } from 'react-router'; + +const styles = (theme: Theme) => createStyles({ + icon: { + marginLeft: 8, + marginRight: 8 + }, + disabled: { + color: theme.palette.grey[400] + }, + link: { + cursor: "pointer", + '&:hover': { + textDecoration: "underline" + } + } +}); + +const mapProps = (state: IApplicationStoreState) => ({ + appId: state.framework.applicationState.appId, + toc: state.help.toc +}); + + +type HelpStatusComponentProps = & RouteComponentProps & WithStyles & Connect; + +class HelpStatusComponent extends React.Component { + render() { + const { classes, history, toc, appId } = this.props; + const rootNode = toc && toc.find(t => t.id === "sdnr"); + const helpNode = appId + ? rootNode && rootNode.nodes && rootNode.nodes.find(n => n.id === appId || n.id === appId+"App") + : rootNode; + return helpNode + ? ( + { event.stopPropagation(); history.push(`/help/${helpNode.uri}`) }} > + + Help + + ) + : ( + + + Help + + ); + }; + +} + +export const HelpStatus = withRouter(withStyles(styles)(connect(mapProps)(HelpStatusComponent))); +export default HelpStatus; \ No newline at end of file diff --git a/sdnr/wt/odlux/apps/helpApp/src/index.html b/sdnr/wt/odlux/apps/helpApp/src/index.html index 6865db051..e76109fd8 100644 --- a/sdnr/wt/odlux/apps/helpApp/src/index.html +++ b/sdnr/wt/odlux/apps/helpApp/src/index.html @@ -14,11 +14,15 @@ diff --git a/sdnr/wt/odlux/apps/helpApp/src/models/tocNode.ts b/sdnr/wt/odlux/apps/helpApp/src/models/tocNode.ts index ae73ec43d..ddb5e729e 100644 --- a/sdnr/wt/odlux/apps/helpApp/src/models/tocNode.ts +++ b/sdnr/wt/odlux/apps/helpApp/src/models/tocNode.ts @@ -5,7 +5,7 @@ export type VersionInfo = { } export type TocNode = { - label: string; + label: string; versions: { [versionKey: string]: VersionInfo, current: VersionInfo @@ -17,6 +17,7 @@ export type TocNodeCollection = { [tocNodeKey: string]: TocNode }; export type TocTreeNode = { + id: string; label: string; uri: string; nodes?: TocTreeNode[]; diff --git a/sdnr/wt/odlux/apps/helpApp/src/plugin.tsx b/sdnr/wt/odlux/apps/helpApp/src/plugin.tsx index f871ab9d9..94f65b870 100644 --- a/sdnr/wt/odlux/apps/helpApp/src/plugin.tsx +++ b/sdnr/wt/odlux/apps/helpApp/src/plugin.tsx @@ -14,6 +14,7 @@ import { helpAppRootHandler } from './handlers/helpAppRootHandler'; import { HelpApplication } from './views/helpApplication'; import { SubMenuEntry } from "./components/subMenuEntry"; +import { HelpStatus } from "./components/helpStatus"; import '!style-loader!css-loader!highlight.js/styles/default.css'; @@ -58,6 +59,7 @@ export async function register() { icon: faFirstAid, rootComponent: App, rootActionHandler: helpAppRootHandler, + statusBarElement: HelpStatus, menuEntry: "Help", subMenuEntry: SubMenuEntry }); diff --git a/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts b/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts index 800e0b47f..aa0b0ed43 100644 --- a/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts +++ b/sdnr/wt/odlux/apps/helpApp/src/services/helpService.ts @@ -29,6 +29,7 @@ class HelpService { return Object.keys(col).reduce ((acc, key) => { const current = col[key]; acc.push({ + id: key, label: current.label, uri: current.versions.current.path, nodes: current.nodes && mapNodesCollection(current.nodes) || undefined diff --git a/sdnr/wt/odlux/apps/helpApp/webpack.config.js b/sdnr/wt/odlux/apps/helpApp/webpack.config.js index f9448a310..3a56d8bea 100644 --- a/sdnr/wt/odlux/apps/helpApp/webpack.config.js +++ b/sdnr/wt/odlux/apps/helpApp/webpack.config.js @@ -123,7 +123,6 @@ module.exports = (env) => { }]), ] ], - devServer: { public: "http://localhost:3100", contentBase: frameworkPath, -- cgit 1.2.3-korg