# Copyright 2019 Google LLC
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# NOTE: This file is auto generated by the elixir code generator program.
# Do not edit this file manually.

defmodule GoogleApi.Sheets.V4.Model.Sheet do
  @moduledoc """
  A sheet in a spreadsheet.

  ## Attributes

  *   `bandedRanges` (*type:* `list(GoogleApi.Sheets.V4.Model.BandedRange.t)`, *default:* `nil`) - The banded (alternating colors) ranges on this sheet.
  *   `basicFilter` (*type:* `GoogleApi.Sheets.V4.Model.BasicFilter.t`, *default:* `nil`) - The filter on this sheet, if any.
  *   `charts` (*type:* `list(GoogleApi.Sheets.V4.Model.EmbeddedChart.t)`, *default:* `nil`) - The specifications of every chart on this sheet.
  *   `columnGroups` (*type:* `list(GoogleApi.Sheets.V4.Model.DimensionGroup.t)`, *default:* `nil`) - All column groups on this sheet, ordered by increasing range start index, then by group depth.
  *   `conditionalFormats` (*type:* `list(GoogleApi.Sheets.V4.Model.ConditionalFormatRule.t)`, *default:* `nil`) - The conditional format rules in this sheet.
  *   `data` (*type:* `list(GoogleApi.Sheets.V4.Model.GridData.t)`, *default:* `nil`) - Data in the grid, if this is a grid sheet. The number of GridData objects returned is dependent on the number of ranges requested on this sheet. For example, if this is representing `Sheet1`, and the spreadsheet was requested with ranges `Sheet1!A1:C10` and `Sheet1!D15:E20`, then the first GridData will have a startRow/startColumn of `0`, while the second one will have `startRow 14` (zero-based row 15), and `startColumn 3` (zero-based column D). For a DATA_SOURCE sheet, you can not request a specific range, the GridData contains all the values.
  *   `developerMetadata` (*type:* `list(GoogleApi.Sheets.V4.Model.DeveloperMetadata.t)`, *default:* `nil`) - The developer metadata associated with a sheet.
  *   `filterViews` (*type:* `list(GoogleApi.Sheets.V4.Model.FilterView.t)`, *default:* `nil`) - The filter views in this sheet.
  *   `merges` (*type:* `list(GoogleApi.Sheets.V4.Model.GridRange.t)`, *default:* `nil`) - The ranges that are merged together.
  *   `properties` (*type:* `GoogleApi.Sheets.V4.Model.SheetProperties.t`, *default:* `nil`) - The properties of the sheet.
  *   `protectedRanges` (*type:* `list(GoogleApi.Sheets.V4.Model.ProtectedRange.t)`, *default:* `nil`) - The protected ranges in this sheet.
  *   `rowGroups` (*type:* `list(GoogleApi.Sheets.V4.Model.DimensionGroup.t)`, *default:* `nil`) - All row groups on this sheet, ordered by increasing range start index, then by group depth.
  *   `slicers` (*type:* `list(GoogleApi.Sheets.V4.Model.Slicer.t)`, *default:* `nil`) - The slicers on this sheet.
  """

  use GoogleApi.Gax.ModelBase

  @type t :: %__MODULE__{
          :bandedRanges => list(GoogleApi.Sheets.V4.Model.BandedRange.t()) | nil,
          :basicFilter => GoogleApi.Sheets.V4.Model.BasicFilter.t() | nil,
          :charts => list(GoogleApi.Sheets.V4.Model.EmbeddedChart.t()) | nil,
          :columnGroups => list(GoogleApi.Sheets.V4.Model.DimensionGroup.t()) | nil,
          :conditionalFormats => list(GoogleApi.Sheets.V4.Model.ConditionalFormatRule.t()) | nil,
          :data => list(GoogleApi.Sheets.V4.Model.GridData.t()) | nil,
          :developerMetadata => list(GoogleApi.Sheets.V4.Model.DeveloperMetadata.t()) | nil,
          :filterViews => list(GoogleApi.Sheets.V4.Model.FilterView.t()) | nil,
          :merges => list(GoogleApi.Sheets.V4.Model.GridRange.t()) | nil,
          :properties => GoogleApi.Sheets.V4.Model.SheetProperties.t() | nil,
          :protectedRanges => list(GoogleApi.Sheets.V4.Model.ProtectedRange.t()) | nil,
          :rowGroups => list(GoogleApi.Sheets.V4.Model.DimensionGroup.t()) | nil,
          :slicers => list(GoogleApi.Sheets.V4.Model.Slicer.t()) | nil
        }

  field(:bandedRanges, as: GoogleApi.Sheets.V4.Model.BandedRange, type: :list)
  field(:basicFilter, as: GoogleApi.Sheets.V4.Model.BasicFilter)
  field(:charts, as: GoogleApi.Sheets.V4.Model.EmbeddedChart, type: :list)
  field(:columnGroups, as: GoogleApi.Sheets.V4.Model.DimensionGroup, type: :list)
  field(:conditionalFormats, as: GoogleApi.Sheets.V4.Model.ConditionalFormatRule, type: :list)
  field(:data, as: GoogleApi.Sheets.V4.Model.GridData, type: :list)
  field(:developerMetadata, as: GoogleApi.Sheets.V4.Model.DeveloperMetadata, type: :list)
  field(:filterViews, as: GoogleApi.Sheets.V4.Model.FilterView, type: :list)
  field(:merges, as: GoogleApi.Sheets.V4.Model.GridRange, type: :list)
  field(:properties, as: GoogleApi.Sheets.V4.Model.SheetProperties)
  field(:protectedRanges, as: GoogleApi.Sheets.V4.Model.ProtectedRange, type: :list)
  field(:rowGroups, as: GoogleApi.Sheets.V4.Model.DimensionGroup, type: :list)
  field(:slicers, as: GoogleApi.Sheets.V4.Model.Slicer, type: :list)
end

defimpl Poison.Decoder, for: GoogleApi.Sheets.V4.Model.Sheet do
  def decode(value, options) do
    GoogleApi.Sheets.V4.Model.Sheet.decode(value, options)
  end
end

defimpl Poison.Encoder, for: GoogleApi.Sheets.V4.Model.Sheet do
  def encode(value, options) do
    GoogleApi.Gax.ModelBase.encode(value, options)
  end
end
