package Ġmil . ng a . gi at . mage . observation . view Ċ Ċ import Ġandroidx . compose . foundation .* Ċ import Ġandroidx . compose . foundation . layout .* Ċ import Ġandroidx . compose . material .* Ċ import Ġandroidx . compose . material . icons . Icons Ċ import Ġandroidx . compose . material . icons . filled .* Ċ import Ġandroidx . compose . material . icons . outlined . Directions Ċ import Ġandroidx . compose . material . icons . outlined . Favorite Border Ċ import Ġandroidx . compose . material . icons . outlined . Flag Ċ import Ġandroidx . compose . runtime . Composable Ċ import Ġandroidx . compose . runtime . Composition Local Provider Ċ import Ġandroidx . compose . runtime . getValue Ċ import Ġandroidx . compose . runtime . li ved ata . observe As State Ċ import Ġandroidx . compose . ui . Alignment Ċ import Ġandroidx . compose . ui . Modifier Ċ import Ġandroidx . compose . ui . graphics . Color Ċ import Ġandroidx . compose . ui . graphics . as Image Bitmap Ċ import Ġandroidx . compose . ui . platform . Local Context Ċ import Ġandroidx . compose . ui . text . font . Font Weight Ċ import Ġandroidx . compose . ui . unit . dp Ċ import Ġandroidx . compose . ui . unit . sp Ċ import Ġmil . ng a . gi at . mage . coordinate . Coordinate Formatter Ċ import Ġmil . ng a . gi at . mage . form . Form State Ċ import Ġmil . ng a . gi at . mage . form . Form ViewModel Ċ import Ġmil . ng a . gi at . mage . map . marker . Observation Bitmap Factory Ċ import Ġmil . ng a . gi at . mage . form . field . FieldValue Ċ import Ġmil . ng a . gi at . mage . form . view .* Ċ import Ġmil . ng a . gi at . mage . observation . Observation Permission Ċ import Ġmil . ng a . gi at . mage . observation . Observation State Ċ import Ġmil . ng a . gi at . mage . observation . Observation Status State Ċ import Ġmil . ng a . gi at . mage . sdk . datastore . observation . Attachment Ċ import Ġmil . ng a . gi at . mage . ui . theme .* Ċ import Ġmil . ng a . gi at . mage . utils . DateFormat Factory Ċ import Ġjava . util .* Ċ Ċ enum Ġclass ĠOb servation Action Ġ{ ĊĠ ĠEDIT , ĠFLAG , ĠF AV OR ITE , ĠDI RECTION S , ĠMO RE Ċ } Ċ Ċ @ Composable Ċ fun ĠOb servation View Screen ( ĊĠ ĠviewModel : ĠForm ViewModel , ĊĠ ĠonClose : Ġ(() Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠ Ġon Action : Ġ(( Observation Action ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠ Ġon Location Click : Ġ(( String ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠ Ġon Attachment Click : Ġ(( Attachment ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ{ ĊĠ Ġval Ġobservation State Ġby ĠviewModel . observation State . observe As State () ĊĊĠ ĠMage Theme Ġ{ ĊĠĠĠ ĠScaffold ( ĊĠĠĠĠĠ Ġtop Bar Ġ= Ġ{ ĊĠĠĠĠĠĠĠ ĠOb servation View Top Bar ( ĊĠĠĠĠĠĠĠĠĠ Ġobservation State Ġ= Ġobservation State , ĊĠĠĠĠĠĠĠĠĠ ĠonClose Ġ= Ġ{ ĠonClose ?. invoke () Ġ} ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ Ġcontent Ġ= Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠOb servation View Content ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġobservation State , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Action Ġ= Ġon Action , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Location Click Ġ= Ġon Location Click , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġon Attachment Click Ġ= Ġon Attachment Click ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠ Ġfloating ActionButton Ġ= Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( observation State ?. permissions ?. contains ( Observation Permission . EDIT ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠFloating ActionButton ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Action ?. invoke ( Observation Action . EDIT ) Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIcons . Default . Edit , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Edit ĠOb servation ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠColor . White ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠOb servation View Top Bar ( ĊĠ Ġobservation State : ĠOb servation State ?, ĊĠ ĠonClose : Ġ() Ġ-> ĠUnit Ċ ) Ġ{ ĊĠ Ġval Ġform State Ġ= Ġobservation State ?. forms ?. value ?. first OrNull () ĊĠ Ġval Ġprimary Ġ= Ġform State ?. fields ?. find Ġ{ Ġit . definition . name Ġ== Ġform State . definition . primary Map Field Ġ} ?. answer Ġas ? ĠField Value . Text ĊĠ Ġval Ġtitle Ġ= Ġprimary ?. text Ġ?: Ġ" Observation " ĊĊĠ ĠTop AppBar ( ĊĠĠĠ ĠbackgroundColor Ġ= ĠMaterial Theme . colors . top AppBar Background , ĊĠĠĠ Ġcontent Color Ġ= ĠColor . White , ĊĠĠĠ Ġtitle Ġ= Ġ{ ĊĠĠĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠĠĠ ĠText ( title ) ĊĠĠĠĠĠĠĠ Ġif Ġ( observation State ?. eventName Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides ĠContent Alpha . medium ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( observation State . eventName , ĠfontSize Ġ= Ġ 1 4 . sp ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ}, ĊĠĠĠ Ġnavigation Icon Ġ= Ġ{ ĊĠĠĠĠĠ ĠIcon Button ( onClick Ġ= Ġ{ ĠonClose . invoke () Ġ}) Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ( Icons . Default . Close , Ġ" Cancel ĠEdit ") ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ) Ċ } Ċ Ċ @ Composable Ċ fun ĠOb servation View Content ( ĊĠ Ġobservation State : ĠOb servation State ?, ĊĠ Ġon Action : Ġ(( Observation Action ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠ Ġon Location Click : Ġ(( String ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠ Ġon Attachment Click : Ġ(( Attachment ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ{ ĊĠ Ġif Ġ( observation State Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠ ĠSurface ( ĊĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . surface , ĊĠĠĠĠĠ Ġcontent Color Ġ= Ġcontent Color For ( Material Theme . colors . surface ), ĊĠĠĠĠĠ Ġelevation Ġ= Ġ 2 . dp ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġstatus Ġby Ġobservation State . status ĊĠĠĠĠĠ ĠOb servation View Status Content ( status ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠColumn ( ĊĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ. background ( Color ( 0 x 1 9 0 0 0 0 0 0 )) ĊĠĠĠĠĠĠĠ Ġ. fill Max Height () ĊĠĠĠĠĠĠĠ Ġ. vertical Scroll ( remember Scroll State ()) ĊĠĠĠĠĠĠĠ Ġ. padding ( start Ġ= Ġ 8 . dp , Ġend Ġ= Ġ 8 . dp , Ġbottom Ġ= Ġ 8 0 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ Ġval Ġforms Ġby Ġobservation State . forms ĊĊĠĠĠĠĠ ĠOb servation View Header Content ( ĊĠĠĠĠĠĠĠ Ġobservation State Ġ= Ġobservation State , ĊĠĠĠĠĠĠĠ Ġon Action Ġ= Ġon Action , ĊĠĠĠĠĠĠĠ Ġon Location Click Ġ= Ġ{ Ġon Location Click ?. invoke ( it ) Ġ} ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ Ġif Ġ( forms . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 8 . dp , Ġend Ġ= Ġ 8 . dp , Ġtop Ġ= Ġ 1 6 . dp ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides ĠContent Alpha . medium ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" FOR MS ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . caption , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Sem iB old , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. weight ( 1 f ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( vertical Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġfor Ġ( form State Ġin Ġforms ) Ġ{ ĊĠĠĠĠĠĠĠ ĠForm Content ( form State , Ġon Attachment Click ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠOb servation View Status Content ( ĊĠ Ġstatus : ĠOb servation Status State Ċ ) Ġ{ ĊĠ Ġif Ġ( status . dirty ) Ġ{ ĊĠĠĠ Ġif Ġ( status . error Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠ ĠOb servation Error Status ( error Ġ= Ġstatus . error ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ ĠOb servation Local Status () ĊĠĠĠ Ġ} ĊĠ Ġ} Ġelse Ġif Ġ( status . lastModified Ġ!= Ġnull ) Ġ{ ĊĠĠĠ ĠOb servation Sync Status ( sync Date Ġ= Ġstatus . lastModified ) ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠOb servation Sync Status ( ĊĠ Ġsync Date : ĠDate Ċ ) Ġ{ ĊĠ Ġval ĠdateFormat Ġ= ĊĠĠĠ ĠDate Format Factory . format (" yyyy - MM - dd ĠHH : mm Ġzz ", ĠLocale . getDefault (), ĠLocal Context . current ) ĊĊĠ ĠRow ( ĊĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠ Ġ. padding ( vertical Ġ= Ġ 8 . dp ) ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠIcon ( ĊĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Check , ĊĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Sync ", ĊĠĠĠĠĠ Ġt int Ġ= ĠColor ( 0 xFF 6 6 BB 6 A ), ĊĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ. width ( 2 4 . dp ) ĊĠĠĠĠĠĠĠ Ġ. height ( 2 4 . dp ) ĊĠĠĠĠĠĠĠ Ġ. padding ( end Ġ= Ġ 8 . dp ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠText ( ĊĠĠĠĠĠ Ġtext Ġ= Ġ" P ushed Ġon Ġ${ date Format . format ( sync Date )} ", ĊĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 2 , ĊĠĠĠĠĠ Ġcolor Ġ= ĠColor ( 0 xFF 6 6 BB 6 A ) ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠOb servation Local Status () Ġ{ ĊĠ ĠRow ( ĊĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠ Ġ. padding ( vertical Ġ= Ġ 8 . dp ) ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠIcon ( ĊĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Sync , ĊĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Local ", ĊĠĠĠĠĠ Ġt int Ġ= ĠColor ( 0 xFFFF A 7 2 6 ), ĊĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ. width ( 2 4 . dp ) ĊĠĠĠĠĠĠĠ Ġ. height ( 2 4 . dp ) ĊĠĠĠĠĠĠĠ Ġ. padding ( end Ġ= Ġ 8 . dp ) ĊĠĠĠ Ġ) ĊĊĠĠĠ ĠText ( ĊĠĠĠĠĠ Ġtext Ġ= Ġ" Saved Ġlocally , Ġwill Ġbe Ġsubmitted ", ĊĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 2 , ĊĠĠĠĠĠ Ġcolor Ġ= ĠColor ( 0 xFFFF A 7 2 6 ) ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠOb servation Error Status ( ĊĠ Ġerror : ĠString Ċ ) Ġ{ ĊĠ ĠColumn ( ĊĠĠĠ Ġhorizontal Alignment Ġ= ĠAlignment . Center H orizontally , ĊĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( vertical Ġ= Ġ 8 . dp , Ġhorizontal Ġ= Ġ 1 6 . dp ) ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠRow ( ĊĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . Center , ĊĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠ Ġ. padding ( bottom Ġ= Ġ 8 . dp ) ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Error Outline , ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Local ", ĊĠĠĠĠĠĠĠ Ġt int Ġ= ĠColor ( 0 xFF F 4 4 3 3 6 ), ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠ Ġ. width ( 2 4 . dp ) ĊĠĠĠĠĠĠĠĠĠ Ġ. height ( 2 4 . dp ) ĊĠĠĠĠĠĠĠĠĠ Ġ. padding ( end Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Observation Ġchanges Ġnot Ġpushed ", ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 2 , ĊĠĠĠĠĠĠĠ Ġcolor Ġ= ĠColor ( 0 xFF F 4 4 3 3 6 ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides ĠContent Alpha . medium ) Ġ{ ĊĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠ Ġtext Ġ= Ġerror , ĊĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 1 ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠOb servation View Header Content ( ĊĠ Ġobservation State : ĠOb servation State ? Ġ= Ġnull , ĊĠ Ġon Location Click : Ġ(( String ) Ġ-> ĠUnit )? Ġ= Ġnull , ĊĠ Ġon Action : Ġ(( Observation Action ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ{ ĊĠ Ġval ĠdateFormat Ġ= ĊĠĠĠ ĠDate Format Factory . format (" yyyy - MM - dd ĠHH : mm Ġzz ", ĠLocale . getDefault (), ĠLocal Context . current ) ĊĊĠ Ġval Ġform State Ġ= Ġobservation State ?. forms ?. value ?. first OrNull () ĊĠ ĠCard ( ĊĠĠĠ ĠModifier ĊĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 8 . dp ) ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠColumn Ġ{ ĊĠĠĠĠĠ Ġval Ġimportant Ġ= Ġobservation State ?. important ?. value ĊĠĠĠĠĠ Ġif Ġ( important Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. background ( Material Theme . colors . important Background ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( horizontal Ġ= Ġ 1 6 . dp , Ġvertical Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . Flag , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Important ĠFlag ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 4 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( 4 0 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( end Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠ ĠColumn () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides ĠContent Alpha . medium ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Flag ged Ġby Ġ${ important . user }". toUpperCase ( Locale . ROOT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . over line , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Sem iB old , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( important . description Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġimportant . description ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠRow ( modifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ. padding ( top Ġ= Ġ 1 6 . dp , Ġstart Ġ= Ġ 1 6 . dp , Ġbottom Ġ= Ġ 1 6 . dp ) ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColumn ( Modifier . weight ( 1 f )) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( bottom Ġ= Ġ 1 6 . dp ) ĊĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides ĠContent Alpha . medium ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobservation State ?. user DisplayName ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġit . toUpperCase ( Locale . ROOT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Sem iB old , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . over line ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ"\ u 2 0 2 2 ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Sem iB old , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . over line , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( start Ġ= Ġ 4 . dp , Ġend Ġ= Ġ 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġobservation State ?. timestamp Field State ?. answer ?. date ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= ĠdateFormat . format ( it ). toUpperCase ( Locale . ROOT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠfontWeight Ġ= ĠFontWeight . Sem iB old , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . over line ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ ĠForm Header Content ( form State ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ ĠOb servation Icon ( form State ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ Ġobservation State ?. geometry Field State ?. answer ?. location ?. let Ġ{ Ġlocation Ġ-> ĊĠĠĠĠĠĠĠ ĠBox ( ĊĠĠĠĠĠĠĠĠĠ ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 1 5 0 . dp ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġval Ġmap View Ġ= Ġremember MapView With Lifecycle () ĊĠĠĠĠĠĠĠĠĠ Ġval Ġmap State Ġ= ĠMap State ( observation State . geometry Field State . default Map Center , Ġobservation State . geometry Field State . default Map Zoom ) ĊĠĠĠĠĠĠĠĠĠ ĠMap View Content ( map View , Ġform State , Ġlocation , Ġmap State ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġlocation Text Ġ= ĠCoordinate Formatter ( Local Context . current ). format ( location . centroid LatLng ) ĊĠĠĠĠĠĠĠ ĠRow ( ĊĠĠĠĠĠĠĠĠĠ Ġvertical Alignment Ġ= ĠAlignment . Center Vert ically , ĊĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. click able Ġ{ Ġon Location Click ?. invoke ( location Text ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( 1 6 . dp ) ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . G ps Fixed , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Location ", ĊĠĠĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠMaterial Theme . colors . primary , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. height ( 2 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. width ( 2 4 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. padding ( end Ġ= Ġ 4 . dp ) ĊĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides ĠContent Alpha . high ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġlocation Text , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcolor Ġ= ĠMaterial Theme . colors . primary , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . body 2 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( end Ġ= Ġ 8 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . provider Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides ĠContent Alpha . medium ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġlocation . provider . toUpperCase ( Locale . ROOT ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . caption , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( end Ġ= Ġ 2 . dp ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠ Ġif Ġ( location . accuracy Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠComp osition Local Provider ( Local Content Alpha Ġprovides ĠContent Alpha . medium ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠText ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtext Ġ= Ġ" Ġ\ u 0 0 B 1 Ġ${ location . accuracy }", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġstyle Ġ= ĠMaterial Theme . typography . caption , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠDiv ider ( Modifier . fill Max Width ()) ĊĊĠĠĠĠĠ ĠOb servation Actions ( observation State ) Ġ{ Ġon Action ?. invoke ( it ) Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠOb servation Actions ( ĊĠ Ġobservation State : ĠOb servation State ?, ĊĠ Ġon Action : Ġ(( Observation Action ) Ġ-> ĠUnit )? Ġ= Ġnull Ċ ) Ġ{ ĊĠ ĠRow ( ĊĠĠĠ ĠModifier ĊĠĠĠĠĠ Ġ. fill Max Width () ĊĠĠĠĠĠ Ġ. padding ( vertical Ġ= Ġ 4 . dp ), ĊĠĠĠ Ġhorizontal Arrange ment Ġ= ĠArrange ment . End ĊĠ Ġ) Ġ{ ĊĊĊĠĠĠ Ġif Ġ( observation State ?. permissions ?. contains ( Observation Permission . FLAG ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠ Ġval Ġis Flag ged Ġ= Ġobservation State . important . value Ġ!= Ġnull ĊĠĠĠĠĠ Ġval Ġflag Tint Ġ= Ġif Ġ( is Flag ged ) Ġ{ ĊĠĠĠĠĠĠĠ ĠColor ( 0 X FFFF 9 1 0 0 ) ĊĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ ĠMaterial Theme . colors . on Surface . copy ( alpha Ġ= ĠContent Alpha . medium ) ĊĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( end Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Action ?. invoke ( Observation Action . FLAG ) Ġ} ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= Ġif Ġ( is Flag ged ) ĠIcons . Default . Flag Ġelse ĠIcons . Outlined . Flag , ĊĠĠĠĠĠĠĠĠĠ Ġt int Ġ= Ġflag Tint , ĊĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Flag ", ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval Ġis Favorite Ġ= Ġobservation State ?. favorite ?. value Ġ== Ġtrue ĊĠĠĠ Ġval Ġfavorite Tint Ġ= Ġif Ġ( is Favorite ) Ġ{ ĊĠĠĠĠĠ ĠColor ( 0 XFF 7 ED 3 1 F ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ ĠMaterial Theme . colors . on Surface . copy ( alpha Ġ= ĠContent Alpha . medium ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( end Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Action ?. invoke ( Observation Action . FA V OR ITE ) Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠ Ġimage Vector Ġ= Ġif Ġ( is Favorite ) ĠIcons . Default . Favorite Ġelse ĠIcons . Outlined . Favorite Border , ĊĠĠĠĠĠĠĠ Ġt int Ġ= Ġfavorite Tint , ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Favorite ", ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( end Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Action ?. invoke ( Observation Action . DIRECTION S ) Ġ} ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Outlined . Directions , ĊĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Directions ", ĊĠĠĠĠĠĠĠ Ġt int Ġ= ĠMaterial Theme . colors . on Surface . copy ( alpha Ġ= ĠContent Alpha . medium ) ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġif Ġ( observation State ?. permissions ?. contains ( Observation Permission . DELETE ) Ġ== Ġtrue ) Ġ{ ĊĠĠĠĠĠ ĠIcon Button ( ĊĠĠĠĠĠĠĠ Ġmodifier Ġ= ĠModifier . padding ( end Ġ= Ġ 8 . dp ), ĊĠĠĠĠĠĠĠ ĠonClick Ġ= Ġ{ Ġon Action ?. invoke ( Observation Action . MORE ) Ġ} ĊĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ ĠIcon ( ĊĠĠĠĠĠĠĠĠĠ Ġimage Vector Ġ= ĠIcons . Default . More Vert , ĊĠĠĠĠĠĠĠĠĠ Ġcontent Description Ġ= Ġ" More Vert ", ĊĠĠĠĠĠĠĠĠĠ Ġt int Ġ= ĠMaterial Theme . colors . on Surface . copy ( alpha Ġ= ĠContent Alpha . medium ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} Ċ } Ċ Ċ @ Composable Ċ fun ĠOb servation Icon ( ĊĠ Ġform State : ĠForm State ? Ċ ) Ġ{ ĊĠ Ġval Ġprimary Ġ= Ġform State ?. fields ?. find Ġ{ Ġit . definition . name Ġ== Ġform State . definition . primary Map Field Ġ} ?. answer Ġas ? ĠField Value . Text ĊĠ Ġval Ġsecondary Ġ= Ġform State ?. fields ?. find Ġ{ Ġit . definition . name Ġ== Ġform State . definition . secondary Map Field Ġ} ?. answer Ġas ? ĠField Value . Text ĊĠ Ġval Ġbitmap Ġ= ĠOb servation Bitmap Factory . bitmap ( Local Context . current , Ġform State ?. eventId , Ġform State ?. definition ?. id , Ġprimary , Ġsecondary ) ĊĊĠ ĠBox ( modifier Ġ= ĠModifier ĊĠĠĠ Ġ. padding ( start Ġ= Ġ 1 6 . dp , Ġend Ġ= Ġ 1 6 . dp ) ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠImage ( ĊĠĠĠĠĠ Ġbitmap Ġ= Ġbitmap . as Image Bitmap (), ĊĠĠĠĠĠ Ġcontent Description Ġ= Ġ" Observation ĠIcon ", ĊĠĠĠĠĠ Ġmodifier Ġ= ĠModifier ĊĠĠĠĠĠĠĠ Ġ. width ( 4 0 . dp ) ĊĠĠĠĠĠĠĠ Ġ. height ( 4 0 . dp ) ĊĠĠĠ Ġ) ĊĠ Ġ} Ċ }