Skip to content

Instantly share code, notes, and snippets.

@ErickWendel
Last active December 1, 2016 19:12
Show Gist options
  • Save ErickWendel/4e5a44880a5b833b842a8dcc5f229283 to your computer and use it in GitHub Desktop.
Save ErickWendel/4e5a44880a5b833b842a8dcc5f229283 to your computer and use it in GitHub Desktop.
uiPhoEndereco.directive.js
'use strict';
function UiPhoEndereco() {
return {
templateUrl: 'app/modules/main/scripts/directives/uiPhoEndereco/uiPhoEndereco.html',
restrict: 'AE',
require: ['uiText', 'ui-pho-select', 'vsGoogleAutocomplete'],
scope: {
model: '='
},
controller: function ($scope, TIPO_ENDERECO, PaisesService) {
var camposEndereco = {
logradouro: '',
numero: '',
enderecoCompleto: '',
place: '',
placeId: '',
uf: '',
estado: '',
pais: '',
cep: '',
bairro: '',
};
$scope.TIPO_ENDERECO = TIPO_ENDERECO;
$scope.paises = [];
$scope.enderecoValido = true;
$scope.model = $scope.model || {};
$scope.enderecoApi = angular.copy(camposEndereco);
$scope.camposManuais = angular.copy(camposEndereco);
$scope.validarEndereco = validarEndereco;
$scope.obrigatoriedadeEndereco = obrigatoriedadeEndereco;
var _keys = Object.keys(camposEndereco);
(function iniciar() {
listarPaises();
})();
//remove o campo completo da API
$scope.$watch('model.place', removerCamposDesnecessarios);
$scope.$watch('model.placeId', validarEndereco);
$scope.$watch('model', function (value) {
if (Object.keys(value).length === 0) return;
debugger;
verificarCamposManuais();
}, true);
/// functions
function obrigatoriedadeEndereco() {
var keys = Object.keys($scope.camposManuais);
for (var i = 0; i < keys.length; i++) {
var campoManualHabilitado = $scope.camposManuais[keys[i]];
if (campoManualHabilitado) return false;
}
return true;
}
function removerCamposDesnecessarios(value) {
delete $scope.model.place;
}
function listarPaises() {
PaisesService.listar().then(function (result) {
$scope.paises = result;
});
}
function validarEndereco(value) {
if (!(!!$scope.model.enderecoCompleto) && !!value) {
_keys.map(function (key) {
$scope.camposManuais[key] = true;
});
return;
}
else if (!(!!$scope.model.enderecoCompleto)) {
return;
}
$scope.enderecoValido = !!value;
if (!$scope.enderecoValido) return;
verificarCamposManuais();
}
function verificarCamposManuais() {
_keys.map(function (key) {
var campoManualFaltante = $scope.model[key] === '' || !$scope.model[key];
$scope.camposManuais[key] = campoManualFaltante;
});
}
}
};
};
module.exports = function (app) {
app.directive('uiPhoEndereco', UiPhoEndereco);
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment