{-# LANGUAGE DeriveGeneric #-}
{-# LANGUAGE DuplicateRecordFields #-}
{-# LANGUAGE NamedFieldPuns #-}
{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE StrictData #-}
{-# LANGUAGE NoImplicitPrelude #-}
{-# OPTIONS_GHC -fno-warn-unused-imports #-}
{-# OPTIONS_GHC -fno-warn-unused-matches #-}

-- Derived from AWS service descriptions, licensed under Apache 2.0.

-- |
-- Module      : Amazonka.QuickSight.Types.AxisDisplayOptions
-- Copyright   : (c) 2013-2023 Brendan Hay
-- License     : Mozilla Public License, v. 2.0.
-- Maintainer  : Brendan Hay
-- Stability   : auto-generated
-- Portability : non-portable (GHC extensions)
module Amazonka.QuickSight.Types.AxisDisplayOptions where

import qualified Amazonka.Core as Core
import qualified Amazonka.Core.Lens.Internal as Lens
import qualified Amazonka.Data as Data
import qualified Amazonka.Prelude as Prelude
import Amazonka.QuickSight.Types.AxisDataOptions
import Amazonka.QuickSight.Types.AxisTickLabelOptions
import Amazonka.QuickSight.Types.ScrollBarOptions
import Amazonka.QuickSight.Types.Visibility

-- | The display options for the axis label.
--
-- /See:/ 'newAxisDisplayOptions' smart constructor.
data AxisDisplayOptions = AxisDisplayOptions'
  { -- | Determines whether or not the axis line is visible.
    AxisDisplayOptions -> Maybe Visibility
axisLineVisibility :: Prelude.Maybe Visibility,
    -- | The offset value that determines the starting placement of the axis
    -- within a visual\'s bounds.
    AxisDisplayOptions -> Maybe Text
axisOffset :: Prelude.Maybe Prelude.Text,
    -- | The data options for an axis.
    AxisDisplayOptions -> Maybe AxisDataOptions
dataOptions :: Prelude.Maybe AxisDataOptions,
    -- | Determines whether or not the grid line is visible.
    AxisDisplayOptions -> Maybe Visibility
gridLineVisibility :: Prelude.Maybe Visibility,
    -- | The scroll bar options for an axis.
    AxisDisplayOptions -> Maybe ScrollBarOptions
scrollbarOptions :: Prelude.Maybe ScrollBarOptions,
    -- | The tick label options of an axis.
    AxisDisplayOptions -> Maybe AxisTickLabelOptions
tickLabelOptions :: Prelude.Maybe AxisTickLabelOptions
  }
  deriving (AxisDisplayOptions -> AxisDisplayOptions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: AxisDisplayOptions -> AxisDisplayOptions -> Bool
$c/= :: AxisDisplayOptions -> AxisDisplayOptions -> Bool
== :: AxisDisplayOptions -> AxisDisplayOptions -> Bool
$c== :: AxisDisplayOptions -> AxisDisplayOptions -> Bool
Prelude.Eq, ReadPrec [AxisDisplayOptions]
ReadPrec AxisDisplayOptions
Int -> ReadS AxisDisplayOptions
ReadS [AxisDisplayOptions]
forall a.
(Int -> ReadS a)
-> ReadS [a] -> ReadPrec a -> ReadPrec [a] -> Read a
readListPrec :: ReadPrec [AxisDisplayOptions]
$creadListPrec :: ReadPrec [AxisDisplayOptions]
readPrec :: ReadPrec AxisDisplayOptions
$creadPrec :: ReadPrec AxisDisplayOptions
readList :: ReadS [AxisDisplayOptions]
$creadList :: ReadS [AxisDisplayOptions]
readsPrec :: Int -> ReadS AxisDisplayOptions
$creadsPrec :: Int -> ReadS AxisDisplayOptions
Prelude.Read, Int -> AxisDisplayOptions -> ShowS
[AxisDisplayOptions] -> ShowS
AxisDisplayOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [AxisDisplayOptions] -> ShowS
$cshowList :: [AxisDisplayOptions] -> ShowS
show :: AxisDisplayOptions -> String
$cshow :: AxisDisplayOptions -> String
showsPrec :: Int -> AxisDisplayOptions -> ShowS
$cshowsPrec :: Int -> AxisDisplayOptions -> ShowS
Prelude.Show, forall x. Rep AxisDisplayOptions x -> AxisDisplayOptions
forall x. AxisDisplayOptions -> Rep AxisDisplayOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep AxisDisplayOptions x -> AxisDisplayOptions
$cfrom :: forall x. AxisDisplayOptions -> Rep AxisDisplayOptions x
Prelude.Generic)

-- |
-- Create a value of 'AxisDisplayOptions' with all optional fields omitted.
--
-- Use <https://hackage.haskell.org/package/generic-lens generic-lens> or <https://hackage.haskell.org/package/optics optics> to modify other optional fields.
--
-- The following record fields are available, with the corresponding lenses provided
-- for backwards compatibility:
--
-- 'axisLineVisibility', 'axisDisplayOptions_axisLineVisibility' - Determines whether or not the axis line is visible.
--
-- 'axisOffset', 'axisDisplayOptions_axisOffset' - The offset value that determines the starting placement of the axis
-- within a visual\'s bounds.
--
-- 'dataOptions', 'axisDisplayOptions_dataOptions' - The data options for an axis.
--
-- 'gridLineVisibility', 'axisDisplayOptions_gridLineVisibility' - Determines whether or not the grid line is visible.
--
-- 'scrollbarOptions', 'axisDisplayOptions_scrollbarOptions' - The scroll bar options for an axis.
--
-- 'tickLabelOptions', 'axisDisplayOptions_tickLabelOptions' - The tick label options of an axis.
newAxisDisplayOptions ::
  AxisDisplayOptions
newAxisDisplayOptions :: AxisDisplayOptions
newAxisDisplayOptions =
  AxisDisplayOptions'
    { $sel:axisLineVisibility:AxisDisplayOptions' :: Maybe Visibility
axisLineVisibility =
        forall a. Maybe a
Prelude.Nothing,
      $sel:axisOffset:AxisDisplayOptions' :: Maybe Text
axisOffset = forall a. Maybe a
Prelude.Nothing,
      $sel:dataOptions:AxisDisplayOptions' :: Maybe AxisDataOptions
dataOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:gridLineVisibility:AxisDisplayOptions' :: Maybe Visibility
gridLineVisibility = forall a. Maybe a
Prelude.Nothing,
      $sel:scrollbarOptions:AxisDisplayOptions' :: Maybe ScrollBarOptions
scrollbarOptions = forall a. Maybe a
Prelude.Nothing,
      $sel:tickLabelOptions:AxisDisplayOptions' :: Maybe AxisTickLabelOptions
tickLabelOptions = forall a. Maybe a
Prelude.Nothing
    }

-- | Determines whether or not the axis line is visible.
axisDisplayOptions_axisLineVisibility :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe Visibility)
axisDisplayOptions_axisLineVisibility :: Lens' AxisDisplayOptions (Maybe Visibility)
axisDisplayOptions_axisLineVisibility = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AxisDisplayOptions' {Maybe Visibility
axisLineVisibility :: Maybe Visibility
$sel:axisLineVisibility:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Visibility
axisLineVisibility} -> Maybe Visibility
axisLineVisibility) (\s :: AxisDisplayOptions
s@AxisDisplayOptions' {} Maybe Visibility
a -> AxisDisplayOptions
s {$sel:axisLineVisibility:AxisDisplayOptions' :: Maybe Visibility
axisLineVisibility = Maybe Visibility
a} :: AxisDisplayOptions)

-- | The offset value that determines the starting placement of the axis
-- within a visual\'s bounds.
axisDisplayOptions_axisOffset :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe Prelude.Text)
axisDisplayOptions_axisOffset :: Lens' AxisDisplayOptions (Maybe Text)
axisDisplayOptions_axisOffset = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AxisDisplayOptions' {Maybe Text
axisOffset :: Maybe Text
$sel:axisOffset:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Text
axisOffset} -> Maybe Text
axisOffset) (\s :: AxisDisplayOptions
s@AxisDisplayOptions' {} Maybe Text
a -> AxisDisplayOptions
s {$sel:axisOffset:AxisDisplayOptions' :: Maybe Text
axisOffset = Maybe Text
a} :: AxisDisplayOptions)

-- | The data options for an axis.
axisDisplayOptions_dataOptions :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe AxisDataOptions)
axisDisplayOptions_dataOptions :: Lens' AxisDisplayOptions (Maybe AxisDataOptions)
axisDisplayOptions_dataOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AxisDisplayOptions' {Maybe AxisDataOptions
dataOptions :: Maybe AxisDataOptions
$sel:dataOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe AxisDataOptions
dataOptions} -> Maybe AxisDataOptions
dataOptions) (\s :: AxisDisplayOptions
s@AxisDisplayOptions' {} Maybe AxisDataOptions
a -> AxisDisplayOptions
s {$sel:dataOptions:AxisDisplayOptions' :: Maybe AxisDataOptions
dataOptions = Maybe AxisDataOptions
a} :: AxisDisplayOptions)

