Implement map click interaction + layout state
まだ誰も着手していません。
評価
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 初心者へのやさしさ
- 48/100
- issue の種類
- 機能追加
- 明瞭さ
- おおむね明確
- 活発さ
- 静か
- 技術スタック
- react, typescript
調査の方向性
マップコンテナまたはページコンポーネントから始め、土地プロジェクトのマーカーのクリックが現在どのように処理されているかを追跡します。ProjectTitle と ProjectInfo を読み、その後、Material UI の既存のレスポンシブレイアウトのアプローチを確認します。マーカーを選択すると、選択されたデータを含む両方の詳細コンポーネントが表示され、小さい画面では閉じる操作によってマップ全体のビューが復元されれば完了です。
索引モデルが issue の本文から書いたものです。
説明
Issue created with ChatGPT models' help¹
Dependency
- #4
- #15
- Once above issues are done, please move this issue to ready column/status
Description
Implement the interaction flow where clicking a land project marker on the map changes the application layout state and reveals the lower project detail panels¹. When the map is in full-screen/default state and a user clicks a project marker, the map should shrink responsively and display both the ProjectTitle and ProjectInfo components beneath the map².
The interaction should also support resetting back to the original full-map layout when the user clicks the close button from the ProjectTitle component³. This issue is mainly focused on layout state management, interaction flow, responsive resizing behavior, and component visibility handling⁴.
React state management can initially use useState, context, or another lightweight approach depending on contributor preference¹.
Goals
- Implement project marker click interaction¹
- Shrink map layout after marker selection²
- Render
ProjectTitleandProjectInfocomponents dynamically³ - Restore full map layout on close action⁴
- Support responsive layout behavior for smaller screens¹
- Prepare interaction flow for future routing/service integration²
Implementation Instructions
-
Add layout interaction logic to map container/page component¹
-
Use React state (
useStateor equivalent) to track selected project² -
Create layout states such as:
- default/full map view³
- project selected/detail layout⁴
-
On marker click:
- store selected project data¹
- shrink map container height/layout²
- render
ProjectTitlecomponent³ - render
ProjectInfocomponent⁴
-
On close button click from
ProjectTitle:- clear selected project state¹
- restore original map layout²
- hide detail panels³
-
Ensure layout resizing works on smaller screens/mobile widths⁴
-
Use responsive breakpoints using Material UI¹
-
Avoid hardcoding viewport assumptions where possible²
Expected Interaction Flow
Default State
- Map occupies primary/full content layout¹
- Project detail panels are hidden²
Marker Click State
- User clicks land project marker³
- Map shrinks vertically according to detail layout⁴
ProjectTitleappears below map¹ProjectInfoappears below title²- Selected project data populates components dynamically³
Close Interaction
- User clicks close button from
ProjectTitle⁴ - Detail panels disappear¹
- Map returns to original full-size state²
Responsive Layout Considerations
- Shrinking behavior must account for smaller screen sizes¹
- Layout should remain usable on tablets/laptops²
- Avoid fixed pixel-only assumptions for height calculations³
- Contributors may use flex/grid/MUI responsive containers⁴
- Mobile interaction behavior can evolve later if needed¹
Suggested Technical Structure
Possible state example (not required):²
const [selectedProject, setSelectedProject] = useState(null);
Possible derived layout states:³
const isProjectOpen = Boolean(selectedProject);
This is only a suggestion and contributors may structure state differently⁴.
Acceptance Criteria
- Clicking a map marker updates layout state¹
- Map shrinks when project is selected²
-
ProjectTitlecomponent renders correctly³ -
ProjectInfocomponent renders correctly⁴ - Close button restores original map layout¹
- Layout remains usable on smaller screens²
- Selected project data flows into detail components³
- Code structure supports future expansion/refactoring⁴
Resources
¹ https://react.dev/reference/react/useState
² https://react.dev/learn/sharing-state-between-components
³ https://mui.com/material-ui/react-box/
⁴ https://mui.com/material-ui/guides/responsive-ui/
- 主要言語
- HTML
- スター
- 2
- フォーク
- 11
- PR マージ指標
- 30日以内にマージされた PR はありません
環境構築
このプロジェクトの開発コンテナを、あなたの GitHub アカウントでブラウザ上に起動します。
- Dockerfile・Docker Compose ファイルなし
- プルリクエストのテンプレートあり
- コントリビューションガイドを読む
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
OpenSourceFellows/map_dashboard_hackathon のほかの issue
-
California Tribal GIS Hackathon Intermediate
難易度 2/5 半日 初心者へのやさしさ 68/100
-
California Tribal GIS Hackathon Intermediate
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
-
Advanced California Tribal GIS Hackathon
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
-
Advanced California Tribal GIS Hackathon
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
-
Advanced California Tribal GIS Hackathon
難易度 4/5 3〜5日 初心者へのやさしさ 45/100
OpenSourceFellows/map_dashboard_hackathon の issue をすべて見る
似ている issue
-
bug DUP Reservations
難易度 2/5 1〜3時間 初心者へのやさしさ 62/100
bcgov/reserve-rec-public#952 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
daufderheide/racecoordinator_ai#948 ·
メンテナーはふだん 1 日以内に返信
-
ekitan.comオープンN: AdGuard for iOS P2: High T: Annoyance
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
AdguardTeam/AdguardFilters#243617 ·
メンテナーはふだん 1 日以内に返信
-
accessibility area: dashboard bug ready-for-agent
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
amatya-aditya/obsidian-rss-dashboard#880 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
Markdown Preview Fonts Don't Show Selected Option対応中かも @RadhiRasho が今日担当しました。 オープンstate:needs triage
難易度 2/5 1〜3時間 初心者へのやさしさ 61/100
zed-industries/zed#65300 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信