package AsposeCellsCloud::Object::PivotField;

require 5.6.0;
use strict;
use warnings;
use utf8;
use JSON qw(decode_json);
use Data::Dumper;
use Module::Runtime qw(use_module);
use Log::Any qw($log);
use Date::Parse;
use DateTime;

use base "AsposeCellsCloud::Object::BaseObject";

#
#
#
#NOTE: This class is auto generated by the swagger code generator program. Do not edit the class manually.
#

my $swagger_types = {
    'AutoShowCount' => 'int',
    'AutoShowField' => 'int',
    'AutoSortField' => 'int',
    'BaseField' => 'int',
    'BaseIndex' => 'int',
    'BaseItem' => 'int',
    'BaseItemPosition' => 'string',
    'CurrentPageItem' => 'int',
    'DataDisplayFormat' => 'string',
    'DisplayName' => 'string',
    'DragToColumn' => 'boolean',
    'DragToData' => 'boolean',
    'DragToHide' => 'boolean',
    'DragToPage' => 'boolean',
    'DragToRow' => 'boolean',
    'Function' => 'string',
    'InsertBlankRow' => 'boolean',
    'IsAscendShow' => 'boolean',
    'IsAscendSort' => 'boolean',
    'IsAutoShow' => 'boolean',
    'IsAutoSort' => 'boolean',
    'IsAutoSubtotals' => 'boolean',
    'IsCalculatedField' => 'boolean',
    'IsIncludeNewItemsInFilter' => 'boolean',
    'IsInsertPageBreaksBetweenItems' => 'boolean',
    'IsMultipleItemSelectionAllowed' => 'boolean',
    'IsRepeatItemLabels' => 'boolean',
    'ItemCount' => 'int',
    'Items' => 'ARRAY[string]',
    'Name' => 'string',
    'Number' => 'int',
    'NumberFormat' => 'string',
    'OriginalItems' => 'ARRAY[string]',
    'PivotItems' => 'ARRAY[PivotItem]',
    'Position' => 'int',
    'ShowAllItems' => 'boolean',
    'ShowCompact' => 'boolean',
    'ShowInOutlineForm' => 'boolean',
    'ShowSubtotalAtTop' => 'boolean'
};

my $attribute_map = {
    'AutoShowCount' => 'AutoShowCount',
    'AutoShowField' => 'AutoShowField',
    'AutoSortField' => 'AutoSortField',
    'BaseField' => 'BaseField',
    'BaseIndex' => 'BaseIndex',
    'BaseItem' => 'BaseItem',
    'BaseItemPosition' => 'BaseItemPosition',
    'CurrentPageItem' => 'CurrentPageItem',
    'DataDisplayFormat' => 'DataDisplayFormat',
    'DisplayName' => 'DisplayName',
    'DragToColumn' => 'DragToColumn',
    'DragToData' => 'DragToData',
    'DragToHide' => 'DragToHide',
    'DragToPage' => 'DragToPage',
    'DragToRow' => 'DragToRow',
    'Function' => 'Function',
    'InsertBlankRow' => 'InsertBlankRow',
    'IsAscendShow' => 'IsAscendShow',
    'IsAscendSort' => 'IsAscendSort',
    'IsAutoShow' => 'IsAutoShow',
    'IsAutoSort' => 'IsAutoSort',
    'IsAutoSubtotals' => 'IsAutoSubtotals',
    'IsCalculatedField' => 'IsCalculatedField',
    'IsIncludeNewItemsInFilter' => 'IsIncludeNewItemsInFilter',
    'IsInsertPageBreaksBetweenItems' => 'IsInsertPageBreaksBetweenItems',
    'IsMultipleItemSelectionAllowed' => 'IsMultipleItemSelectionAllowed',
    'IsRepeatItemLabels' => 'IsRepeatItemLabels',
    'ItemCount' => 'ItemCount',
    'Items' => 'Items',
    'Name' => 'Name',
    'Number' => 'Number',
    'NumberFormat' => 'NumberFormat',
    'OriginalItems' => 'OriginalItems',
    'PivotItems' => 'PivotItems',
    'Position' => 'Position',
    'ShowAllItems' => 'ShowAllItems',
    'ShowCompact' => 'ShowCompact',
    'ShowInOutlineForm' => 'ShowInOutlineForm',
    'ShowSubtotalAtTop' => 'ShowSubtotalAtTop'
};

# new object
sub new { 
    my ($class, %args) = @_; 
    my $self = { 
        #
        'AutoShowCount' => $args{'AutoShowCount'}, 
        #
        'AutoShowField' => $args{'AutoShowField'}, 
        #
        'AutoSortField' => $args{'AutoSortField'}, 
        #
        'BaseField' => $args{'BaseField'}, 
        #
        'BaseIndex' => $args{'BaseIndex'}, 
        #
        'BaseItem' => $args{'BaseItem'}, 
        #
        'BaseItemPosition' => $args{'BaseItemPosition'}, 
        #
        'CurrentPageItem' => $args{'CurrentPageItem'}, 
        #
        'DataDisplayFormat' => $args{'DataDisplayFormat'}, 
        #
        'DisplayName' => $args{'DisplayName'}, 
        #
        'DragToColumn' => $args{'DragToColumn'}, 
        #
        'DragToData' => $args{'DragToData'}, 
        #
        'DragToHide' => $args{'DragToHide'}, 
        #
        'DragToPage' => $args{'DragToPage'}, 
        #
        'DragToRow' => $args{'DragToRow'}, 
        #
        'Function' => $args{'Function'}, 
        #
        'InsertBlankRow' => $args{'InsertBlankRow'}, 
        #
        'IsAscendShow' => $args{'IsAscendShow'}, 
        #
        'IsAscendSort' => $args{'IsAscendSort'}, 
        #
        'IsAutoShow' => $args{'IsAutoShow'}, 
        #
        'IsAutoSort' => $args{'IsAutoSort'}, 
        #
        'IsAutoSubtotals' => $args{'IsAutoSubtotals'}, 
        #
        'IsCalculatedField' => $args{'IsCalculatedField'}, 
        #
        'IsIncludeNewItemsInFilter' => $args{'IsIncludeNewItemsInFilter'}, 
        #
        'IsInsertPageBreaksBetweenItems' => $args{'IsInsertPageBreaksBetweenItems'}, 
        #
        'IsMultipleItemSelectionAllowed' => $args{'IsMultipleItemSelectionAllowed'}, 
        #
        'IsRepeatItemLabels' => $args{'IsRepeatItemLabels'}, 
        #
        'ItemCount' => $args{'ItemCount'}, 
        #
        'Items' => $args{'Items'}, 
        #
        'Name' => $args{'Name'}, 
        #
        'Number' => $args{'Number'}, 
        #
        'NumberFormat' => $args{'NumberFormat'}, 
        #
        'OriginalItems' => $args{'OriginalItems'}, 
        #
        'PivotItems' => $args{'PivotItems'}, 
        #
        'Position' => $args{'Position'}, 
        #
        'ShowAllItems' => $args{'ShowAllItems'}, 
        #
        'ShowCompact' => $args{'ShowCompact'}, 
        #
        'ShowInOutlineForm' => $args{'ShowInOutlineForm'}, 
        #
        'ShowSubtotalAtTop' => $args{'ShowSubtotalAtTop'}
    }; 

    return bless $self, $class; 
}  

# get swagger type of the attribute
sub get_swagger_types {
    return $swagger_types;
}

# get attribute mappping
sub get_attribute_map {
    return $attribute_map;
}

1;
