Как перезагрузить обновленный файл в Threepenny-gui 0.6?
Журнал изменений Threepenny-gui ( https://hackage.haskell.org/package/threepenny-gui-0.6.0.1/changelog) гласит: "Функции loadFile и loadDirectory были удалены, так как я чувствовал, что параметра jsStatic достаточно для большинство случаев использования. "
Мой вопрос: как мы можем перезагрузить изображение, которое обновляется во время выполнения без loadFile?
С Threepenny-gui 0.5 я использовал следующий код:
redraw :: UI.Element -> IORef CompTree -> (Maybe Vertex) -> UI ()
redraw img treeRef mcv
= do tree <- UI.liftIO $ readIORef treeRef
UI.liftIO $ writeFile ".Hoed/debugTree.dot" (shw $ summarize tree mcv)
UI.liftIO $ system $ "dot -Tpng -Gsize=9,5 -Gdpi=100 .Hoed/debugTree.dot "
++ "> .Hoed/wwwroot/debugTree.png"
url <- UI.loadFile "image/png" ".Hoed/wwwroot/debugTree.png"
UI.element img # UI.set UI.src url
Когда с Threepenny-gui 0.6 я установил jsStatic
в Just "./.Hoed/wwwroot"
следующий код (очевидно) приводит к тому, что мой GUI показывает только исходное изображение, которое уже было там, когда мое приложение запускалось:
redraw :: UI.Element -> IORef CompTree -> (Maybe Vertex) -> UI ()
redraw img treeRef mcv
= do tree <- UI.liftIO $ readIORef treeRef
UI.liftIO $ writeFile ".Hoed/debugTree.dot" (shw $ summarize tree mcv)
UI.liftIO $ system $ "dot -Tpng -Gsize=9,5 -Gdpi=100 .Hoed/debugTree.dot "
++ "> .Hoed/wwwroot/debugTree.png"
UI.element img # UI.set UI.src "static/debugTree.png"
return ()
Мой полный код для Threepenny-gui 0.5 находится здесь: https://github.com/MaartenFaddegon/Hoed/blob/master/Debug/Hoed/DemoGUI.hs
1 ответ
(Автор здесь.) Видимо, я не учел ваш вариант использования при удалении этих функций.:-) Я могу добавить их обратно, если хотите, можете создать проблему на github?
На стороне JavaScript существуют различные методы для перезагрузки файла по определенному URL. См., Например, вопрос "Обновить изображение с новым на том же URL-адресе".