Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[ALS-1839] Route avoidance options #308

Merged
merged 57 commits into from
Feb 4, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
7aca765
fixed political view dropdown issue
its-aazizi Nov 6, 2024
d681e4d
resolved locate me icon issue when unauth simulation is exited and ro…
its-aazizi Nov 7, 2024
ba6f65a
Merge branch 'ALS-1883_issues' into dev
its-aazizi Nov 7, 2024
dfca3aa
updated map style images
its-aazizi Nov 8, 2024
cedf5cd
Merge branch 'map-style-images' into dev
its-aazizi Nov 8, 2024
083dc01
switched to 2 letter country code, added flags
its-aazizi Nov 8, 2024
f6c20c3
resolved unit test issue
its-aazizi Nov 12, 2024
a900dec
Merge branch 'fixed-issues' into dev
its-aazizi Nov 12, 2024
493f1c1
added language support for map
its-aazizi Nov 13, 2024
7ddbc5b
removed VNM political view
its-aazizi Nov 13, 2024
7f62be9
Merge branch 'fixed-issues' into dev
its-aazizi Nov 13, 2024
a8b1517
merged ALS-1886_language-support and resolved conflicts
its-aazizi Nov 13, 2024
4f6a865
resolved ts errors during build
its-aazizi Nov 13, 2024
396eb7d
Merge branch 'ALS-1886_language-support' into dev
its-aazizi Nov 13, 2024
fe17ca1
merged main and resolved conflicts
its-aazizi Nov 14, 2024
8f35617
updated sidebar navigation
its-aazizi Nov 14, 2024
eaae65b
Merge branch 'ALS-1886_language-support' into dev
its-aazizi Nov 14, 2024
65f6864
Merge branch 'side-bar-navigaiton' into dev
its-aazizi Nov 14, 2024
de0124a
Merge branch 'main' into dev
its-aazizi Nov 15, 2024
a9ce2ff
Merge branch 'ALS-1902_political-view' into dev
its-aazizi Nov 20, 2024
275c613
resolved error for place not found when clicking on water body, norma…
its-aazizi Nov 20, 2024
cf7c238
Merge branch 'ALS-1906_poi-error' into dev
its-aazizi Nov 20, 2024
796d645
Merge branch 'ALS-1902_political-view' into dev
its-aazizi Nov 22, 2024
7189412
added biasPosition state to be passed onto Places APIs
its-aazizi Nov 25, 2024
479090e
Merge branch 'ALS-1907_bias-position-update' into dev
its-aazizi Nov 25, 2024
c9c073f
added map language dropdown
its-aazizi Nov 28, 2024
e06d256
Merge branch 'main' into dev
its-aazizi Nov 28, 2024
57d35ed
Merge branch 'ALS-1910_map-language-dropdown' into dev
its-aazizi Nov 28, 2024
c6cc486
added labels for political views and map languages
its-aazizi Dec 3, 2024
d6a40bd
Merge branch 'ALS-1910_map-language-dropdown' into dev
its-aazizi Dec 3, 2024
7aaf664
Merge branch 'main' into dev
its-aazizi Dec 10, 2024
d3374a5
Merge branch 'ALS-1902_political-view' into dev
its-aazizi Dec 12, 2024
0f895f9
Merge branch 'main' into dev
its-aazizi Dec 15, 2024
7cd720a
more route options are added for v2 api
Jan 7, 2025
dba5c43
Merge branch 'main' into ALS-1839_more-route-options
its-aazizi Jan 17, 2025
fa96280
Merge branch 'main' into dev
its-aazizi Jan 17, 2025
6ccb29f
adding placeholder div to fix placement issue
Jan 20, 2025
ea0b4f3
add default route options in settings modal
Jan 21, 2025
323b750
Merge branch 'ALS-1839_more-route-options' of github.com:makeen-proje…
Jan 21, 2025
f2b8188
Merge branch 'ALS-1839_more-route-options' into dev
its-aazizi Jan 21, 2025
38011ef
fix defaultRouteOptions type error
Jan 21, 2025
2ef44c0
resolved build issues
its-aazizi Jan 21, 2025
8acaa5c
resolved conflict
its-aazizi Jan 21, 2025
1d671eb
Merge branch 'ALS-1839_more-route-options' into dev
its-aazizi Jan 21, 2025
86ab7fc
updated vite, updated lib config, updated husky script
its-aazizi Jan 24, 2025
5ee1db2
merged vite-update and resolved conflicts
its-aazizi Jan 24, 2025
5fd8333
enabling route avoidance for peds and scooters
Jan 27, 2025
416a03b
Merge branch 'main' into ALS-1839_more-route-options
its-aazizi Jan 29, 2025
2ac398e
Merge branch 'ALS-1839_more-route-options' of ssh://ssh.github.com:44…
its-aazizi Jan 29, 2025
6531795
Merge branch 'main' into ALS-1839_more-route-options
its-aazizi Jan 29, 2025
623a470
Merge pull request #307 from makeen-project/ALS-1839_more-route-options
wadhawh Jan 29, 2025
1957e34
Attempt to fix the failing test case
Jan 30, 2025
62c4728
Merge pull request #309 from makeen-project/ALS-1839_more-route-options
wadhawh Jan 30, 2025
6f44640
resolving suggestions; removing generic type; U-turn text; test ID usage
Feb 3, 2025
542ef8a
Merge pull request #310 from makeen-project/ALS-1839_more-route-options
wadhawh Feb 3, 2025
e43a364
updated
its-aazizi Feb 4, 2025
80ef4cb
Merge pull request #311 from makeen-project/ALS-1839_more-route-options
wadhawh Feb 4, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions cypress/support/routeSupport.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ Cypress.Commands.add("searchRouteWithAvoidTollOption", isResponsive => {
cy.wait(2000);
cy.get('[placeholder="To"]').click().type("manly beach sydney", { delay: 200 });
cy.contains("Beach").click({ force: true });
isResponsive ? cy.get('[data-testid="more-action-icon-container"]').click() : cy.contains("Route Options").click();
isResponsive ? cy.get('[data-testid="more-action-icon-container"]').click() : cy.get('[data-testid="route-avoidance-dropdown"]').click();
cy.contains("Avoid tolls").click();
isResponsive
? cy.get('[data-testid="bottomsheet-header-close-icon"]').click()
Expand All @@ -50,7 +50,7 @@ Cypress.Commands.add("searchRouteWithAvoidFerryOption", isResponsive => {
cy.wait(2000);
cy.get('[placeholder="To"]').click().type("port said", { delay: 200 });
cy.contains("Port Said").click();
isResponsive ? cy.get('[data-testid="more-action-icon-container"]').click() : cy.contains("Route Options").click();
isResponsive ? cy.get('[data-testid="more-action-icon-container"]').click() : cy.get('[data-testid="route-avoidance-dropdown"]').click();
cy.contains("Avoid ferries").click();
isResponsive
? cy.get('[data-testid="bottomsheet-header-close-icon"]').click()
Expand Down
7 changes: 4 additions & 3 deletions cypress/support/trackerAndGeofenceSupport.js
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,14 @@ Cypress.Commands.add("addTrackerAndGeofenceEnterExit", (isResponsive, geofenceNa
: cy.get('[class="maplibregl-canvas"]').click("right", { force: true });
cy.wait(5000);
cy.get('[class="maplibregl-canvas"]').click("right", { force: true });
if (isResponsive) {
cy.wait(5000);
cy.get('[class="maplibregl-canvas"]').click(200, 200, { force: true });
}
cy.wait(5000);
cy.contains("Save").click();
cy.wait(5000);
cy.get('[class="amplify-button amplify-field-group__control amplify-button--primary play-pause-button"]').click();
if (isResponsive) {
cy.wait(5000);
}
cy.get(
'[class="Toastify__toast Toastify__toast-theme--dark Toastify__toast--info Toastify__toast--close-on-click enter-geofence"]',
{ timeout: 50000 }
Expand Down
2 changes: 1 addition & 1 deletion extra/translation-script-content/update-en.json
Original file line number Diff line number Diff line change
@@ -1 +1 @@
{}
{}
6 changes: 4 additions & 2 deletions src/atomicui/atoms/DropdownEl/DropdownEl.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@ export interface DropdownElProps {
arrowIconColor?: string;
label?: string;
width?: string;
dataTestId?: string;
}

const DropdownEl: FC<DropdownElProps> = ({
Expand All @@ -31,7 +32,8 @@ const DropdownEl: FC<DropdownElProps> = ({
isRadioBox = false,
arrowIconColor,
label,
width = "100%"
width = "100%",
dataTestId
}) => {
const [open, setOpen] = useState(false);
const dropdownRef = useRef<HTMLDivElement>(null);
Expand Down Expand Up @@ -62,7 +64,7 @@ const DropdownEl: FC<DropdownElProps> = ({
);

return (
<div ref={dropdownRef} className="dropdown-container" style={{ width }}>
<div ref={dropdownRef} data-testid={dataTestId} className="dropdown-container" style={{ width }}>
<div
data-testid="dropdown-trigger"
className={
Expand Down
133 changes: 106 additions & 27 deletions src/atomicui/organisms/RouteBox/RouteBox.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import {
IconTruckSolid,
IconWalking
} from "@demo/assets/svgs";
import { DropdownEl } from "@demo/atomicui/atoms";
import { NotFoundCard, StepCard } from "@demo/atomicui/molecules";
import { appConfig } from "@demo/core/constants";
import BottomSheetHeights from "@demo/core/constants/bottomSheetHeights";
Expand Down Expand Up @@ -129,7 +130,6 @@ const RouteBox: FC<RouteBoxProps> = ({
setDirections
} = useRoute();
const { defaultRouteOptions } = usePersistedData();
const [expandRouteOptions, setExpandRouteOptions] = useState(false);
const [routeOptions, setRouteOptions] = useState<RouteOptionsType>({ ...defaultRouteOptions });
const { isDesktop, isDesktopBrowser } = useDeviceMediaQuery();
const { t, i18n } = useTranslation();
Expand Down Expand Up @@ -257,20 +257,34 @@ const RouteBox: FC<RouteBoxProps> = ({
const obj = getDestDept();

if (obj?.DeparturePosition && obj?.DestinationPosition) {
const isModePedestrianOrScooter = mode === TravelMode.PEDESTRIAN || mode === TravelMode.SCOOTER;
const uturnAvoidanceOption = isModePedestrianOrScooter ? {} : { UTurns: routeOptions.avoidUTurns };

const params: CalculateRoutesCommandInput = {
Origin: obj.DeparturePosition,
Destination: obj.DestinationPosition,
TravelMode: mode,
Avoid: {
TollRoads: routeOptions.avoidTolls,
Ferries: routeOptions.avoidFerries
Ferries: routeOptions.avoidFerries,
DirtRoads: routeOptions.avoidDirtRoads,
Tunnels: routeOptions.avoidTunnels,
...uturnAvoidanceOption

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Any reason why we aren't supporting other avoidance options?

      "CarShuttleTrains": boolean,       
      "ControlledAccessHighways": boolean,       
      "DirtRoads": boolean,       
      "Ferries": boolean,       
      "SeasonalClosure": boolean,      
      "TollRoads": boolean,       
      "TollTransponders": boolean,       
      "TruckRoadTypes": [ "string" ],       
      "Tunnels": boolean,       
      "UTurns": boolean, 

https://docs.aws.amazon.com/location/latest/APIReference/API_CalculateRoutes.html

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Discussed offline that this is the set of avoidance options we want to go with as a starting point.

},
InstructionsMeasurementSystem: mapUnit
};
return params;
}
},
[getDestDept, mapUnit, routeOptions.avoidFerries, routeOptions.avoidTolls]
[
getDestDept,
mapUnit,
routeOptions.avoidFerries,
routeOptions.avoidTolls,
routeOptions.avoidDirtRoads,
routeOptions.avoidTunnels,
routeOptions.avoidUTurns
]
);

const calculateRouteDataForAllTravelModes = useCallback(async () => {
Expand Down Expand Up @@ -508,9 +522,7 @@ const RouteBox: FC<RouteBoxProps> = ({
value.to.length
]);

const onClickRouteOptions = useCallback(() => setExpandRouteOptions(!expandRouteOptions), [expandRouteOptions]);

const MoreOptionsUI = useCallback(
const MoreOptionsUIMobile = useCallback(
() => (
<View className="route-option-items">
<CheckboxField
Expand Down Expand Up @@ -539,6 +551,48 @@ const RouteBox: FC<RouteBoxProps> = ({
}}
crossOrigin={undefined}
/>

<CheckboxField
className="option-item"
label={t("avoid_dirtroads.text")}
name={t("avoid_dirtroads.text")}
value="Avoid Dirtroads"
checked={routeOptions.avoidDirtRoads}
onChange={e => {
setRouteOptions({ ...routeOptions, avoidDirtRoads: e.target.checked });
setRouteData(undefined);
setRouteDataForMobile(undefined);
}}
crossOrigin={undefined}
/>

<CheckboxField
className="option-item"
label={t("avoid_uturns.text")}
name={t("avoid_uturns.text")}
value="Avoid Uturns"
checked={routeOptions.avoidUTurns}
onChange={e => {
setRouteOptions({ ...routeOptions, avoidUTurns: e.target.checked });
setRouteData(undefined);
setRouteDataForMobile(undefined);
}}
crossOrigin={undefined}
/>

<CheckboxField
className="option-item"
label={t("avoid_tunnels.text")}
name={t("avoid_tunnels.text")}
value="Avoid Tunnels"
checked={routeOptions.avoidTunnels}
onChange={e => {
setRouteOptions({ ...routeOptions, avoidTunnels: e.target.checked });
setRouteData(undefined);
setRouteDataForMobile(undefined);
}}
crossOrigin={undefined}
/>
</View>
),
[routeOptions, setRouteData, t]
Expand All @@ -557,32 +611,59 @@ const RouteBox: FC<RouteBoxProps> = ({
: "route-options-container bottom-border-radius"
}
>
{!expandRouteOptions ? (
<Text className="collapsed-route-options-text" onClick={onClickRouteOptions}>
{t("route_box__route_options.text")}
</Text>
) : (
<View className="expanded-route-options">
<Text className="text-1">{t("route_box__route_options.text")}</Text>
<Text className="text-2" onClick={onClickRouteOptions}>
{t("route_box__close.text")}
</Text>
</View>
)}
{expandRouteOptions && <MoreOptionsUI />}
{/* Placeholder for another dropdown to be added later */}
<div style={{ width: "100%" }} />
<DropdownEl
dataTestId="route-avoidance-dropdown"
label={t("avoid.text")}
defaultOption={Object.entries(routeOptions)
.filter(([_, value]) => value)
.map(([key]) => ({ value: key, label: t(key) }))}
options={[
{ value: "avoidTolls", label: t("avoid_tolls.text") },
{ value: "avoidFerries", label: t("avoid_ferries.text") },
{ value: "avoidDirtRoads", label: t("avoid_dirtroads.text") },
{ value: "avoidUTurns", label: t("avoid_uturns.text") },
{ value: "avoidTunnels", label: t("avoid_tunnels.text") }
]}
onSelect={option => {
switch (option.value) {
case "avoidTolls":
setRouteOptions({ ...routeOptions, avoidTolls: !routeOptions.avoidTolls });
break;
case "avoidFerries":
setRouteOptions({ ...routeOptions, avoidFerries: !routeOptions.avoidFerries });
break;
case "avoidDirtRoads":
setRouteOptions({ ...routeOptions, avoidDirtRoads: !routeOptions.avoidDirtRoads });
break;
case "avoidUTurns":
setRouteOptions({ ...routeOptions, avoidUTurns: !routeOptions.avoidUTurns });
break;
case "avoidTunnels":
setRouteOptions({ ...routeOptions, avoidTunnels: !routeOptions.avoidTunnels });
break;
default:
break;
}
setRouteData(undefined);
setRouteDataForMobile(undefined);
}}
showSelected={false}
isCheckbox={true}
/>
</View>
),
[
setRouteData,
routeOptions,
inputFocused,
isCurrentLocationSelected,
suggestions.from?.length,
suggestions.to?.length,
isSearching,
routeData,
expandRouteOptions,
onClickRouteOptions,
t,
MoreOptionsUI
t
]
);

Expand Down Expand Up @@ -899,7 +980,7 @@ const RouteBox: FC<RouteBoxProps> = ({
<Text fontFamily="AmazonEmber-Bold" fontSize="1.23rem">
{t("route_box__route_options.text")}
</Text>
<MoreOptionsUI />
<MoreOptionsUIMobile />
</Flex>
</Flex>
{routeFromMarker}
Expand Down Expand Up @@ -1050,9 +1131,7 @@ const RouteBox: FC<RouteBoxProps> = ({
{renderTravelModes}
</Flex>
)}
{isDesktop &&
[TravelMode.CAR, TravelMode.TRUCK].includes(travelMode as TravelMode) &&
renderRouteOptionsContainer}
{isDesktop && renderRouteOptionsContainer}
<View
className={`search-results-container ${!isDesktop ? "search-results-container-mobile" : ""}`}
maxHeight={!isDesktop ? bottomSheetCurrentHeight - 230 : window.innerHeight - 260}
Expand Down
15 changes: 12 additions & 3 deletions src/atomicui/organisms/RouteBox/styles.scss
Original file line number Diff line number Diff line change
Expand Up @@ -134,6 +134,7 @@
&.no-duration {
background-color: var(--light-color-2) !important;
border: 1px solid var(--grey-color-3) !important;

svg {
fill: #8e8e93 !important;
}
Expand Down Expand Up @@ -165,6 +166,7 @@
border-radius: 8px;
padding: 4px;
margin-right: 0.5rem;

&:hover {
background-color: var(--ghost-white);
}
Expand All @@ -182,6 +184,7 @@

.inputs-container {
width: 100%;

input {
background-color: var(--light-color-2);
}
Expand All @@ -196,6 +199,7 @@
width: 16px;
height: 16px;
}

.dashed-line {
height: 3px;
}
Expand Down Expand Up @@ -292,8 +296,13 @@
}

.route-options-container {
display: flex;
flex-direction: row;
justify-content: space-between;
gap: 10px;
background-color: var(--light-color-2);
padding: 11px 15px 11px 15px;
padding: 11px 15px;
cursor: pointer !important;

.collapsed-route-options-text {
opacity: 1 !important;
Expand All @@ -304,7 +313,6 @@
letter-spacing: 0px !important;
text-align: right !important;
line-height: 18px !important;
cursor: pointer !important;
}

.expanded-route-options {
Expand Down Expand Up @@ -532,6 +540,7 @@

&.steps-container-mobile {
padding: 0;

.step-card-icon-container {
margin-left: 0;
}
Expand Down Expand Up @@ -625,4 +634,4 @@
position: absolute;
top: 11px;
right: 10px;
}
}
30 changes: 30 additions & 0 deletions src/atomicui/organisms/SettingsModal/SettingsModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -326,6 +326,33 @@ const SettingsModal: FC<SettingsModalProps> = ({ open, onClose, resetAppState, m
onChange={e => handleRouteOptionChange(e, "avoidFerries")}
crossOrigin={undefined}
/>
<CheckboxField
className="sm-checkbox"
label={t("avoid_dirtroads.text")}
name={t("avoid_dirtroads.text")}
value="Avoid Dirtroads"
checked={defaultRouteOptions.avoidDirtRoads}
onChange={e => handleRouteOptionChange(e, "avoidDirtRoads")}
crossOrigin={undefined}
/>
<CheckboxField
className="sm-checkbox"
label={t("avoid_uturns.text")}
name={t("avoid_uturns.text")}
value="Avoid Uturns"
checked={defaultRouteOptions.avoidUTurns}
onChange={e => handleRouteOptionChange(e, "avoidUTurns")}
crossOrigin={undefined}
/>
<CheckboxField
className="sm-checkbox"
label={t("avoid_tunnels.text")}
name={t("avoid_tunnels.text")}
value="Avoid Tunnels"
checked={defaultRouteOptions.avoidTunnels}
onChange={e => handleRouteOptionChange(e, "avoidTunnels")}
crossOrigin={undefined}
/>
</Flex>
)
},
Expand Down Expand Up @@ -595,6 +622,9 @@ const SettingsModal: FC<SettingsModalProps> = ({ open, onClose, resetAppState, m
mapButtons,
defaultRouteOptions.avoidTolls,
defaultRouteOptions.avoidFerries,
defaultRouteOptions.avoidDirtRoads,
defaultRouteOptions.avoidUTurns,
defaultRouteOptions.avoidTunnels,
autoRegion,
baseValues?.region,
langDir,
Expand Down
Loading