content: {-# LANGUAGE OverloadedStrings #-}
  
  --
  -- Based on the Elm VegaLite HyperlinkTests.elm as of version 1.12.0
  --
  module HyperlinkTests (testSpecs) where
  
  import Graphics.Vega.VegaLite hiding (filter, repeat)
  
  testSpecs :: [(String, VegaLite)]
  testSpecs = [ ("hyperlink1", hyperlink1)
              , ("hyperlink2", hyperlink2)
              , ("hyperlink3", hyperlink3)
              ]
              
  hyperlink1 :: VegaLite
  hyperlink1 =
      let
          dataVals =
              dataFromColumns []
                  . dataColumn "label" (Strings [ "Vega", "Vega-Lite" ])
                  . dataColumn "url" (Strings [ "https://vega.github.io/vega", "https://vega.github.io/vega-lite" ])
  
          encCircle =
              encoding
                  . position X [ PName "label", PmType Nominal, PAxis [] ]
                  . size [ MNumber 8000 ]
                  . color [ MName "label", MmType Nominal, MLegend [] ]
                  . hyperlink [ HName "url", HmType Nominal ]
  
          encLabel =
              encoding
                  . position X [ PName "label", PmType Nominal, PAxis [] ]
                  . text [ TName "label", TmType Nominal ]
                  . color [ MString "white" ]
                  . size [ MNumber 16 ]
  
          symbolSpec =
              asSpec [ mark Circle [ MCursor CPointer ], encCircle [] ]
  
          labelSpec =
              asSpec [ mark Text [], encLabel [] ]
      in
      toVegaLite
          [ dataVals [], layer [ symbolSpec, labelSpec ] ]
  
  hyperlink2 :: VegaLite
  hyperlink2 =
      let
          dataVals =
              dataFromUrl "https://vega.github.io/vega-lite/data/movies.json" []
  
          enc =
              encoding
                  . position X [ PName "IMDB_Rating", PmType Quantitative ]
                  . position Y [ PName "Rotten_Tomatoes_Rating", PmType Quantitative ]
                  . hyperlink [ HString "http://www.imdb.com" ]
      in
      toVegaLite [ dataVals, mark Point [ MCursor CPointer ], enc [] ]
  
  hyperlink3 :: VegaLite
  hyperlink3 =
      let
          dataVals =
              dataFromUrl "https://vega.github.io/vega-lite/data/movies.json" []
  
          enc =
              encoding
                  . position X [ PName "IMDB_Rating", PmType Quantitative ]
                  . position Y [ PName "Rotten_Tomatoes_Rating", PmType Quantitative ]
                  . color
                      [ MDataCondition
                          [ (Expr "datum.IMDB_Rating*10 > datum.Rotten_Tomatoes_Rating"
                            , [ MString "steelblue" ])
                          ]
                          [ MString "red" ]
                      ]
                  . hyperlink
                      [ HDataCondition
                        [ (Expr "datum.IMDB_Rating*10 > datum.Rotten_Tomatoes_Rating"
                          , [ HString "http://www.imdb.com" ])
                        ]
                        [ HString "https://www.rottentomatoes.com" ]
                      ]
      in
      toVegaLite [ dataVals, mark Point [ MCursor CPointer ], enc [] ]
  