{-# 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.DataLabelOptions
-- 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.DataLabelOptions 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.DataLabelContent
import Amazonka.QuickSight.Types.DataLabelOverlap
import Amazonka.QuickSight.Types.DataLabelPosition
import Amazonka.QuickSight.Types.DataLabelType
import Amazonka.QuickSight.Types.FontConfiguration
import Amazonka.QuickSight.Types.Visibility

-- | The options that determine the presentation of the data labels.
--
-- /See:/ 'newDataLabelOptions' smart constructor.
data DataLabelOptions = DataLabelOptions'
  { -- | Determines the visibility of the category field labels.
    DataLabelOptions -> Maybe Visibility
categoryLabelVisibility :: Prelude.Maybe Visibility,
    -- | The option that determines the data label type.
    DataLabelOptions -> Maybe [DataLabelType]
dataLabelTypes :: Prelude.Maybe [DataLabelType],
    -- | Determines the color of the data labels.
    DataLabelOptions -> Maybe Text
labelColor :: Prelude.Maybe Prelude.Text,
    -- | Determines the content of the data labels.
    DataLabelOptions -> Maybe DataLabelContent
labelContent :: Prelude.Maybe DataLabelContent,
    -- | Determines the font configuration of the data labels.
    DataLabelOptions -> Maybe FontConfiguration
labelFontConfiguration :: Prelude.Maybe FontConfiguration,
    -- | Determines the visibility of the measure field labels.
    DataLabelOptions -> Maybe Visibility
measureLabelVisibility :: Prelude.Maybe Visibility,
    -- | Determines whether overlap is enabled or disabled for the data labels.
    DataLabelOptions -> Maybe DataLabelOverlap
overlap :: Prelude.Maybe DataLabelOverlap,
    -- | Determines the position of the data labels.
    DataLabelOptions -> Maybe DataLabelPosition
position :: Prelude.Maybe DataLabelPosition,
    -- | Determines the visibility of the data labels.
    DataLabelOptions -> Maybe Visibility
visibility :: Prelude.Maybe Visibility
  }
  deriving (DataLabelOptions -> DataLabelOptions -> Bool
forall a. (a -> a -> Bool) -> (a -> a -> Bool) -> Eq a
/= :: DataLabelOptions -> DataLabelOptions -> Bool
$c/= :: DataLabelOptions -> DataLabelOptions -> Bool
== :: DataLabelOptions -> DataLabelOptions -> Bool
$c== :: DataLabelOptions -> DataLabelOptions -> Bool
Prelude.Eq, Int -> DataLabelOptions -> ShowS
[DataLabelOptions] -> ShowS
DataLabelOptions -> String
forall a.
(Int -> a -> ShowS) -> (a -> String) -> ([a] -> ShowS) -> Show a
showList :: [DataLabelOptions] -> ShowS
$cshowList :: [DataLabelOptions] -> ShowS
show :: DataLabelOptions -> String
$cshow :: DataLabelOptions -> String
showsPrec :: Int -> DataLabelOptions -> ShowS
$cshowsPrec :: Int -> DataLabelOptions -> ShowS
Prelude.Show, forall x. Rep DataLabelOptions x -> DataLabelOptions
forall x. DataLabelOptions -> Rep DataLabelOptions x
forall a.
(forall x. a -> Rep a x) -> (forall x. Rep a x -> a) -> Generic a
$cto :: forall x. Rep DataLabelOptions x -> DataLabelOptions
$cfrom :: forall x. DataLabelOptions -> Rep DataLabelOptions x
Prelude.Generic)

-- |
-- Create a value of 'DataLabelOptions' 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:
--
-- 'categoryLabelVisibility', 'dataLabelOptions_categoryLabelVisibility' - Determines the visibility of the category field labels.
--
-- 'dataLabelTypes', 'dataLabelOptions_dataLabelTypes' - The option that determines the data label type.
--
-- 'labelColor', 'dataLabelOptions_labelColor' - Determines the color of the data labels.
--
-- 'labelContent', 'dataLabelOptions_labelContent' - Determines the content of the data labels.
--
-- 'labelFontConfiguration', 'dataLabelOptions_labelFontConfiguration' - Determines the font configuration of the data labels.
--
-- 'measureLabelVisibility', 'dataLabelOptions_measureLabelVisibility' - Determines the visibility of the measure field labels.
--
-- 'overlap', 'dataLabelOptions_overlap' - Determines whether overlap is enabled or disabled for the data labels.
--
-- 'position', 'dataLabelOptions_position' - Determines the position of the data labels.
--
-- 'visibility', 'dataLabelOptions_visibility' - Determines the visibility of the data labels.
newDataLabelOptions ::
  DataLabelOptions
newDataLabelOptions :: DataLabelOptions
newDataLabelOptions =
  DataLabelOptions'
    { $sel:categoryLabelVisibility:DataLabelOptions' :: Maybe Visibility
categoryLabelVisibility =
        forall a. Maybe a
Prelude.Nothing,
      $sel:dataLabelTypes:DataLabelOptions' :: Maybe [DataLabelType]
dataLabelTypes = forall a. Maybe a
Prelude.Nothing,
      $sel:labelColor:DataLabelOptions' :: Maybe Text
labelColor = forall a. Maybe a
Prelude.Nothing,
      $sel:labelContent:DataLabelOptions' :: Maybe DataLabelContent
labelContent = forall a. Maybe a
Prelude.Nothing,
      $sel:labelFontConfiguration:DataLabelOptions' :: Maybe FontConfiguration
labelFontConfiguration = forall a. Maybe a
Prelude.Nothing,
      $sel:measureLabelVisibility:DataLabelOptions' :: Maybe Visibility
measureLabelVisibility = forall a. Maybe a
Prelude.Nothing,
      $sel:overlap:DataLabelOptions' :: Maybe DataLabelOverlap
overlap = forall a. Maybe a
Prelude.Nothing,
      $sel:position:DataLabelOptions' :: Maybe DataLabelPosition
position = forall a. Maybe a
Prelude.Nothing,
      $sel:visibility:DataLabelOptions' :: Maybe Visibility
visibility = forall a. Maybe a
Prelude.Nothing
    }

-- | Determines the visibility of the category field labels.
dataLabelOptions_categoryLabelVisibility :: Lens.Lens' DataLabelOptions (Prelude.Maybe Visibility)
dataLabelOptions_categoryLabelVisibility :: Lens' DataLabelOptions (Maybe Visibility)
dataLabelOptions_categoryLabelVisibility = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataLabelOptions' {Maybe Visibility
categoryLabelVisibility :: Maybe Visibility
$sel:categoryLabelVisibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
categoryLabelVisibility} -> Maybe Visibility
categoryLabelVisibility) (\s :: DataLabelOptions
s@DataLabelOptions' {} Maybe Visibility
a -> DataLabelOptions
s {$sel:categoryLabelVisibility:DataLabelOptions' :: Maybe Visibility
categoryLabelVisibility = Maybe Visibility
a} :: DataLabelOptions)

