@@ -11,15 +11,22 @@ import Data.Map as M (Map, fromList, partition, toList)
1111import Data.Text as T (pack)
1212import Data.Time
1313import Data.Time.Clock.POSIX
14+import Obelisk.Route.Frontend
1415import Reflex.Dom
1516import Servant.Reflex
1617
1718import Common.Types as CT
1819import Frontend.API
20+import Frontend.Route
1921import Page.NewStagingPopup
2022import Page.Utils
2123
22−deploymentsPage :: MonadWidget t m => m ()
24+deploymentsPage
25+ ::
26+ ( MonadWidget t m
27+ , RouteToUrl (R Routes) m
28+ , SetRoute t (R Routes) m )
29+ => m ()
2330deploymentsPage = do
2431 headWidget
2532 deploymentsWidget
@@ -41,7 +48,12 @@ deploymentsWidgetWrapper m =
4148 divClass "page" $
4249 divClass "page__wrap container" m
4350
44−deploymentsWidget :: forall t m . MonadWidget t m => m ()
51+deploymentsWidget
52+ ::
53+ ( MonadWidget t m
54+ , RouteToUrl (R Routes) m
55+ , SetRoute t (R Routes) m )
56+ => m ()
4557deploymentsWidget = do
4658 showNewStagingEv <- deploymentsWidgetWrapper $ mdo
4759 showNewStagingEv' <- deploymentsHeadWidget
@@ -67,7 +79,12 @@ deploymentsHeadWidget =
6779 text "New staging"
6880 pure $ domEvent Click nsEl
6981
70−initDeploymentsListWidget :: forall t m . MonadWidget t m => m ()
82+initDeploymentsListWidget
83+ ::
84+ ( MonadWidget t m
85+ , RouteToUrl (R Routes) m
86+ , SetRoute t (R Routes) m )
87+ => m ()
7188initDeploymentsListWidget = dataWidgetWrapper $ do
7289 pb <- getPostBuild
7390 respEv <- listEndpoint pb
@@ -90,7 +107,12 @@ wsUpdate = do
90107 ws <- webSocket "wss://dm-genfly-ws.stage.thebestagent.pro/event" wsConfig
91108 pure $ () <$ _webSocket_recv ws
92109
93−deploymentsListWidget :: forall t m . MonadWidget t m => [DeploymentFullInfo] -> m ()
110+deploymentsListWidget
111+ ::
112+ ( MonadWidget t m
113+ , RouteToUrl (R Routes) m
114+ , SetRoute t (R Routes) m )
115+ => [DeploymentFullInfo] -> m ()
94116deploymentsListWidget ds = mdo
95117 updAllEv <- wsUpdate
96118 updRespEv <- listEndpoint updAllEv
@@ -122,7 +144,10 @@ flatDynMapDyn x =
122144 f (k, d) = (k,) <$> d
123145
124146activeDeploymentsWidget
125− :: MonadWidget t m
147+ ::
148+ ( MonadWidget t m
149+ , RouteToUrl (R Routes) m
150+ , SetRoute t (R Routes) m )
126151 => Event t ClickedElement
127152 -> Dynamic t
128153 (Map DeploymentName (DeploymentFullInfo, Event t DeploymentStatus))
@@ -148,7 +173,10 @@ statusWidget dsEv = do
148173 CT.Error -> divClass "status status--failure" $ text "Failure"
149174
150175activeDeploymentWidget
151− :: MonadWidget t m
176+ ::
177+ ( MonadWidget t m
178+ , RouteToUrl (R Routes) m
179+ , SetRoute t (R Routes) m )
152180 => Event t ClickedElement
153181 -> DeploymentName
154182 -> Dynamic t (DeploymentFullInfo, Event t DeploymentStatus)
@@ -157,7 +185,7 @@ activeDeploymentWidget clickedEv dname dDyn' = do
157185 dDyn <- holdUniqDyn $ fst <$> dDyn'
158186 let wstDyn = switchDyn $ snd <$> dDyn'
159187 dyn_ $ ffor dDyn $ \DeploymentFullInfo{..} -> do
160− el "tr" $ do
188+ (linkEl, _) <- el' "tr" $ do
161189 el "td" $ do
162190 text $ coerce dname
163191 statusWidget wstDyn
@@ -197,6 +225,8 @@ activeDeploymentWidget clickedEv dname dDyn' = do
197225 ( "class" =: "action action--delete"
198226 <> "type" =: "button") $ text "Move to archive"
199227 dropdownWidget' clickedEv btn body
228+ let route = DashboardRoute :/ Just dname
229+ setRoute $ route <$ domEvent Click linkEl
200230
201231archivedDeploymentsWidget
202232 :: MonadWidget t m