-- | Determines whether or not the grid line is visible.
axisDisplayOptions_gridLineVisibility :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe Visibility)
axisDisplayOptions_gridLineVisibility :: Lens' AxisDisplayOptions (Maybe Visibility)
axisDisplayOptions_gridLineVisibility = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AxisDisplayOptions' {Maybe Visibility
gridLineVisibility :: Maybe Visibility
$sel:gridLineVisibility:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Visibility
gridLineVisibility} -> Maybe Visibility
gridLineVisibility) (\s :: AxisDisplayOptions
s@AxisDisplayOptions' {} Maybe Visibility
a -> AxisDisplayOptions
s {$sel:gridLineVisibility:AxisDisplayOptions' :: Maybe Visibility
gridLineVisibility = Maybe Visibility
a} :: AxisDisplayOptions)

-- | The scroll bar options for an axis.
axisDisplayOptions_scrollbarOptions :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe ScrollBarOptions)
axisDisplayOptions_scrollbarOptions :: Lens' AxisDisplayOptions (Maybe ScrollBarOptions)
axisDisplayOptions_scrollbarOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AxisDisplayOptions' {Maybe ScrollBarOptions
scrollbarOptions :: Maybe ScrollBarOptions
$sel:scrollbarOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe ScrollBarOptions
scrollbarOptions} -> Maybe ScrollBarOptions
scrollbarOptions) (\s :: AxisDisplayOptions
s@AxisDisplayOptions' {} Maybe ScrollBarOptions
a -> AxisDisplayOptions
s {$sel:scrollbarOptions:AxisDisplayOptions' :: Maybe ScrollBarOptions
scrollbarOptions = Maybe ScrollBarOptions
a} :: AxisDisplayOptions)