-- | The option that determines the data label type.
dataLabelOptions_dataLabelTypes :: Lens.Lens' DataLabelOptions (Prelude.Maybe [DataLabelType])
dataLabelOptions_dataLabelTypes :: Lens' DataLabelOptions (Maybe [DataLabelType])
dataLabelOptions_dataLabelTypes = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataLabelOptions' {Maybe [DataLabelType]
dataLabelTypes :: Maybe [DataLabelType]
$sel:dataLabelTypes:DataLabelOptions' :: DataLabelOptions -> Maybe [DataLabelType]
dataLabelTypes} -> Maybe [DataLabelType]
dataLabelTypes) (\s :: DataLabelOptions
s@DataLabelOptions' {} Maybe [DataLabelType]
a -> DataLabelOptions
s {$sel:dataLabelTypes:DataLabelOptions' :: Maybe [DataLabelType]
dataLabelTypes = Maybe [DataLabelType]
a} :: DataLabelOptions) forall b c a. (b -> c) -> (a -> b) -> a -> c
Prelude.. forall (f :: * -> *) (g :: * -> *) s t a b.
(Functor f, Functor g) =>
AnIso s t a b -> Iso (f s) (g t) (f a) (g b)
Lens.mapping forall s t a b. (Coercible s a, Coercible t b) => Iso s t a b
Lens.coerced

