Source: components/admin/controllers/parametrizacao.controller.js

/**
 * @ngdoc controllers
 * @name Parametrizacao
 * @module s4c.components.admin.controllers.Parametrização
 *
 * @description
 * `AdminParametrizacaoCtrl` Controller da tela de Parametrização do módulo de administração
 * 
 * 
 */
(function () {
    'use strict';

    function AdminParametrizacaoCtrl($scope, $rootScope, $http, $mdDialog, ParametrosS4C, MainState, GRIDSTER_OPTIONS_EDICAO) {

        /**
         * @method _makePos
         * @param {*} coords 
         */
        function _makePos(coords) {
            var pos = 'SRID=4326;POINT(';
            pos += coords.latitude + ' ';
            pos += coords.longitude + ')';

            return pos;
        }

        /**
         * @method _blankLatLng
         * @param {*} coords 
         */
        function _blankLatLng(coords) {
            var ret = (
                coords !== null &&
                (typeof coords.latitude === 'string' || typeof coords.latitude === 'number') &&
                (typeof coords.longitude === 'string' || typeof coords.longitude === 'number')
            );

            return ret;
        }

        $scope.posInicial = $rootScope.ParametrosS4C.mapaPosInicial;
        $scope.previsao = $rootScope.ParametrosS4C.posPrevisao;
        $scope.versoesApiViatura = [{
            label: '1',
            value: 1
        }, {
            label: '2',
            value: 2
        }]

        /**
         * @method isToShow
         */
        $scope.isToShow = function (label) {
            return MainState.isToShow(label);
        }

        MainState.loadGridsterOptions();
        /**
         * @method openCellList
         */
        $scope.openCellList = function () {
            var confirm = $mdDialog.confirm({
                locals: {},
                templateUrl: 'app/components/admin/modulos/parametrizacao/presetConfig.html',
                controller: function ($scope, $mdDialog, ParametrosS4C) {

                    $scope.res = $scope.$root.res;
                    $scope.cells = [];
                    var parametrosS4C;

                    ParametrosS4C.downloadParametros().then(function (parametros) {
                        loadGridCells(parametros);
                        parametrosS4C = parametros;
                    });

                    /**
                     * @method ok
                     */
                    $scope.ok = function () {
                        var newArray = convertCellsToOneArray();
                        parametrosS4C.presetCellsConfig = newArray;
                        ParametrosS4C.atualizarParametros(parametrosS4C);
                        $mdDialog.hide();
                    }

                    /**
                     * @method cancelar
                     */
                    $scope.cancelar = function () {
                        $mdDialog.hide();
                    };

                    /**
                     * @method convertCellsToOneArray
                     */
                    function convertCellsToOneArray(){
                        var newArr = [];
                        for(var i = 0; i < $scope.cells.length; i++){
                            newArr = newArr.concat($scope.cells[i]);
                        }
                        return newArr;
                    }

                    /**
                     * @method loadGridCells
                     * @param {*} parametros 
                     */
                    function loadGridCells(parametros){
                        for (var row = 0; row < MainState.getGridRowsCols().rows; row++) {
                            $scope.cells[row] = [];
                            for (var col = 0; col < MainState.getGridRowsCols().cols; col++) {
                                var cell = { name: '[ ' + row + ', ' + col + ' ]', col: col, row: row, val: false };
                                if (parametros.presetCellsConfig) {
                                    for(var index3 = 0; index3 < parametros.presetCellsConfig.length; index3++){
                                        if(parametros.presetCellsConfig[index3].row == cell.row && parametros.presetCellsConfig[index3].col == col){
                                            cell.val = parametros.presetCellsConfig[index3].val;
                                        }
                                    }
                                }
                                $scope.cells[row][col] = cell;
                            }
                        }
                    }
                },
                parent: angular.element(document.body)
            });

            $mdDialog.show(confirm).then(function () {
            }, function () {
            });
        }

        $scope.isElectron = navigator.userAgent.indexOf("Electron") != -1;
        /**
         * @method openFileSystem
         */
        $scope.openFileSystem = function () {

            MainState.getConfigFile().then(function (file) {

                var confirm = $mdDialog.confirm({
                    locals: { file: file },
                    templateUrl: 'app/components/admin/modulos/parametrizacao/dialogoConfig.html',
                    controller: function ($scope, $mdDialog, file) {

                        $scope.res = $scope.$root.res;
                        $scope.file = file;

                        $scope.ok = function () {

                            MainState.setConfigFile($scope.file);
                            $mdDialog.hide();
                        }

                        $scope.cancelar = function () {
                            $mdDialog.hide();
                        };
                    },
                    parent: angular.element(document.body)
                });

                $mdDialog.show(confirm).then(function () {
                }, function () {
                });
            });
        }

        /**
         * @method adicionarNovaLinha
         */
        $scope.adicionarNovaLinha = function () {
            var config = {};
            config.name = '';
            config.hostname = '';
            config.key = '';
            if ($rootScope.ParametrosS4C.multivisConfig == null) {
                $rootScope.ParametrosS4C.multivisConfig = [];
            }
            $rootScope.ParametrosS4C.multivisConfig.push(config);
        }

        /**
         * @method removeLinha
         */
        $scope.removeLinha = function (index) {
            $rootScope.ParametrosS4C.multivisConfig.splice(index, 1);
        }

        /**
         * @method salvarParametros
         */
        function salvarParametros() {

            if (_blankLatLng($scope.posInicial)) {
                var mapaPosInicial = _makePos($scope.posInicial);
                $rootScope.ParametrosS4C.mapaPosInicial = mapaPosInicial;
            }

            if (_blankLatLng($scope.previsao)) {
                var posPrevisao = _makePos($scope.previsao);
                $rootScope.ParametrosS4C.posPrevisao = posPrevisao;
            }

            if ($rootScope.ParametrosS4C.mapaPosInicial != null && $rootScope.ParametrosS4C.mapaPosInicial.coordinates != null) {
                $rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[0] =
                    $rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[0].toString().replace(',', '.');

                $rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[1] =
                    $rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[1].toString().replace(',', '.');

                if ($rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[1].indexOf(",") == -1
                    && $rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[1].indexOf(".") == -1) {

                    $rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[1] += '.00';
                }

                if ($rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[0].indexOf(",") == -1
                    && $rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[0].indexOf(".") == -1) {

                    $rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[0] += '.00';
                }
                var jsonArray = [];
                jsonArray.push($rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[0]);
                jsonArray.push($rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates[1]);
                $rootScope.ParametrosS4C.mapaPosInicial.coordinates = {};
                $rootScope.ParametrosS4C.mapaPosInicial.coordinates.coordinates = jsonArray;
            }

            ParametrosS4C.atualizarParametros($rootScope.ParametrosS4C)
                .then(function () {
                    $mdDialog
                        .show($mdDialog.alert()
                            .title($scope.res('COMUM_SUCESSO'))
                            .content($scope.res('COMUM_MENSAGEMPARAMETROSSALVOSCOMSUCESSO'))
                            .ok($scope.res('COMUM_OK')));
                });
        }

        angular.extend($scope, {
            salvarParametros: salvarParametros,
            parametrizacao: {},
            res: $scope.$root.res
        });
    }

    AdminParametrizacaoCtrl.$inject = [
        '$scope',
        '$rootScope',
        '$http',
        '$mdDialog',
        'ParametrosS4C',
        'MainState',
        'GRIDSTER_OPTIONS_EDICAO'
    ];

    angular.module('s4c.controllers.AdminParametrizacaoCtrl', ['s4c.services.ParametrosS4C'])
        .controller('AdminParametrizacaoCtrl', AdminParametrizacaoCtrl);

}());