-- | The tick label options of an axis.
axisDisplayOptions_tickLabelOptions :: Lens.Lens' AxisDisplayOptions (Prelude.Maybe AxisTickLabelOptions)
axisDisplayOptions_tickLabelOptions :: Lens' AxisDisplayOptions (Maybe AxisTickLabelOptions)
axisDisplayOptions_tickLabelOptions = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\AxisDisplayOptions' {Maybe AxisTickLabelOptions
tickLabelOptions :: Maybe AxisTickLabelOptions
$sel:tickLabelOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe AxisTickLabelOptions
tickLabelOptions} -> Maybe AxisTickLabelOptions
tickLabelOptions) (\s :: AxisDisplayOptions
s@AxisDisplayOptions' {} Maybe AxisTickLabelOptions
a -> AxisDisplayOptions
s {$sel:tickLabelOptions:AxisDisplayOptions' :: Maybe AxisTickLabelOptions
tickLabelOptions = Maybe AxisTickLabelOptions
a} :: AxisDisplayOptions)

instance Data.FromJSON AxisDisplayOptions where
  parseJSON :: Value -> Parser AxisDisplayOptions
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"AxisDisplayOptions"
      ( \Object
x ->
          Maybe Visibility
-> Maybe Text
-> Maybe AxisDataOptions
-> Maybe Visibility
-> Maybe ScrollBarOptions
-> Maybe AxisTickLabelOptions
-> AxisDisplayOptions
AxisDisplayOptions'
            forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AxisLineVisibility")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"AxisOffset")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"DataOptions")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"GridLineVisibility")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"ScrollbarOptions")
            forall (f :: * -> *) a b. Applicative f => f (a -> b) -> f a -> f b
Prelude.<*> (Object
x forall a. FromJSON a => Object -> Key -> Parser (Maybe a)
Data..:? Key
"TickLabelOptions")
      )

