diff --git a/index.html b/index.html new file mode 100644 index 0000000..55ed958 --- /dev/null +++ b/index.html @@ -0,0 +1,8 @@ + + + + +
+ + + \ No newline at end of file diff --git a/spago.dhall b/spago.dhall index 6cfcf9b..ee78370 100644 --- a/spago.dhall +++ b/spago.dhall @@ -15,12 +15,17 @@ to generate this file without the comments in this block. [ "arrays" , "console" , "effect" + , "either" + , "exceptions" , "integers" , "lists" , "maybe" , "numbers" , "prelude" , "tuples" + , "web-dom" + , "web-dom-parser" + , "web-html" ] , packages = ./packages.dhall , sources = [ "src/**/*.purs", "test/**/*.purs" ] diff --git a/src/Main.purs b/src/Main.purs index c65d70f..0273ab8 100644 --- a/src/Main.purs +++ b/src/Main.purs @@ -1,10 +1,61 @@ module Main where +import Prelude + +import Data.Maybe (Maybe(..)) +import Data.Either (Either(..)) import Effect (Effect) import Effect.Console (log) +import Effect.Class (liftEffect) +import Effect.Exception (throw) import TernaryGraph (ternaryGraph) -import Prelude (($), Unit) +import Web.DOM.Document (contentType + , getElementsByClassName + , importNode + , toNode + , toNonElementParentNode + , toParentNode + , url + ) +import Web.DOM.DOMParser (makeDOMParser, parseSVGFromString) +import Web.DOM.Element (toNode) as Element +import Web.DOM.HTMLCollection (length) +import Web.DOM.Node (appendChild, nodeName, setTextContent) +import Web.DOM.NonElementParentNode (getElementById) +import Web.DOM.ParentNode (firstElementChild) +import Web.HTML (window) +import Web.HTML.HTMLDocument (toDocument) +import Web.HTML.HTMLMetaElement (setContent) +import Web.HTML.HTMLDivElement (fromElement) +import Web.HTML.Window (document) + +-- Consider DOM.Simple.Types main :: Effect Unit main = do - log $ ternaryGraph 100.0 50.0 50.0 10 \ No newline at end of file + w <- window + d <- document w + let dd = toDocument d + dUrl <- url dd + let containerID = "svgContainer" + domParser <- makeDOMParser + let mySVG = ternaryGraph 100.0 50.0 50.0 10 + svgDoc <- parseSVGFromString mySVG domParser + maybeElement <- getElementById containerID $ toNonElementParentNode dd + case maybeElement of + Nothing -> do + throw $ "Unable to find " <> containerID + Just e -> do + let node = Element.toNode e + case svgDoc of + Left error -> throw error + Right doc -> do + log $ nodeName (toNode doc) + elMay <- firstElementChild $ toParentNode doc + case elMay of + Nothing -> throw "oops" + Just el -> do + let svgNode = Element.toNode el + log $ nodeName svgNode + newNode <- importNode svgNode true dd + appendChild newNode node