* feat: add boilerplate
* feat: add working paths
* feat: improve building selection controls and add week schedule
Signed-off-by: doprz <52579214+doprz@users.noreply.github.com>
* fix: sort week schedule
Signed-off-by: doprz <52579214+doprz@users.noreply.github.com>
* feat(testing): improve pathfinding
* Revert "feat(testing): improve pathfinding"
This reverts commit 87998cedbf.
* feat: add pathfinding with building selection controls
Signed-off-by: doprz <52579214+doprz@users.noreply.github.com>
* feat: improve path finding algorithm thresholds
* feat: add DaySelector, PathStats, and WeekSchedule components
* feat: add working stats and daily schedule
* chore: refactor everything
* feat: add linear walkway node generation
* feat: add bezier curve walkway node generation
* feat: add circular walkway node generation
* docs: add docs
* feat: add individual path selection and bump version
* fix: tsdoc and updated components/utils
* chore(deps): update deps
* feat: add UTRP Map and Debug Page to Settings > Developer Mode
* chore: fix pr review comments
* chore: add showDebugNodes
* chore: add all buildings around the UT tower
* chore: add stadium POIs
* chore: add east mall buildings
* chore: update DaySelector to use proper button styling
* chore: add university ave walkway
* feat: add zoom, pan, and dev controls functionality
- Fix SVG Overlay Alignment
- Use SVG for map
- Add Dev Controls
- Fix day selector position
- Update the SVG's `preserveAspectRatio` attribute to `xMidYMid` meet to
ensure proper scaling
- Use `useCallback` for event handlers to prevent unnecessary re-renders
- Remove old PNG map
* feat: add dynamic rendering"
* feat: add dynamicRendering dev toggle and fullscreen support
* chore: update deps
* chore: disable viewport svg overlay culling if dynamic rendering is off
* chore: update pnpm-lock.yaml
* chore: add north mall buildings
* chore: add buildings next to JES
* refactor: map components into individual files
* fix: missing import
---------
Signed-off-by: doprz <52579214+doprz@users.noreply.github.com>
102 lines
4.3 KiB
TypeScript
102 lines
4.3 KiB
TypeScript
import React, { useState } from 'react';
|
|
|
|
interface DevTogglesProps {
|
|
dynamicRendering: boolean;
|
|
showBuildings: boolean;
|
|
showIntersections: boolean;
|
|
showWalkways: boolean;
|
|
showBuildingText: boolean;
|
|
showPrioritizedOnly: boolean;
|
|
onToggleDynamicRendering: () => void;
|
|
onToggleBuildings: () => void;
|
|
onToggleIntersections: () => void;
|
|
onToggleWalkways: () => void;
|
|
onToggleBuildingText: () => void;
|
|
onTogglePrioritizedOnly: () => void;
|
|
}
|
|
|
|
/**
|
|
* DevToggles component allows developers to toggle visibility of map elements.
|
|
*
|
|
* @param dynamicRendering - Whether to enable dynamic rendering.
|
|
* @param showBuildings - Whether to show buildings on the map.
|
|
* @param showIntersections - Whether to show intersections on the map.
|
|
* @param showWalkways - Whether to show walkways on the map.
|
|
* @param onToggleDynamicRendering - Callback function to toggle dynamic rendering.
|
|
* @param onToggleBuildings - Callback function to toggle buildings visibility.
|
|
* @param onToggleIntersections - Callback function to toggle intersections visibility.
|
|
* @param onToggleWalkways - Callback function to toggle walkways visibility.
|
|
*
|
|
* @returns The rendered DevToggles component.
|
|
*/
|
|
export default function DevToggles({
|
|
dynamicRendering,
|
|
showBuildings,
|
|
showIntersections,
|
|
showWalkways,
|
|
showBuildingText,
|
|
showPrioritizedOnly,
|
|
onToggleDynamicRendering,
|
|
onToggleBuildings,
|
|
onToggleIntersections,
|
|
onToggleWalkways,
|
|
onToggleBuildingText,
|
|
onTogglePrioritizedOnly,
|
|
}: DevTogglesProps): JSX.Element {
|
|
const [isCollapsed, setIsCollapsed] = useState<boolean>(false);
|
|
|
|
return (
|
|
<div className='flex flex-col gap-2 rounded-md bg-white/90 p-2 shadow-sm'>
|
|
<div className='flex items-center justify-between text-xs text-gray-700 font-semibold'>
|
|
<span>Dev Controls</span>
|
|
<button
|
|
onClick={() => setIsCollapsed(prev => !prev)}
|
|
className='ml-2 p-1 text-gray-500 hover:text-gray-800'
|
|
>
|
|
<svg
|
|
xmlns='http://www.w3.org/2000/svg'
|
|
width='14'
|
|
height='14'
|
|
viewBox='0 0 24 24'
|
|
fill='none'
|
|
stroke='currentColor'
|
|
strokeWidth='2'
|
|
strokeLinecap='round'
|
|
strokeLinejoin='round'
|
|
>
|
|
{isCollapsed ? <polyline points='6 9 12 15 18 9' /> : <polyline points='18 15 12 9 6 15' />}
|
|
</svg>
|
|
</button>
|
|
</div>
|
|
{!isCollapsed && (
|
|
<div className='flex flex-col gap-1'>
|
|
<label className='flex cursor-pointer items-center gap-2 text-xs'>
|
|
<input type='checkbox' checked={dynamicRendering} onChange={onToggleDynamicRendering} />
|
|
Dynamic Rendering
|
|
</label>
|
|
<label className='flex cursor-pointer items-center gap-2 text-xs'>
|
|
<input type='checkbox' checked={showBuildings} onChange={onToggleBuildings} />
|
|
Show Buildings
|
|
</label>
|
|
<label className='flex cursor-pointer items-center gap-2 text-xs'>
|
|
<input type='checkbox' checked={showBuildingText} onChange={onToggleBuildingText} />
|
|
Show Building Text
|
|
</label>
|
|
<label className='flex cursor-pointer items-center gap-2 text-xs'>
|
|
<input type='checkbox' checked={showPrioritizedOnly} onChange={onTogglePrioritizedOnly} />
|
|
Prioritized Buildings Only
|
|
</label>
|
|
<label className='flex cursor-pointer items-center gap-2 text-xs'>
|
|
<input type='checkbox' checked={showIntersections} onChange={onToggleIntersections} />
|
|
Show Intersections
|
|
</label>
|
|
<label className='flex cursor-pointer items-center gap-2 text-xs'>
|
|
<input type='checkbox' checked={showWalkways} onChange={onToggleWalkways} />
|
|
Show Walkways
|
|
</label>
|
|
</div>
|
|
)}
|
|
</div>
|
|
);
|
|
}
|