(function () {
    'use strict';

    angular
        .module('setoresApp')
        .factory('gridAlarmes', gridAlarmes);

    gridAlarmes.$inject = [];

    /* @ngInject */
    function gridAlarmes() {
        return {
            getColumns: getColumns,
            getOptions: getOptions,
            getCustomOptions: getCustomOptions
        };

        ////////////////

        function getOptions() {
            return {
                editor: Slick.Editors.Text,
                enableAsyncPostRender: true,
                enableCellNavigation: false,
                enableColumnReorder: false,
                forceFitColumns: true,
                multiColumnSort: true,
                rowHeight: 25,
                syncColumnCellResize: true
            };
        }

        function getCustomOptions() {
            return {
                checkbox: true,
                headerButtons: true,
                columnPicker: false,
            };
        }

        function getColumns() {
            return [{
                    field: 'btnView',
                    formatter: function (row, cell, value, columnDef, dataContext) {
                        return `<button ${ dataContext.AlarmeSetorDescumprido ? "disabled=disabled" : ""}
                                class="btn-base btn-size-xs btn-color-default btn-view">
                                    <i class="icon-eye icon icon-size-s"></i>
                                </button>`;
                    },
                    id: 'BtnView',
                    name: '',
                    sortable: false,
                    width: null,
                    maxWidth: 43,
                },
                {
                    field: 'btnConfig',
                    formatter: ``,
                    id: 'BtnConfig',
                    name: '',
                    sortable: false,
                    width: null,
                    maxWidth: 43,
                    disabled: false,
                    header: {
                        buttons: [{
                            cssClass: 'btn-base btn-size-xs btn-color-default icon-tool icon icon-size-s btn-config-group btn-disabled',
                            command: 'clickTratarAlarmesSelecionados'
                        }]
                    }
                },
                {
                    field: 'Descricao',
                    formatter: function (row, cell, value, columnDef, dataContext) {
                        if (dataContext.DescricaoUsuario && dataContext.DescricaoUsuario !== '') {
                            return dataContext.DescricaoUsuario;
                        } else {
                            return value;
                        }
                    },
                    id: 'Descricao',
                    name: 'Descrição',
                    sortable: false,
                    width: null
                },
                {
                    field: 'DataHoraFormatado',
                    formatter: null,
                    id: 'DataHoraFormatado',
                    name: 'Horário',
                    sortable: false,
                    width: null
                },
                {
                    field: 'IdentificadorVeiculo',
                    formatter: null,
                    id: 'IdentificadorVeiculo',
                    name: 'Veículo',
                    sortable: false,
                    width: null
                },
                {
                    field: 'Placa',
                    formatter: null,
                    id: 'Placa',
                    name: 'Placa',
                    sortable: false,
                    width: null
                },
                {
                    field: 'Motorista',
                    formatter: null,
                    id: 'Motorista',
                    name: 'Motorista',
                    sortable: false,
                    width: null
                },
                {
                    field: 'Velocidade',
                    formatter: null,
                    id: 'Velocidade',
                    name: 'Velocidade',
                    sortable: false,
                    width: null
                },
                {
                    field: 'InformacoesAdicionais',
                    formatter: null,
                    id: 'InformacoesAdicionais',
                    name: 'Informações Adicionais',
                    sortable: false,
                    width: null
                }
            ];
        }
    }

})();
