From 52ab9aba01dc469bf970a1cf07281ab56bde7e95 Mon Sep 17 00:00:00 2001
From: Eduardo Herrera
Date: Wed, 4 Oct 2023 13:52:50 -0700
Subject: [PATCH 1/8] PSP-6945 : Access to PIMS Overview (Help File) - Header
---
.../src/components/layout/Header/Header.tsx | 5 +-
.../src/features/help/components/HelpBox.scss | 25 --
.../features/help/components/HelpBox.test.tsx | 56 -----
.../src/features/help/components/HelpBox.tsx | 61 -----
.../features/help/components/HelpModal.tsx | 71 ++++--
.../help/components/HelpSubmitBox.test.tsx | 34 +--
.../help/components/HelpSubmitBox.tsx | 39 +---
.../__snapshots__/HelpBox.test.tsx.snap | 196 ----------------
.../text/DetailNavigationHelpText.tsx | 25 --
.../components/text/DetailViewHelpText.tsx | 21 --
.../text/InventoryFilterHelpText.tsx | 30 ---
.../components/text/InventoryListHelpText.tsx | 18 --
.../text/InventoryNavigationHelpText.tsx | 25 --
.../components/text/LandingFilterHelpText.tsx | 20 --
.../components/text/LandingMapHelpText.tsx | 17 --
.../text/LandingNavigationHelpText.tsx | 24 --
.../src/features/help/constants/HelpText.tsx | 86 -------
.../containers/HelpModalContentContainer.tsx | 49 +---
.../HelpModalContentContainer.test.tsx.snap | 219 ++++++++----------
.../src/features/help/forms/BugForm.tsx | 64 -----
.../help/forms/FeatureRequestForm.tsx | 56 -----
.../features/help/forms/HelpRequestForm.tsx | 74 ++++++
.../src/features/help/forms/QuestionForm.tsx | 59 -----
23 files changed, 241 insertions(+), 1033 deletions(-)
delete mode 100644 source/frontend/src/features/help/components/HelpBox.scss
delete mode 100644 source/frontend/src/features/help/components/HelpBox.test.tsx
delete mode 100644 source/frontend/src/features/help/components/HelpBox.tsx
delete mode 100644 source/frontend/src/features/help/components/__snapshots__/HelpBox.test.tsx.snap
delete mode 100644 source/frontend/src/features/help/components/text/DetailNavigationHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/DetailViewHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/InventoryFilterHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/InventoryListHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/InventoryNavigationHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/LandingFilterHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/LandingMapHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/LandingNavigationHelpText.tsx
delete mode 100644 source/frontend/src/features/help/constants/HelpText.tsx
delete mode 100644 source/frontend/src/features/help/forms/BugForm.tsx
delete mode 100644 source/frontend/src/features/help/forms/FeatureRequestForm.tsx
create mode 100644 source/frontend/src/features/help/forms/HelpRequestForm.tsx
delete mode 100644 source/frontend/src/features/help/forms/QuestionForm.tsx
diff --git a/source/frontend/src/components/layout/Header/Header.tsx b/source/frontend/src/components/layout/Header/Header.tsx
index 996b88d995..8a2146a878 100644
--- a/source/frontend/src/components/layout/Header/Header.tsx
+++ b/source/frontend/src/components/layout/Header/Header.tsx
@@ -3,6 +3,7 @@ import React from 'react';
import Nav from 'react-bootstrap/Nav';
import Navbar from 'react-bootstrap/Navbar';
import { FaBomb } from 'react-icons/fa';
+import { Link } from 'react-router-dom';
import { BCGovLogo } from '@/components/common/BCGovLogo';
import { VerticalBar } from '@/components/common/VerticalBar';
@@ -47,7 +48,9 @@ export const Header = () => {
-
+
+
+
diff --git a/source/frontend/src/features/help/components/HelpBox.scss b/source/frontend/src/features/help/components/HelpBox.scss
deleted file mode 100644
index 4aa173a97c..0000000000
--- a/source/frontend/src/features/help/components/HelpBox.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-@import '@/assets/scss/colors.scss';
-.help-box {
- button {
- background-color: white;
- border: none;
- border-bottom: 0.1rem solid $accent-color;
- width: 100%;
- text-align: left;
- }
- :focus {
- outline: none;
- }
- .active:after {
- content: '';
- transform: translateX(100%);
- align-self: center;
- width: 0;
- height: 0;
- display: inline-block;
- border-top: 0.8rem solid transparent;
- border-bottom: 0.8rem solid transparent;
- border-left: 0.8rem solid black;
- border-right: 0.8rem solid transparent;
- }
-}
diff --git a/source/frontend/src/features/help/components/HelpBox.test.tsx b/source/frontend/src/features/help/components/HelpBox.test.tsx
deleted file mode 100644
index 91c2f3721e..0000000000
--- a/source/frontend/src/features/help/components/HelpBox.test.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import { fireEvent, render, waitFor } from '@/utils/test-utils';
-
-import { IHelpPage, Topics } from '../interfaces';
-import HelpBox from './HelpBox';
-
-const topicMap = new Map();
-topicMap.set('Map', null);
-topicMap.set('Test Section', 'This is some test text');
-
-const mockPage: IHelpPage = {
- name: 'Landing Page',
- topics: topicMap,
-};
-
-const setActiceTopic = jest.fn();
-
-const renderHelpBox = () => {
- return render(
- ,
- );
-};
-describe('Help box tests...', () => {
- it('renders correctly..', () => {
- const { container } = renderHelpBox();
- expect(container).toMatchSnapshot();
- });
-
- it('contains navigation items..', () => {
- const { getByText } = renderHelpBox();
- expect(getByText('Map')).toBeInTheDocument();
- expect(getByText('Test Section')).toBeInTheDocument();
- });
-
- it('calls setActiveTopic on click of item', async () => {
- const { getByText } = renderHelpBox();
- await waitFor(() => {
- fireEvent.click(getByText('Test Section'));
- });
- expect(setActiceTopic).toBeCalledTimes(1);
- });
-
- it('displays corresponding text to navigation item', () => {
- const { getByText } = render(
- ,
- );
- expect(getByText('This is some test text')).toBeInTheDocument();
- });
-});
diff --git a/source/frontend/src/features/help/components/HelpBox.tsx b/source/frontend/src/features/help/components/HelpBox.tsx
deleted file mode 100644
index f7a8c33943..0000000000
--- a/source/frontend/src/features/help/components/HelpBox.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-import './HelpBox.scss';
-
-import React from 'react';
-import ButtonGroup from 'react-bootstrap/ButtonGroup';
-import styled from 'styled-components';
-
-import { Button } from '@/components/common/buttons/Button';
-
-import { getTopics } from '../constants/HelpText';
-import { IHelpPage, Topics } from '../interfaces';
-
-interface IHelpBoxProps {
- /** The current help page that is being displayed */
- helpPage: IHelpPage | undefined;
- /** The active topic that is being displayed on this help page, only one topic is displayed at a time. */
- activeTopic: Topics;
- /** Set the active topic */
- setActiveTopic: Function;
-}
-
-const Box = styled.div`
- display: flex;
- align-items: start;
-`;
-
-const TopicButton = styled(Button)`
- max-height: 4rem;
- background-color: white;
- display: flex;
-`;
-
-const TopicSelector = styled(ButtonGroup)``;
-
-/**
- * Display a list of topics, as well as the content component corresponding to the active topic.
- */
-const HelpBox: React.FunctionComponent> = ({
- helpPage,
- activeTopic,
- setActiveTopic,
-}) => {
- return (
-
-
- {getTopics(helpPage).map((topic, index) => (
- setActiveTopic(topic)}
- active={topic === activeTopic}
- bsPrefix="link"
- >
- {topic}
-
- ))}
-
- {helpPage?.topics.get(activeTopic)}
-
- );
-};
-
-export default HelpBox;
diff --git a/source/frontend/src/features/help/components/HelpModal.tsx b/source/frontend/src/features/help/components/HelpModal.tsx
index 338c0d8280..901c7edb1d 100644
--- a/source/frontend/src/features/help/components/HelpModal.tsx
+++ b/source/frontend/src/features/help/components/HelpModal.tsx
@@ -3,11 +3,12 @@ import Container from 'react-bootstrap/Container';
import Modal from 'react-bootstrap/Modal';
import ModalDialog from 'react-bootstrap/ModalDialog';
import Draggable from 'react-draggable';
+import { FaQuestionCircle } from 'react-icons/fa';
import styled from 'styled-components';
import variables from '@/assets/scss/_variables.module.scss';
import { Button } from '@/components/common/buttons/Button';
-import TooltipIcon from '@/components/common/TooltipIcon';
+import { H3 } from '@/components/common/styles';
import { useAppSelector } from '@/store/hooks';
import { useTenants } from '@/store/slices/tenants';
@@ -57,31 +58,44 @@ const HelpModal: FunctionComponent> = ({
- Help Desk
-
+
+ Help Desk
-
+ Get started at PIMS
+
+ This overview has useful tools that will support you to start using the application. You
+ can also watch the video demos.
+
+
+ PIMS resources
+
+
+ Do you want to proceed?
+
+
+ No
+
{config?.settings?.helpDeskEmail ? (
- {
handleSubmit();
}}
>
- Submit
-
+ Yes
+
) : (
- Submit
+ Yes
)}
-
- Cancel
-
@@ -111,23 +125,48 @@ const ModalStyled = styled(Modal)`
.modal-body {
max-height: calc(100vh - 20rem);
overflow-y: auto;
+ padding: 0px 16px;
+ }
+ .modal-footer {
+ border: none;
+ padding-right: 16px;
}
`;
const DraggableTitle = styled(Modal.Title)`
+ margin-left: 10px;
width: 100%;
cursor: pointer;
color: white;
`;
+const DraggableTitleText = styled.div`
+ display: inline-block;
+ margin-left: 10px;
+`;
+
+const StyledConfirmationText = styled.p`
+ margin-top: 24px;
+`;
+
+const StyledButton = styled(Button)`
+ width: 95px;
+ margin-right: 24px;
+`;
+
+const LinkStyled = styled.a`
+ margin-bottom: 16px;
+`;
+
+const H3Styled = styled(H3)`
+ border: none;
+ margin-bottom: 16px;
+ margin-top: 24px;
+`;
+
const ModalHeader = styled(Modal.Header)`
background-color: ${variables.primaryColor};
padding: 0.5rem;
`;
-const StyledTooltip = styled(TooltipIcon)`
- margin-left: 0.5rem;
- margin-bottom: 0.5rem;
-`;
-
export default HelpModal;
diff --git a/source/frontend/src/features/help/components/HelpSubmitBox.test.tsx b/source/frontend/src/features/help/components/HelpSubmitBox.test.tsx
index 34b73cd945..68af749d3e 100644
--- a/source/frontend/src/features/help/components/HelpSubmitBox.test.tsx
+++ b/source/frontend/src/features/help/components/HelpSubmitBox.test.tsx
@@ -1,15 +1,12 @@
import { act, render, screen, waitFor } from '@testing-library/react';
-import { TicketTypes } from '../constants/HelpText';
import HelpSubmitBox from './HelpSubmitBox';
-const renderHelpBox = (ticketType: TicketTypes) =>
+const renderHelpBox = () =>
render(
x)}
setMailto={jest.fn()}
page="Landing Page"
/>,
@@ -18,39 +15,18 @@ const renderHelpBox = (ticketType: TicketTypes) =>
describe('Help Box tests', () => {
it('renders properly', async () => {
await act(async () => {
- const { asFragment } = renderHelpBox(TicketTypes.QUESTION);
+ const { asFragment } = renderHelpBox();
const fragment = await waitFor(() => asFragment());
expect(fragment).toMatchSnapshot();
});
});
- it('contains question field and option when question selected', async () => {
+ it('displays appropriate fields', async () => {
await act(async () => {
- renderHelpBox(TicketTypes.QUESTION);
+ renderHelpBox();
});
-
- const question = await waitFor(() => screen.getAllByText('Question'));
- expect(question).toHaveLength(2);
- });
-
- it('displays appropriate fields when switching to bug type', async () => {
- await act(async () => {
- renderHelpBox(TicketTypes.BUG);
- });
- const reproduce = await waitFor(() => screen.getByText('Steps to Reproduce'));
- const expected = await waitFor(() => screen.getByText('Expected Result'));
- const result = await waitFor(() => screen.getByText('Actual Result'));
- expect(reproduce).toBeInTheDocument();
- expect(expected).toBeInTheDocument();
- expect(result).toBeInTheDocument();
- });
-
- it('displays appropriate fields when switching to feature request ticket type', async () => {
- await act(async () => {
- renderHelpBox(TicketTypes.FEATURE_REQUEST);
- });
- const desc = await waitFor(() => screen.getByText('Description'));
+ const desc = await waitFor(() => screen.getByText('Description:'));
expect(desc).toBeInTheDocument();
});
});
diff --git a/source/frontend/src/features/help/components/HelpSubmitBox.tsx b/source/frontend/src/features/help/components/HelpSubmitBox.tsx
index 7b0ad98818..aec3c99cb9 100644
--- a/source/frontend/src/features/help/components/HelpSubmitBox.tsx
+++ b/source/frontend/src/features/help/components/HelpSubmitBox.tsx
@@ -1,20 +1,14 @@
import './HelpSubmitBox.scss';
import * as React from 'react';
-import Form from 'react-bootstrap/Form';
-import styled from 'styled-components';
-import { helpTickets, TicketTypes } from '../constants/HelpText';
+import HelpRequestForm from '../forms/HelpRequestForm';
interface IHelpSubmitBoxProps {
/** the keycloak user display name */
user: string;
/** the keycloak user email */
email: string;
- /** set the active ticket type */
- setActiveTicketType: Function;
- /** the active ticket type, determines which form fields to display to the user. */
- activeTicketType: TicketTypes;
/** the name of the current page, used to provide context in the email generated by the ticket form. ie. Landing Page. */
page: string;
/** set the mailto of the parent based on the ticket form content. */
@@ -25,39 +19,10 @@ interface IHelpSubmitBoxProps {
* A component that displays a list of Help Ticket types as well as a form corresponding to the active Help Ticket type
*/
const HelpSubmitBox: React.FunctionComponent> = ({
- setActiveTicketType,
- activeTicketType,
setMailto,
...rest
}) => {
- const form = helpTickets.get(activeTicketType);
- return (
-
-
- {Object.values(TicketTypes).map((ticket: string) => (
- setActiveTicketType(ticket)}
- checked={ticket === activeTicketType}
- />
- ))}
-
-
- {form &&
- form({
- formValues: rest,
- setMailto: setMailto,
- })}
-
-
- );
+ return ;
};
-const FormPicker = styled.div`
- display: flex;
-`;
-
export default HelpSubmitBox;
diff --git a/source/frontend/src/features/help/components/__snapshots__/HelpBox.test.tsx.snap b/source/frontend/src/features/help/components/__snapshots__/HelpBox.test.tsx.snap
deleted file mode 100644
index 11e413c3f2..0000000000
--- a/source/frontend/src/features/help/components/__snapshots__/HelpBox.test.tsx.snap
+++ /dev/null
@@ -1,196 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`Help box tests... renders correctly.. 1`] = `
-.c1.btn {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-align-items: center;
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- padding: 0.4rem 1.2rem;
- min-height: 3rem;
- border: 0.2rem solid transparent;
- border-radius: 0.4rem;
- text-align: center;
- -webkit-text-decoration: none;
- text-decoration: none;
- font-size: 1.8rem;
- font-family: 'BCSans','Noto Sans',Verdana,Arial,sans-serif;
- font-weight: 700;
- -webkit-letter-spacing: 0.1rem;
- -moz-letter-spacing: 0.1rem;
- -ms-letter-spacing: 0.1rem;
- letter-spacing: 0.1rem;
- cursor: pointer;
-}
-
-.c1.btn:hover {
- -webkit-text-decoration: underline;
- text-decoration: underline;
- opacity: 0.8;
-}
-
-.c1.btn:focus {
- outline-width: 0.4rem;
- outline-style: solid;
- outline-offset: 1px;
- box-shadow: none;
-}
-
-.c1.btn.btn-primary {
- border: none;
-}
-
-.c1.btn.btn-secondary {
- background: none;
-}
-
-.c1.btn.btn-info {
- border: none;
- background: none;
- padding-left: 0.6rem;
- padding-right: 0.6rem;
-}
-
-.c1.btn.btn-info:hover,
-.c1.btn.btn-info:active,
-.c1.btn.btn-info:focus {
- background: none;
-}
-
-.c1.btn.btn-light {
- border: none;
-}
-
-.c1.btn.btn-dark {
- border: none;
-}
-
-.c1.btn.btn-link {
- font-size: 1.6rem;
- font-weight: 400;
- background: none;
- border: none;
- -webkit-text-decoration: none;
- text-decoration: none;
- min-height: 2.5rem;
- line-height: 3rem;
- -webkit-box-pack: left;
- -webkit-justify-content: left;
- -ms-flex-pack: left;
- justify-content: left;
- -webkit-letter-spacing: unset;
- -moz-letter-spacing: unset;
- -ms-letter-spacing: unset;
- letter-spacing: unset;
- text-align: left;
- padding: 0;
-}
-
-.c1.btn.btn-link:hover,
-.c1.btn.btn-link:active,
-.c1.btn.btn-link:focus {
- -webkit-text-decoration: underline;
- text-decoration: underline;
- border: none;
- background: none;
- box-shadow: none;
- outline: none;
-}
-
-.c1.btn.btn-link:disabled,
-.c1.btn.btn-link.disabled {
- background: none;
- pointer-events: none;
-}
-
-.c1.btn:disabled,
-.c1.btn:disabled:hover {
- box-shadow: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- pointer-events: none;
- cursor: not-allowed;
- opacity: 0.65;
-}
-
-.c1.Button .Button__icon {
- margin-right: 1.6rem;
-}
-
-.c1.Button--icon-only:focus {
- outline: none;
-}
-
-.c1.Button--icon-only .Button__icon {
- margin-right: 0;
-}
-
-.c0 {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-align-items: start;
- -webkit-box-align: start;
- -ms-flex-align: start;
- align-items: start;
-}
-
-.c2 {
- max-height: 4rem;
- background-color: white;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
-}
-
-
-
-
-
-
-
-
- Map
-
-
-
-
- Test Section
-
-
-
-
-
-
-`;
diff --git a/source/frontend/src/features/help/components/text/DetailNavigationHelpText.tsx b/source/frontend/src/features/help/components/text/DetailNavigationHelpText.tsx
deleted file mode 100644
index 8254cea562..0000000000
--- a/source/frontend/src/features/help/components/text/DetailNavigationHelpText.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Parcel Detail Navigation topic.
- */
-const DetailNavigationHelpText = () => {
- return (
-
- The navigation bar provides the available menu options for your role.
-
- Home: Shows the map to view and find properties.
-
- Administration: Manage users, organizations and Access Requests. (SRES users
- only)
-
- Submit Property: View Inventory or Submit a new property to inventory.
-
- View Inventory: View properties in a table format.
-
- Reports: Create and export reports. (SRES user only)
-
- );
-};
-
-export default DetailNavigationHelpText;
diff --git a/source/frontend/src/features/help/components/text/DetailViewHelpText.tsx b/source/frontend/src/features/help/components/text/DetailViewHelpText.tsx
deleted file mode 100644
index a3dac387af..0000000000
--- a/source/frontend/src/features/help/components/text/DetailViewHelpText.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Parcel Detail View topic.
- */
-const DetailViewHelpText = () => {
- return (
-
- The Property Detail View provides a way to add, view and edit property attributes. The left
- pane contains the parcel information. The right pane is a map to highlight the location of the
- parcel. There is a stepper across the top of the left pane to separate the different attribute
- types and walk you through the steps of adding a property. When entering an address a request
- will be made to Geocoder to find the civic address. If you select the address it will update
- the property with the latitude, longitude, city and PID if is able to. You can manually change
- the pin location of the parcel by clicking the map in the right pane. Changes are not saved to
- the inventory until you click the Submit button on the final step.
-
- );
-};
-
-export default DetailViewHelpText;
diff --git a/source/frontend/src/features/help/components/text/InventoryFilterHelpText.tsx b/source/frontend/src/features/help/components/text/InventoryFilterHelpText.tsx
deleted file mode 100644
index d1eaa42dbc..0000000000
--- a/source/frontend/src/features/help/components/text/InventoryFilterHelpText.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Property Inventory Filter topic.
- */
-const InventoryFilterHelpText = () => {
- return (
-
- The filter provides a way to search for properties with the specified attributes. The filter
- is cumulative ("AND"), which means each value will refine the results.
-
- Organization: The organization that owns the property. This list is
- restricted to organizations and sub-organizations that you have access to view.
-
- Property name: The name given to the property in PIMS.
-
- Location: The administrative area (city, municipality, district, etc.)
- containing the value.
-
- Address: The address contains the value.
-
- PID/PIN: The property has the specified PID or PIN.
-
- Classification: The property has the specified classification.
-
-
- );
-};
-
-export default InventoryFilterHelpText;
diff --git a/source/frontend/src/features/help/components/text/InventoryListHelpText.tsx b/source/frontend/src/features/help/components/text/InventoryListHelpText.tsx
deleted file mode 100644
index 19fa2f207a..0000000000
--- a/source/frontend/src/features/help/components/text/InventoryListHelpText.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Property Inventory List topic.
- */
-const InventoryListHelpText = () => {
- return (
-
- Properties are returned in a table format. Each row provides a summary of the property
- attributes. If a property is a parcel it can be expanded to display all buildings associated
- with it. Click the ‘view’ link to go to the Property Detail View page. The active list of
- properties can be exported to both Excel and CSV. Use the Edit icon (pencil) to toggle editing
- on and off in this table.
-
- );
-};
-
-export default InventoryListHelpText;
diff --git a/source/frontend/src/features/help/components/text/InventoryNavigationHelpText.tsx b/source/frontend/src/features/help/components/text/InventoryNavigationHelpText.tsx
deleted file mode 100644
index fd25d26b9a..0000000000
--- a/source/frontend/src/features/help/components/text/InventoryNavigationHelpText.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Property Inventory Help topic.
- */
-const InventoryNavigationHelpText = () => {
- return (
-
- The navigation bar provides the available menu options for your role.
-
- Home: Shows the map to view and find properties.
-
- Administration: Manage users, organizations and Access Requests. (SRES users
- only)
-
- Submit Property: View Inventory or Submit a new property to inventory.
-
- View Property Inventory: View properties in a table format.
-
- Reports: Create and export reports. (SRES users only)
-
- );
-};
-
-export default InventoryNavigationHelpText;
diff --git a/source/frontend/src/features/help/components/text/LandingFilterHelpText.tsx b/source/frontend/src/features/help/components/text/LandingFilterHelpText.tsx
deleted file mode 100644
index c804aa7ead..0000000000
--- a/source/frontend/src/features/help/components/text/LandingFilterHelpText.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Landing Page Filter topic.
- */
-const LandingFilterHelpText = () => {
- return (
-
- The filter provides a way to search for properties with the specified properties. The filter
- is cumulative ("AND"), which means each value will refine the results.
-
- PID/PIN: The property has the specified PID or PIN.
-
- Address: The address contains the value brought back from LTSA.
-
-
- );
-};
-
-export default LandingFilterHelpText;
diff --git a/source/frontend/src/features/help/components/text/LandingMapHelpText.tsx b/source/frontend/src/features/help/components/text/LandingMapHelpText.tsx
deleted file mode 100644
index 2ed88bda9f..0000000000
--- a/source/frontend/src/features/help/components/text/LandingMapHelpText.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Landing Page Map topic.
- */
-const LandingMapHelpText = () => {
- return (
-
- The map provides a way to visually find a property of interest. If there are too many
- properties grouped together, it will show a cluster on the map.
- Click on the cluster to zoom in. You can filter the results by entering a Location, Address or
- PID.
-
- );
-};
-
-export default LandingMapHelpText;
diff --git a/source/frontend/src/features/help/components/text/LandingNavigationHelpText.tsx b/source/frontend/src/features/help/components/text/LandingNavigationHelpText.tsx
deleted file mode 100644
index 9e322312d9..0000000000
--- a/source/frontend/src/features/help/components/text/LandingNavigationHelpText.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Landing Page Navigation topic.
- */
-const LandingNavigationHelpText = () => {
- return (
-
- The navigation bar provides the available menu options for your role.
-
- Home: Shows the map to view and find properties.
-
- Administration: Manage users, agencies and Access Requests. [Role based]
-
- Add a Property: Add a new property to inventory.
-
- View Property Inventory: View properties in a table format.
-
- Reports: Generate multiple reports.
-
- );
-};
-
-export default LandingNavigationHelpText;
diff --git a/source/frontend/src/features/help/constants/HelpText.tsx b/source/frontend/src/features/help/constants/HelpText.tsx
deleted file mode 100644
index 4fa2f27d6f..0000000000
--- a/source/frontend/src/features/help/constants/HelpText.tsx
+++ /dev/null
@@ -1,86 +0,0 @@
-import React from 'react';
-import { ReactNode } from 'react';
-
-import DetailNavigationHelpText from '../components/text/DetailNavigationHelpText';
-import DetailViewHelpText from '../components/text/DetailViewHelpText';
-import InventoryFilterHelpText from '../components/text/InventoryFilterHelpText';
-import InventoryListHelpText from '../components/text/InventoryListHelpText';
-import InventoryNavigationHelpText from '../components/text/InventoryNavigationHelpText';
-import LandingFilterHelpText from '../components/text/LandingFilterHelpText';
-import LandingMapHelpText from '../components/text/LandingMapHelpText';
-import LandingNavigationHelpText from '../components/text/LandingNavigationHelpText';
-import BugForm from '../forms/BugForm';
-import FeatureRequestForm from '../forms/FeatureRequestForm';
-import QuestionForm from '../forms/QuestionForm';
-import { HelpPageKeys, IHelpPage, Topics } from '../interfaces';
-
-/**
- * a map between a topic name and the component to display when the corresponding topic name is active. This map only includes topics for the landing page.
- */
-export const landingPageTopics = new Map([
- [Topics.LANDING_MAP, ],
- [Topics.LANDING_FILTER, ],
- [Topics.LANDING_NAVIGATION, ],
-]);
-
-/**
- * a map between a topic name and the component to display when the corresponding topic name is active. This map only includes topics for the inventory page.
- */
-export const inventoryPageTopics = new Map([
- [Topics.INVENTORY_LIST, ],
- [Topics.INVENTORY_FILTER, ],
- [Topics.INVENTORY_NAVIGATION, ],
-]);
-
-/**
- * a map between a topic name and the component to display when the corresponding topic name is active. This map only includes topics for the property detail page.
- */
-export const propertyDetailPageTopics = new Map([
- [Topics.DETAIL_VIEW, ],
- [Topics.DETAIL_NAVIGATION, ],
-]);
-
-/**
- * A map of help pages. The key is the base route path of the component. The value is the help page name, and help topics to display at the corresponding path.
- * Note that currently the base path provided in the key will match all child pages. so for example, /mapview and /mapview/56 will both match the Property Detail page.
- */
-export const helpPages = new Map([
- [HelpPageKeys.LANDING_PAGE, { name: 'Landing Page', topics: landingPageTopics }],
- [HelpPageKeys.INVENTORY_PAGE, { name: 'Inventory Page', topics: inventoryPageTopics }],
- [
- HelpPageKeys.PROPERTY_DETAIL_PAGE,
- { name: 'Property Detail View Page', topics: propertyDetailPageTopics },
- ],
-]);
-
-export const PropertyDetailViewHelpPage: IHelpPage = {
- name: 'Property Detail View Page',
- topics: propertyDetailPageTopics,
-};
-
-/**
- * All of the supported ticket types, these are displayed as radio buttons on the help modal.
- * All ticket types should be mapped to a form in the helpTickets object below.
- */
-export enum TicketTypes {
- QUESTION = 'Question',
- BUG = 'Bug',
- FEATURE_REQUEST = 'Feature Request',
-}
-
-/**
- * A map between a ticket type and a corresponding form to display when that ticket is active.
- */
-export const helpTickets = new Map ReactNode>([
- [TicketTypes.QUESTION, props => ],
- [TicketTypes.BUG, props => ],
- [TicketTypes.FEATURE_REQUEST, props => ],
-]);
-
-/**
- * Return a list of topics for the current page being displayed (ie. the landing page)
- * @param currentPage the current page being displayed in the app
- */
-export const getTopics = (currentPage: IHelpPage | undefined) => {
- return currentPage?.topics?.keys() === undefined ? [] : Array.from(currentPage.topics.keys());
-};
diff --git a/source/frontend/src/features/help/containers/HelpModalContentContainer.tsx b/source/frontend/src/features/help/containers/HelpModalContentContainer.tsx
index 1452d50a0d..8898569eb4 100644
--- a/source/frontend/src/features/help/containers/HelpModalContentContainer.tsx
+++ b/source/frontend/src/features/help/containers/HelpModalContentContainer.tsx
@@ -1,73 +1,44 @@
import * as React from 'react';
import { useLocation } from 'react-router-dom';
+import styled from 'styled-components';
+import { H3 } from '@/components/common/styles';
import useKeycloakWrapper from '@/hooks/useKeycloakWrapper';
-import HelpBox from '../components/HelpBox';
import HelpSubmitBox from '../components/HelpSubmitBox';
-import {
- getTopics,
- helpPages,
- PropertyDetailViewHelpPage,
- TicketTypes,
-} from '../constants/HelpText';
-import { HelpPageKeys, IHelpPage, Topics } from '../interfaces';
interface IHelpModalContentContainerProps {
/** Set the content of the parent mailto component based on the ticket form. */
setMailto: Function;
}
-/**
- * Find the first help page to match the start of the help page path. For example both /mapview and /mapview/56 will be matched to the /mapview Parcel Detail Help Page.
- * @param location The current react router location within the application.
- */
-const getHelpPageByLocation = (location: any): IHelpPage | undefined => {
- let helpPage: IHelpPage | undefined = undefined;
- helpPages.forEach((page, path) => {
- /** need to check paramaters here outside of the pathname as mapview and parcel detail form now share same pathname */
- if (location.search.includes(HelpPageKeys.PROPERTY_DETAIL_PAGE)) {
- helpPage = PropertyDetailViewHelpPage;
- }
- if (location.pathname.startsWith(path)) {
- helpPage = page;
- }
- });
- return helpPage;
-};
-
/**
* Provides logic for modal content. User information is provided by keycloak. The current page is determined using the react router location.
*/
const HelpModalContentContainer: React.FunctionComponent<
React.PropsWithChildren
> = ({ setMailto }) => {
- const [activeTopic, setActiveTopic] = React.useState();
- const [activeTicketType, setActiveTicketType] = React.useState(TicketTypes.QUESTION);
const keycloak = useKeycloakWrapper();
const location = useLocation();
- const helpPage = getHelpPageByLocation(location);
const displayName = keycloak.displayName;
const email = keycloak.email;
return (
<>
-
-
- Submit
+ Contact us:
>
);
};
+const H3Styled = styled(H3)`
+ border: none;
+ margin-bottom: 16px;
+ margin-top: 24px;
+`;
+
export default HelpModalContentContainer;
diff --git a/source/frontend/src/features/help/containers/__snapshots__/HelpModalContentContainer.test.tsx.snap b/source/frontend/src/features/help/containers/__snapshots__/HelpModalContentContainer.test.tsx.snap
index 64471e3ca1..5cd36a9d0f 100644
--- a/source/frontend/src/features/help/containers/__snapshots__/HelpModalContentContainer.test.tsx.snap
+++ b/source/frontend/src/features/help/containers/__snapshots__/HelpModalContentContainer.test.tsx.snap
@@ -7,169 +7,132 @@ exports[`HelpContainer renders correctly... 1`] = `
/>
.c0 {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-align-items: start;
- -webkit-box-align: start;
- -ms-flex-align: start;
- align-items: start;
+ font-family: 'BCSans-Bold';
+ font-size: 2rem;
+ border-bottom: solid 0.2rem;
+ width: 100%;
+ text-align: left;
+ margin-bottom: 2rem;
}
-
-
-
- Submit
-
- .c0 {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
+ Contact us:
+
+ .c2.required::before {
+ content: '*';
+ position: absolute;
+ top: 0.75rem;
+ left: 0rem;
+}
+
+.c1 {
+ font-weight: bold;
+}
+
+.c0 {
+ margin-left: 0;
+ overflow: hidden;
}
-
-
- Feature Request
-
-
-
-
-
-
+
+
`;
diff --git a/source/frontend/src/features/help/forms/BugForm.tsx b/source/frontend/src/features/help/forms/BugForm.tsx
deleted file mode 100644
index 0769f24cf7..0000000000
--- a/source/frontend/src/features/help/forms/BugForm.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-import { Formik } from 'formik';
-import { noop } from 'lodash';
-import * as React from 'react';
-import Form from 'react-bootstrap/Form';
-
-import { Input, TextArea } from '@/components/common/form';
-
-import { IHelpForm } from '../interfaces';
-
-interface BugFormProps {
- /** Form values that should overwrite the default form values */
- formValues: IHelpForm;
- /** Call this function whenever the form fields are updated to keep the mailto in sync with this form */
- setMailto: Function;
-}
-interface IBugForm extends IHelpForm {
- stepsToReproduce: string;
- expectedResult: string;
- actualResult: string;
-}
-
-const defaultHelpFormValues: IBugForm = {
- user: '',
- email: '',
- page: '',
- stepsToReproduce: '',
- expectedResult: '',
- actualResult: '',
-};
-
-/**
- * Form allowing user to report a bug. The state of this form is synchronized with the parent's mailto.
- */
-const BugForm: React.FunctionComponent> = ({
- formValues,
- setMailto,
-}) => {
- const initialValues = { ...defaultHelpFormValues, ...formValues };
- return (
- {
- const mailto = {
- subject: `Bug Report - ${formValues.page}`,
- body: `Steps to Reproduce: ${values.stepsToReproduce} Excepted Result: ${values.expectedResult} Actual Result: ${values.actualResult}`,
- };
- setMailto(mailto);
- }}
- >
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default BugForm;
diff --git a/source/frontend/src/features/help/forms/FeatureRequestForm.tsx b/source/frontend/src/features/help/forms/FeatureRequestForm.tsx
deleted file mode 100644
index 720eb776a5..0000000000
--- a/source/frontend/src/features/help/forms/FeatureRequestForm.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import { Formik } from 'formik';
-import { noop } from 'lodash';
-import * as React from 'react';
-import Form from 'react-bootstrap/Form';
-
-import { Input, TextArea } from '@/components/common/form';
-
-import { IHelpForm } from '../interfaces';
-
-interface FeatureRequestFormProps {
- /** Form values that should overwrite the default form values */
- formValues: IHelpForm;
- /** Call this function whenever the form fields are updated to keep the mailto in sync with this form */
- setMailto: Function;
-}
-interface IFeatureRequestForm extends IHelpForm {
- description: string;
-}
-
-const defaultHelpFormValues: IFeatureRequestForm = {
- user: '',
- email: '',
- page: '',
- description: '',
-};
-
-/**
- * Form allowing user to request a feature. The state of this form is synchronized with the parent's mailto.
- */
-const FeatureRequestForm: React.FunctionComponent<
- React.PropsWithChildren
-> = ({ formValues, setMailto }) => {
- const initialValues = { ...defaultHelpFormValues, ...formValues };
- return (
- {
- const mailto = {
- subject: `Feature Request - ${formValues.page}`,
- body: values.description,
- };
- setMailto(mailto);
- }}
- >
-
-
-
-
-
-
- );
-};
-
-export default FeatureRequestForm;
diff --git a/source/frontend/src/features/help/forms/HelpRequestForm.tsx b/source/frontend/src/features/help/forms/HelpRequestForm.tsx
new file mode 100644
index 0000000000..60a6a85a88
--- /dev/null
+++ b/source/frontend/src/features/help/forms/HelpRequestForm.tsx
@@ -0,0 +1,74 @@
+import { Formik } from 'formik';
+import { noop } from 'lodash';
+import * as React from 'react';
+import Form from 'react-bootstrap/Form';
+import styled from 'styled-components';
+
+import { Input, TextArea } from '@/components/common/form';
+import { SectionField } from '@/components/common/Section/SectionField';
+
+import { IHelpForm } from '../interfaces';
+
+interface HelpRequestFormProps {
+ /** Form values that should overwrite the default form values */
+ formValues: IHelpForm;
+ /** Call this function whenever the form fields are updated to keep the mailto in sync with this form */
+ setMailto: Function;
+}
+
+interface IHelpRequestForm extends IHelpForm {
+ description: string;
+}
+
+const defaultHelpFormValues: IHelpRequestForm = {
+ user: '',
+ email: '',
+ page: '',
+ description: '',
+};
+
+/**
+ * Form allowing user to request a feature. The state of this form is synchronized with the parent's mailto.
+ */
+const HelpRequestForm: React.FunctionComponent> = ({
+ formValues,
+ setMailto,
+}) => {
+ const initialValues = { ...defaultHelpFormValues, ...formValues };
+
+ return (
+
+ {
+ const mailto = {
+ subject: `Help Desk Request - ${formValues.page}`,
+ body: values.description,
+ };
+ setMailto(mailto);
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+const Container = styled.div`
+ margin-left: 0;
+ overflow: hidden;
+`;
+
+export default HelpRequestForm;
diff --git a/source/frontend/src/features/help/forms/QuestionForm.tsx b/source/frontend/src/features/help/forms/QuestionForm.tsx
deleted file mode 100644
index 451775dba0..0000000000
--- a/source/frontend/src/features/help/forms/QuestionForm.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import { Formik } from 'formik';
-import { noop } from 'lodash';
-import * as React from 'react';
-import Form from 'react-bootstrap/Form';
-
-import { Input, TextArea } from '@/components/common/form';
-
-import { IHelpForm } from '../interfaces';
-
-interface QuestionFormProps {
- /** Form values that should overwrite the default form values */
- formValues: IHelpForm;
- /** Call this function whenever the form fields are updated to keep the mailto in sync with this form */
- setMailto: Function;
-}
-
-interface IQuestionForm extends IHelpForm {
- question: string;
-}
-
-const defaultHelpFormValues: IQuestionForm = {
- user: '',
- email: '',
- page: '',
- question: '',
-};
-
-/**
- * Form allowing user to ask a question. The state of this form is synchronized with the parent's mailto.
- */
-const QuestionForm: React.FunctionComponent> = ({
- formValues,
- setMailto,
-}) => {
- const initialValues = { ...defaultHelpFormValues, ...formValues };
- return (
- {
- const mailto = {
- subject: `Question - ${formValues.page}`,
- body: values.question,
- };
- setMailto(mailto);
- }}
- >
-
-
-
-
-
-
-
- );
-};
-
-export default QuestionForm;
From 9725422611f4690ed56bd0bce1bdf750aa84f76c Mon Sep 17 00:00:00 2001
From: Eduardo Herrera
Date: Wed, 4 Oct 2023 14:34:16 -0700
Subject: [PATCH 2/8] - test update
---
.../Header/__snapshots__/Header.test.tsx.snap | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap b/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
index a32626a248..db9baf76f0 100644
--- a/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
+++ b/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
@@ -128,12 +128,16 @@ exports[`App Header renders correctly 1`] = `
-
+
+
+
Date: Wed, 4 Oct 2023 13:52:50 -0700
Subject: [PATCH 3/8] PSP-6945 : Access to PIMS Overview (Help File) - Header
---
.../src/components/layout/Header/Header.tsx | 5 +-
.../src/features/help/components/HelpBox.scss | 25 --
.../features/help/components/HelpBox.test.tsx | 56 -----
.../src/features/help/components/HelpBox.tsx | 61 -----
.../features/help/components/HelpModal.tsx | 71 ++++--
.../help/components/HelpSubmitBox.test.tsx | 34 +--
.../help/components/HelpSubmitBox.tsx | 39 +---
.../__snapshots__/HelpBox.test.tsx.snap | 196 ----------------
.../text/DetailNavigationHelpText.tsx | 25 --
.../components/text/DetailViewHelpText.tsx | 21 --
.../text/InventoryFilterHelpText.tsx | 30 ---
.../components/text/InventoryListHelpText.tsx | 18 --
.../text/InventoryNavigationHelpText.tsx | 25 --
.../components/text/LandingFilterHelpText.tsx | 20 --
.../components/text/LandingMapHelpText.tsx | 17 --
.../text/LandingNavigationHelpText.tsx | 24 --
.../src/features/help/constants/HelpText.tsx | 86 -------
.../containers/HelpModalContentContainer.tsx | 49 +---
.../HelpModalContentContainer.test.tsx.snap | 219 ++++++++----------
.../src/features/help/forms/BugForm.tsx | 64 -----
.../help/forms/FeatureRequestForm.tsx | 56 -----
.../features/help/forms/HelpRequestForm.tsx | 74 ++++++
.../src/features/help/forms/QuestionForm.tsx | 59 -----
23 files changed, 241 insertions(+), 1033 deletions(-)
delete mode 100644 source/frontend/src/features/help/components/HelpBox.scss
delete mode 100644 source/frontend/src/features/help/components/HelpBox.test.tsx
delete mode 100644 source/frontend/src/features/help/components/HelpBox.tsx
delete mode 100644 source/frontend/src/features/help/components/__snapshots__/HelpBox.test.tsx.snap
delete mode 100644 source/frontend/src/features/help/components/text/DetailNavigationHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/DetailViewHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/InventoryFilterHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/InventoryListHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/InventoryNavigationHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/LandingFilterHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/LandingMapHelpText.tsx
delete mode 100644 source/frontend/src/features/help/components/text/LandingNavigationHelpText.tsx
delete mode 100644 source/frontend/src/features/help/constants/HelpText.tsx
delete mode 100644 source/frontend/src/features/help/forms/BugForm.tsx
delete mode 100644 source/frontend/src/features/help/forms/FeatureRequestForm.tsx
create mode 100644 source/frontend/src/features/help/forms/HelpRequestForm.tsx
delete mode 100644 source/frontend/src/features/help/forms/QuestionForm.tsx
diff --git a/source/frontend/src/components/layout/Header/Header.tsx b/source/frontend/src/components/layout/Header/Header.tsx
index 996b88d995..8a2146a878 100644
--- a/source/frontend/src/components/layout/Header/Header.tsx
+++ b/source/frontend/src/components/layout/Header/Header.tsx
@@ -3,6 +3,7 @@ import React from 'react';
import Nav from 'react-bootstrap/Nav';
import Navbar from 'react-bootstrap/Navbar';
import { FaBomb } from 'react-icons/fa';
+import { Link } from 'react-router-dom';
import { BCGovLogo } from '@/components/common/BCGovLogo';
import { VerticalBar } from '@/components/common/VerticalBar';
@@ -47,7 +48,9 @@ export const Header = () => {
-
+
+
+
diff --git a/source/frontend/src/features/help/components/HelpBox.scss b/source/frontend/src/features/help/components/HelpBox.scss
deleted file mode 100644
index 4aa173a97c..0000000000
--- a/source/frontend/src/features/help/components/HelpBox.scss
+++ /dev/null
@@ -1,25 +0,0 @@
-@import '@/assets/scss/colors.scss';
-.help-box {
- button {
- background-color: white;
- border: none;
- border-bottom: 0.1rem solid $accent-color;
- width: 100%;
- text-align: left;
- }
- :focus {
- outline: none;
- }
- .active:after {
- content: '';
- transform: translateX(100%);
- align-self: center;
- width: 0;
- height: 0;
- display: inline-block;
- border-top: 0.8rem solid transparent;
- border-bottom: 0.8rem solid transparent;
- border-left: 0.8rem solid black;
- border-right: 0.8rem solid transparent;
- }
-}
diff --git a/source/frontend/src/features/help/components/HelpBox.test.tsx b/source/frontend/src/features/help/components/HelpBox.test.tsx
deleted file mode 100644
index 91c2f3721e..0000000000
--- a/source/frontend/src/features/help/components/HelpBox.test.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import { fireEvent, render, waitFor } from '@/utils/test-utils';
-
-import { IHelpPage, Topics } from '../interfaces';
-import HelpBox from './HelpBox';
-
-const topicMap = new Map();
-topicMap.set('Map', null);
-topicMap.set('Test Section', 'This is some test text');
-
-const mockPage: IHelpPage = {
- name: 'Landing Page',
- topics: topicMap,
-};
-
-const setActiceTopic = jest.fn();
-
-const renderHelpBox = () => {
- return render(
- ,
- );
-};
-describe('Help box tests...', () => {
- it('renders correctly..', () => {
- const { container } = renderHelpBox();
- expect(container).toMatchSnapshot();
- });
-
- it('contains navigation items..', () => {
- const { getByText } = renderHelpBox();
- expect(getByText('Map')).toBeInTheDocument();
- expect(getByText('Test Section')).toBeInTheDocument();
- });
-
- it('calls setActiveTopic on click of item', async () => {
- const { getByText } = renderHelpBox();
- await waitFor(() => {
- fireEvent.click(getByText('Test Section'));
- });
- expect(setActiceTopic).toBeCalledTimes(1);
- });
-
- it('displays corresponding text to navigation item', () => {
- const { getByText } = render(
- ,
- );
- expect(getByText('This is some test text')).toBeInTheDocument();
- });
-});
diff --git a/source/frontend/src/features/help/components/HelpBox.tsx b/source/frontend/src/features/help/components/HelpBox.tsx
deleted file mode 100644
index f7a8c33943..0000000000
--- a/source/frontend/src/features/help/components/HelpBox.tsx
+++ /dev/null
@@ -1,61 +0,0 @@
-import './HelpBox.scss';
-
-import React from 'react';
-import ButtonGroup from 'react-bootstrap/ButtonGroup';
-import styled from 'styled-components';
-
-import { Button } from '@/components/common/buttons/Button';
-
-import { getTopics } from '../constants/HelpText';
-import { IHelpPage, Topics } from '../interfaces';
-
-interface IHelpBoxProps {
- /** The current help page that is being displayed */
- helpPage: IHelpPage | undefined;
- /** The active topic that is being displayed on this help page, only one topic is displayed at a time. */
- activeTopic: Topics;
- /** Set the active topic */
- setActiveTopic: Function;
-}
-
-const Box = styled.div`
- display: flex;
- align-items: start;
-`;
-
-const TopicButton = styled(Button)`
- max-height: 4rem;
- background-color: white;
- display: flex;
-`;
-
-const TopicSelector = styled(ButtonGroup)``;
-
-/**
- * Display a list of topics, as well as the content component corresponding to the active topic.
- */
-const HelpBox: React.FunctionComponent> = ({
- helpPage,
- activeTopic,
- setActiveTopic,
-}) => {
- return (
-
-
- {getTopics(helpPage).map((topic, index) => (
- setActiveTopic(topic)}
- active={topic === activeTopic}
- bsPrefix="link"
- >
- {topic}
-
- ))}
-
- {helpPage?.topics.get(activeTopic)}
-
- );
-};
-
-export default HelpBox;
diff --git a/source/frontend/src/features/help/components/HelpModal.tsx b/source/frontend/src/features/help/components/HelpModal.tsx
index 338c0d8280..901c7edb1d 100644
--- a/source/frontend/src/features/help/components/HelpModal.tsx
+++ b/source/frontend/src/features/help/components/HelpModal.tsx
@@ -3,11 +3,12 @@ import Container from 'react-bootstrap/Container';
import Modal from 'react-bootstrap/Modal';
import ModalDialog from 'react-bootstrap/ModalDialog';
import Draggable from 'react-draggable';
+import { FaQuestionCircle } from 'react-icons/fa';
import styled from 'styled-components';
import variables from '@/assets/scss/_variables.module.scss';
import { Button } from '@/components/common/buttons/Button';
-import TooltipIcon from '@/components/common/TooltipIcon';
+import { H3 } from '@/components/common/styles';
import { useAppSelector } from '@/store/hooks';
import { useTenants } from '@/store/slices/tenants';
@@ -57,31 +58,44 @@ const HelpModal: FunctionComponent> = ({
- Help Desk
-
+
+ Help Desk
-
+ Get started at PIMS
+
+ This overview has useful tools that will support you to start using the application. You
+ can also watch the video demos.
+
+
+ PIMS resources
+
+
+ Do you want to proceed?
+
+
+ No
+
{config?.settings?.helpDeskEmail ? (
- {
handleSubmit();
}}
>
- Submit
-
+ Yes
+
) : (
- Submit
+ Yes
)}
-
- Cancel
-
@@ -111,23 +125,48 @@ const ModalStyled = styled(Modal)`
.modal-body {
max-height: calc(100vh - 20rem);
overflow-y: auto;
+ padding: 0px 16px;
+ }
+ .modal-footer {
+ border: none;
+ padding-right: 16px;
}
`;
const DraggableTitle = styled(Modal.Title)`
+ margin-left: 10px;
width: 100%;
cursor: pointer;
color: white;
`;
+const DraggableTitleText = styled.div`
+ display: inline-block;
+ margin-left: 10px;
+`;
+
+const StyledConfirmationText = styled.p`
+ margin-top: 24px;
+`;
+
+const StyledButton = styled(Button)`
+ width: 95px;
+ margin-right: 24px;
+`;
+
+const LinkStyled = styled.a`
+ margin-bottom: 16px;
+`;
+
+const H3Styled = styled(H3)`
+ border: none;
+ margin-bottom: 16px;
+ margin-top: 24px;
+`;
+
const ModalHeader = styled(Modal.Header)`
background-color: ${variables.primaryColor};
padding: 0.5rem;
`;
-const StyledTooltip = styled(TooltipIcon)`
- margin-left: 0.5rem;
- margin-bottom: 0.5rem;
-`;
-
export default HelpModal;
diff --git a/source/frontend/src/features/help/components/HelpSubmitBox.test.tsx b/source/frontend/src/features/help/components/HelpSubmitBox.test.tsx
index 34b73cd945..68af749d3e 100644
--- a/source/frontend/src/features/help/components/HelpSubmitBox.test.tsx
+++ b/source/frontend/src/features/help/components/HelpSubmitBox.test.tsx
@@ -1,15 +1,12 @@
import { act, render, screen, waitFor } from '@testing-library/react';
-import { TicketTypes } from '../constants/HelpText';
import HelpSubmitBox from './HelpSubmitBox';
-const renderHelpBox = (ticketType: TicketTypes) =>
+const renderHelpBox = () =>
render(
x)}
setMailto={jest.fn()}
page="Landing Page"
/>,
@@ -18,39 +15,18 @@ const renderHelpBox = (ticketType: TicketTypes) =>
describe('Help Box tests', () => {
it('renders properly', async () => {
await act(async () => {
- const { asFragment } = renderHelpBox(TicketTypes.QUESTION);
+ const { asFragment } = renderHelpBox();
const fragment = await waitFor(() => asFragment());
expect(fragment).toMatchSnapshot();
});
});
- it('contains question field and option when question selected', async () => {
+ it('displays appropriate fields', async () => {
await act(async () => {
- renderHelpBox(TicketTypes.QUESTION);
+ renderHelpBox();
});
-
- const question = await waitFor(() => screen.getAllByText('Question'));
- expect(question).toHaveLength(2);
- });
-
- it('displays appropriate fields when switching to bug type', async () => {
- await act(async () => {
- renderHelpBox(TicketTypes.BUG);
- });
- const reproduce = await waitFor(() => screen.getByText('Steps to Reproduce'));
- const expected = await waitFor(() => screen.getByText('Expected Result'));
- const result = await waitFor(() => screen.getByText('Actual Result'));
- expect(reproduce).toBeInTheDocument();
- expect(expected).toBeInTheDocument();
- expect(result).toBeInTheDocument();
- });
-
- it('displays appropriate fields when switching to feature request ticket type', async () => {
- await act(async () => {
- renderHelpBox(TicketTypes.FEATURE_REQUEST);
- });
- const desc = await waitFor(() => screen.getByText('Description'));
+ const desc = await waitFor(() => screen.getByText('Description:'));
expect(desc).toBeInTheDocument();
});
});
diff --git a/source/frontend/src/features/help/components/HelpSubmitBox.tsx b/source/frontend/src/features/help/components/HelpSubmitBox.tsx
index 7b0ad98818..aec3c99cb9 100644
--- a/source/frontend/src/features/help/components/HelpSubmitBox.tsx
+++ b/source/frontend/src/features/help/components/HelpSubmitBox.tsx
@@ -1,20 +1,14 @@
import './HelpSubmitBox.scss';
import * as React from 'react';
-import Form from 'react-bootstrap/Form';
-import styled from 'styled-components';
-import { helpTickets, TicketTypes } from '../constants/HelpText';
+import HelpRequestForm from '../forms/HelpRequestForm';
interface IHelpSubmitBoxProps {
/** the keycloak user display name */
user: string;
/** the keycloak user email */
email: string;
- /** set the active ticket type */
- setActiveTicketType: Function;
- /** the active ticket type, determines which form fields to display to the user. */
- activeTicketType: TicketTypes;
/** the name of the current page, used to provide context in the email generated by the ticket form. ie. Landing Page. */
page: string;
/** set the mailto of the parent based on the ticket form content. */
@@ -25,39 +19,10 @@ interface IHelpSubmitBoxProps {
* A component that displays a list of Help Ticket types as well as a form corresponding to the active Help Ticket type
*/
const HelpSubmitBox: React.FunctionComponent> = ({
- setActiveTicketType,
- activeTicketType,
setMailto,
...rest
}) => {
- const form = helpTickets.get(activeTicketType);
- return (
-
-
- {Object.values(TicketTypes).map((ticket: string) => (
- setActiveTicketType(ticket)}
- checked={ticket === activeTicketType}
- />
- ))}
-
-
- {form &&
- form({
- formValues: rest,
- setMailto: setMailto,
- })}
-
-
- );
+ return ;
};
-const FormPicker = styled.div`
- display: flex;
-`;
-
export default HelpSubmitBox;
diff --git a/source/frontend/src/features/help/components/__snapshots__/HelpBox.test.tsx.snap b/source/frontend/src/features/help/components/__snapshots__/HelpBox.test.tsx.snap
deleted file mode 100644
index 11e413c3f2..0000000000
--- a/source/frontend/src/features/help/components/__snapshots__/HelpBox.test.tsx.snap
+++ /dev/null
@@ -1,196 +0,0 @@
-// Jest Snapshot v1, https://goo.gl/fbAQLP
-
-exports[`Help box tests... renders correctly.. 1`] = `
-.c1.btn {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-align-items: center;
- -webkit-box-align: center;
- -ms-flex-align: center;
- align-items: center;
- -webkit-box-pack: center;
- -webkit-justify-content: center;
- -ms-flex-pack: center;
- justify-content: center;
- padding: 0.4rem 1.2rem;
- min-height: 3rem;
- border: 0.2rem solid transparent;
- border-radius: 0.4rem;
- text-align: center;
- -webkit-text-decoration: none;
- text-decoration: none;
- font-size: 1.8rem;
- font-family: 'BCSans','Noto Sans',Verdana,Arial,sans-serif;
- font-weight: 700;
- -webkit-letter-spacing: 0.1rem;
- -moz-letter-spacing: 0.1rem;
- -ms-letter-spacing: 0.1rem;
- letter-spacing: 0.1rem;
- cursor: pointer;
-}
-
-.c1.btn:hover {
- -webkit-text-decoration: underline;
- text-decoration: underline;
- opacity: 0.8;
-}
-
-.c1.btn:focus {
- outline-width: 0.4rem;
- outline-style: solid;
- outline-offset: 1px;
- box-shadow: none;
-}
-
-.c1.btn.btn-primary {
- border: none;
-}
-
-.c1.btn.btn-secondary {
- background: none;
-}
-
-.c1.btn.btn-info {
- border: none;
- background: none;
- padding-left: 0.6rem;
- padding-right: 0.6rem;
-}
-
-.c1.btn.btn-info:hover,
-.c1.btn.btn-info:active,
-.c1.btn.btn-info:focus {
- background: none;
-}
-
-.c1.btn.btn-light {
- border: none;
-}
-
-.c1.btn.btn-dark {
- border: none;
-}
-
-.c1.btn.btn-link {
- font-size: 1.6rem;
- font-weight: 400;
- background: none;
- border: none;
- -webkit-text-decoration: none;
- text-decoration: none;
- min-height: 2.5rem;
- line-height: 3rem;
- -webkit-box-pack: left;
- -webkit-justify-content: left;
- -ms-flex-pack: left;
- justify-content: left;
- -webkit-letter-spacing: unset;
- -moz-letter-spacing: unset;
- -ms-letter-spacing: unset;
- letter-spacing: unset;
- text-align: left;
- padding: 0;
-}
-
-.c1.btn.btn-link:hover,
-.c1.btn.btn-link:active,
-.c1.btn.btn-link:focus {
- -webkit-text-decoration: underline;
- text-decoration: underline;
- border: none;
- background: none;
- box-shadow: none;
- outline: none;
-}
-
-.c1.btn.btn-link:disabled,
-.c1.btn.btn-link.disabled {
- background: none;
- pointer-events: none;
-}
-
-.c1.btn:disabled,
-.c1.btn:disabled:hover {
- box-shadow: none;
- -webkit-user-select: none;
- -moz-user-select: none;
- -ms-user-select: none;
- user-select: none;
- pointer-events: none;
- cursor: not-allowed;
- opacity: 0.65;
-}
-
-.c1.Button .Button__icon {
- margin-right: 1.6rem;
-}
-
-.c1.Button--icon-only:focus {
- outline: none;
-}
-
-.c1.Button--icon-only .Button__icon {
- margin-right: 0;
-}
-
-.c0 {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-align-items: start;
- -webkit-box-align: start;
- -ms-flex-align: start;
- align-items: start;
-}
-
-.c2 {
- max-height: 4rem;
- background-color: white;
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
-}
-
-
-
-
-
-
-
-
- Map
-
-
-
-
- Test Section
-
-
-
-
-
-
-`;
diff --git a/source/frontend/src/features/help/components/text/DetailNavigationHelpText.tsx b/source/frontend/src/features/help/components/text/DetailNavigationHelpText.tsx
deleted file mode 100644
index 8254cea562..0000000000
--- a/source/frontend/src/features/help/components/text/DetailNavigationHelpText.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Parcel Detail Navigation topic.
- */
-const DetailNavigationHelpText = () => {
- return (
-
- The navigation bar provides the available menu options for your role.
-
- Home: Shows the map to view and find properties.
-
- Administration: Manage users, organizations and Access Requests. (SRES users
- only)
-
- Submit Property: View Inventory or Submit a new property to inventory.
-
- View Inventory: View properties in a table format.
-
- Reports: Create and export reports. (SRES user only)
-
- );
-};
-
-export default DetailNavigationHelpText;
diff --git a/source/frontend/src/features/help/components/text/DetailViewHelpText.tsx b/source/frontend/src/features/help/components/text/DetailViewHelpText.tsx
deleted file mode 100644
index a3dac387af..0000000000
--- a/source/frontend/src/features/help/components/text/DetailViewHelpText.tsx
+++ /dev/null
@@ -1,21 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Parcel Detail View topic.
- */
-const DetailViewHelpText = () => {
- return (
-
- The Property Detail View provides a way to add, view and edit property attributes. The left
- pane contains the parcel information. The right pane is a map to highlight the location of the
- parcel. There is a stepper across the top of the left pane to separate the different attribute
- types and walk you through the steps of adding a property. When entering an address a request
- will be made to Geocoder to find the civic address. If you select the address it will update
- the property with the latitude, longitude, city and PID if is able to. You can manually change
- the pin location of the parcel by clicking the map in the right pane. Changes are not saved to
- the inventory until you click the Submit button on the final step.
-
- );
-};
-
-export default DetailViewHelpText;
diff --git a/source/frontend/src/features/help/components/text/InventoryFilterHelpText.tsx b/source/frontend/src/features/help/components/text/InventoryFilterHelpText.tsx
deleted file mode 100644
index d1eaa42dbc..0000000000
--- a/source/frontend/src/features/help/components/text/InventoryFilterHelpText.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Property Inventory Filter topic.
- */
-const InventoryFilterHelpText = () => {
- return (
-
- The filter provides a way to search for properties with the specified attributes. The filter
- is cumulative ("AND"), which means each value will refine the results.
-
- Organization: The organization that owns the property. This list is
- restricted to organizations and sub-organizations that you have access to view.
-
- Property name: The name given to the property in PIMS.
-
- Location: The administrative area (city, municipality, district, etc.)
- containing the value.
-
- Address: The address contains the value.
-
- PID/PIN: The property has the specified PID or PIN.
-
- Classification: The property has the specified classification.
-
-
- );
-};
-
-export default InventoryFilterHelpText;
diff --git a/source/frontend/src/features/help/components/text/InventoryListHelpText.tsx b/source/frontend/src/features/help/components/text/InventoryListHelpText.tsx
deleted file mode 100644
index 19fa2f207a..0000000000
--- a/source/frontend/src/features/help/components/text/InventoryListHelpText.tsx
+++ /dev/null
@@ -1,18 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Property Inventory List topic.
- */
-const InventoryListHelpText = () => {
- return (
-
- Properties are returned in a table format. Each row provides a summary of the property
- attributes. If a property is a parcel it can be expanded to display all buildings associated
- with it. Click the ‘view’ link to go to the Property Detail View page. The active list of
- properties can be exported to both Excel and CSV. Use the Edit icon (pencil) to toggle editing
- on and off in this table.
-
- );
-};
-
-export default InventoryListHelpText;
diff --git a/source/frontend/src/features/help/components/text/InventoryNavigationHelpText.tsx b/source/frontend/src/features/help/components/text/InventoryNavigationHelpText.tsx
deleted file mode 100644
index fd25d26b9a..0000000000
--- a/source/frontend/src/features/help/components/text/InventoryNavigationHelpText.tsx
+++ /dev/null
@@ -1,25 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Property Inventory Help topic.
- */
-const InventoryNavigationHelpText = () => {
- return (
-
- The navigation bar provides the available menu options for your role.
-
- Home: Shows the map to view and find properties.
-
- Administration: Manage users, organizations and Access Requests. (SRES users
- only)
-
- Submit Property: View Inventory or Submit a new property to inventory.
-
- View Property Inventory: View properties in a table format.
-
- Reports: Create and export reports. (SRES users only)
-
- );
-};
-
-export default InventoryNavigationHelpText;
diff --git a/source/frontend/src/features/help/components/text/LandingFilterHelpText.tsx b/source/frontend/src/features/help/components/text/LandingFilterHelpText.tsx
deleted file mode 100644
index c804aa7ead..0000000000
--- a/source/frontend/src/features/help/components/text/LandingFilterHelpText.tsx
+++ /dev/null
@@ -1,20 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Landing Page Filter topic.
- */
-const LandingFilterHelpText = () => {
- return (
-
- The filter provides a way to search for properties with the specified properties. The filter
- is cumulative ("AND"), which means each value will refine the results.
-
- PID/PIN: The property has the specified PID or PIN.
-
- Address: The address contains the value brought back from LTSA.
-
-
- );
-};
-
-export default LandingFilterHelpText;
diff --git a/source/frontend/src/features/help/components/text/LandingMapHelpText.tsx b/source/frontend/src/features/help/components/text/LandingMapHelpText.tsx
deleted file mode 100644
index 2ed88bda9f..0000000000
--- a/source/frontend/src/features/help/components/text/LandingMapHelpText.tsx
+++ /dev/null
@@ -1,17 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Landing Page Map topic.
- */
-const LandingMapHelpText = () => {
- return (
-
- The map provides a way to visually find a property of interest. If there are too many
- properties grouped together, it will show a cluster on the map.
- Click on the cluster to zoom in. You can filter the results by entering a Location, Address or
- PID.
-
- );
-};
-
-export default LandingMapHelpText;
diff --git a/source/frontend/src/features/help/components/text/LandingNavigationHelpText.tsx b/source/frontend/src/features/help/components/text/LandingNavigationHelpText.tsx
deleted file mode 100644
index 9e322312d9..0000000000
--- a/source/frontend/src/features/help/components/text/LandingNavigationHelpText.tsx
+++ /dev/null
@@ -1,24 +0,0 @@
-import * as React from 'react';
-
-/**
- * Help Text for the Landing Page Navigation topic.
- */
-const LandingNavigationHelpText = () => {
- return (
-
- The navigation bar provides the available menu options for your role.
-
- Home: Shows the map to view and find properties.
-
- Administration: Manage users, agencies and Access Requests. [Role based]
-
- Add a Property: Add a new property to inventory.
-
- View Property Inventory: View properties in a table format.
-
- Reports: Generate multiple reports.
-
- );
-};
-
-export default LandingNavigationHelpText;
diff --git a/source/frontend/src/features/help/constants/HelpText.tsx b/source/frontend/src/features/help/constants/HelpText.tsx
deleted file mode 100644
index 4fa2f27d6f..0000000000
--- a/source/frontend/src/features/help/constants/HelpText.tsx
+++ /dev/null
@@ -1,86 +0,0 @@
-import React from 'react';
-import { ReactNode } from 'react';
-
-import DetailNavigationHelpText from '../components/text/DetailNavigationHelpText';
-import DetailViewHelpText from '../components/text/DetailViewHelpText';
-import InventoryFilterHelpText from '../components/text/InventoryFilterHelpText';
-import InventoryListHelpText from '../components/text/InventoryListHelpText';
-import InventoryNavigationHelpText from '../components/text/InventoryNavigationHelpText';
-import LandingFilterHelpText from '../components/text/LandingFilterHelpText';
-import LandingMapHelpText from '../components/text/LandingMapHelpText';
-import LandingNavigationHelpText from '../components/text/LandingNavigationHelpText';
-import BugForm from '../forms/BugForm';
-import FeatureRequestForm from '../forms/FeatureRequestForm';
-import QuestionForm from '../forms/QuestionForm';
-import { HelpPageKeys, IHelpPage, Topics } from '../interfaces';
-
-/**
- * a map between a topic name and the component to display when the corresponding topic name is active. This map only includes topics for the landing page.
- */
-export const landingPageTopics = new Map([
- [Topics.LANDING_MAP, ],
- [Topics.LANDING_FILTER, ],
- [Topics.LANDING_NAVIGATION, ],
-]);
-
-/**
- * a map between a topic name and the component to display when the corresponding topic name is active. This map only includes topics for the inventory page.
- */
-export const inventoryPageTopics = new Map([
- [Topics.INVENTORY_LIST, ],
- [Topics.INVENTORY_FILTER, ],
- [Topics.INVENTORY_NAVIGATION, ],
-]);
-
-/**
- * a map between a topic name and the component to display when the corresponding topic name is active. This map only includes topics for the property detail page.
- */
-export const propertyDetailPageTopics = new Map([
- [Topics.DETAIL_VIEW, ],
- [Topics.DETAIL_NAVIGATION, ],
-]);
-
-/**
- * A map of help pages. The key is the base route path of the component. The value is the help page name, and help topics to display at the corresponding path.
- * Note that currently the base path provided in the key will match all child pages. so for example, /mapview and /mapview/56 will both match the Property Detail page.
- */
-export const helpPages = new Map([
- [HelpPageKeys.LANDING_PAGE, { name: 'Landing Page', topics: landingPageTopics }],
- [HelpPageKeys.INVENTORY_PAGE, { name: 'Inventory Page', topics: inventoryPageTopics }],
- [
- HelpPageKeys.PROPERTY_DETAIL_PAGE,
- { name: 'Property Detail View Page', topics: propertyDetailPageTopics },
- ],
-]);
-
-export const PropertyDetailViewHelpPage: IHelpPage = {
- name: 'Property Detail View Page',
- topics: propertyDetailPageTopics,
-};
-
-/**
- * All of the supported ticket types, these are displayed as radio buttons on the help modal.
- * All ticket types should be mapped to a form in the helpTickets object below.
- */
-export enum TicketTypes {
- QUESTION = 'Question',
- BUG = 'Bug',
- FEATURE_REQUEST = 'Feature Request',
-}
-
-/**
- * A map between a ticket type and a corresponding form to display when that ticket is active.
- */
-export const helpTickets = new Map ReactNode>([
- [TicketTypes.QUESTION, props => ],
- [TicketTypes.BUG, props => ],
- [TicketTypes.FEATURE_REQUEST, props => ],
-]);
-
-/**
- * Return a list of topics for the current page being displayed (ie. the landing page)
- * @param currentPage the current page being displayed in the app
- */
-export const getTopics = (currentPage: IHelpPage | undefined) => {
- return currentPage?.topics?.keys() === undefined ? [] : Array.from(currentPage.topics.keys());
-};
diff --git a/source/frontend/src/features/help/containers/HelpModalContentContainer.tsx b/source/frontend/src/features/help/containers/HelpModalContentContainer.tsx
index 1452d50a0d..8898569eb4 100644
--- a/source/frontend/src/features/help/containers/HelpModalContentContainer.tsx
+++ b/source/frontend/src/features/help/containers/HelpModalContentContainer.tsx
@@ -1,73 +1,44 @@
import * as React from 'react';
import { useLocation } from 'react-router-dom';
+import styled from 'styled-components';
+import { H3 } from '@/components/common/styles';
import useKeycloakWrapper from '@/hooks/useKeycloakWrapper';
-import HelpBox from '../components/HelpBox';
import HelpSubmitBox from '../components/HelpSubmitBox';
-import {
- getTopics,
- helpPages,
- PropertyDetailViewHelpPage,
- TicketTypes,
-} from '../constants/HelpText';
-import { HelpPageKeys, IHelpPage, Topics } from '../interfaces';
interface IHelpModalContentContainerProps {
/** Set the content of the parent mailto component based on the ticket form. */
setMailto: Function;
}
-/**
- * Find the first help page to match the start of the help page path. For example both /mapview and /mapview/56 will be matched to the /mapview Parcel Detail Help Page.
- * @param location The current react router location within the application.
- */
-const getHelpPageByLocation = (location: any): IHelpPage | undefined => {
- let helpPage: IHelpPage | undefined = undefined;
- helpPages.forEach((page, path) => {
- /** need to check paramaters here outside of the pathname as mapview and parcel detail form now share same pathname */
- if (location.search.includes(HelpPageKeys.PROPERTY_DETAIL_PAGE)) {
- helpPage = PropertyDetailViewHelpPage;
- }
- if (location.pathname.startsWith(path)) {
- helpPage = page;
- }
- });
- return helpPage;
-};
-
/**
* Provides logic for modal content. User information is provided by keycloak. The current page is determined using the react router location.
*/
const HelpModalContentContainer: React.FunctionComponent<
React.PropsWithChildren
> = ({ setMailto }) => {
- const [activeTopic, setActiveTopic] = React.useState();
- const [activeTicketType, setActiveTicketType] = React.useState(TicketTypes.QUESTION);
const keycloak = useKeycloakWrapper();
const location = useLocation();
- const helpPage = getHelpPageByLocation(location);
const displayName = keycloak.displayName;
const email = keycloak.email;
return (
<>
-
-
- Submit
+ Contact us:
>
);
};
+const H3Styled = styled(H3)`
+ border: none;
+ margin-bottom: 16px;
+ margin-top: 24px;
+`;
+
export default HelpModalContentContainer;
diff --git a/source/frontend/src/features/help/containers/__snapshots__/HelpModalContentContainer.test.tsx.snap b/source/frontend/src/features/help/containers/__snapshots__/HelpModalContentContainer.test.tsx.snap
index 64471e3ca1..5cd36a9d0f 100644
--- a/source/frontend/src/features/help/containers/__snapshots__/HelpModalContentContainer.test.tsx.snap
+++ b/source/frontend/src/features/help/containers/__snapshots__/HelpModalContentContainer.test.tsx.snap
@@ -7,169 +7,132 @@ exports[`HelpContainer renders correctly... 1`] = `
/>
.c0 {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
- -webkit-align-items: start;
- -webkit-box-align: start;
- -ms-flex-align: start;
- align-items: start;
+ font-family: 'BCSans-Bold';
+ font-size: 2rem;
+ border-bottom: solid 0.2rem;
+ width: 100%;
+ text-align: left;
+ margin-bottom: 2rem;
}
-
-
-
- Submit
-
- .c0 {
- display: -webkit-box;
- display: -webkit-flex;
- display: -ms-flexbox;
- display: flex;
+ Contact us:
+
+ .c2.required::before {
+ content: '*';
+ position: absolute;
+ top: 0.75rem;
+ left: 0rem;
+}
+
+.c1 {
+ font-weight: bold;
+}
+
+.c0 {
+ margin-left: 0;
+ overflow: hidden;
}
-
-
- Feature Request
-
-
-
-
-
- User
+ Email:
-
-
- Email
-
-
+
+
+
+
-
-
+
+
`;
diff --git a/source/frontend/src/features/help/forms/BugForm.tsx b/source/frontend/src/features/help/forms/BugForm.tsx
deleted file mode 100644
index 0769f24cf7..0000000000
--- a/source/frontend/src/features/help/forms/BugForm.tsx
+++ /dev/null
@@ -1,64 +0,0 @@
-import { Formik } from 'formik';
-import { noop } from 'lodash';
-import * as React from 'react';
-import Form from 'react-bootstrap/Form';
-
-import { Input, TextArea } from '@/components/common/form';
-
-import { IHelpForm } from '../interfaces';
-
-interface BugFormProps {
- /** Form values that should overwrite the default form values */
- formValues: IHelpForm;
- /** Call this function whenever the form fields are updated to keep the mailto in sync with this form */
- setMailto: Function;
-}
-interface IBugForm extends IHelpForm {
- stepsToReproduce: string;
- expectedResult: string;
- actualResult: string;
-}
-
-const defaultHelpFormValues: IBugForm = {
- user: '',
- email: '',
- page: '',
- stepsToReproduce: '',
- expectedResult: '',
- actualResult: '',
-};
-
-/**
- * Form allowing user to report a bug. The state of this form is synchronized with the parent's mailto.
- */
-const BugForm: React.FunctionComponent> = ({
- formValues,
- setMailto,
-}) => {
- const initialValues = { ...defaultHelpFormValues, ...formValues };
- return (
- {
- const mailto = {
- subject: `Bug Report - ${formValues.page}`,
- body: `Steps to Reproduce: ${values.stepsToReproduce} Excepted Result: ${values.expectedResult} Actual Result: ${values.actualResult}`,
- };
- setMailto(mailto);
- }}
- >
-
-
-
-
-
-
-
-
-
- );
-};
-
-export default BugForm;
diff --git a/source/frontend/src/features/help/forms/FeatureRequestForm.tsx b/source/frontend/src/features/help/forms/FeatureRequestForm.tsx
deleted file mode 100644
index 720eb776a5..0000000000
--- a/source/frontend/src/features/help/forms/FeatureRequestForm.tsx
+++ /dev/null
@@ -1,56 +0,0 @@
-import { Formik } from 'formik';
-import { noop } from 'lodash';
-import * as React from 'react';
-import Form from 'react-bootstrap/Form';
-
-import { Input, TextArea } from '@/components/common/form';
-
-import { IHelpForm } from '../interfaces';
-
-interface FeatureRequestFormProps {
- /** Form values that should overwrite the default form values */
- formValues: IHelpForm;
- /** Call this function whenever the form fields are updated to keep the mailto in sync with this form */
- setMailto: Function;
-}
-interface IFeatureRequestForm extends IHelpForm {
- description: string;
-}
-
-const defaultHelpFormValues: IFeatureRequestForm = {
- user: '',
- email: '',
- page: '',
- description: '',
-};
-
-/**
- * Form allowing user to request a feature. The state of this form is synchronized with the parent's mailto.
- */
-const FeatureRequestForm: React.FunctionComponent<
- React.PropsWithChildren
-> = ({ formValues, setMailto }) => {
- const initialValues = { ...defaultHelpFormValues, ...formValues };
- return (
- {
- const mailto = {
- subject: `Feature Request - ${formValues.page}`,
- body: values.description,
- };
- setMailto(mailto);
- }}
- >
-
-
-
-
-
-
- );
-};
-
-export default FeatureRequestForm;
diff --git a/source/frontend/src/features/help/forms/HelpRequestForm.tsx b/source/frontend/src/features/help/forms/HelpRequestForm.tsx
new file mode 100644
index 0000000000..60a6a85a88
--- /dev/null
+++ b/source/frontend/src/features/help/forms/HelpRequestForm.tsx
@@ -0,0 +1,74 @@
+import { Formik } from 'formik';
+import { noop } from 'lodash';
+import * as React from 'react';
+import Form from 'react-bootstrap/Form';
+import styled from 'styled-components';
+
+import { Input, TextArea } from '@/components/common/form';
+import { SectionField } from '@/components/common/Section/SectionField';
+
+import { IHelpForm } from '../interfaces';
+
+interface HelpRequestFormProps {
+ /** Form values that should overwrite the default form values */
+ formValues: IHelpForm;
+ /** Call this function whenever the form fields are updated to keep the mailto in sync with this form */
+ setMailto: Function;
+}
+
+interface IHelpRequestForm extends IHelpForm {
+ description: string;
+}
+
+const defaultHelpFormValues: IHelpRequestForm = {
+ user: '',
+ email: '',
+ page: '',
+ description: '',
+};
+
+/**
+ * Form allowing user to request a feature. The state of this form is synchronized with the parent's mailto.
+ */
+const HelpRequestForm: React.FunctionComponent> = ({
+ formValues,
+ setMailto,
+}) => {
+ const initialValues = { ...defaultHelpFormValues, ...formValues };
+
+ return (
+
+ {
+ const mailto = {
+ subject: `Help Desk Request - ${formValues.page}`,
+ body: values.description,
+ };
+ setMailto(mailto);
+ }}
+ >
+
+
+
+
+
+
+
+
+
+
+
+
+
+ );
+};
+
+const Container = styled.div`
+ margin-left: 0;
+ overflow: hidden;
+`;
+
+export default HelpRequestForm;
diff --git a/source/frontend/src/features/help/forms/QuestionForm.tsx b/source/frontend/src/features/help/forms/QuestionForm.tsx
deleted file mode 100644
index 451775dba0..0000000000
--- a/source/frontend/src/features/help/forms/QuestionForm.tsx
+++ /dev/null
@@ -1,59 +0,0 @@
-import { Formik } from 'formik';
-import { noop } from 'lodash';
-import * as React from 'react';
-import Form from 'react-bootstrap/Form';
-
-import { Input, TextArea } from '@/components/common/form';
-
-import { IHelpForm } from '../interfaces';
-
-interface QuestionFormProps {
- /** Form values that should overwrite the default form values */
- formValues: IHelpForm;
- /** Call this function whenever the form fields are updated to keep the mailto in sync with this form */
- setMailto: Function;
-}
-
-interface IQuestionForm extends IHelpForm {
- question: string;
-}
-
-const defaultHelpFormValues: IQuestionForm = {
- user: '',
- email: '',
- page: '',
- question: '',
-};
-
-/**
- * Form allowing user to ask a question. The state of this form is synchronized with the parent's mailto.
- */
-const QuestionForm: React.FunctionComponent> = ({
- formValues,
- setMailto,
-}) => {
- const initialValues = { ...defaultHelpFormValues, ...formValues };
- return (
- {
- const mailto = {
- subject: `Question - ${formValues.page}`,
- body: values.question,
- };
- setMailto(mailto);
- }}
- >
-
-
-
-
-
-
-
- );
-};
-
-export default QuestionForm;
From aca7a8c6093f0b0d2b2a24ba1dd0bcc4d4e75993 Mon Sep 17 00:00:00 2001
From: Eduardo Herrera
Date: Wed, 4 Oct 2023 14:34:16 -0700
Subject: [PATCH 4/8] - test update
---
.../Header/__snapshots__/Header.test.tsx.snap | 16 ++++++++++------
1 file changed, 10 insertions(+), 6 deletions(-)
diff --git a/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap b/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
index a32626a248..db9baf76f0 100644
--- a/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
+++ b/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
@@ -128,12 +128,16 @@ exports[`App Header renders correctly 1`] = `
-
+
+
+
Date: Thu, 5 Oct 2023 16:31:44 -0700
Subject: [PATCH 5/8] PSP-6786 : Access to PIMS Overview (Help File) - Modal
---
.../src/components/layout/Header/Header.tsx | 3 +++
.../components/layout/Header/UserProfile.tsx | 1 +
.../features/help/components/HelpModal.tsx | 16 ++++++++------
.../help/containers/HelpContainer.tsx | 22 +++++++++++++++++--
.../pims-api/interfaces/ITenantConfig.ts | 1 +
.../src/tenants/config/defaultTenant.ts | 2 ++
6 files changed, 36 insertions(+), 9 deletions(-)
diff --git a/source/frontend/src/components/layout/Header/Header.tsx b/source/frontend/src/components/layout/Header/Header.tsx
index 8a2146a878..dd94a1715f 100644
--- a/source/frontend/src/components/layout/Header/Header.tsx
+++ b/source/frontend/src/components/layout/Header/Header.tsx
@@ -59,6 +59,9 @@ export const Header = () => {
+
+
+
{keycloak.obj.authenticated &&
}
{errors && errors.length ? (
diff --git a/source/frontend/src/components/layout/Header/UserProfile.tsx b/source/frontend/src/components/layout/Header/UserProfile.tsx
index 5b2ef8f758..953aaebee1 100644
--- a/source/frontend/src/components/layout/Header/UserProfile.tsx
+++ b/source/frontend/src/components/layout/Header/UserProfile.tsx
@@ -43,6 +43,7 @@ const LogoutText = styled.p`
const ProfileAvatar = styled(Image)`
height: 3rem;
width: 3rem;
+ margin-right: 10px;
`;
/** the styling for the logout icon in the logout footer */
diff --git a/source/frontend/src/features/help/components/HelpModal.tsx b/source/frontend/src/features/help/components/HelpModal.tsx
index 901c7edb1d..eca37e9474 100644
--- a/source/frontend/src/features/help/components/HelpModal.tsx
+++ b/source/frontend/src/features/help/components/HelpModal.tsx
@@ -22,6 +22,8 @@ interface IModalProps {
handleSubmit: () => void;
/** External state var to track whether or not this modal is being shown. */
show: boolean;
+ /** Link to PIMS training material shared folder. */
+ pimsTrainingUrl: string;
}
/**
@@ -38,6 +40,7 @@ const HelpModal: FunctionComponent> = ({
handleCancel,
handleSubmit,
show,
+ pimsTrainingUrl,
}) => {
const tenantsState = useAppSelector(state => state.tenants);
const { getSettings } = useTenants();
@@ -63,20 +66,19 @@ const HelpModal: FunctionComponent> = ({
- Get started at PIMS
+ Get started with PIMS
This overview has useful tools that will support you to start using the application. You
can also watch the video demos.
-
- PIMS resources
+
+ PIMS Overview (Help file)
- Do you want to proceed?
+
+ Do you want to proceed and send the email?
+
diff --git a/source/frontend/src/features/help/containers/HelpContainer.tsx b/source/frontend/src/features/help/containers/HelpContainer.tsx
index dd51526b9c..82d1999bfe 100644
--- a/source/frontend/src/features/help/containers/HelpContainer.tsx
+++ b/source/frontend/src/features/help/containers/HelpContainer.tsx
@@ -1,4 +1,3 @@
-import * as React from 'react';
import { useCallback, useState } from 'react';
import Nav from 'react-bootstrap/Nav';
import { FaQuestionCircle } from 'react-icons/fa';
@@ -6,6 +5,7 @@ import styled from 'styled-components';
import TooltipWrapper from '@/components/common/TooltipWrapper';
import useKeycloakWrapper from '@/hooks/useKeycloakWrapper';
+import { useTenant } from '@/tenants/useTenant';
import HelpModal from '../components/HelpModal';
@@ -18,16 +18,21 @@ export function HelpContainer() {
const keycloak = useKeycloakWrapper();
const handleCancel = useCallback(() => setShowHelp(false), []);
+ const tenant = useTenant();
return keycloak.obj.authenticated ? (
- setShowHelp(true)} />
+ setShowHelp(true)}>
+
+ Help
+
) : null;
@@ -37,4 +42,17 @@ const StyledHelpIcon = styled(FaQuestionCircle)`
cursor: pointer;
`;
+const StyledContainer = styled.div`
+ display: flex;
+ align-items: center;
+ flex-direction: row;
+ label {
+ margin-left: 1rem;
+ margin-bottom: 0;
+ &:hover {
+ cursor: pointer;
+ }
+ }
+`;
+
export default HelpContainer;
diff --git a/source/frontend/src/hooks/pims-api/interfaces/ITenantConfig.ts b/source/frontend/src/hooks/pims-api/interfaces/ITenantConfig.ts
index ba396f6bdf..330d37b289 100644
--- a/source/frontend/src/hooks/pims-api/interfaces/ITenantConfig.ts
+++ b/source/frontend/src/hooks/pims-api/interfaces/ITenantConfig.ts
@@ -53,6 +53,7 @@ export interface ITenantConfig2 {
idlePromptTimeout: number;
// the amount of time it takes to display the idle prompt (in minutes)
idleTimeout: number;
+ pimsTrainingResourceUrl: string;
}
export interface ITenantLoginConfig {
diff --git a/source/frontend/src/tenants/config/defaultTenant.ts b/source/frontend/src/tenants/config/defaultTenant.ts
index 1fc6181621..fb32ed090c 100644
--- a/source/frontend/src/tenants/config/defaultTenant.ts
+++ b/source/frontend/src/tenants/config/defaultTenant.ts
@@ -67,6 +67,8 @@ export const defaultTenant: ITenantConfig2 = {
},
idlePromptTimeout: 15,
idleTimeout: 15,
+ pimsTrainingResourceUrl:
+ 'https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training/PIMS%20Overview.pdf',
};
export default defaultTenant;
From 13517777bdf6395faf74323f7ac2bf642d3f7361 Mon Sep 17 00:00:00 2001
From: Eduardo Herrera
Date: Thu, 5 Oct 2023 16:47:18 -0700
Subject: [PATCH 6/8] - test updates
---
.../Header/__snapshots__/Header.test.tsx.snap | 5 ++
.../__snapshots__/HelpContainer.test.tsx.snap | 66 ++++++++++++++-----
.../__snapshots__/tenant.test.tsx.snap | 6 +-
3 files changed, 56 insertions(+), 21 deletions(-)
diff --git a/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap b/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
index db9baf76f0..57e5af5d21 100644
--- a/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
+++ b/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
@@ -157,6 +157,11 @@ exports[`App Header renders correctly 1`] = `
+
+
+
diff --git a/source/frontend/src/features/help/containers/__snapshots__/HelpContainer.test.tsx.snap b/source/frontend/src/features/help/containers/__snapshots__/HelpContainer.test.tsx.snap
index 154ba483c1..9f4049ad90 100644
--- a/source/frontend/src/features/help/containers/__snapshots__/HelpContainer.test.tsx.snap
+++ b/source/frontend/src/features/help/containers/__snapshots__/HelpContainer.test.tsx.snap
@@ -6,37 +6,67 @@ Array [
className="Toastify"
/>,
,
- .c0 {
+ .c1 {
+ cursor: pointer;
+}
+
+.c0 {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-align-items: center;
+ -webkit-box-align: center;
+ -ms-flex-align: center;
+ align-items: center;
+ -webkit-flex-direction: row;
+ -ms-flex-direction: row;
+ flex-direction: row;
+}
+
+.c0 label {
+ margin-left: 1rem;
+ margin-bottom: 0;
+}
+
+.c0 label:hover {
cursor: pointer;
}
diff --git a/source/frontend/src/tenants/__snapshots__/tenant.test.tsx.snap b/source/frontend/src/tenants/__snapshots__/tenant.test.tsx.snap
index e2310e1735..92a02faa1a 100644
--- a/source/frontend/src/tenants/__snapshots__/tenant.test.tsx.snap
+++ b/source/frontend/src/tenants/__snapshots__/tenant.test.tsx.snap
@@ -3,7 +3,7 @@
exports[`Tenant configuration Tenant returns correct MOTI configuration 1`] = `
- {"id":"MOTI","title":"Property Information Management System","shortName":"PIMS","colour":"#003366","logo":{"favicon":"/tenants/MOTI/favicon.ico","image":"/tenants/MOTI/PIMS-logo.png","imageWithText":"/tenants/MOTI/PIMS-logo-with-text.png"},"login":{"title":"TRAN Property Information Management System (PIMS)","heading":"PIMS enables you to view highways and properties owned by the Ministry of Transportation and Infrastructure","body":"WARNING: Not all data included within has been vetted for accuracy and completeness. Please use caution when proceeding and confirm data before relying on it.","backgroundImage":"/tenants/MOTI/background-image.jpg"},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15}
+ {"id":"MOTI","title":"Property Information Management System","shortName":"PIMS","colour":"#003366","logo":{"favicon":"/tenants/MOTI/favicon.ico","image":"/tenants/MOTI/PIMS-logo.png","imageWithText":"/tenants/MOTI/PIMS-logo-with-text.png"},"login":{"title":"TRAN Property Information Management System (PIMS)","heading":"PIMS enables you to view highways and properties owned by the Ministry of Transportation and Infrastructure","body":"WARNING: Not all data included within has been vetted for accuracy and completeness. Please use caution when proceeding and confirm data before relying on it.","backgroundImage":"/tenants/MOTI/background-image.jpg"},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15,"pimsTrainingResourceUrl":"https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training/PIMS%20Overview.pdf"}
`;
@@ -11,7 +11,7 @@ exports[`Tenant configuration Tenant returns correct MOTI configuration 1`] = `
exports[`Tenant configuration Tenant returns correct default configuration 1`] = `
- {"id":"DFLT","title":"Default Tenant Name","shortName":"PIMS","colour":"#003366","logo":{"favicon":"","image":"","imageWithText":""},"login":{"title":"","heading":"","body":""},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15}
+ {"id":"DFLT","title":"Default Tenant Name","shortName":"PIMS","colour":"#003366","logo":{"favicon":"","image":"","imageWithText":""},"login":{"title":"","heading":"","body":""},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15,"pimsTrainingResourceUrl":"https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training/PIMS%20Overview.pdf"}
`;
@@ -19,7 +19,7 @@ exports[`Tenant configuration Tenant returns correct default configuration 1`] =
exports[`Tenant configuration Tenant returns correct non-existing configuration 1`] = `
- {"id":"DFLT","title":"Default Tenant Name","shortName":"PIMS","colour":"#003366","logo":{"favicon":"","image":"","imageWithText":""},"login":{"title":"","heading":"","body":""},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15}
+ {"id":"DFLT","title":"Default Tenant Name","shortName":"PIMS","colour":"#003366","logo":{"favicon":"","image":"","imageWithText":""},"login":{"title":"","heading":"","body":""},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15,"pimsTrainingResourceUrl":"https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training/PIMS%20Overview.pdf"}
`;
From 11b0f87596df6fb9e1d97f8a282cd212fcbda149 Mon Sep 17 00:00:00 2001
From: Eduardo Herrera
Date: Fri, 6 Oct 2023 09:47:47 -0700
Subject: [PATCH 7/8] - updates to open sharepoint
---
source/frontend/src/components/common/VerticalBar.tsx | 2 +-
source/frontend/src/features/help/components/HelpModal.tsx | 4 ++--
source/frontend/src/tenants/config/defaultTenant.ts | 2 +-
3 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/source/frontend/src/components/common/VerticalBar.tsx b/source/frontend/src/components/common/VerticalBar.tsx
index 553d85f31e..262a6d978c 100644
--- a/source/frontend/src/components/common/VerticalBar.tsx
+++ b/source/frontend/src/components/common/VerticalBar.tsx
@@ -4,7 +4,7 @@ import styled from 'styled-components';
* Styled VerticalBar component.
*/
export const VerticalBar = styled.span`
- border-left: 0.2rem solid white;
+ border-left: 1px solid white;
font-size: 3.4rem;
margin: 0 1.5rem 0 2.5rem;
vertical-align: top;
diff --git a/source/frontend/src/features/help/components/HelpModal.tsx b/source/frontend/src/features/help/components/HelpModal.tsx
index eca37e9474..95e4880a82 100644
--- a/source/frontend/src/features/help/components/HelpModal.tsx
+++ b/source/frontend/src/features/help/components/HelpModal.tsx
@@ -71,8 +71,8 @@ const HelpModal: FunctionComponent> = ({
This overview has useful tools that will support you to start using the application. You
can also watch the video demos.
-
- PIMS Overview (Help file)
+
+ PIMS Resources
diff --git a/source/frontend/src/tenants/config/defaultTenant.ts b/source/frontend/src/tenants/config/defaultTenant.ts
index fb32ed090c..979c3e39ad 100644
--- a/source/frontend/src/tenants/config/defaultTenant.ts
+++ b/source/frontend/src/tenants/config/defaultTenant.ts
@@ -68,7 +68,7 @@ export const defaultTenant: ITenantConfig2 = {
idlePromptTimeout: 15,
idleTimeout: 15,
pimsTrainingResourceUrl:
- 'https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training/PIMS%20Overview.pdf',
+ 'https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training',
};
export default defaultTenant;
From efc891d8c08132a5f6f87a67864212f16ba38d88 Mon Sep 17 00:00:00 2001
From: Eduardo Herrera
Date: Fri, 6 Oct 2023 10:52:00 -0700
Subject: [PATCH 8/8] - test updates
---
source/frontend/src/components/common/VerticalBar.tsx | 2 +-
.../layout/Header/__snapshots__/EmptyHeader.test.tsx.snap | 4 ++--
.../layout/Header/__snapshots__/Header.test.tsx.snap | 4 ++--
.../frontend/src/tenants/__snapshots__/tenant.test.tsx.snap | 6 +++---
4 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/source/frontend/src/components/common/VerticalBar.tsx b/source/frontend/src/components/common/VerticalBar.tsx
index 262a6d978c..d86831deac 100644
--- a/source/frontend/src/components/common/VerticalBar.tsx
+++ b/source/frontend/src/components/common/VerticalBar.tsx
@@ -6,7 +6,7 @@ import styled from 'styled-components';
export const VerticalBar = styled.span`
border-left: 1px solid white;
font-size: 3.4rem;
- margin: 0 1.5rem 0 2.5rem;
+ margin: 0 36px 0 36px;
vertical-align: top;
`;
diff --git a/source/frontend/src/components/layout/Header/__snapshots__/EmptyHeader.test.tsx.snap b/source/frontend/src/components/layout/Header/__snapshots__/EmptyHeader.test.tsx.snap
index 09e47db656..c89e9dbd7e 100644
--- a/source/frontend/src/components/layout/Header/__snapshots__/EmptyHeader.test.tsx.snap
+++ b/source/frontend/src/components/layout/Header/__snapshots__/EmptyHeader.test.tsx.snap
@@ -2,9 +2,9 @@
exports[`Empty Header renders 1`] = `
.c1 {
- border-left: 0.2rem solid white;
+ border-left: 1px solid white;
font-size: 3.4rem;
- margin: 0 1.5rem 0 2.5rem;
+ margin: 0 36px 0 36px;
vertical-align: top;
}
diff --git a/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap b/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
index 57e5af5d21..02d0f650d9 100644
--- a/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
+++ b/source/frontend/src/components/layout/Header/__snapshots__/Header.test.tsx.snap
@@ -15,9 +15,9 @@ exports[`App Header renders correctly 1`] = `
.c1 {
- border-left: 0.2rem solid white;
+ border-left: 1px solid white;
font-size: 3.4rem;
- margin: 0 1.5rem 0 2.5rem;
+ margin: 0 36px 0 36px;
vertical-align: top;
}
diff --git a/source/frontend/src/tenants/__snapshots__/tenant.test.tsx.snap b/source/frontend/src/tenants/__snapshots__/tenant.test.tsx.snap
index 92a02faa1a..9e98d64e7a 100644
--- a/source/frontend/src/tenants/__snapshots__/tenant.test.tsx.snap
+++ b/source/frontend/src/tenants/__snapshots__/tenant.test.tsx.snap
@@ -3,7 +3,7 @@
exports[`Tenant configuration Tenant returns correct MOTI configuration 1`] = `
- {"id":"MOTI","title":"Property Information Management System","shortName":"PIMS","colour":"#003366","logo":{"favicon":"/tenants/MOTI/favicon.ico","image":"/tenants/MOTI/PIMS-logo.png","imageWithText":"/tenants/MOTI/PIMS-logo-with-text.png"},"login":{"title":"TRAN Property Information Management System (PIMS)","heading":"PIMS enables you to view highways and properties owned by the Ministry of Transportation and Infrastructure","body":"WARNING: Not all data included within has been vetted for accuracy and completeness. Please use caution when proceeding and confirm data before relying on it.","backgroundImage":"/tenants/MOTI/background-image.jpg"},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15,"pimsTrainingResourceUrl":"https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training/PIMS%20Overview.pdf"}
+ {"id":"MOTI","title":"Property Information Management System","shortName":"PIMS","colour":"#003366","logo":{"favicon":"/tenants/MOTI/favicon.ico","image":"/tenants/MOTI/PIMS-logo.png","imageWithText":"/tenants/MOTI/PIMS-logo-with-text.png"},"login":{"title":"TRAN Property Information Management System (PIMS)","heading":"PIMS enables you to view highways and properties owned by the Ministry of Transportation and Infrastructure","body":"WARNING: Not all data included within has been vetted for accuracy and completeness. Please use caution when proceeding and confirm data before relying on it.","backgroundImage":"/tenants/MOTI/background-image.jpg"},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15,"pimsTrainingResourceUrl":"https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training"}
`;
@@ -11,7 +11,7 @@ exports[`Tenant configuration Tenant returns correct MOTI configuration 1`] = `
exports[`Tenant configuration Tenant returns correct default configuration 1`] = `
- {"id":"DFLT","title":"Default Tenant Name","shortName":"PIMS","colour":"#003366","logo":{"favicon":"","image":"","imageWithText":""},"login":{"title":"","heading":"","body":""},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15,"pimsTrainingResourceUrl":"https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training/PIMS%20Overview.pdf"}
+ {"id":"DFLT","title":"Default Tenant Name","shortName":"PIMS","colour":"#003366","logo":{"favicon":"","image":"","imageWithText":""},"login":{"title":"","heading":"","body":""},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15,"pimsTrainingResourceUrl":"https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training"}
`;
@@ -19,7 +19,7 @@ exports[`Tenant configuration Tenant returns correct default configuration 1`] =
exports[`Tenant configuration Tenant returns correct non-existing configuration 1`] = `
- {"id":"DFLT","title":"Default Tenant Name","shortName":"PIMS","colour":"#003366","logo":{"favicon":"","image":"","imageWithText":""},"login":{"title":"","heading":"","body":""},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15,"pimsTrainingResourceUrl":"https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training/PIMS%20Overview.pdf"}
+ {"id":"DFLT","title":"Default Tenant Name","shortName":"PIMS","colour":"#003366","logo":{"favicon":"","image":"","imageWithText":""},"login":{"title":"","heading":"","body":""},"layers":[],"propertiesUrl":"ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_LOCATION_VW&outputformat=json&srsName=EPSG:4326&version=2.0.0&","parcelMapFullyAttributed":{"url":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/ows","name":"pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW"},"electoralLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.EBC_ELECTORAL_DISTS_BS10_SVW","municipalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_MUNICIPALITIES_SP","parcelsLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW/wfs?service=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_CADASTRE.PMBC_PARCEL_FABRIC_POLY_FA_SVW","regionalLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.ABMS_REGIONAL_DISTRICTS_SP","motiRegionLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_REGIONAL_BNDRY_POLY","hwyDistrictLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.TADM_MOT_DISTRICT_BNDRY_POLY","alrLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_LEGAL_ADMIN_BOUNDARIES.OATS_ALR_POLYS","reservesLayerUrl":"https://openmaps.gov.bc.ca/geo/pub/WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP/wfs?SERVICE=WFS&REQUEST=GetFeature&VERSION=1.3.0&outputFormat=application/json&typeNames=pub:WHSE_ADMIN_BOUNDARIES.ADM_INDIAN_RESERVES_BANDS_SP","boundaryLayerUrl":"/ogs-internal/ows?service=wfs&request=GetFeature&typeName=PIMS_PROPERTY_BOUNDARY_VW&outputformat=json&version=2.0.0","bcAssessment":{"url":"https://delivery.apps.gov.bc.ca/ext/sgw/geo.bca","names":{"LEGAL_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LEGAL_DESCRIPTS_SV","ADDRESSES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_ADDRESSES_SV","FOLIO_DESCRIPTION":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_DESCRIPTIONS_SV","CHARGES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_LAND_CHARS_SV","VALUES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_GNRL_PROP_VALUES_SV","SALES":"geo.bca:WHSE_HUMAN_CULTURAL_ECONOMIC.BCA_FOLIO_SALES_SV"}},"idlePromptTimeout":15,"idleTimeout":15,"pimsTrainingResourceUrl":"https://sp.th.gov.bc.ca/sites/PropertiesServices/Project%20Management/03.%20Execution%20and%20Control/PIMS%20Training"}
`;