Skip to content

Commit 3679b70

Browse files
committed
wip
1 parent d65618c commit 3679b70

File tree

2 files changed

+184
-205
lines changed
  • ghcjs
    • delivery-calculator/src/App/Widgets
    • miso-functora/src/Functora/Miso/Widgets

2 files changed

+184
-205
lines changed

ghcjs/delivery-calculator/src/App/Widgets/Menu.hs

Lines changed: 169 additions & 196 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import qualified Functora.Miso.Widgets.BrowserLink as BrowserLink
1313
import qualified Functora.Miso.Widgets.Currency as Currency
1414
import qualified Functora.Miso.Widgets.Dialog as Dialog
1515
import qualified Functora.Miso.Widgets.Field as Field
16-
import qualified Functora.Miso.Widgets.Grid as Grid
1716
import qualified Functora.Miso.Widgets.Icon as Icon
1817
import qualified Functora.Miso.Widgets.Select as Select
1918
import qualified Functora.Money as Money
@@ -156,122 +155,112 @@ menu st =
156155
Currency.argsCurrencies =
157156
#modelCurrencies
158157
},
159-
Grid.mediumCell
160-
[ span_ mempty [text "Exchange rate"],
161-
Select.select
162-
Select.defOpts
163-
Select.Args
164-
{ Select.argsModel =
165-
st,
166-
Select.argsOptic =
167-
#modelState . #stOnlineOrOffline,
168-
Select.argsAction =
169-
PushUpdate . Instant,
170-
Select.argsOptions =
171-
constTraversal $ enumerate @OnlineOrOffline
172-
}
173-
],
174-
Grid.mediumCell
175-
[ Field.ratioField
176-
Field.Args
177-
{ Field.argsModel = st,
178-
Field.argsOptic =
179-
#modelState . #stExchangeRate,
180-
Field.argsAction =
181-
PushUpdate . Instant,
182-
Field.argsEmitter =
183-
pushActionQueue st . Instant
184-
}
185-
( let disabled =
186-
st
187-
^. #modelState
188-
. #stOnlineOrOffline
189-
== Online
190-
in Field.defOpts @Model @Action
191-
& #optsDisabled
192-
.~ disabled
193-
& #optsPlaceholder
194-
.~ ( "1 "
195-
<> toUpper
196-
( Money.inspectCurrencyCode
197-
$ st
198-
^. #modelState
199-
. #stAssetCurrency
200-
. #currencyOutput
201-
. #currencyInfoCode
202-
)
203-
<> " \8776 X "
204-
<> toUpper
205-
( Money.inspectCurrencyCode
206-
$ st
207-
^. #modelState
208-
. #stMerchantCurrency
209-
. #currencyOutput
210-
. #currencyInfoCode
211-
)
212-
)
213-
& ( if disabled
214-
then #optsTrailingWidget .~ Nothing
215-
else id
216-
)
217-
)
218-
],
219-
Grid.mediumCell
220-
[ Field.dynamicField
221-
Field.Args
222-
{ Field.argsModel = st,
223-
Field.argsOptic =
224-
#modelState . #stMerchantFeePercent,
225-
Field.argsAction =
226-
PushUpdate . Instant,
227-
Field.argsEmitter =
228-
pushActionQueue st . Instant
229-
}
230-
( Field.defOpts
231-
& #optsPlaceholder
232-
.~ ("Merchant fee %" :: Unicode)
233-
)
234-
],
235-
Grid.mediumCell
236-
[ Field.textField
237-
Field.Args
238-
{ Field.argsModel = st,
239-
Field.argsOptic = #modelState . #stMerchantTele,
240-
Field.argsAction = PushUpdate . Instant,
241-
Field.argsEmitter = pushActionQueue st . Instant
242-
}
243-
( Field.defOpts
244-
& #optsPlaceholder
245-
.~ ("Merchant telegram" :: Unicode)
246-
)
247-
],
248-
Grid.mediumCell
249-
[ Field.textField
250-
Field.Args
251-
{ Field.argsModel = st,
252-
Field.argsOptic = #modelState . #stPreview,
253-
Field.argsAction = PushUpdate . Instant,
254-
Field.argsEmitter = pushActionQueue st . Instant
255-
}
256-
( Field.defOpts @Model @Action
158+
Select.select
159+
( Select.defOpts
160+
& #optsLabel
161+
.~ Just "Exchange rate"
162+
)
163+
Select.Args
164+
{ Select.argsModel =
165+
st,
166+
Select.argsOptic =
167+
#modelState . #stOnlineOrOffline,
168+
Select.argsAction =
169+
PushUpdate . Instant,
170+
Select.argsOptions =
171+
constTraversal $ enumerate @OnlineOrOffline
172+
},
173+
Field.ratioField
174+
Field.Args
175+
{ Field.argsModel = st,
176+
Field.argsOptic =
177+
#modelState . #stExchangeRate,
178+
Field.argsAction =
179+
PushUpdate . Instant,
180+
Field.argsEmitter =
181+
pushActionQueue st . Instant
182+
}
183+
( let disabled =
184+
st
185+
^. #modelState
186+
. #stOnlineOrOffline
187+
== Online
188+
in Field.defOpts @Model @Action
189+
& #optsDisabled
190+
.~ disabled
257191
& #optsPlaceholder
258-
.~ ("QR title" :: Unicode)
259-
)
260-
],
261-
Grid.mediumCell
262-
[ button_
263-
[ Css.fullWidth,
264-
onClick
265-
. screen
266-
$ if isQrCode sc
267-
then Main
268-
else QrCode sc
269-
]
270-
[ text
271-
$ if isQrCode sc
272-
then "Delivery Calculator"
273-
else "QR"
274-
]
192+
.~ ( "1 "
193+
<> toUpper
194+
( Money.inspectCurrencyCode
195+
$ st
196+
^. #modelState
197+
. #stAssetCurrency
198+
. #currencyOutput
199+
. #currencyInfoCode
200+
)
201+
<> " \8776 X "
202+
<> toUpper
203+
( Money.inspectCurrencyCode
204+
$ st
205+
^. #modelState
206+
. #stMerchantCurrency
207+
. #currencyOutput
208+
. #currencyInfoCode
209+
)
210+
)
211+
& ( if disabled
212+
then #optsTrailingWidget .~ Nothing
213+
else id
214+
)
215+
),
216+
Field.dynamicField
217+
Field.Args
218+
{ Field.argsModel = st,
219+
Field.argsOptic =
220+
#modelState . #stMerchantFeePercent,
221+
Field.argsAction =
222+
PushUpdate . Instant,
223+
Field.argsEmitter =
224+
pushActionQueue st . Instant
225+
}
226+
( Field.defOpts
227+
& #optsPlaceholder
228+
.~ ("Merchant fee %" :: Unicode)
229+
),
230+
Field.textField
231+
Field.Args
232+
{ Field.argsModel = st,
233+
Field.argsOptic = #modelState . #stMerchantTele,
234+
Field.argsAction = PushUpdate . Instant,
235+
Field.argsEmitter = pushActionQueue st . Instant
236+
}
237+
( Field.defOpts
238+
& #optsPlaceholder
239+
.~ ("Merchant telegram" :: Unicode)
240+
),
241+
Field.textField
242+
Field.Args
243+
{ Field.argsModel = st,
244+
Field.argsOptic = #modelState . #stPreview,
245+
Field.argsAction = PushUpdate . Instant,
246+
Field.argsEmitter = pushActionQueue st . Instant
247+
}
248+
( Field.defOpts @Model @Action
249+
& #optsPlaceholder
250+
.~ ("QR title" :: Unicode)
251+
),
252+
button_
253+
[ Css.fullWidth,
254+
onClick
255+
. screen
256+
$ if isQrCode sc
257+
then Main
258+
else QrCode sc
259+
]
260+
[ text
261+
$ if isQrCode sc
262+
then "Delivery Calculator"
263+
else "QR"
275264
]
276265
]
277266
<> linksWidget st
@@ -289,13 +278,11 @@ menu st =
289278

290279
linksWidget :: Model -> [View Action]
291280
linksWidget st =
292-
[ Grid.bigCell
293-
[ button_
294-
[ onClick openWidget,
295-
Css.fullWidth
296-
]
297-
[ text "App"
298-
]
281+
[ button_
282+
[ onClick openWidget,
283+
Css.fullWidth
284+
]
285+
[ text "App"
299286
]
300287
]
301288
<> Dialog.dialog
@@ -305,84 +292,70 @@ linksWidget st =
305292
Dialog.argsOptic = #modelLinks,
306293
Dialog.argsAction = PushUpdate . Instant,
307294
Dialog.argsContent =
308-
[ Grid.bigCell
309-
[ text
310-
"The Android app is in closed beta. To install it, join the ",
311-
BrowserLink.browserLink
312-
BrowserLink.Args
313-
{ BrowserLink.argsLink = testGroupLink,
314-
BrowserLink.argsLabel = "closed beta",
315-
BrowserLink.argsAction =
316-
PushUpdate
317-
. Instant
318-
},
319-
text " group and then install the app from ",
320-
BrowserLink.browserLink
321-
BrowserLink.Args
322-
{ BrowserLink.argsLink = googlePlayLink,
323-
BrowserLink.argsLabel = "Google Play",
324-
BrowserLink.argsAction =
325-
PushUpdate
326-
. Instant
327-
},
328-
text ", or download the ",
329-
BrowserLink.browserLink
330-
BrowserLink.Args
331-
{ BrowserLink.argsLink = apkLink,
332-
BrowserLink.argsLabel = "APK file",
333-
BrowserLink.argsAction =
334-
PushUpdate
335-
. Instant
336-
},
337-
text " directly."
338-
],
339-
Grid.mediumCell
340-
[ button_
341-
[ onClick $ openBrowser testGroupLink,
342-
Css.fullWidth
343-
]
344-
[ text "Join testing (closed beta)"
345-
]
295+
[ text
296+
"The Android app is in closed beta. To install it, join the ",
297+
BrowserLink.browserLink
298+
BrowserLink.Args
299+
{ BrowserLink.argsLink = testGroupLink,
300+
BrowserLink.argsLabel = "closed beta",
301+
BrowserLink.argsAction =
302+
PushUpdate
303+
. Instant
304+
},
305+
text " group and then install the app from ",
306+
BrowserLink.browserLink
307+
BrowserLink.Args
308+
{ BrowserLink.argsLink = googlePlayLink,
309+
BrowserLink.argsLabel = "Google Play",
310+
BrowserLink.argsAction =
311+
PushUpdate
312+
. Instant
313+
},
314+
text ", or download the ",
315+
BrowserLink.browserLink
316+
BrowserLink.Args
317+
{ BrowserLink.argsLink = apkLink,
318+
BrowserLink.argsLabel = "APK file",
319+
BrowserLink.argsAction =
320+
PushUpdate
321+
. Instant
322+
},
323+
text " directly.",
324+
button_
325+
[ onClick $ openBrowser testGroupLink,
326+
Css.fullWidth
327+
]
328+
[ text "Join testing (closed beta)"
346329
],
347-
Grid.mediumCell
348-
[ button_
349-
[ onClick $ openBrowser googlePlayLink,
350-
Css.fullWidth
351-
]
352-
[ text "Google Play (closed beta)"
353-
]
330+
button_
331+
[ onClick $ openBrowser googlePlayLink,
332+
Css.fullWidth
333+
]
334+
[ text "Google Play (closed beta)"
354335
],
355-
Grid.mediumCell
356-
[ button_
357-
[ onClick $ openBrowser apkLink,
358-
Css.fullWidth
359-
]
360-
[ text "Download APK"
361-
]
336+
button_
337+
[ onClick $ openBrowser apkLink,
338+
Css.fullWidth
339+
]
340+
[ text "Download APK"
362341
],
363-
Grid.mediumCell
364-
[ button_
365-
[ onClick $ openBrowser sourceLink,
366-
Css.fullWidth
367-
]
368-
[ text "Source"
369-
]
342+
button_
343+
[ onClick $ openBrowser sourceLink,
344+
Css.fullWidth
345+
]
346+
[ text "Source"
370347
],
371-
Grid.mediumCell
372-
[ button_
373-
[ onClick $ openBrowser functoraLink,
374-
Css.fullWidth
375-
]
376-
[ text "Author"
377-
]
348+
button_
349+
[ onClick $ openBrowser functoraLink,
350+
Css.fullWidth
351+
]
352+
[ text "Author"
378353
],
379-
Grid.mediumCell
380-
[ button_
381-
[ onClick $ setScreenAction Donate,
382-
Css.fullWidth
383-
]
384-
[ text "Donate"
385-
]
354+
button_
355+
[ onClick $ setScreenAction Donate,
356+
Css.fullWidth
357+
]
358+
[ text "Donate"
386359
]
387360
]
388361
}

0 commit comments

Comments
 (0)