silegis-mg/editor-articulacao

View on GitHub
empacotamento/angular1.js

Summary

Maintainability
A
0 mins
Test Coverage
/* Copyright 2017 Assembleia Legislativa de Minas Gerais
 * 
 * This file is part of Editor-Articulacao.
 *
 * Editor-Articulacao is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, version 3.
 *
 * Editor-Articulacao is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.

 * You should have received a copy of the GNU Lesser General Public License
 * along with Editor-Articulacao.  If not, see <http://www.gnu.org/licenses/>.
 */

import EditorArticulacaoController from '../src/EditorArticulacaoController';
import interpretadorArticulacao from '../src/interpretadorArticulacao';

window.angular.module('silegismg-editor-articulacao', [])
    .directive('silegismgEditorArticulacaoConteudo', editorArticulacaoConteudoDirective)
    .service('silegismgInterpretadorArticulacaoService', interpretadorArticulacaoService);

function editorArticulacaoConteudoDirective() {
    return {
        restrict: 'EAC',
        require: 'ngModel',
        scope: {
            opcoes: '<?'
        },
        link: function(scope, element, attrs, ngModel) {
            ngModel.$render = () => {
                scope.ctrl.lexml = ngModel.$viewValue;
            };

            element[0].addEventListener('change', () => {
                try {
                    ngModel.$setViewValue(scope.ctrl.lexml.outerHTML, 'change');
                    ngModel.$setValidity('lexml', true);
                } catch (e) {
                    ngModel.$setValidity('lexml', false);
                    throw e;
                }
            });

            scope.$on('$destroy', () => scope.ctrl.desregistrar());
        },
        controller: ['$element', '$scope', ($element, $scope) => new EditorArticulacaoController($element[0], $scope.opcoes)],
        controllerAs: 'ctrl'
    };
}

function interpretadorArticulacaoService() {
    return interpretadorArticulacao;
}