Fixed selected nav item. Added lazy loading for WS client to resolve token issue. Added some filtering to jobs list.

This commit is contained in:
Patrick Fic
2019-12-12 12:23:31 -08:00
parent f6c62da40a
commit bca375251e
9 changed files with 266 additions and 42 deletions

View File

@@ -8,38 +8,56 @@ import {
GET_LANDING_NAV_ITEMS,
GET_NAV_ITEMS
} from "../../graphql/metadata.queries";
import { GET_CURRENT_SELECTED_NAV_ITEM } from "../../graphql/local.queries";
import LoadingSpinner from "../loading-spinner/loading-spinner.component";
import AlertComponent from "../alert/alert.component";
import ManageSignInButton from "../manage-sign-in-button/manage-sign-in-button.component";
import { useApolloClient } from "@apollo/react-hooks";
import GlobalSearch from "../global-search/global-search.component";
export default ({ landingHeader }) => {
let HookNavItems;
export default ({ landingHeader, signedIn }) => {
const apolloClient = useApolloClient();
const hookSelectedNavItem = useQuery(GET_CURRENT_SELECTED_NAV_ITEM);
let hookNavItems;
if (landingHeader) {
HookNavItems = useQuery(GET_LANDING_NAV_ITEMS);
hookNavItems = useQuery(GET_LANDING_NAV_ITEMS, {
fetchPolicy: "network-only"
});
} else {
HookNavItems = useQuery(GET_NAV_ITEMS);
hookNavItems = useQuery(GET_NAV_ITEMS, {
fetchPolicy: "network-only"
});
}
const handleClick = e => {
console.log("click ", e);
// this.setState({
// current: e.key
// });
apolloClient.writeData({ data: { selectedNavItem: e.key } });
};
if (HookNavItems.loading) return <LoadingSpinner />;
if (HookNavItems.error)
return <AlertComponent message={HookNavItems.error.message} />;
if (hookNavItems.loading || hookSelectedNavItem.loading)
return <LoadingSpinner />;
if (hookNavItems.error)
return <AlertComponent message={hookNavItems.error.message} />;
if (hookSelectedNavItem.error)
return console.log(
"Unable to load Selected Navigation Item.",
hookSelectedNavItem.error
);
const { selectedNavItem } = hookSelectedNavItem.data;
const navItems = JSON.parse(hookNavItems.data.masterdata_by_pk.value);
const navItems = JSON.parse(HookNavItems.data.masterdata_by_pk.value);
return (
<Menu
theme="dark"
className="header"
onClick={handleClick}
selectedKeys="Home"
selectedKeys={selectedNavItem}
mode="horizontal"
>
<Menu.Item>
<GlobalSearch />
</Menu.Item>
{navItems.map(navItem => (
<Menu.Item key={navItem.title}>
<Link to={navItem.path}>
@@ -48,11 +66,16 @@ export default ({ landingHeader }) => {
</Link>
</Menu.Item>
))}
{!landingHeader ? (
<Menu.Item>
<SignOut />
</Menu.Item>
) : null}
) : (
<Menu.Item>
<ManageSignInButton />
</Menu.Item>
)}
</Menu>
);
};