-- | Determines the color of the data labels.
dataLabelOptions_labelColor :: Lens.Lens' DataLabelOptions (Prelude.Maybe Prelude.Text)
dataLabelOptions_labelColor :: Lens' DataLabelOptions (Maybe Text)
dataLabelOptions_labelColor = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataLabelOptions' {Maybe Text
labelColor :: Maybe Text
$sel:labelColor:DataLabelOptions' :: DataLabelOptions -> Maybe Text
labelColor} -> Maybe Text
labelColor) (\s :: DataLabelOptions
s@DataLabelOptions' {} Maybe Text
a -> DataLabelOptions
s {$sel:labelColor:DataLabelOptions' :: Maybe Text
labelColor = Maybe Text
a} :: DataLabelOptions)

-- | Determines the content of the data labels.
dataLabelOptions_labelContent :: Lens.Lens' DataLabelOptions (Prelude.Maybe DataLabelContent)
dataLabelOptions_labelContent :: Lens' DataLabelOptions (Maybe DataLabelContent)
dataLabelOptions_labelContent = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataLabelOptions' {Maybe DataLabelContent
labelContent :: Maybe DataLabelContent
$sel:labelContent:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelContent
labelContent} -> Maybe DataLabelContent
labelContent) (\s :: DataLabelOptions
s@DataLabelOptions' {} Maybe DataLabelContent
a -> DataLabelOptions
s {$sel:labelContent:DataLabelOptions' :: Maybe DataLabelContent
labelContent = Maybe DataLabelContent
a} :: DataLabelOptions)

-- | Determines the font configuration of the data labels.
dataLabelOptions_labelFontConfiguration :: Lens.Lens' DataLabelOptions (Prelude.Maybe FontConfiguration)
dataLabelOptions_labelFontConfiguration :: Lens' DataLabelOptions (Maybe FontConfiguration)
dataLabelOptions_labelFontConfiguration = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataLabelOptions' {Maybe FontConfiguration
labelFontConfiguration :: Maybe FontConfiguration
$sel:labelFontConfiguration:DataLabelOptions' :: DataLabelOptions -> Maybe FontConfiguration
labelFontConfiguration} -> Maybe FontConfiguration
labelFontConfiguration) (\s :: DataLabelOptions
s@DataLabelOptions' {} Maybe FontConfiguration
a -> DataLabelOptions
s {$sel:labelFontConfiguration:DataLabelOptions' :: Maybe FontConfiguration
labelFontConfiguration = Maybe FontConfiguration
a} :: DataLabelOptions)

-- | Determines the visibility of the measure field labels.
dataLabelOptions_measureLabelVisibility :: Lens.Lens' DataLabelOptions (Prelude.Maybe Visibility)
dataLabelOptions_measureLabelVisibility :: Lens' DataLabelOptions (Maybe Visibility)
dataLabelOptions_measureLabelVisibility = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataLabelOptions' {Maybe Visibility
measureLabelVisibility :: Maybe Visibility
$sel:measureLabelVisibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
measureLabelVisibility} -> Maybe Visibility
measureLabelVisibility) (\s :: DataLabelOptions
s@DataLabelOptions' {} Maybe Visibility
a -> DataLabelOptions
s {$sel:measureLabelVisibility:DataLabelOptions' :: Maybe Visibility
measureLabelVisibility = Maybe Visibility
a} :: DataLabelOptions)

-- | Determines whether overlap is enabled or disabled for the data labels.
dataLabelOptions_overlap :: Lens.Lens' DataLabelOptions (Prelude.Maybe DataLabelOverlap)
dataLabelOptions_overlap :: Lens' DataLabelOptions (Maybe DataLabelOverlap)
dataLabelOptions_overlap = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataLabelOptions' {Maybe DataLabelOverlap
overlap :: Maybe DataLabelOverlap
$sel:overlap:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelOverlap
overlap} -> Maybe DataLabelOverlap
overlap) (\s :: DataLabelOptions
s@DataLabelOptions' {} Maybe DataLabelOverlap
a -> DataLabelOptions
s {$sel:overlap:DataLabelOptions' :: Maybe DataLabelOverlap
overlap = Maybe DataLabelOverlap
a} :: DataLabelOptions)

