packages feed

amazonka-quicksight-2.0: gen/Amazonka/QuickSight/Types/ReferenceLine.hs

{-# 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.ReferenceLine
-- 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.ReferenceLine 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.ReferenceLineDataConfiguration
import Amazonka.QuickSight.Types.ReferenceLineLabelConfiguration
import Amazonka.QuickSight.Types.ReferenceLineStyleConfiguration
import Amazonka.QuickSight.Types.WidgetStatus

-- | The reference line visual display options.
--
-- /See:/ 'newReferenceLine' smart constructor.
data ReferenceLine = ReferenceLine'
  { -- | The label configuration of the reference line.
    labelConfiguration :: Prelude.Maybe ReferenceLineLabelConfiguration,
    -- | The status of the reference line. Choose one of the following options:
    --
    -- -   @ENABLE@
    --
    -- -   @DISABLE@
    status :: Prelude.Maybe WidgetStatus,
    -- | The style configuration of the reference line.
    styleConfiguration :: Prelude.Maybe ReferenceLineStyleConfiguration,
    -- | The data configuration of the reference line.
    dataConfiguration :: ReferenceLineDataConfiguration
  }
  deriving (Prelude.Eq, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'ReferenceLine' 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:
--
-- 'labelConfiguration', 'referenceLine_labelConfiguration' - The label configuration of the reference line.
--
-- 'status', 'referenceLine_status' - The status of the reference line. Choose one of the following options:
--
-- -   @ENABLE@
--
-- -   @DISABLE@
--
-- 'styleConfiguration', 'referenceLine_styleConfiguration' - The style configuration of the reference line.
--
-- 'dataConfiguration', 'referenceLine_dataConfiguration' - The data configuration of the reference line.
newReferenceLine ::
  -- | 'dataConfiguration'
  ReferenceLineDataConfiguration ->
  ReferenceLine
newReferenceLine pDataConfiguration_ =
  ReferenceLine'
    { labelConfiguration =
        Prelude.Nothing,
      status = Prelude.Nothing,
      styleConfiguration = Prelude.Nothing,
      dataConfiguration = pDataConfiguration_
    }

-- | The label configuration of the reference line.
referenceLine_labelConfiguration :: Lens.Lens' ReferenceLine (Prelude.Maybe ReferenceLineLabelConfiguration)
referenceLine_labelConfiguration = Lens.lens (\ReferenceLine' {labelConfiguration} -> labelConfiguration) (\s@ReferenceLine' {} a -> s {labelConfiguration = a} :: ReferenceLine)

-- | The status of the reference line. Choose one of the following options:
--
-- -   @ENABLE@
--
-- -   @DISABLE@
referenceLine_status :: Lens.Lens' ReferenceLine (Prelude.Maybe WidgetStatus)
referenceLine_status = Lens.lens (\ReferenceLine' {status} -> status) (\s@ReferenceLine' {} a -> s {status = a} :: ReferenceLine)

-- | The style configuration of the reference line.
referenceLine_styleConfiguration :: Lens.Lens' ReferenceLine (Prelude.Maybe ReferenceLineStyleConfiguration)
referenceLine_styleConfiguration = Lens.lens (\ReferenceLine' {styleConfiguration} -> styleConfiguration) (\s@ReferenceLine' {} a -> s {styleConfiguration = a} :: ReferenceLine)

-- | The data configuration of the reference line.
referenceLine_dataConfiguration :: Lens.Lens' ReferenceLine ReferenceLineDataConfiguration
referenceLine_dataConfiguration = Lens.lens (\ReferenceLine' {dataConfiguration} -> dataConfiguration) (\s@ReferenceLine' {} a -> s {dataConfiguration = a} :: ReferenceLine)

instance Data.FromJSON ReferenceLine where
  parseJSON =
    Data.withObject
      "ReferenceLine"
      ( \x ->
          ReferenceLine'
            Prelude.<$> (x Data..:? "LabelConfiguration")
            Prelude.<*> (x Data..:? "Status")
            Prelude.<*> (x Data..:? "StyleConfiguration")
            Prelude.<*> (x Data..: "DataConfiguration")
      )

instance Prelude.Hashable ReferenceLine where
  hashWithSalt _salt ReferenceLine' {..} =
    _salt
      `Prelude.hashWithSalt` labelConfiguration
      `Prelude.hashWithSalt` status
      `Prelude.hashWithSalt` styleConfiguration
      `Prelude.hashWithSalt` dataConfiguration

instance Prelude.NFData ReferenceLine where
  rnf ReferenceLine' {..} =
    Prelude.rnf labelConfiguration
      `Prelude.seq` Prelude.rnf status
      `Prelude.seq` Prelude.rnf styleConfiguration
      `Prelude.seq` Prelude.rnf dataConfiguration

instance Data.ToJSON ReferenceLine where
  toJSON ReferenceLine' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("LabelConfiguration" Data..=)
              Prelude.<$> labelConfiguration,
            ("Status" Data..=) Prelude.<$> status,
            ("StyleConfiguration" Data..=)
              Prelude.<$> styleConfiguration,
            Prelude.Just
              ("DataConfiguration" Data..= dataConfiguration)
          ]
      )