packages feed

amazonka-quicksight-2.0: gen/Amazonka/QuickSight/Types/LineChartLineStyleSettings.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.LineChartLineStyleSettings
-- 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.LineChartLineStyleSettings 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.LineChartLineStyle
import Amazonka.QuickSight.Types.LineInterpolation
import Amazonka.QuickSight.Types.Visibility

-- | Line styles options for a line series in @LineChartVisual@.
--
-- /See:/ 'newLineChartLineStyleSettings' smart constructor.
data LineChartLineStyleSettings = LineChartLineStyleSettings'
  { -- | Interpolation style for line series.
    --
    -- -   @LINEAR@: Show as default, linear style.
    --
    -- -   @SMOOTH@: Show as a smooth curve.
    --
    -- -   @STEPPED@: Show steps in line.
    lineInterpolation :: Prelude.Maybe LineInterpolation,
    -- | Line style for line series.
    --
    -- -   @SOLID@: Show as a solid line.
    --
    -- -   @DOTTED@: Show as a dotted line.
    --
    -- -   @DASHED@: Show as a dashed line.
    lineStyle :: Prelude.Maybe LineChartLineStyle,
    -- | Configuration option that determines whether to show the line for the
    -- series.
    lineVisibility :: Prelude.Maybe Visibility,
    -- | Width that determines the line thickness.
    lineWidth :: Prelude.Maybe Prelude.Text
  }
  deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic)

-- |
-- Create a value of 'LineChartLineStyleSettings' 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:
--
-- 'lineInterpolation', 'lineChartLineStyleSettings_lineInterpolation' - Interpolation style for line series.
--
-- -   @LINEAR@: Show as default, linear style.
--
-- -   @SMOOTH@: Show as a smooth curve.
--
-- -   @STEPPED@: Show steps in line.
--
-- 'lineStyle', 'lineChartLineStyleSettings_lineStyle' - Line style for line series.
--
-- -   @SOLID@: Show as a solid line.
--
-- -   @DOTTED@: Show as a dotted line.
--
-- -   @DASHED@: Show as a dashed line.
--
-- 'lineVisibility', 'lineChartLineStyleSettings_lineVisibility' - Configuration option that determines whether to show the line for the
-- series.
--
-- 'lineWidth', 'lineChartLineStyleSettings_lineWidth' - Width that determines the line thickness.
newLineChartLineStyleSettings ::
  LineChartLineStyleSettings
newLineChartLineStyleSettings =
  LineChartLineStyleSettings'
    { lineInterpolation =
        Prelude.Nothing,
      lineStyle = Prelude.Nothing,
      lineVisibility = Prelude.Nothing,
      lineWidth = Prelude.Nothing
    }

-- | Interpolation style for line series.
--
-- -   @LINEAR@: Show as default, linear style.
--
-- -   @SMOOTH@: Show as a smooth curve.
--
-- -   @STEPPED@: Show steps in line.
lineChartLineStyleSettings_lineInterpolation :: Lens.Lens' LineChartLineStyleSettings (Prelude.Maybe LineInterpolation)
lineChartLineStyleSettings_lineInterpolation = Lens.lens (\LineChartLineStyleSettings' {lineInterpolation} -> lineInterpolation) (\s@LineChartLineStyleSettings' {} a -> s {lineInterpolation = a} :: LineChartLineStyleSettings)

-- | Line style for line series.
--
-- -   @SOLID@: Show as a solid line.
--
-- -   @DOTTED@: Show as a dotted line.
--
-- -   @DASHED@: Show as a dashed line.
lineChartLineStyleSettings_lineStyle :: Lens.Lens' LineChartLineStyleSettings (Prelude.Maybe LineChartLineStyle)
lineChartLineStyleSettings_lineStyle = Lens.lens (\LineChartLineStyleSettings' {lineStyle} -> lineStyle) (\s@LineChartLineStyleSettings' {} a -> s {lineStyle = a} :: LineChartLineStyleSettings)

-- | Configuration option that determines whether to show the line for the
-- series.
lineChartLineStyleSettings_lineVisibility :: Lens.Lens' LineChartLineStyleSettings (Prelude.Maybe Visibility)
lineChartLineStyleSettings_lineVisibility = Lens.lens (\LineChartLineStyleSettings' {lineVisibility} -> lineVisibility) (\s@LineChartLineStyleSettings' {} a -> s {lineVisibility = a} :: LineChartLineStyleSettings)

-- | Width that determines the line thickness.
lineChartLineStyleSettings_lineWidth :: Lens.Lens' LineChartLineStyleSettings (Prelude.Maybe Prelude.Text)
lineChartLineStyleSettings_lineWidth = Lens.lens (\LineChartLineStyleSettings' {lineWidth} -> lineWidth) (\s@LineChartLineStyleSettings' {} a -> s {lineWidth = a} :: LineChartLineStyleSettings)

instance Data.FromJSON LineChartLineStyleSettings where
  parseJSON =
    Data.withObject
      "LineChartLineStyleSettings"
      ( \x ->
          LineChartLineStyleSettings'
            Prelude.<$> (x Data..:? "LineInterpolation")
            Prelude.<*> (x Data..:? "LineStyle")
            Prelude.<*> (x Data..:? "LineVisibility")
            Prelude.<*> (x Data..:? "LineWidth")
      )

instance Prelude.Hashable LineChartLineStyleSettings where
  hashWithSalt _salt LineChartLineStyleSettings' {..} =
    _salt
      `Prelude.hashWithSalt` lineInterpolation
      `Prelude.hashWithSalt` lineStyle
      `Prelude.hashWithSalt` lineVisibility
      `Prelude.hashWithSalt` lineWidth

instance Prelude.NFData LineChartLineStyleSettings where
  rnf LineChartLineStyleSettings' {..} =
    Prelude.rnf lineInterpolation
      `Prelude.seq` Prelude.rnf lineStyle
      `Prelude.seq` Prelude.rnf lineVisibility
      `Prelude.seq` Prelude.rnf lineWidth

instance Data.ToJSON LineChartLineStyleSettings where
  toJSON LineChartLineStyleSettings' {..} =
    Data.object
      ( Prelude.catMaybes
          [ ("LineInterpolation" Data..=)
              Prelude.<$> lineInterpolation,
            ("LineStyle" Data..=) Prelude.<$> lineStyle,
            ("LineVisibility" Data..=)
              Prelude.<$> lineVisibility,
            ("LineWidth" Data..=) Prelude.<$> lineWidth
          ]
      )