-- | Determines the position of the data labels.
dataLabelOptions_position :: Lens.Lens' DataLabelOptions (Prelude.Maybe DataLabelPosition)
dataLabelOptions_position :: Lens' DataLabelOptions (Maybe DataLabelPosition)
dataLabelOptions_position = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataLabelOptions' {Maybe DataLabelPosition
position :: Maybe DataLabelPosition
$sel:position:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelPosition
position} -> Maybe DataLabelPosition
position) (\s :: DataLabelOptions
s@DataLabelOptions' {} Maybe DataLabelPosition
a -> DataLabelOptions
s {$sel:position:DataLabelOptions' :: Maybe DataLabelPosition
position = Maybe DataLabelPosition
a} :: DataLabelOptions)

-- | Determines the visibility of the data labels.
dataLabelOptions_visibility :: Lens.Lens' DataLabelOptions (Prelude.Maybe Visibility)
dataLabelOptions_visibility :: Lens' DataLabelOptions (Maybe Visibility)
dataLabelOptions_visibility = forall s a b t. (s -> a) -> (s -> b -> t) -> Lens s t a b
Lens.lens (\DataLabelOptions' {Maybe Visibility
visibility :: Maybe Visibility
$sel:visibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
visibility} -> Maybe Visibility
visibility) (\s :: DataLabelOptions
s@DataLabelOptions' {} Maybe Visibility
a -> DataLabelOptions
s {$sel:visibility:DataLabelOptions' :: Maybe Visibility
visibility = Maybe Visibility
a} :: DataLabelOptions)

instance Data.FromJSON DataLabelOptions where
  parseJSON :: Value -> Parser DataLabelOptions
parseJSON =
    forall a. String -> (Object -> Parser a) -> Value -> Parser a
Data.withObject
      String
"DataLabelOptions"
      ( \Object
x ->
          Maybe Visibility
-> Maybe [DataLabelType]
-> Maybe Text
-> Maybe DataLabelContent
-> Maybe FontConfiguration
-> Maybe Visibility
-> Maybe DataLabelOverlap
-> Maybe DataLabelPosition
-> Maybe Visibility
-> DataLabelOptions
DataLabelOptions'
            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
"CategoryLabelVisibility")
            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
"DataLabelTypes" forall a. Parser (Maybe a) -> a -> Parser a
Data..!= forall a. Monoid a => a
Prelude.mempty)
            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
"LabelColor")
            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
"LabelContent")
            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
"LabelFontConfiguration")
            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
"MeasureLabelVisibility")
            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
"Overlap")
            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
"Position")
            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
"Visibility")
      )

instance Prelude.Hashable DataLabelOptions where
  hashWithSalt :: Int -> DataLabelOptions -> Int
hashWithSalt Int
_salt DataLabelOptions' {Maybe [DataLabelType]
Maybe Text
Maybe DataLabelContent
Maybe DataLabelOverlap
Maybe DataLabelPosition
Maybe FontConfiguration
Maybe Visibility
visibility :: Maybe Visibility
position :: Maybe DataLabelPosition
overlap :: Maybe DataLabelOverlap
measureLabelVisibility :: Maybe Visibility
labelFontConfiguration :: Maybe FontConfiguration
labelContent :: Maybe DataLabelContent
labelColor :: Maybe Text
dataLabelTypes :: Maybe [DataLabelType]
categoryLabelVisibility :: Maybe Visibility
$sel:visibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
$sel:position:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelPosition
$sel:overlap:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelOverlap
$sel:measureLabelVisibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
$sel:labelFontConfiguration:DataLabelOptions' :: DataLabelOptions -> Maybe FontConfiguration
$sel:labelContent:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelContent
$sel:labelColor:DataLabelOptions' :: DataLabelOptions -> Maybe Text
$sel:dataLabelTypes:DataLabelOptions' :: DataLabelOptions -> Maybe [DataLabelType]
$sel:categoryLabelVisibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
..} =
    Int
_salt
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Visibility
categoryLabelVisibility
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe [DataLabelType]
dataLabelTypes
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Text
labelColor
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataLabelContent
labelContent
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe FontConfiguration
labelFontConfiguration
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Visibility
measureLabelVisibility
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataLabelOverlap
overlap
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe DataLabelPosition
position
      forall a. Hashable a => Int -> a -> Int
