Как перезагрузить обновленный файл в 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-адресе".

Другие вопросы по тегам