instance Prelude.Hashable AxisDisplayOptions where
  hashWithSalt :: Int -> AxisDisplayOptions -> Int
hashWithSalt Int
_salt AxisDisplayOptions' {Maybe Text
Maybe Visibility
Maybe AxisTickLabelOptions
Maybe AxisDataOptions
Maybe ScrollBarOptions
tickLabelOptions :: Maybe AxisTickLabelOptions
scrollbarOptions :: Maybe ScrollBarOptions
gridLineVisibility :: Maybe Visibility
dataOptions :: Maybe AxisDataOptions
axisOffset :: Maybe Text
axisLineVisibility :: Maybe Visibility
$sel:tickLabelOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe AxisTickLabelOptions
$sel:scrollbarOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe ScrollBarOptions
$sel:gridLineVisibility:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Visibility
$sel:dataOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe AxisDataOptions
$sel:axisOffset:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Text
$sel:axisLineVisibility:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Visibility
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Visibility
axisLineVisibility
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
axisOffset
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AxisDataOptions
dataOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Visibility
gridLineVisibility
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe ScrollBarOptions
scrollbarOptions
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe AxisTickLabelOptions
tickLabelOptions

instance Prelude.NFData AxisDisplayOptions where
  rnf :: AxisDisplayOptions -> ()
rnf AxisDisplayOptions' {Maybe Text
Maybe Visibility
Maybe AxisTickLabelOptions
Maybe AxisDataOptions
Maybe ScrollBarOptions
tickLabelOptions :: Maybe AxisTickLabelOptions
scrollbarOptions :: Maybe ScrollBarOptions
gridLineVisibility :: Maybe Visibility
dataOptions :: Maybe AxisDataOptions
axisOffset :: Maybe Text
axisLineVisibility :: Maybe Visibility
$sel:tickLabelOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe AxisTickLabelOptions
$sel:scrollbarOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe ScrollBarOptions
$sel:gridLineVisibility:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Visibility
$sel:dataOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe AxisDataOptions
$sel:axisOffset:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Text
$sel:axisLineVisibility:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Visibility
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Visibility
axisLineVisibility
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
axisOffset
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AxisDataOptions
dataOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Visibility
gridLineVisibility
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe ScrollBarOptions
scrollbarOptions
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe AxisTickLabelOptions
tickLabelOptions

instance Data.ToJSON AxisDisplayOptions where
  toJSON :: AxisDisplayOptions -> Value
toJSON AxisDisplayOptions' {Maybe Text
Maybe Visibility
Maybe AxisTickLabelOptions
Maybe AxisDataOptions
Maybe ScrollBarOptions
tickLabelOptions :: Maybe AxisTickLabelOptions
scrollbarOptions :: Maybe ScrollBarOptions
gridLineVisibility :: Maybe Visibility
dataOptions :: Maybe AxisDataOptions
axisOffset :: Maybe Text
axisLineVisibility :: Maybe Visibility
$sel:tickLabelOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe AxisTickLabelOptions
$sel:scrollbarOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe ScrollBarOptions
$sel:gridLineVisibility:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Visibility
$sel:dataOptions:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe AxisDataOptions
$sel:axisOffset:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Text
$sel:axisLineVisibility:AxisDisplayOptions' :: AxisDisplayOptions -> Maybe Visibility
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"AxisLineVisibility" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Visibility
axisLineVisibility,
            (Key
"AxisOffset" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Text
axisOffset,
            (Key
"DataOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=) forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AxisDataOptions
dataOptions,
            (Key
"GridLineVisibility" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe Visibility
gridLineVisibility,
            (Key
"ScrollbarOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe ScrollBarOptions
scrollbarOptions,
            (Key
"TickLabelOptions" forall kv v. (KeyValue kv, ToJSON v) => Key -> v -> kv
Data..=)
              forall (f :: * -> *) a b. Functor f => (a -> b) -> f a -> f b
Prelude.<$> Maybe AxisTickLabelOptions
tickLabelOptions
          ]
      )