`Prelude.hashWithSalt` Maybe Visibility
visibility

instance Prelude.NFData DataLabelOptions where
  rnf :: DataLabelOptions -> ()
rnf DataLabelOptions' {Maybe [DataLabelType]
Maybe Text
Maybe DataLabelContent
Maybe DataLabelOverlap
Maybe DataLabelPosition
Maybe FontConfiguration
Maybe Visibility
visibility :: Maybe Visibility
position :: Maybe DataLabelPosition
overlap :: Maybe DataLabelOverlap
measureLabelVisibility :: Maybe Visibility
labelFontConfiguration :: Maybe FontConfiguration
labelContent :: Maybe DataLabelContent
labelColor :: Maybe Text
dataLabelTypes :: Maybe [DataLabelType]
categoryLabelVisibility :: Maybe Visibility
$sel:visibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
$sel:position:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelPosition
$sel:overlap:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelOverlap
$sel:measureLabelVisibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
$sel:labelFontConfiguration:DataLabelOptions' :: DataLabelOptions -> Maybe FontConfiguration
$sel:labelContent:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelContent
$sel:labelColor:DataLabelOptions' :: DataLabelOptions -> Maybe Text
$sel:dataLabelTypes:DataLabelOptions' :: DataLabelOptions -> Maybe [DataLabelType]
$sel:categoryLabelVisibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
..} =
    forall a. NFData a => a -> ()
Prelude.rnf Maybe Visibility
categoryLabelVisibility
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe [DataLabelType]
dataLabelTypes
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Text
labelColor
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataLabelContent
labelContent
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe FontConfiguration
labelFontConfiguration
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Visibility
measureLabelVisibility
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataLabelOverlap
overlap
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe DataLabelPosition
position
      seq :: forall a b. a -> b -> b
`Prelude.seq` forall a. NFData a => a -> ()
Prelude.rnf Maybe Visibility
visibility

instance Data.ToJSON DataLabelOptions where
  toJSON :: DataLabelOptions -> Value
toJSON DataLabelOptions' {Maybe [DataLabelType]
Maybe Text
Maybe DataLabelContent
Maybe DataLabelOverlap
Maybe DataLabelPosition
Maybe FontConfiguration
Maybe Visibility
visibility :: Maybe Visibility
position :: Maybe DataLabelPosition
overlap :: Maybe DataLabelOverlap
measureLabelVisibility :: Maybe Visibility
labelFontConfiguration :: Maybe FontConfiguration
labelContent :: Maybe DataLabelContent
labelColor :: Maybe Text
dataLabelTypes :: Maybe [DataLabelType]
categoryLabelVisibility :: Maybe Visibility
$sel:visibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
$sel:position:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelPosition
$sel:overlap:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelOverlap
$sel:measureLabelVisibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
$sel:labelFontConfiguration:DataLabelOptions' :: DataLabelOptions -> Maybe FontConfiguration
$sel:labelContent:DataLabelOptions' :: DataLabelOptions -> Maybe DataLabelContent
$sel:labelColor:DataLabelOptions' :: DataLabelOptions -> Maybe Text
$sel:dataLabelTypes:DataLabelOptions' :: DataLabelOptions -> Maybe [DataLabelType]
$sel:categoryLabelVisibility:DataLabelOptions' :: DataLabelOptions -> Maybe Visibility
..} =
    [Pair] -> Value
Data.object
      ( forall a. [Maybe a] -> [a]
Prelude.catMaybes
          [ (Key
"CategoryLabelVisibility" 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
categoryLabelVisibility,
            (Key
"DataLabelTypes" 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 [DataLabelType]
dataLabelTypes,
            (Key
"LabelColor" 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
labelColor,
            (Key
"LabelContent" 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 DataLabelContent
labelContent,
            (Key
"LabelFontConfiguration" 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 FontConfiguration
labelFontConfiguration,
            (Key
"MeasureLabelVisibility" 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
measureLabelVisibility,
            (Key
"Overlap" 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 DataLabelOverlap
overlap,
            (Key
"Position" 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 DataLabelPosition
position,
            (Key
"Visibility" 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
visibility
          ]
      )