Skip to content

Commit aaf61a9

Browse files
committed
wip
1 parent 28b17b0 commit aaf61a9

File tree

4 files changed

+53
-31
lines changed

4 files changed

+53
-31
lines changed

ghcjs/delivery-calculator/src/App/Jsm.hs

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import qualified Data.Generics as Syb
55
import qualified Data.Map as Map
66
import qualified Functora.Miso.Jsm as Jsm
77
import Functora.Miso.Prelude
8-
import qualified Text.URI as URI
98

109
fetchBlobUris :: (Data a) => a -> JSM a
1110
fetchBlobUris st = do
@@ -37,7 +36,7 @@ fetchBlobUris st = do
3736
where
3837
blobUris =
3938
nubOrd
40-
. filter (\x -> URI.mkScheme "blob" == (URI.mkURI x >>= URI.uriScheme))
39+
. filter (isPrefixOf "blob:")
4140
. fmap (^. #fieldInput . #uniqueValue)
4241
$ Syb.listify
4342
(\(x :: Field DynamicField Unique) -> fieldType x == FieldTypeImage)

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

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -92,12 +92,8 @@ menu st =
9292
[ ("min-width", "0")
9393
],
9494
onClick . PushUpdate . Instant . EffectUpdate $ do
95-
res <- Jsm.fetchBlobUris $ st ^. #modelState . #stAssets
96-
consoleLog res
97-
Jsm.saveFile
98-
"delivery-calculator.xlsx"
99-
"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"
100-
Xlsx.newXlsx
95+
res <- Jsm.fetchBlobUris $ st ^. #modelState
96+
Jsm.saveFile Xlsx.xlsxFile Xlsx.xlsxMime $ Xlsx.newXlsx res
10197
]
10298
[ icon Icon.IconDownload
10399
],
Lines changed: 45 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,37 +1,47 @@
1+
{-# OPTIONS_GHC -Wno-deprecations #-}
2+
{-# OPTIONS_GHC -Wno-x-partial #-}
3+
14
module App.Xlsx
25
( newXlsx,
6+
xlsxFile,
7+
xlsxMime,
38
)
49
where
510

11+
import App.Types
612
import Codec.Xlsx
7-
import qualified Data.ByteString.Base64.Lazy as B64
13+
-- import qualified Data.ByteString.Base64.Lazy as B64
814
import qualified Data.ByteString.Lazy as BL
915
import Functora.Miso.Prelude
10-
import Lens.Micro
16+
import Lens.Micro hiding (each, to)
17+
import qualified Prelude
1118

12-
newXlsx :: BL.ByteString
13-
newXlsx =
19+
newXlsx :: St Unique -> BL.ByteString
20+
newXlsx st =
1421
fromXlsx 0
1522
$ def
1623
& atSheet "List1" ?~ sheet
1724
where
25+
imgs =
26+
catMaybes
27+
$ st
28+
^.. #stAssets
29+
. each
30+
. #assetFieldPairs
31+
. each
32+
. #fieldPairValue
33+
. #fieldInput
34+
. #uniqueValue
35+
. to (trace "2397-start" . decodeRfc2397)
1836
sheet =
1937
def
2038
& cellValueAt (1, 2) ?~ CellDouble 42.0
2139
& cellValueAt (3, 2) ?~ CellText "foo"
22-
& #wsDrawing ?~ drawing
40+
& #wsDrawing ?~ drawing (Prelude.head imgs)
2341

24-
drawing :: Drawing
25-
drawing = Drawing [anchor1]
42+
drawing :: Rfc2397 -> Drawing
43+
drawing rfc2397 = Drawing [anchor1]
2644
where
27-
obj =
28-
picture
29-
(DrawingElementId 0)
30-
FileInfo
31-
{ fiFilename = "img.jpg",
32-
fiContentType = "image/jpg",
33-
fiContents = img
34-
}
3545
anchor1 =
3646
Anchor
3747
{ anchAnchoring =
@@ -43,8 +53,24 @@ drawing = Drawing [anchor1]
4353
anchObject = obj,
4454
anchClientData = def
4555
}
56+
obj =
57+
picture
58+
(DrawingElementId 0)
59+
FileInfo
60+
{ fiFilename = "img",
61+
fiContentType = from @Unicode @Text $ rfc2397Mime rfc2397,
62+
fiContents =
63+
trace "HELLO"
64+
$ rfc2397Bytes rfc2397
65+
}
66+
67+
-- img :: BL.ByteString
68+
-- img =
69+
-- B64.decodeLenient
70+
-- "/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////2wBDAf//////////////////////////////////////////////////////////////////////////////////////wAARCADqATkDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECA//EACQQAQEBAAIBBAMBAQEBAAAAAAABESExQQISUXFhgZGxocHw/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAMAwEAAhEDEQA/AMriLyCKgg1gQwCgs4FTMOdutepjQak+FzMSVqgxZdRdPPIIvH5WzzGdBriphtTeAXg2ZjKA1pqKDUGZca3foBek8gFv8Ie3fKdA1qb8s7hoL6eLVt51FsAnql3Ut1M7AWbflLMDkEMX/F6/YjK/pADFQAUNA6alYagKk72m/j9p4Bq2fDDSYKLNXPNLoHE/NT6RYC31cJxZ3yWVM+aBYi/S2ZgiAsnYJx5D21vPmqrm3PTfpQQwyAC8JZvSKDni41ZrMuUVVl+Uz9w9v/1QWrZsZ5nFPHYH+JZyureQSF5M+fJ0CAfwRAVRBQA1DAWVUayoJUWoDpsxntPsueBV4+VxhdyAtv8AjOLGpIDMLbeGvbF4iozJfr/WukAVABAXAQXEAAASzVAZdO2WNordm+emFl7XcQSNZiFtv0C9w90nhJf4mA1u+GcJFwIyAqL/AOovwgGNfSRqdIrNa29M0gKCAojU9PAMjWXpckEJFNFEAAXEUBABYz6rZ0ureQc9vyt9XxDF2QAXtABcQAs0AZywkvluJbyipifas52DcyxjlZweAO0xri/hc+wZOEKIu6nSyeToVZyWXwvCg53gW81QQ7aTNAn5dGZJPs1UXURQAUEMCXQLZE93PRZ5hPTgNMrbIzKCm52LZwCs+2M8w2g3sjPuZAXb4IsMAUACzVUGM4/K+md6vEXUUyM5PDR0IxYe6ramih0VNBrS4xoqN8Q1BFQk3yqyAsioioAAKgDSJL4/jQIn5igLrPqtOuf6oOaxbMoAltUAhhIoJiiggrPu+AaOIxtAX3JbaAIaLwi4t9X4T3fg2AFtqcrUUarP20zUDAmqoE0WRBZPNVUVEAAAAVAC8kvih2DSKxOdBqs7Z0l0gI0mKAC4AuHE7ZtBriM+744QAAAAABAFsveIttBICyaikvy1+r/Cen5rWQHIBQa4rIDRqSl5qDWqziqgAAAATA7BpGdqXb2C2+J/UgAtRQBSQtkBWb6vhLbQAAAAAEBRAAAAAUbm+GZNdPxAP+ql2Tjwx7/wIgZ8iKvBk+CJoCXii9gaqZ/qqihAAAEVABGkBFUwBftNkZ3QW34QAAABFAQAVAAAAAARVkl8gs/43sk1jL45LvHArepk+E9XTG35oLqsmIKmLAEygKg0y1AFQBUXwgAAAoBC34S3UAAABAVAAAAAABAUQAVABdRQa1PcYyit2z58M8C4ouM2NXpOEGeWtNZUatiAIoAKIoCoAoG4C9MW6dgIoAIAAAAAAACKWAgL0CAAAALiANCKioNLgM1CrLihmTafkt1EF3SZ5ZVUW4mnIKvAi5fhEURVDWVQBRAAAAAAAAQFRVyAyulgAqCKlF8IqLsEgC9mGoC+IusqCrv5ZEUVOk1RuJfwSLOOkGFi4XPCoYYrNiKauosBGi9ICstM1UAAAAAAFQ0VcTBAXUGgIqGoKhKAzRRUQUAwxoSrGRpkQA/qiosOL9oJptMRRVZa0VUqSiChE6BqMgCwqKqIogAIAqKCKgKoogg0lBFuIKgAAAKNRlf2gqsftsEtZWoAAqAACKoMqAAeSoqp39kL2AqLOlE8rEBFQARYALhigrNC9gGmooLp4TweEQFFBFAECgIoAu0ifIAqAAA//9k="
71+
72+
xlsxFile :: Unicode
73+
xlsxFile = "delivery-calculator.xlsx"
4674

47-
img :: BL.ByteString
48-
img =
49-
B64.decodeLenient
50-
"/9j/4AAQSkZJRgABAQEASABIAAD/2wBDAP//////////////////////////////////////////////////////////////////////////////////////2wBDAf//////////////////////////////////////////////////////////////////////////////////////wAARCADqATkDASIAAhEBAxEB/8QAFwABAQEBAAAAAAAAAAAAAAAAAAECA//EACQQAQEBAAIBBAMBAQEBAAAAAAABESExQQISUXFhgZGxocHw/8QAFQEBAQAAAAAAAAAAAAAAAAAAAAH/xAAWEQEBAQAAAAAAAAAAAAAAAAAAEQH/2gAMAwEAAhEDEQA/AMriLyCKgg1gQwCgs4FTMOdutepjQak+FzMSVqgxZdRdPPIIvH5WzzGdBriphtTeAXg2ZjKA1pqKDUGZca3foBek8gFv8Ie3fKdA1qb8s7hoL6eLVt51FsAnql3Ut1M7AWbflLMDkEMX/F6/YjK/pADFQAUNA6alYagKk72m/j9p4Bq2fDDSYKLNXPNLoHE/NT6RYC31cJxZ3yWVM+aBYi/S2ZgiAsnYJx5D21vPmqrm3PTfpQQwyAC8JZvSKDni41ZrMuUVVl+Uz9w9v/1QWrZsZ5nFPHYH+JZyureQSF5M+fJ0CAfwRAVRBQA1DAWVUayoJUWoDpsxntPsueBV4+VxhdyAtv8AjOLGpIDMLbeGvbF4iozJfr/WukAVABAXAQXEAAASzVAZdO2WNordm+emFl7XcQSNZiFtv0C9w90nhJf4mA1u+GcJFwIyAqL/AOovwgGNfSRqdIrNa29M0gKCAojU9PAMjWXpckEJFNFEAAXEUBABYz6rZ0ureQc9vyt9XxDF2QAXtABcQAs0AZywkvluJbyipifas52DcyxjlZweAO0xri/hc+wZOEKIu6nSyeToVZyWXwvCg53gW81QQ7aTNAn5dGZJPs1UXURQAUEMCXQLZE93PRZ5hPTgNMrbIzKCm52LZwCs+2M8w2g3sjPuZAXb4IsMAUACzVUGM4/K+md6vEXUUyM5PDR0IxYe6ramih0VNBrS4xoqN8Q1BFQk3yqyAsioioAAKgDSJL4/jQIn5igLrPqtOuf6oOaxbMoAltUAhhIoJiiggrPu+AaOIxtAX3JbaAIaLwi4t9X4T3fg2AFtqcrUUarP20zUDAmqoE0WRBZPNVUVEAAAAVAC8kvih2DSKxOdBqs7Z0l0gI0mKAC4AuHE7ZtBriM+744QAAAAABAFsveIttBICyaikvy1+r/Cen5rWQHIBQa4rIDRqSl5qDWqziqgAAAATA7BpGdqXb2C2+J/UgAtRQBSQtkBWb6vhLbQAAAAAEBRAAAAAUbm+GZNdPxAP+ql2Tjwx7/wIgZ8iKvBk+CJoCXii9gaqZ/qqihAAAEVABGkBFUwBftNkZ3QW34QAAABFAQAVAAAAAARVkl8gs/43sk1jL45LvHArepk+E9XTG35oLqsmIKmLAEygKg0y1AFQBUXwgAAAoBC34S3UAAABAVAAAAAABAUQAVABdRQa1PcYyit2z58M8C4ouM2NXpOEGeWtNZUatiAIoAKIoCoAoG4C9MW6dgIoAIAAAAAAACKWAgL0CAAAALiANCKioNLgM1CrLihmTafkt1EF3SZ5ZVUW4mnIKvAi5fhEURVDWVQBRAAAAAAAAQFRVyAyulgAqCKlF8IqLsEgC9mGoC+IusqCrv5ZEUVOk1RuJfwSLOOkGFi4XPCoYYrNiKauosBGi9ICstM1UAAAAAAFQ0VcTBAXUGgIqGoKhKAzRRUQUAwxoSrGRpkQA/qiosOL9oJptMRRVZa0VUqSiChE6BqMgCwqKqIogAIAqKCKgKoogg0lBFuIKgAAAKNRlf2gqsftsEtZWoAAqAACKoMqAAeSoqp39kL2AqLOlE8rEBFQARYALhigrNC9gGmooLp4TweEQFFBFAECgIoAu0ifIAqAAA//9k="
75+
xlsxMime :: Unicode
76+
xlsxMime = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"

pub/functora/src/web/Functora/Rfc2397.hs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,14 +6,15 @@ module Functora.Rfc2397
66
)
77
where
88

9-
import qualified Data.ByteString.Base64 as B64
9+
import qualified Data.ByteString.Base64.Lazy as B64L
10+
import qualified Data.ByteString.Lazy as BL
1011
import Functora.Prelude
1112
import qualified Network.URI as URI
1213
import qualified Network.URI.Encode as UE
1314

1415
data Rfc2397 = Rfc2397
1516
{ rfc2397Mime :: Unicode,
16-
rfc2397Bytes :: ByteString,
17+
rfc2397Bytes :: BL.ByteString,
1718
rfc2397Encoding :: Rfc2397Encoding
1819
}
1920
deriving stock (Eq, Ord, Show, Data, Generic)
@@ -45,7 +46,7 @@ encodeRfc2397
4546
Rfc2397EncodingB64 ->
4647
either impureThrow id
4748
. decodeUtf8Strict
48-
$ B64.encode bs
49+
$ B64L.encode bs
4950
Rfc2397EncodingUrl ->
5051
either
5152
impureThrow
@@ -90,7 +91,7 @@ decodeBytes mime enc encBs = do
9091
Rfc2397EncodingUrl ->
9192
pure . encodeUtf8 . UE.decode $ from @Unicode @String encBs
9293
Rfc2397EncodingB64 ->
93-
either (const Nothing) Just . B64.decode $ encodeUtf8 encBs
94+
either (const Nothing) Just . B64L.decode $ encodeUtf8 encBs
9495
pure
9596
Rfc2397
9697
{ rfc2397Mime = intercalate ";" mime,

0 commit comments

Comments
 (0)