<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pt-br">
		<id>http://wiki.mstech.com.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thiago.silvestre</id>
		<title>MSTECH wiki - Contribuições do usuário [pt-br]</title>
		<link rel="self" type="application/atom+xml" href="http://wiki.mstech.com.br/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Thiago.silvestre"/>
		<link rel="alternate" type="text/html" href="http://wiki.mstech.com.br/index.php/Especial:Contribui%C3%A7%C3%B5es/Thiago.silvestre"/>
		<updated>2026-05-09T05:52:35Z</updated>
		<subtitle>Contribuições do usuário</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>http://wiki.mstech.com.br/index.php?title=Arquivo:Diagram_Avalia%2B.jpg&amp;diff=4124</id>
		<title>Arquivo:Diagram Avalia+.jpg</title>
		<link rel="alternate" type="text/html" href="http://wiki.mstech.com.br/index.php?title=Arquivo:Diagram_Avalia%2B.jpg&amp;diff=4124"/>
				<updated>2016-12-27T16:33:52Z</updated>
		
		<summary type="html">&lt;p&gt;Thiago.silvestre: Thiago.silvestre carregada uma nova versão de Arquivo:Diagram Avalia+.jpg&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Imagem das tabelas do Sistema Avalia+&lt;/div&gt;</summary>
		<author><name>Thiago.silvestre</name></author>	</entry>

	<entry>
		<id>http://wiki.mstech.com.br/index.php?title=Avalia%2B&amp;diff=3545</id>
		<title>Avalia+</title>
		<link rel="alternate" type="text/html" href="http://wiki.mstech.com.br/index.php?title=Avalia%2B&amp;diff=3545"/>
				<updated>2016-11-29T10:09:52Z</updated>
		
		<summary type="html">&lt;p&gt;Thiago.silvestre: /* Arquitetura */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Descrição==&lt;br /&gt;
&lt;br /&gt;
Descrever nesta área o que é o produto, quais as necessidades de negócio pretende atender, a quem se destina.&lt;br /&gt;
&lt;br /&gt;
==Funcionalidades de Ouro==&lt;br /&gt;
&lt;br /&gt;
Nesta seção, insira 3 ou 4 funcionalidades que '''diferenciam''' e destacam o produto. De preferência coloque apenas os nomes das funcionalidades&lt;br /&gt;
&lt;br /&gt;
==Link do Product Backlog==&lt;br /&gt;
&lt;br /&gt;
Nesta seção, insira o link do Product Backlog do produto&lt;br /&gt;
&lt;br /&gt;
==Arquitetura==&lt;br /&gt;
[[Arquivo:Avalia+3.png]]&lt;br /&gt;
&lt;br /&gt;
==Arquitetura BD==&lt;br /&gt;
&lt;br /&gt;
[[:Arquivo:Diagram Avalia+.jpg|Imagem da modelagem de tabelas]]&lt;br /&gt;
&lt;br /&gt;
==Arquitetura Front-End==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;O Avalia+ não se utiliza de rotas virtuais do ArgularJS, diferentemente de uma aplicação SPA[http://tableless.com.br/criando-uma-aplicacao-single-page-com-angularjs/]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Todos os componentes (construídos internamente) do Avalia+ (controllers, directives, filters, services e etc) são construídos baseados no pattern IIFE[https://sarfraznawaz.wordpress.com/2012/01/26/javascript-self-invoking-functions/]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estrutura funcional===&lt;br /&gt;
&lt;br /&gt;
- Pastas (negrito) &amp;lt;br/&amp;gt;&lt;br /&gt;
- Arquivos (negrito + itálico)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;css&amp;lt;/b&amp;gt;&lt;br /&gt;
**&amp;lt;b&amp;gt;vendor&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;angular-motion&amp;lt;/b&amp;gt;&lt;br /&gt;
****&amp;lt;b&amp;gt;modules&amp;lt;/b&amp;gt; - animações utilizaveis com angularJS ng-animate&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;awesome-bootstrap-checkbox.css&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - customizações de layout realizadas sobre os campos checkbox/radio do html&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;bootstrap.css&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - franework&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;font-awesome.css&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - customização de fontes para bootstrap&lt;br /&gt;
**&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;prova.css&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - estilos para gerar .pdf da prova&lt;br /&gt;
**&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;style.scss&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - estilos gerais do sistema &lt;br /&gt;
*&amp;lt;b&amp;gt;fonts&amp;lt;/b&amp;gt; - fontes awesome/material&lt;br /&gt;
*&amp;lt;b&amp;gt;images&amp;lt;/b&amp;gt; - imagens gerais do sistema/manual do sistema em .pdf&lt;br /&gt;
*&amp;lt;b&amp;gt;js&amp;lt;/b&amp;gt;&lt;br /&gt;
**&amp;lt;b&amp;gt;angular&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;controllers&amp;lt;/b&amp;gt; - rotas 'físicas' asp.NET&lt;br /&gt;
***&amp;lt;b&amp;gt;directives&amp;lt;/b&amp;gt;&lt;br /&gt;
****&amp;lt;b&amp;gt;_bundle&amp;lt;/b&amp;gt; - todas as diretivas utilizadas no sistema&lt;br /&gt;
****&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;directives.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - modulo centralizador de diretivas&lt;br /&gt;
***&amp;lt;b&amp;gt;filters&amp;lt;/b&amp;gt;&lt;br /&gt;
****&amp;lt;b&amp;gt;_bundle&amp;lt;/b&amp;gt; - todos os filtros utilizados no sistema&lt;br /&gt;
***&amp;lt;b&amp;gt;models&amp;lt;/b&amp;gt; - todos os 'models' são serviços que são construídos com base na utilização dos serviços nativos '$http/$resource'&lt;br /&gt;
***&amp;lt;b&amp;gt;services&amp;lt;/b&amp;gt;&lt;br /&gt;
****&amp;lt;b&amp;gt;_bundle&amp;lt;/b&amp;gt; - todos os serviços utilizados no sistema&lt;br /&gt;
****&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;ApiSetting.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - config. Api&lt;br /&gt;
****&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;services.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - modulo centralizador de serviços&lt;br /&gt;
****&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;authenticationinterceptor.service.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - modulo responsável por interceptar todas requisições realizadas sobre AJAX &lt;br /&gt;
**&amp;lt;b&amp;gt;vendor&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;angular&amp;lt;/b&amp;gt; - framework AngularJS&lt;br /&gt;
***&amp;lt;b&amp;gt;compressor&amp;lt;/b&amp;gt; - realiza a compressão de arquivos de imagem (.jpg ideal) utilizando canvas do html&lt;br /&gt;
***&amp;lt;b&amp;gt;datepicker&amp;lt;/b&amp;gt; - plugin para exibição e utilização de calendário&lt;br /&gt;
***&amp;lt;b&amp;gt;highcharts&amp;lt;/b&amp;gt; - plugin para exibição gráficos&lt;br /&gt;
***&amp;lt;b&amp;gt;redactor&amp;lt;/b&amp;gt; - plugin editor de textos&lt;br /&gt;
***&amp;lt;b&amp;gt;resumable&amp;lt;/b&amp;gt; - plugin para realizar uploads com possibilidade de pause&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;bootstrap-3.2.0.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;jquery-2.1.1.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;jquery-ui.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;mathJax.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - framework para exibição de formulas matemáticas complexas através de &amp;lt;b&amp;gt;LaTeX, MathML[http://docs.mathjax.org/en/latest/tex.html]&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;moment.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - plugin para formatação de datas&lt;br /&gt;
*&amp;lt;b&amp;gt;tests&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Todos os controllers AngularJS (construídos internamente) são baseados em:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;- &amp;lt;b&amp;gt;getter&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
* na maioria dos controllers é injetado os módulos base (centralizadores) ['services', 'filters', 'directives]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
      angular.module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;- &amp;lt;b&amp;gt;setter&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
* nome é baseado no prefix + suffix : [nome da View asp.NET] + [&amp;quot;Controller&amp;quot;]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
      angular.module('appMain').controller(&amp;quot;FormAbsenceReasonController&amp;quot;, FormAbsenceReasonController);&lt;br /&gt;
&lt;br /&gt;
      function FormAbsenceReasonController() {};&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;- &amp;lt;b&amp;gt;injector&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
* realiza as injeções de dependências&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
     FormAbsenceReasonController.$inject = ['$scope', '$rootScope', '$window', '$notification', '$util', 'AbsenceReasonModel'];&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;- &amp;lt;b&amp;gt;instanciar function no escopo &amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
* funções que são criadas e atribuídas ao escopo angular devem possuir um nome para facilitar o rastreamento de erros no console. Funções anônimas atribuídas diretamente ao escopo do Angular perdem a rastreabilidade em determinados casos.&lt;br /&gt;
* funções atribuídas ao escopo ficam visíveis através dos $scopes do angular, algumas pessoas preferem utilizar funções no escopo se realmente for necessário seu uso na view (.html), e optam por deixa-las privadas (não atribuídas ao escopo angular).&lt;br /&gt;
* se for implementado o uso de testes unitários devido ao ciclo de vida do angular o Jasmine[http://jasmine.github.io/] só consegue enxergar funções públicas (presentes no escopo do angular), recomenda-se cautela quando ao uso de funções privadas em soluções angular.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
     //função publica: para acesso no escopo do angularJS &lt;br /&gt;
     $scope.minhaFuncPublic = function __minhaFuncPublic() { };&lt;br /&gt;
&lt;br /&gt;
     //função publica: para acesso no escopo do angularJS, porém anônima&lt;br /&gt;
     $scope.minhaFuncPublicAnonymous = function () { };&lt;br /&gt;
&lt;br /&gt;
     //função privada: sem acesso no escopo do angularJS &lt;br /&gt;
     function minhaFunc() { };&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
====Exemplo controller AngularJS====&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;- arquivo: formAbsenceReasonController.js&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * function Cadastro/Edição Absence Reason Controller&lt;br /&gt;
 * @namespace Controller&lt;br /&gt;
 * @author Julio Cesar da Silva - 02/03/2016&lt;br /&gt;
 */&lt;br /&gt;
(function (angular, $) {&lt;br /&gt;
&lt;br /&gt;
    'use strict';&lt;br /&gt;
&lt;br /&gt;
    //~SETTER&lt;br /&gt;
    angular&lt;br /&gt;
        .module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
    &lt;br /&gt;
    //~GETTER&lt;br /&gt;
    angular&lt;br /&gt;
        .module('appMain')&lt;br /&gt;
        .controller(&amp;quot;FormAbsenceReasonController&amp;quot;, FormAbsenceReasonController);&lt;br /&gt;
    &lt;br /&gt;
    FormAbsenceReasonController.$inject = ['$scope', '$rootScope', '$window', '$notification', '$util', 'AbsenceReasonModel'];&lt;br /&gt;
&lt;br /&gt;
    function FormAbsenceReasonController($scope, $rootScope, $window, $notification, $util, AbsenceReasonModel) {&lt;br /&gt;
&lt;br /&gt;
        $scope.params = $util.getUrlParams();&lt;br /&gt;
        $scope.absenceReason = { Description: undefined };&lt;br /&gt;
&lt;br /&gt;
        function Init() {&lt;br /&gt;
&lt;br /&gt;
            $notification.clear();&lt;br /&gt;
        &lt;br /&gt;
            if ($scope.params.Id !== undefined) {&lt;br /&gt;
&lt;br /&gt;
                AbsenceReasonModel.findSimple({ Id: $scope.params.Id }, function (result) {&lt;br /&gt;
&lt;br /&gt;
                    if (result.success) {&lt;br /&gt;
                        $scope.absenceReason = result.absenceReason;&lt;br /&gt;
                    }&lt;br /&gt;
                    else {&lt;br /&gt;
                        $notification[result.type ? result.type : 'error'](result.message);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            }  &lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $scope.setNewDefault = function setNewDefault() {&lt;br /&gt;
            if (!$scope.absenceReason.IsDefault) {&lt;br /&gt;
                angular.element('#modal').modal('show');&lt;br /&gt;
            }&lt;br /&gt;
            $scope.absenceReason.IsDefault = true;&lt;br /&gt;
        };&lt;br /&gt;
        &lt;br /&gt;
        $scope.salvar = function __salvar() {&lt;br /&gt;
&lt;br /&gt;
            if ($scope.verifica()) {&lt;br /&gt;
&lt;br /&gt;
                AbsenceReasonModel.save($scope.absenceReason, function (result) {&lt;br /&gt;
&lt;br /&gt;
                    if (result.success) {&lt;br /&gt;
                        $notification.success(result.message);&lt;br /&gt;
                        $window.location.href = '/AbsenceReason/List';&lt;br /&gt;
                    }&lt;br /&gt;
                    else {&lt;br /&gt;
                        $notification[result.type ? result.type : 'error'](result.message);&lt;br /&gt;
                    }                  &lt;br /&gt;
                }); &lt;br /&gt;
            }&lt;br /&gt;
        };&lt;br /&gt;
        &lt;br /&gt;
        $scope.voltar = function __voltar() {&lt;br /&gt;
            $window.location.href = '/AbsenceReason/List';&lt;br /&gt;
        };&lt;br /&gt;
            &lt;br /&gt;
        $scope.verifica = function __verifica() {&lt;br /&gt;
&lt;br /&gt;
            if (!$scope.absenceReason.Description) {&lt;br /&gt;
                $notification.alert('O campo &amp;quot;Descrição&amp;quot; é obrigatório.');    &lt;br /&gt;
                angular.element('#description').focus();&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        Init();&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
})(angular, jQuery);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;- arquivo: ~\AbsenceReason\Form.html&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html data-ng-app=&amp;quot;appMain&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;head&amp;gt;&lt;br /&gt;
       &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;title&amp;gt;FormAbsenceReason&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;/head&amp;gt;&lt;br /&gt;
   &amp;lt;body&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wellCustom&amp;quot; data-ng-controller=&amp;quot;FormAbsenceReasonController&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Directives===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Quase todas as diretivas ficam centralizadas no module &amp;lt;b&amp;gt;directives&amp;lt;/b&amp;gt;, com exceção de algumas third party (tooltip, popover e etc).&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A vantagem de adotar um modulo centralizador é que as diretivas que são injetadas são somente aquelas carregadas (arquivo .js) pelo BunfleConfig.cs.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====alert====&lt;br /&gt;
&amp;lt;p&amp;gt;dependência: &amp;lt;b&amp;gt;../services/_bundle/notification/notification.js&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Composto por 2 diretivas:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;alert&amp;lt;/b&amp;gt; - responsável por 'vigiar' o service &amp;lt;b&amp;gt;$notification&amp;lt;/b&amp;gt; e criar/excluir uma nova notificação visual (html).&lt;br /&gt;
* &amp;lt;b&amp;gt;autoClose&amp;lt;/b&amp;gt; - responsável por 'empilhar' as notificações em chamadas assíncronas e remover no término do tempo de permanência na pilha.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
   &amp;lt;alert&amp;gt;&amp;lt;/alert&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====checkbox-group====&lt;br /&gt;
&amp;lt;p&amp;gt;Utiliza um model para armazenar uma lista de checkbox selecionados&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div data-ng-repeat=&amp;quot;($indexPeriodo, periodo) in periodoCurso.lista track by $indexPeriodo&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;input id=&amp;quot;checkbox_{{$indexPeriodo}}&amp;quot; type=&amp;quot;checkbox&amp;quot; checklist-model=&amp;quot;periodoCurso.selecionados&amp;quot; checklist-value=&amp;quot;periodo&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;label for=&amp;quot;checkbox_{{$indexPeriodo}}&amp;quot;&amp;gt;{{periodo.Description}}&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====collapse====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza o controle de &amp;lt;b&amp;gt;collapse (bootstrap)&amp;lt;/b&amp;gt; em elementos de um ng-repeat. Utilizado no sistema somente &amp;lt;i&amp;gt;/Parameter&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;accPadrao&amp;quot; ng-model=&amp;quot;grupos&amp;quot; data-bs-collapse&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;cards&amp;quot; ng-repeat=&amp;quot;(catIndex,category) in categories track by catIndex&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;div class=&amp;quot;tituloAcc&amp;quot; data-bs-collapse-toggle&amp;gt;&lt;br /&gt;
               &amp;lt;h4&amp;gt;&lt;br /&gt;
                  {{category.Description}}&lt;br /&gt;
                  &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;{{ grupos == $index ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}&amp;lt;/i&amp;gt;&lt;br /&gt;
               &amp;lt;/h4&amp;gt;&lt;br /&gt;
           &amp;lt;/div&amp;gt;&lt;br /&gt;
           &amp;lt;div class=&amp;quot;panel-collapse&amp;quot; data-bs-collapse-target&amp;gt;&lt;br /&gt;
             conteúdo aqui&lt;br /&gt;
           &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====datepicker-directive====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza o controle do plugin datepicker no escopo do angularJS&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;dependência:&amp;lt;/b&amp;gt; vendor/datepicker.js&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;input id=&amp;quot;dateStart&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Data de Início&amp;quot; data-ng-model=&amp;quot;dateStart&amp;quot; datepicker/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====fieldinteger====&lt;br /&gt;
&amp;lt;p&amp;gt;Permite somente a entrada de caracteres numéricos.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;input type=&amp;quot;text&amp;quot; data-ng-model=&amp;quot;idade&amp;quot; fieldinteger /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====highcharts-ng====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza a manipulação do plugin.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;highchart class=&amp;quot;chart&amp;quot; config=&amp;quot;chart&amp;quot;&amp;gt;&amp;lt;/highchart&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====item-brief====&lt;br /&gt;
&amp;lt;p&amp;gt;Mostra o resumo detalhado de um item. (Obrigatório id do item)&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;item-brief item-id=&amp;quot;{{item.Id}}&amp;quot; can-print=&amp;quot;false&amp;quot;&amp;gt;&amp;lt;/item-brief&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====menu====&lt;br /&gt;
&amp;lt;p&amp;gt;Controla e constrói o menu do sistema. (localizado na master page)&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div menu user='@{Html.RenderAction(&amp;quot;NomeUsuarioLogado&amp;quot;,&amp;quot;Layout&amp;quot;);}' system='@ViewBag.Title'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====modal====&lt;br /&gt;
&amp;lt;p&amp;gt;Constrói uma modal. Utiliza-se da diretiva nativa &amp;lt;b&amp;gt;ng-transclude&amp;lt;/b&amp;gt; para obter html específico, obedece ao escopo pai do 'controller' (escopo público)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Caso necessário customização das características da modal, utilizar convencional do bootstrap sem a directiva. &amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;modal id=&amp;quot;cancelModal&amp;quot; modal-title=&amp;quot;&amp;lt;p&amp;gt;Deseja realmente sair?&amp;lt;/p&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;div class=&amp;quot;container-fluid&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
	     &amp;lt;div class=&amp;quot;col-sm-12 text-right&amp;quot;&amp;gt;&lt;br /&gt;
	        &amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;btnPadrao&amp;quot; ng-click=&amp;quot;cancel();&amp;quot;&amp;gt;Sim&amp;lt;/button&amp;gt;&lt;br /&gt;
		&amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;btnCancelar2&amp;quot; data-dismiss=&amp;quot;modal&amp;quot;&amp;gt;Não&amp;lt;/button&amp;gt;&lt;br /&gt;
	     &amp;lt;/div&amp;gt;&lt;br /&gt;
	  &amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;/modal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====modal-alert====&lt;br /&gt;
&amp;lt;p&amp;gt; Notificações internas ao escopo da modal. (Necessário construir no controller objeto de notificações)&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;modal-alert notification=&amp;quot;notification.objNotification&amp;quot;&amp;gt;&amp;lt;/modal-alert&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ng-change-file====&lt;br /&gt;
&amp;lt;p&amp;gt; Chamada de callback quando &amp;lt;b&amp;gt;input['file']&amp;lt;/b&amp;gt; sofre uma alteração. Utilizável para realização de upload de arquivos dentro do escopo do controller.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;input id=&amp;quot;fileInport&amp;quot; type=&amp;quot;file&amp;quot; data-ng-change-file=&amp;quot;upload&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ng-title====&lt;br /&gt;
&amp;lt;p&amp;gt; Mostrar title em options gerador pela diretiva nativa &amp;lt;b&amp;gt;ng-options&amp;lt;/b&amp;gt; na tag &amp;lt;b&amp;gt;&amp;lt;select&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   &amp;lt;script&amp;gt;&lt;br /&gt;
       $scope.pessoas.lista = [{Id: 1, Description:'João'}, {Id: 2, Description:'Paulo'}, {Id: 3, Description:'Ana'}, {Id: 4, Description:'Mayra'}];&lt;br /&gt;
   &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;select class=&amp;quot;form-control&amp;quot;&lt;br /&gt;
        ng-options=&amp;quot;pessoa as pessoa.Description for pessoa in pessoas.lista&amp;quot;&lt;br /&gt;
        ng-title=&amp;quot;pessoas.lista&amp;quot;&lt;br /&gt;
        ng-title-propertie=&amp;quot;Description&amp;quot;&lt;br /&gt;
        ng-title-index=&amp;quot;1&amp;quot;&lt;br /&gt;
        ng-title-selected&amp;gt;&lt;br /&gt;
        &amp;lt;option value=&amp;quot;&amp;quot;&amp;gt;--Selecione--&amp;lt;/option&amp;gt;&lt;br /&gt;
   &amp;lt;/select&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ng-show-loading====&lt;br /&gt;
&amp;lt;p&amp;gt; Mostra/oculta html de loading. Utilizado dentro do template da diretiva &amp;lt;b&amp;gt;/directives/_bundle/preloading/preloading.js&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div id=&amp;quot;preloading&amp;quot; ng-show-loading class=&amp;quot;ng-cloak loading-box&amp;quot;&amp;gt;&amp;lt;label&amp;gt;{{message}}&amp;lt;/label&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====notification-filter====&lt;br /&gt;
&amp;lt;p&amp;gt; Descontinuada... Os filtros do sistema não seguem um mesmo padrão de construção nos controles, o que torna a diretiva dispensável&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====page====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza o controle da paginação.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;dependência: &amp;lt;/b&amp;gt; &amp;quot;services/_bundle/pager/service.js&amp;quot; necessário injeção de dependência no controller - &amp;lt;b&amp;gt;$pager&amp;lt;/b&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Há 2 formas de indicar 'paginador':&amp;lt;/p&amp;gt;&lt;br /&gt;
* atributo &amp;quot;pager&amp;quot; funciona com objetos do escopo bind-two-way do angular, passagem de vários níveis de objeto&lt;br /&gt;
* atributo &amp;quot;varkey&amp;quot; funciona com somente 1 nível de objeto&lt;br /&gt;
- exemplo 1: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;page method=&amp;quot;getUploadQueueStatus()&amp;quot; &lt;br /&gt;
         pager=&amp;quot;pagerUploadQueue.paginate&amp;quot; &lt;br /&gt;
         total-pages=&amp;quot;{{pagerUploadQueue.pages}}&amp;quot; &lt;br /&gt;
         total-itens=&amp;quot;{{pagerUploadQueue.totalItens}}&amp;quot; &lt;br /&gt;
         page-size=&amp;quot;pagerUploadQueue.pageSize&amp;quot; &lt;br /&gt;
         data-arr-page-size=&amp;quot;[10,20,30,40,50,100]&amp;quot;&amp;gt;&amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
- exemplo 2: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;page method=&amp;quot;Paginate()&amp;quot; &lt;br /&gt;
         varkey=&amp;quot;paginate &amp;quot; &lt;br /&gt;
         total-pages=&amp;quot;{{pages}}&amp;quot; &lt;br /&gt;
         total-itens=&amp;quot;{{totalItens}}&amp;quot; &lt;br /&gt;
         page-size=&amp;quot;pageSize&amp;quot; &lt;br /&gt;
         data-arr-page-size=&amp;quot;[10,20,30,40,50,100]&amp;quot;&amp;gt;&amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
- exemplo no controller&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     $scope.paginate = $pager(ReportCorrectionModel.getDres);&lt;br /&gt;
     $scope.totalItens = 0;&lt;br /&gt;
     $scope.pages = 0;&lt;br /&gt;
     $scope.pageSize = 10;&lt;br /&gt;
     $scope.message = false;&lt;br /&gt;
     $scope.listResult = null;&lt;br /&gt;
&lt;br /&gt;
     $scope.search = function __search() {&lt;br /&gt;
          if (!validateDate() || !validate()) return;&lt;br /&gt;
	     $scope.pages = 0;&lt;br /&gt;
	     $scope.totalItens = 0;&lt;br /&gt;
	     $scope.paginate.indexPage(0);&lt;br /&gt;
	     $scope.pageSize = $scope.paginate.getPageSize();&lt;br /&gt;
	     $scope.searcheableFilter = angular.copy($scope.filters);&lt;br /&gt;
	     Paginate();&lt;br /&gt;
     };&lt;br /&gt;
     &lt;br /&gt;
     function Paginate() { &lt;br /&gt;
         $scope.paginate.paginate($scope.searcheableFilter).then(function (result) {&lt;br /&gt;
             if (result.success) {&lt;br /&gt;
		if (result.lista.length &amp;gt; 0) {&lt;br /&gt;
		    $scope.paginate.nextPage();&lt;br /&gt;
		    $scope.listResult = result.lista;&lt;br /&gt;
		    $scope.QuantidadeTotal = result.QuantidadeTotal;&lt;br /&gt;
		    if (!$scope.pages &amp;gt; 0) {&lt;br /&gt;
		        $scope.pages = $scope.paginate.totalPages();&lt;br /&gt;
		        $scope.totalItens = $scope.paginate.totalItens();&lt;br /&gt;
		    }&lt;br /&gt;
		} else {&lt;br /&gt;
		      $scope.message = true;&lt;br /&gt;
		      $scope.listResult = null;&lt;br /&gt;
		}&lt;br /&gt;
              }&lt;br /&gt;
	      else {&lt;br /&gt;
		  $notification[result.type ? result.type : 'error'](result.message);&lt;br /&gt;
	      }&lt;br /&gt;
       }, function () {&lt;br /&gt;
              $scope.message = true;&lt;br /&gt;
	       $scope.listResult = null;&lt;br /&gt;
       });&lt;br /&gt;
   };&lt;br /&gt;
   $scope.Paginate = Paginate;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====tooltip/popover====&lt;br /&gt;
&amp;lt;p&amp;gt; Responsável por construir as tooltips/popovers do sistema: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
* Para utilização de popover há dependência da tooltip - &amp;lt;b&amp;gt;directives/_bundle/popover/tooltip.js&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;directives/_bundle/popover/helpers/dimensions.js&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;css/vendor/angular-motion/**.css&amp;lt;/b&amp;gt;, aplica as animações&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo popover:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;!-- utilização de popover no html--&amp;gt;&lt;br /&gt;
   &amp;lt;button class=&amp;quot;btnMais&amp;quot;&lt;br /&gt;
           type=&amp;quot;button&amp;quot;&lt;br /&gt;
           data-ng-click=&amp;quot;setMenu(item.Item.ItemId, item.Item.LastVersion, item.Item.BaseTextId)&amp;quot;&lt;br /&gt;
           data-placement=&amp;quot;top&amp;quot; data-trigger=&amp;quot;focus&amp;quot;&lt;br /&gt;
           data-custom-class=&amp;quot;itemListPopover&amp;quot;&lt;br /&gt;
           data-template=&amp;quot;Assets/js/angular/controllers/item/listItemMenu.html&amp;quot;&lt;br /&gt;
           data-animation=&amp;quot;popover-fade&amp;quot;&lt;br /&gt;
           data-container=&amp;quot;body&amp;quot;&lt;br /&gt;
           data-bs-popover=&amp;quot;popovermenu&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;view_list&amp;lt;/i&amp;gt;&lt;br /&gt;
   &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;!-- template listItemMenu.html--&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;popover&amp;quot; tabindex=&amp;quot;-1&amp;quot; ng-show=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;arrow&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;popover-content&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ul class=&amp;quot;listaPopover&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;li&amp;gt;&lt;br /&gt;
		 &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;create&amp;lt;/i&amp;gt;&lt;br /&gt;
		 &amp;lt;a href=&amp;quot;javascript:void(0)&amp;quot; ng-click=&amp;quot;popovermenu.editar(popovermenu.id); $hide()&amp;quot;&amp;gt;Editar&amp;lt;/a&amp;gt;&lt;br /&gt;
	     &amp;lt;/li&amp;gt;&lt;br /&gt;
	     &amp;lt;li ng-hide=&amp;quot;item.Item.ItemNarrated&amp;quot; ng-click=&amp;quot;popovermenu.addItem(popovermenu.id); $hide()&amp;quot;&amp;gt;&lt;br /&gt;
		 &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;add&amp;lt;/i&amp;gt;&lt;br /&gt;
		 &amp;lt;a href=&amp;quot;javascript:void(0)&amp;quot;&amp;gt;Adicionar Item&amp;lt;/a&amp;gt;&lt;br /&gt;
	     &amp;lt;/li&amp;gt;&lt;br /&gt;
	     &amp;lt;li ng-click=&amp;quot;popovermenu.excluir(popovermenu.id); $hide()&amp;quot;&amp;gt;&lt;br /&gt;
		 &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;close&amp;lt;/i&amp;gt;&lt;br /&gt;
		 &amp;lt;a href=&amp;quot;javascript:void(0)&amp;quot;&amp;gt;Excluir&amp;lt;/a&amp;gt;&lt;br /&gt;
	     &amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;/ul&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   //utilização no controller&lt;br /&gt;
   $scope.popovermenu = {&lt;br /&gt;
	title: &amp;quot;empty&amp;quot;,&lt;br /&gt;
	content: &amp;quot;empty&amp;quot;,&lt;br /&gt;
	id: undefined,&lt;br /&gt;
	lastVersion: undefined,&lt;br /&gt;
        visualizar: visualizarCallback, //function&lt;br /&gt;
        editar: editarCallback, //function&lt;br /&gt;
	excluir: excluirCallback, //function&lt;br /&gt;
	addItem: addItemCallback, //function&lt;br /&gt;
   };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- exemplo tooltip com title:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;button type=&amp;quot;button&amp;quot;&lt;br /&gt;
             class=&amp;quot;btnPadrao&amp;quot;&lt;br /&gt;
             data-btn-checkbox=&amp;quot;&amp;quot;&lt;br /&gt;
             data-btn-checkbox-true=&amp;quot;1&amp;quot;&lt;br /&gt;
             data-btn-checkbox-false=&amp;quot;0&amp;quot;&lt;br /&gt;
             data-trigger=&amp;quot;hover&amp;quot;&lt;br /&gt;
             data-type=&amp;quot;success&amp;quot;&lt;br /&gt;
             data-title=&amp;quot;Aqui vai a descrição do que esse elemento representa.&amp;quot;&lt;br /&gt;
             data-placement=&amp;quot;top&amp;quot;&lt;br /&gt;
             data-container=&amp;quot;body&amp;quot;&lt;br /&gt;
             data-bs-tooltip&amp;gt;&lt;br /&gt;
            &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;add&amp;lt;/i&amp;gt;&lt;br /&gt;
      &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- exemplo tooltip com template:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- Utilização de tooltip com template --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;cursor:pointer; right: 15px;&amp;quot;&lt;br /&gt;
         data-trigger=&amp;quot;hover&amp;quot;&lt;br /&gt;
         data-type=&amp;quot;success&amp;quot;&lt;br /&gt;
         data-template=&amp;quot;Assets/js/angular/controllers/test/currentFiltersDiscipline.html&amp;quot;&lt;br /&gt;
         data-placement=&amp;quot;bottom&amp;quot;&lt;br /&gt;
         data-animation=&amp;quot;am-fade&amp;quot;&lt;br /&gt;
         data-container=&amp;quot;body&amp;quot;&lt;br /&gt;
         data-bs-tooltip&lt;br /&gt;
         class=&amp;quot;notificationFilter&amp;quot;&amp;gt;{{popoverFiltersDisciplines.selecteds.length}}&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Utilização de tooltip com template --&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;tooltip in&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;tooltip-inner html-bind-trusted imgResponsive&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div data-ng-if=&amp;quot;popoverFiltersDisciplines.selecteds.length!=0&amp;quot;&amp;gt;Filtros selecionados&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;hr data-ng-if=&amp;quot;popoverFiltersDisciplines.selecteds.length!=0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ul style=&amp;quot;list-style:none; padding: 0px 0px 0px 0px;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;li data-ng-repeat=&amp;quot;($index, filter) in popoverFiltersDisciplines.selecteds track by $index&amp;quot; style=&amp;quot;margin: 10px 0px 0px 0px&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;check&amp;lt;/i&amp;gt;  {{filter.Description}}&lt;br /&gt;
                &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
            &amp;lt;span data-ng-if=&amp;quot;popoverFiltersDisciplines.selecteds.length==0&amp;quot;&amp;gt;Nenhum filtro selecionado&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====preloading====&lt;br /&gt;
&amp;lt;p&amp;gt;Indica que há requisições Ajax em progresso no sistema. Trabalha baseando-se no service &amp;lt;b&amp;gt;$httpTransform&amp;lt;/b&amp;gt; presente no arquivo &amp;lt;b&amp;gt;/service/authenticationinterceptor.service.js&amp;lt;/b&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;preloading message=&amp;quot;Carregando...&amp;quot;&amp;gt;&amp;lt;/preloading&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====radio-select====&lt;br /&gt;
&amp;lt;p&amp;gt;Seleção de radio.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div radio-select &lt;br /&gt;
         radiolist=&amp;quot;situationList&amp;quot; &lt;br /&gt;
         radioselected=&amp;quot;selectedObjSituation&amp;quot; &lt;br /&gt;
         custom-class=&amp;quot;radio-inline&amp;quot; &lt;br /&gt;
         style=&amp;quot;margin: 0 -84px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====rating====&lt;br /&gt;
&amp;lt;p&amp;gt;Rating de dificuldades do sistema.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div rating-directive &lt;br /&gt;
        id=&amp;quot;dificuldade&amp;quot; &lt;br /&gt;
        list=&amp;quot;dificuldade.lista&amp;quot; &lt;br /&gt;
        difficulty=&amp;quot;dificuldade.objDificuldade&amp;quot; &lt;br /&gt;
        lock=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====redactor-directive====&lt;br /&gt;
&amp;lt;p&amp;gt;Controlar o plugin redactor.js através de uma directiva angularJS.&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;images&amp;lt;/b&amp;gt; - model que armazena os ids dos arquivos utilizados dentro do redactor&lt;br /&gt;
* &amp;lt;b&amp;gt;model&amp;lt;/b&amp;gt; - armazena o texto html gerado pelo redactor&lt;br /&gt;
* &amp;lt;b&amp;gt;tipo&amp;lt;/b&amp;gt; - indica para qual campo (tabela) o arquivo presente no redactor pertence&lt;br /&gt;
* &amp;lt;b&amp;gt;plugins&amp;lt;/b&amp;gt; - foram criados plugins internos para o redactor, veja: vendor/redactor&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;textarea redactor&lt;br /&gt;
              id=&amp;quot;textoBase&amp;quot;&lt;br /&gt;
              name=&amp;quot;textoBase&amp;quot; &lt;br /&gt;
              class=&amp;quot;form-control&amp;quot; &lt;br /&gt;
              images=&amp;quot;textobase.Files&amp;quot; &lt;br /&gt;
              data-ng-model=&amp;quot;textobase.Description&amp;quot; &lt;br /&gt;
              tipo=&amp;quot;@((Byte)EnumFileType.BaseText)&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;/textarea&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====report-filters====&lt;br /&gt;
&amp;lt;p&amp;gt;Filtros laterais para relatórios devido a 3 tela utilizarem a mesma sequência de filtros eles foram transformados em diretiva&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;report-filters filters=&amp;quot;filters&amp;quot; global=&amp;quot;global&amp;quot;&amp;gt;&amp;lt;/report-filters&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====tags-input====&lt;br /&gt;
&amp;lt;p&amp;gt;Cria um campo do tipo tags&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;!-- elemento --&amp;gt;&lt;br /&gt;
   &amp;lt;tags-input ng-model=&amp;quot;tags&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/tags-input&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //formato aceito&lt;br /&gt;
   $scope.tags = [{ text: 'just' }, { text: 'some' }, { text: 'cool' }];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====uploader====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza o upload de arquivos.&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;upload.js&amp;lt;/b&amp;gt; - realiza o upload&lt;br /&gt;
* &amp;lt;b&amp;gt;uploader.js&amp;lt;/b&amp;gt; - verifica as alterações do input['file']&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div upload&lt;br /&gt;
        type=&amp;quot;File&amp;quot; &lt;br /&gt;
        trash=&amp;quot;true&amp;quot; &lt;br /&gt;
        placeholder=&amp;quot;um arquivo&amp;quot; &lt;br /&gt;
        callback=&amp;quot;fileUploadSuccess&amp;quot; &lt;br /&gt;
        component=&amp;quot;modelFile&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====writemaths====&lt;br /&gt;
&amp;lt;p&amp;gt;Mostra o preview das fórmulas matemáticas LaTex digitadas no plugin redactor.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div writemaths position=&amp;quot;center top&amp;quot; previewposition=&amp;quot;center bottom&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;textarea redactor&lt;br /&gt;
                  id=&amp;quot;textoBase&amp;quot; &lt;br /&gt;
                  name=&amp;quot;textoBase&amp;quot; &lt;br /&gt;
                  class=&amp;quot;form-control&amp;quot; &lt;br /&gt;
                  images=&amp;quot;textobase.Files&amp;quot; &lt;br /&gt;
                  ng-model=&amp;quot;textobase.Description&amp;quot; &lt;br /&gt;
                  tipo=&amp;quot;@((Byte)EnumFileType.BaseText)&amp;quot;&amp;gt; &lt;br /&gt;
         &amp;lt;/textarea&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Filters===&lt;br /&gt;
Filtros são a maneira mais dinâmica de formatar dados na dinâmica bind do angular.&lt;br /&gt;
&lt;br /&gt;
====minimize====&lt;br /&gt;
&amp;lt;p&amp;gt;Aplica reticências em um bind a partir do length indicado&amp;lt;/p&amp;gt;&lt;br /&gt;
* recomenda-se utilização de tooltip para exibição do texto na integra.&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    $scope.meuTexto = &amp;quot;Um texto que extremamente longo pode ser minificado&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div&amp;gt;&lt;br /&gt;
      {{meuTexto | minimize:20}}&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //resultado seria&lt;br /&gt;
   &amp;quot;Um texto que extrema...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====moment====&lt;br /&gt;
&amp;lt;p&amp;gt;Formatador de dadas utilizando-se do plugin moment.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo para formato ISO 8601&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    $scope.createDate = &amp;quot;2016/01/01&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div&amp;gt;&lt;br /&gt;
      {{createDate | moment:&amp;quot;DD/MM/YYYY&amp;quot;:true}}&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //resultado seria&lt;br /&gt;
   &amp;quot;01/01/2016&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- exemplo para formato &amp;lt;b&amp;gt;/date()/json&amp;lt;/b&amp;gt; -&amp;gt; /Date(1224043200000)/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    $scope.createDate = new Date();&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div&amp;gt;&lt;br /&gt;
      {{createDate | moment:&amp;quot;DD/MM/YYYY&amp;quot;}}&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //resultado seria&lt;br /&gt;
   &amp;quot;01/01/2016&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====trustedHtml====&lt;br /&gt;
&amp;lt;p&amp;gt;Converte html não confiável para confiável, utilizado em locais com &amp;lt;b&amp;gt;ng-bind-html&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   $scope.meuHtml = &amp;quot;&amp;lt;div&amp;gt;Meu texto&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div ng-bind-html=&amp;quot;meuHtml | trustedHtml&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //resultado seria, sem o filtro o bind daria erro de trust&lt;br /&gt;
   &amp;quot;Meu texto&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====capitalize====&lt;br /&gt;
&amp;lt;p&amp;gt;Converte a 1ª letra em ToUpperCase &amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   $scope.label= &amp;quot;código&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div&amp;gt; {{label | capitalize}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //resultado seria: &amp;quot;Código&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====between====&lt;br /&gt;
&amp;lt;p&amp;gt; Utilizado na diretiva de paginação do sistema.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====changeBlankSpace====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza a conversão de caracteres de espaçamento nas transações i/o do redactor.&lt;br /&gt;
Troca os caracteres de espaçamento de &amp;lt;b&amp;gt;\s&amp;lt;/b&amp;gt; para &amp;lt;b&amp;gt;&amp;amp;nbsp;&amp;lt;/b&amp;gt;. Assim os espaços em branco são respeitados no ng-bind&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &amp;lt;div ng-bind-html=&amp;quot;(abstract.textbase | changeBlankSpace) | trustedHtml&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====tagToString====&lt;br /&gt;
&amp;lt;p&amp;gt;Quando um &amp;lt;b&amp;gt;texto base&amp;lt;/b&amp;gt; possuí somente imagens o filtro retorna uma string indicando &amp;lt;b&amp;gt;&amp;lt;somente imagem&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    {{ itens.Statement | tagToString }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
A camada de comunicação do sistema, os models são mapeados segundo os controllers presentes no asp.Net, são serviços que são injetados nos controllers (angularjs) que irão interagir com 1 ou mais controller (asp.Net). No Avalia+ o serviço foi contruído com o componente nativo &amp;lt;b&amp;gt;$resource&amp;lt;/b&amp;gt;. Como ele vem sendo utilizado desde o começo resolveu adota-lo como padrão. No entanto, uma possível futura melhoria ou abordagem seria interessante fazer o uso de &amp;lt;b&amp;gt;$http&amp;lt;/b&amp;gt;.&lt;br /&gt;
-exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
    /* &lt;br /&gt;
     * File-Model&lt;br /&gt;
     */&lt;br /&gt;
    (function () {&lt;br /&gt;
	angular.module('services').factory('FileModel', ['$resource', function ($resource) {&lt;br /&gt;
&lt;br /&gt;
		// Model&lt;br /&gt;
		var model = {&lt;br /&gt;
&lt;br /&gt;
			'uploadFile': {&lt;br /&gt;
				method: 'POST',&lt;br /&gt;
				url: base_url('File/UploadFile')&lt;br /&gt;
			},&lt;br /&gt;
			'upload': {&lt;br /&gt;
				method: 'POST',&lt;br /&gt;
				url: base_url('File/Upload')&lt;br /&gt;
			},&lt;br /&gt;
			'delete': {&lt;br /&gt;
				method: 'POST',&lt;br /&gt;
				url: base_url('File/LogicalDelete')&lt;br /&gt;
			},&lt;br /&gt;
			'searchUploadedFiles': {&lt;br /&gt;
			    method: 'GET',&lt;br /&gt;
			    url: base_url('File/SearchUploadedFiles')&lt;br /&gt;
			},&lt;br /&gt;
			'existsLinkedFiles': {&lt;br /&gt;
			    method: 'GET',&lt;br /&gt;
			    url: base_url('File/ExistsLinkedFiles')&lt;br /&gt;
			},&lt;br /&gt;
			'checkFileExists': {&lt;br /&gt;
			    method: 'GET',&lt;br /&gt;
			    url: base_url('File/CheckFileExists')&lt;br /&gt;
			},&lt;br /&gt;
			'checkFilePathExists': {&lt;br /&gt;
			    method: 'GET',&lt;br /&gt;
			    url: base_url('File/CheckFilePathExists')&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// Retorna o serviço       &lt;br /&gt;
		return $resource('', {}, model);&lt;br /&gt;
&lt;br /&gt;
	}]);&lt;br /&gt;
   })();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Services===&lt;br /&gt;
Serviços básicos do sistema.&lt;br /&gt;
&lt;br /&gt;
====notification====&lt;br /&gt;
&amp;lt;p&amp;gt;Controla a pilha de notificações do sistema, pilha que é utilizada pela diretiva &amp;lt;b&amp;gt;alert.js&amp;lt;/b&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
-exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- html com a diretiva alert--&amp;gt;&lt;br /&gt;
    &amp;lt;alert&amp;gt;&amp;lt;/alert&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    (function (angular, $) {&lt;br /&gt;
&lt;br /&gt;
        'use strict';&lt;br /&gt;
&lt;br /&gt;
        //~SETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
    &lt;br /&gt;
        //~GETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain')&lt;br /&gt;
            .controller(&amp;quot;FormController&amp;quot;, FormController);&lt;br /&gt;
    &lt;br /&gt;
        FormController.$inject = ['$scope', '$notification'];&lt;br /&gt;
&lt;br /&gt;
        function FormController($scope, $notification) {&lt;br /&gt;
            $notification.alert('minha mensagem aqui.');&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
   })(angular, jQuery);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====pager====&lt;br /&gt;
&amp;lt;p&amp;gt;Controla a paginação utilizada no sistema. Dependente da diretiva  &amp;lt;b&amp;gt;page.js&amp;lt;/b&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Há duas maneiras de indicar para a diretiva quem é a instancia que controla a paginação:&amp;lt;/p&amp;gt;&lt;br /&gt;
*{object} pager=&amp;quot;paginate&amp;quot; recebe a instância do $pager &amp;lt;b&amp;gt;$scope, exemplo -&amp;gt; $scope.nivel1.nivel2.paginate&amp;lt;/b&amp;gt;&lt;br /&gt;
*{string} varkey=&amp;quot;paginate&amp;quot; recebe o nome da instância presente no $parent (Só funciona para objetos de 1 único nivel no &amp;lt;b&amp;gt;$scope, exemplo -&amp;gt; $scope['paginate']&amp;lt;/b&amp;gt;)&lt;br /&gt;
-exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- html com a diretiva page --&amp;gt;&lt;br /&gt;
    &amp;lt;page method=&amp;quot;search()&amp;quot; &lt;br /&gt;
          pager=&amp;quot;paginate&amp;quot; &lt;br /&gt;
          total-pages=&amp;quot;{{pages}}&amp;quot; &lt;br /&gt;
          total-itens=&amp;quot;{{totalItens}}&amp;quot; &lt;br /&gt;
          page-size=&amp;quot;pageSize&amp;quot; &lt;br /&gt;
          data-arr-page-size=&amp;quot;[10,20,30,40,50,100]&amp;quot;&amp;gt;&amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    (function (angular, $) {&lt;br /&gt;
&lt;br /&gt;
        'use strict';&lt;br /&gt;
&lt;br /&gt;
        //~SETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
    &lt;br /&gt;
        //~GETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain')&lt;br /&gt;
            .controller(&amp;quot;FormController&amp;quot;, FormController);&lt;br /&gt;
    &lt;br /&gt;
        FormController.$inject = ['$scope', '$pager', 'SkillModel'];&lt;br /&gt;
&lt;br /&gt;
        function FormController($scope, $pager, SkillModel) {&lt;br /&gt;
            &lt;br /&gt;
             $scope.paginate = $pager(SkillModel.searchByMatrix); //deve receber o service $resource&lt;br /&gt;
             $scope.message = false;&lt;br /&gt;
             $scope.pages = 0;&lt;br /&gt;
	     $scope.totalItens = 0;&lt;br /&gt;
	     $scope.pageSize = 10;&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
   })(angular, jQuery);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====util====&lt;br /&gt;
&amp;lt;p&amp;gt;Centralizador de utilidades do sistema, inclusive a function responsável por obter os parâmetros presente na query string da url&amp;lt;/p&amp;gt;&lt;br /&gt;
-exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    (function (angular, $) {&lt;br /&gt;
&lt;br /&gt;
        'use strict';&lt;br /&gt;
&lt;br /&gt;
        //~SETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
    &lt;br /&gt;
        //~GETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain')&lt;br /&gt;
            .controller(&amp;quot;FormController&amp;quot;, FormController);&lt;br /&gt;
    &lt;br /&gt;
        FormController.$inject = ['$scope', '$util'];&lt;br /&gt;
&lt;br /&gt;
        function FormController($scope, $util) {&lt;br /&gt;
            &lt;br /&gt;
            $scope.params = $util.getUrlParams();&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
   })(angular, jQuery);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ApiSetting====&lt;br /&gt;
Responsável por configurar requisições de comunicação com API. Vide utilização no service de interceptação de requisições&lt;br /&gt;
&lt;br /&gt;
====authenticationinterceptor.service====&lt;br /&gt;
&amp;lt;p&amp;gt;Todas as requisições (request/response/error) partindo dos componentes nativos &amp;lt;b&amp;gt;$resource/$http&amp;lt;/b&amp;gt; serão interceptadas antes de seguir o fluxo normal client/server/client. &amp;lt;/p&amp;gt;&lt;br /&gt;
*$httpTransform -&amp;gt; serviço presente no interceptor responsável por contabilizar a pilha de requisições &amp;lt;b&amp;gt;ngShowLoading.js/preloading.js&amp;lt;/b&amp;gt; utilizam-se desse serviço para mostrar o loader do sistema.&lt;br /&gt;
*Para controllers (angularJS) que não se comunicam com API basta &amp;lt;b&amp;gt;não&amp;lt;/b&amp;gt; configurar o service $ApiSetting&lt;br /&gt;
*Para controllers (angularJS) que se comunicam com APi segue abaixo o exemplo de como config. o service&lt;br /&gt;
-examplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
     (function (angular, $) {&lt;br /&gt;
&lt;br /&gt;
	'use strict';&lt;br /&gt;
&lt;br /&gt;
	//~SETTER&lt;br /&gt;
	angular&lt;br /&gt;
		.module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
&lt;br /&gt;
	//~GETTER&lt;br /&gt;
	angular&lt;br /&gt;
	    .module('appMain')&lt;br /&gt;
	    .controller(&amp;quot;CorrectionController&amp;quot;, CorrectionController)&lt;br /&gt;
            .config($config);&lt;br /&gt;
&lt;br /&gt;
	CorrectionController.$inject = ['$scope'];&lt;br /&gt;
	$config.$inject = ['$apiSettingConfigProvider'];&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
	function $config($apiSettingConfigProvider) {&lt;br /&gt;
	    var params = $apiSettingConfigProvider.getUrlParams();&lt;br /&gt;
	    $apiSettingConfigProvider.setUrlMethodExcluded(&amp;quot;GetAuthorize&amp;quot;);&lt;br /&gt;
	    $apiSettingConfigProvider.setUrlAuthentication(base_url(&amp;quot;/MeuControllerASPNET/GetAuthorize&amp;quot;));&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	function CorrectionController($scope) {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
     })(angular, jQuery);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Versões dos frameworks===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
|- &lt;br /&gt;
| Framework || versão || customizado p/ necessidade interna || Ref.&lt;br /&gt;
|- &lt;br /&gt;
| angularJS || 1.4.9 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || https://angularjs.org/&lt;br /&gt;
|- &lt;br /&gt;
| compressor || 0.1 || &amp;lt;center&amp;gt;sim&amp;lt;/center&amp;gt; || Mstech&lt;br /&gt;
|- &lt;br /&gt;
| datepicker || 2012 || &amp;lt;center&amp;gt;sim&amp;lt;/center&amp;gt; || http://www.eyecon.ro/bootstrap-datepicker&lt;br /&gt;
|- &lt;br /&gt;
| highcharts || 4.0.4 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || http://www.highcharts.com/&lt;br /&gt;
|- &lt;br /&gt;
| redactor || 10.2.5 || &amp;lt;center&amp;gt;sim&amp;lt;/center&amp;gt; || https://imperavi.com/redactor/&lt;br /&gt;
|- &lt;br /&gt;
| resumable || x.x || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || http://github.com/23/resumable.js&lt;br /&gt;
|- &lt;br /&gt;
| bootstrap || 3.2.0 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || http://getbootstrap.com/&lt;br /&gt;
|- &lt;br /&gt;
| jquery || 2.1.1 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || https://jquery.com/&lt;br /&gt;
|- &lt;br /&gt;
| jqueryui || 1.10.3 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || http://jqueryui.com&lt;br /&gt;
|- &lt;br /&gt;
| mathJax|| x.x || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || https://www.mathjax.org/&lt;br /&gt;
|- &lt;br /&gt;
| moment || 2.10.6 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || http://momentjs.com/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Estrutura de pastas===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
├───css&lt;br /&gt;
│   │   prova.css&lt;br /&gt;
│   │   style.css&lt;br /&gt;
│   │   style.css.map&lt;br /&gt;
│   │   style.min.css&lt;br /&gt;
│   │   style.scss&lt;br /&gt;
│   │   &lt;br /&gt;
│   ├───vendor&lt;br /&gt;
│   │   │   awesome-bootstrap-checkbox.css&lt;br /&gt;
│   │   │   bootstrap.css&lt;br /&gt;
│   │   │   font-awesome.css&lt;br /&gt;
│   │   │   &lt;br /&gt;
│   │   └───angular-motion&lt;br /&gt;
│   │       │   angular-motion.css&lt;br /&gt;
│   │       │   &lt;br /&gt;
│   │       └───modules&lt;br /&gt;
│   │               collapse.css&lt;br /&gt;
│   │               fade-and-slide.css&lt;br /&gt;
│   │               fade.css&lt;br /&gt;
│   │               flip.css&lt;br /&gt;
│   │               menu.css&lt;br /&gt;
│   │               popover-fade.css&lt;br /&gt;
│   │               &lt;br /&gt;
│   └───_bundle&lt;br /&gt;
│           angular.css&lt;br /&gt;
│           &lt;br /&gt;
├───fonts&lt;br /&gt;
│       &lt;br /&gt;
├───images&lt;br /&gt;
│&lt;br /&gt;
├───js&lt;br /&gt;
│   ├───angular&lt;br /&gt;
│   │   ├───controllers&lt;br /&gt;
│   │   │   ├───absenceReason&lt;br /&gt;
│   │   │   │       formAbsenceReasonController.js&lt;br /&gt;
│   │   │   │       listAbsenceReasonController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───adherence&lt;br /&gt;
│   │   │   │       adherenceController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───answerSheet&lt;br /&gt;
│   │   │   │       answerSheetLotController.js&lt;br /&gt;
│   │   │   │       answerSheetStudentController.js&lt;br /&gt;
│   │   │   │       batchDetailsController.js&lt;br /&gt;
│   │   │   │       customTooltip.html&lt;br /&gt;
│   │   │   │       schoolLotMenu.html&lt;br /&gt;
│   │   │   │       testLotMenu.html&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───cognitiveCompetence&lt;br /&gt;
│   │   │   │       formCognitiveCompetenceController.js&lt;br /&gt;
│   │   │   │       listCognitiveCompetenceController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───correction&lt;br /&gt;
│   │   │   │       correctionController.js&lt;br /&gt;
│   │   │   │       correctionResultController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───correlatedSkill&lt;br /&gt;
│   │   │   │       formCorrelatedSkillController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───discipline&lt;br /&gt;
│   │   │   │       formDisciplineController.js&lt;br /&gt;
│   │   │   │       listDisciplineController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───evaluationMatrix&lt;br /&gt;
│   │   │   │       evaluationMatrixController.js&lt;br /&gt;
│   │   │   │       evaluationMatrixListController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───file&lt;br /&gt;
│   │   │   │       fileController.js&lt;br /&gt;
│   │   │   │       fileMenu.html&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───home&lt;br /&gt;
│   │   │   │       homeController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───item&lt;br /&gt;
│   │   │   │       formItemController.js&lt;br /&gt;
│   │   │   │       listItemController.js&lt;br /&gt;
│   │   │   │       listItemMenu.html&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───itemLevel&lt;br /&gt;
│   │   │   │       formItemLevelController.js&lt;br /&gt;
│   │   │   │       listItemLevelController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───itemType&lt;br /&gt;
│   │   │   │       itemTypeFormController.js&lt;br /&gt;
│   │   │   │       itemTypeListController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───modelEvaluationMatrix&lt;br /&gt;
│   │   │   │       modelEvaluationMatrixController.js&lt;br /&gt;
│   │   │   │       modelEvaluationMatrixListController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───modelTest&lt;br /&gt;
│   │   │   │       modelTestController.js&lt;br /&gt;
│   │   │   │       modelTestListController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───parameter&lt;br /&gt;
│   │   │   │       parameterController.js&lt;br /&gt;
│   │   │   │       parameterMenu.html&lt;br /&gt;
│   │   │   │       parameterVersionableMenu.html&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───performanceLevel&lt;br /&gt;
│   │   │   │       formPerformanceLevelController.js&lt;br /&gt;
│   │   │   │       listPerformanceLevelController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportAnswerSheet&lt;br /&gt;
│   │   │   │       reportAnswerSheetDREController.js&lt;br /&gt;
│   │   │   │       reportAnswerSheetFilesController.js&lt;br /&gt;
│   │   │   │       reportAnswerSheetSchoolController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportCorrection&lt;br /&gt;
│   │   │   │       reportClasseController.js&lt;br /&gt;
│   │   │   │       reportDREController.js&lt;br /&gt;
│   │   │   │       reportSchoolController.js&lt;br /&gt;
│   │   │   │       reportStudentController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportItem&lt;br /&gt;
│   │   │   │       reportItemController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportTest&lt;br /&gt;
│   │   │   │       graphicPerformanceSchoolController.js&lt;br /&gt;
│   │   │   │       performanceItemController.js&lt;br /&gt;
│   │   │   │       performanceSchoolController.js&lt;br /&gt;
│   │   │   │       performanceSkillController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───test&lt;br /&gt;
│   │   │   │       indexRequestRevokeMenu.html&lt;br /&gt;
│   │   │   │       menu-test-import-tpl.html&lt;br /&gt;
│   │   │   │       testAdministrateController.js&lt;br /&gt;
│   │   │   │       testController.js&lt;br /&gt;
│   │   │   │       testImportController.js&lt;br /&gt;
│   │   │   │       testListController.js&lt;br /&gt;
│   │   │   │       testListMenu.html&lt;br /&gt;
│   │   │   │       testReportController.js&lt;br /&gt;
│   │   │   │       testRequestRevokeController.js&lt;br /&gt;
│   │   │   │       testResponsesController.js&lt;br /&gt;
│   │   │   │       testRevokeController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   └───testType&lt;br /&gt;
│   │   │           formTestTypeController.js&lt;br /&gt;
│   │   │           listTestTypeController.js&lt;br /&gt;
│   │   │           &lt;br /&gt;
│   │   ├───directives&lt;br /&gt;
│   │   │   │   directives.js&lt;br /&gt;
│   │   │   │   &lt;br /&gt;
│   │   │   └───_bundle&lt;br /&gt;
│   │   │       ├───alert&lt;br /&gt;
│   │   │       │       alert.css&lt;br /&gt;
│   │   │       │       alert.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───checkbox-group&lt;br /&gt;
│   │   │       │       ckeckbox-group.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───collapse&lt;br /&gt;
│   │   │       │       collapse.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───datepicker&lt;br /&gt;
│   │   │       │       datepicker-directive.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───fieldinteger&lt;br /&gt;
│   │   │       │       fieldinteger.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───highcharts&lt;br /&gt;
│   │   │       │       highcharts-ng.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───item-brief&lt;br /&gt;
│   │   │       │       item-brief.html&lt;br /&gt;
│   │   │       │       item-brief.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───menu&lt;br /&gt;
│   │   │       │       menu.html&lt;br /&gt;
│   │   │       │       menu.js&lt;br /&gt;
│   │   │       │       sitemas.html&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───modal&lt;br /&gt;
│   │   │       │       modal.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───modal-alert&lt;br /&gt;
│   │   │       │       modal-alert.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───ng-change-file&lt;br /&gt;
│   │   │       │       ng-change-file.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───ng-title&lt;br /&gt;
│   │   │       │       ng-title.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───ngShowLoading&lt;br /&gt;
│   │   │       │       ngShowLoading.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───notification-filter&lt;br /&gt;
│   │   │       │       notification.filter.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───page&lt;br /&gt;
│   │   │       │       page.css&lt;br /&gt;
│   │   │       │       page.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───popover&lt;br /&gt;
│   │   │       │   │   popover.html&lt;br /&gt;
│   │   │       │   │   popover.js&lt;br /&gt;
│   │   │       │   │   tooltip.html&lt;br /&gt;
│   │   │       │   │   tooltip.js&lt;br /&gt;
│   │   │       │   │   &lt;br /&gt;
│   │   │       │   └───helpers&lt;br /&gt;
│   │   │       │           date-parser.js&lt;br /&gt;
│   │   │       │           debounce.js&lt;br /&gt;
│   │   │       │           dimensions.js&lt;br /&gt;
│   │   │       │           parse-options.js&lt;br /&gt;
│   │   │       │           raf.js&lt;br /&gt;
│   │   │       │           &lt;br /&gt;
│   │   │       ├───preloading&lt;br /&gt;
│   │   │       │       preloading.css&lt;br /&gt;
│   │   │       │       preloading.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───radio-select&lt;br /&gt;
│   │   │       │       radio-select.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───rating&lt;br /&gt;
│   │   │       │       rating-directive.js&lt;br /&gt;
│   │   │       │       rating.css&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───redactor-directive&lt;br /&gt;
│   │   │       │       redactor-directive.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───reportFilters&lt;br /&gt;
│   │   │       │       filtersTpl.html&lt;br /&gt;
│   │   │       │       reportFilters.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───tags-input&lt;br /&gt;
│   │   │       │       ng-tags-input.css&lt;br /&gt;
│   │   │       │       ng-tags-input.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───uploader&lt;br /&gt;
│   │   │       │       upload.js&lt;br /&gt;
│   │   │       │       uploader.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       └───writemaths&lt;br /&gt;
│   │   │               rangy-core.js&lt;br /&gt;
│   │   │               textinputs_jquery.js&lt;br /&gt;
│   │   │               writemaths-directive.js&lt;br /&gt;
│   │   │               writemaths.css&lt;br /&gt;
│   │   │               writemaths.js&lt;br /&gt;
│   │   │               &lt;br /&gt;
│   │   ├───filters&lt;br /&gt;
│   │   │   │   filters.js&lt;br /&gt;
│   │   │   │   &lt;br /&gt;
│   │   │   └───_bundle&lt;br /&gt;
│   │   │       ├───between&lt;br /&gt;
│   │   │       │       between.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───changeBlankSpace&lt;br /&gt;
│   │   │       │       changeBlankSpace.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───minimize&lt;br /&gt;
│   │   │       │       minimize.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───moment&lt;br /&gt;
│   │   │       │       moment.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───tagToString&lt;br /&gt;
│   │   │       │       tagToString.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       └───trustedHtml&lt;br /&gt;
│   │   │               trustedHtml.js&lt;br /&gt;
│   │   │           &lt;br /&gt;
│   │   ├───models&lt;br /&gt;
│   │   │   ├───AbsenceReason&lt;br /&gt;
│   │   │   │       absenceReasonModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───adherence&lt;br /&gt;
│   │   │   │       adherenceApiModel.js&lt;br /&gt;
│   │   │   │       adherenceModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───answerSheet&lt;br /&gt;
│   │   │   │       answerSheetModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───cognitiveCompetence&lt;br /&gt;
│   │   │   │       cognitiveCompetenceModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───correction&lt;br /&gt;
│   │   │   │       correctionApiModel.js&lt;br /&gt;
│   │   │   │       correctionModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───correlatedSkill&lt;br /&gt;
│   │   │   │       correlatedSkillModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───course&lt;br /&gt;
│   │   │   │       courseModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───discipline&lt;br /&gt;
│   │   │   │       disciplineModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───evaluationMatrix&lt;br /&gt;
│   │   │   │       evaluationMatrixModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───evaluationMatrixCourse&lt;br /&gt;
│   │   │   │       evaluationMatrixCourseModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───EvaluationMatrixCourseCurriculumGrade&lt;br /&gt;
│   │   │   │       EvaluationMatrixCourseCurriculumGradeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───file&lt;br /&gt;
│   │   │   │       fileModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───formatType&lt;br /&gt;
│   │   │   │       formatTypeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───Integration&lt;br /&gt;
│   │   │   │   ├───course&lt;br /&gt;
│   │   │   │   │       courseModel.js&lt;br /&gt;
│   │   │   │   │       &lt;br /&gt;
│   │   │   │   ├───curriculumGrade&lt;br /&gt;
│   │   │   │   │       curriculumGradeModel.js&lt;br /&gt;
│   │   │   │   │       &lt;br /&gt;
│   │   │   │   ├───levelEducation&lt;br /&gt;
│   │   │   │   │       levelEducationModel.js&lt;br /&gt;
│   │   │   │   │       &lt;br /&gt;
│   │   │   │   └───modality&lt;br /&gt;
│   │   │   │           modalityModel.js&lt;br /&gt;
│   │   │   │           &lt;br /&gt;
│   │   │   ├───item&lt;br /&gt;
│   │   │   │       itemModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───itemLevel&lt;br /&gt;
│   │   │   │       itemLevelModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───itemSituation&lt;br /&gt;
│   │   │   │       itemSituationModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───itemType&lt;br /&gt;
│   │   │   │       itemTypeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───modelEvaluationMatrix&lt;br /&gt;
│   │   │   │       modelEvaluationMatrixModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───modelSkillLevel&lt;br /&gt;
│   │   │   │       modelSkillLevelModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───modelTestModel&lt;br /&gt;
│   │   │   │       modelTestModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───parameter&lt;br /&gt;
│   │   │   │       parameterModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───performanceLevel&lt;br /&gt;
│   │   │   │       performanceLevelModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportAnswerSheet&lt;br /&gt;
│   │   │   │       reportAnswerSheetModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportCorrection&lt;br /&gt;
│   │   │   │       reportCorrectionModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportItem&lt;br /&gt;
│   │   │   │       reportItemModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportTest&lt;br /&gt;
│   │   │   │       reportTestModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───skill&lt;br /&gt;
│   │   │   │       skillModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───test&lt;br /&gt;
│   │   │   │       testAdministrateModel.js&lt;br /&gt;
│   │   │   │       testImportExportModel.js&lt;br /&gt;
│   │   │   │       testListModel.js&lt;br /&gt;
│   │   │   │       testModel.js&lt;br /&gt;
│   │   │   │       testRequestRevokeModel.js&lt;br /&gt;
│   │   │   │       testRevokeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───TestPerformanceLevel&lt;br /&gt;
│   │   │   │       testPerformanceLevelModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───testType&lt;br /&gt;
│   │   │   │       testTypeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───testTypeCourse&lt;br /&gt;
│   │   │   │       testTypeCourseModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───testTypeCourseCurriculumGrade&lt;br /&gt;
│   │   │   │       testTypeCourseCurriculumGradeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───testTypeItemLevel&lt;br /&gt;
│   │   │   │       testTypeItemLevelModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   └───typeLevelEducation&lt;br /&gt;
│   │   │           typeLevelEducationModel.js&lt;br /&gt;
│   │   │           &lt;br /&gt;
│   │   └───services&lt;br /&gt;
│   │       │   authenticationinterceptor.service.js&lt;br /&gt;
│   │       │   services.js&lt;br /&gt;
│   │       │   ApiSetting.js&lt;br /&gt;
│   │       │   &lt;br /&gt;
│   │       └───_bundle&lt;br /&gt;
│   │           ├───notification&lt;br /&gt;
│   │           │       notification.js&lt;br /&gt;
│   │           │       &lt;br /&gt;
│   │           ├───pager&lt;br /&gt;
│   │           │       services.js&lt;br /&gt;
│   │           │       &lt;br /&gt;
│   │           ├───util&lt;br /&gt;
│   │           │       util.js&lt;br /&gt;
│   │                   &lt;br /&gt;
│   └───vendor&lt;br /&gt;
│       │   bootstrap-3.2.0.js&lt;br /&gt;
│       │   jquery-2.1.1.js&lt;br /&gt;
│       │   jquery-ui.js&lt;br /&gt;
│       │   mathJax.js&lt;br /&gt;
│       │   moment.js&lt;br /&gt;
│       │   &lt;br /&gt;
│       ├───angular-1.4.9&lt;br /&gt;
│       │   │   angular-animate.js&lt;br /&gt;
│       │   │   angular-aria.js&lt;br /&gt;
│       │   │   angular-cookies.js&lt;br /&gt;
│       │   │   angular-loader.js&lt;br /&gt;
│       │   │   angular-message-format.js&lt;br /&gt;
│       │   │   angular-messages.js&lt;br /&gt;
│       │   │   angular-mocks.js&lt;br /&gt;
│       │   │   angular-resource.js&lt;br /&gt;
│       │   │   angular-route.js&lt;br /&gt;
│       │   │   angular-sanitize.js&lt;br /&gt;
│       │   │   angular-scenario.js&lt;br /&gt;
│       │   │   angular-touch.js&lt;br /&gt;
│       │   │   angular.js&lt;br /&gt;
│       │   │   &lt;br /&gt;
│       │   └───i18n&lt;br /&gt;
│       ├───compressor&lt;br /&gt;
│       │       compressor.js&lt;br /&gt;
│       │       &lt;br /&gt;
│       ├───datepicker&lt;br /&gt;
│       │       datepicker.css&lt;br /&gt;
│       │       datepicker.js&lt;br /&gt;
│       │       &lt;br /&gt;
│       ├───highcharts-4.0.4&lt;br /&gt;
│       │   │   highcharts-3d.js&lt;br /&gt;
│       │   │   highcharts-all.js&lt;br /&gt;
│       │   │   highcharts-more.js&lt;br /&gt;
│       │   │   highcharts.js&lt;br /&gt;
│       │   │   &lt;br /&gt;
│       │   └───modules&lt;br /&gt;
│       │           exporting.js&lt;br /&gt;
│       │           no-data-to-display.js&lt;br /&gt;
│       │           &lt;br /&gt;
│       ├───redactor&lt;br /&gt;
│       │       accents.gif&lt;br /&gt;
│       │       accents_ext.gif&lt;br /&gt;
│       │       arrows.gif&lt;br /&gt;
│       │       brackets.gif&lt;br /&gt;
│       │       clips.js&lt;br /&gt;
│       │       fontcolor.js&lt;br /&gt;
│       │       fontfamily.js&lt;br /&gt;
│       │       fontsize.js&lt;br /&gt;
│       │       foreign.gif&lt;br /&gt;
│       │       function.png&lt;br /&gt;
│       │       greeklower.gif&lt;br /&gt;
│       │       greekupper.gif&lt;br /&gt;
│       │       imagemanager.js&lt;br /&gt;
│       │       mathLatex.css&lt;br /&gt;
│       │       mathLatex.js&lt;br /&gt;
│       │       matrix.gif&lt;br /&gt;
│       │       operators.gif&lt;br /&gt;
│       │       redactor-font.eot&lt;br /&gt;
│       │       redactor.css&lt;br /&gt;
│       │       redactor.js&lt;br /&gt;
│       │       redactor.less&lt;br /&gt;
│       │       relations.gif&lt;br /&gt;
│       │       subsupset.gif&lt;br /&gt;
│       │       symbols.gif&lt;br /&gt;
│       │       table.js&lt;br /&gt;
│       │       &lt;br /&gt;
│       └───resumable-js&lt;br /&gt;
│               resumable.js&lt;br /&gt;
│               test.html&lt;br /&gt;
│               &lt;br /&gt;
└───tests&lt;br /&gt;
    │   conf.js&lt;br /&gt;
    │   jasmine-runner.html&lt;br /&gt;
    │   karma.conf.js&lt;br /&gt;
    │   package.json&lt;br /&gt;
    │   &lt;br /&gt;
    ├───e2e&lt;br /&gt;
    │   └───controllers&lt;br /&gt;
    │           OMRController.e2e.js&lt;br /&gt;
    │           &lt;br /&gt;
    └───unit&lt;br /&gt;
        │   razor.js&lt;br /&gt;
        │   &lt;br /&gt;
        ├───controllers&lt;br /&gt;
        │       fileController.test.js&lt;br /&gt;
        │       formItemController.test.js&lt;br /&gt;
        │       &lt;br /&gt;
        ├───directives&lt;br /&gt;
        ├───factories&lt;br /&gt;
        ├───filters&lt;br /&gt;
        ├───models&lt;br /&gt;
        └───services&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outras informações==&lt;br /&gt;
* [[Requisitos funcionais]]&lt;br /&gt;
* [[Requisitos não funcionais]]&lt;br /&gt;
* [[Especificações mínimas de hardware e software - Avalia+]]&lt;br /&gt;
* [[Arquitetura do produto]]&lt;br /&gt;
* [[Integrações]]&lt;br /&gt;
* [[Manual de instalação]]&lt;/div&gt;</summary>
		<author><name>Thiago.silvestre</name></author>	</entry>

	<entry>
		<id>http://wiki.mstech.com.br/index.php?title=Arquivo:Avalia%2B3.png&amp;diff=3544</id>
		<title>Arquivo:Avalia+3.png</title>
		<link rel="alternate" type="text/html" href="http://wiki.mstech.com.br/index.php?title=Arquivo:Avalia%2B3.png&amp;diff=3544"/>
				<updated>2016-11-29T10:08:11Z</updated>
		
		<summary type="html">&lt;p&gt;Thiago.silvestre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&lt;/div&gt;</summary>
		<author><name>Thiago.silvestre</name></author>	</entry>

	<entry>
		<id>http://wiki.mstech.com.br/index.php?title=Avalia%2B&amp;diff=3543</id>
		<title>Avalia+</title>
		<link rel="alternate" type="text/html" href="http://wiki.mstech.com.br/index.php?title=Avalia%2B&amp;diff=3543"/>
				<updated>2016-11-29T10:06:01Z</updated>
		
		<summary type="html">&lt;p&gt;Thiago.silvestre: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Descrição==&lt;br /&gt;
&lt;br /&gt;
Descrever nesta área o que é o produto, quais as necessidades de negócio pretende atender, a quem se destina.&lt;br /&gt;
&lt;br /&gt;
==Funcionalidades de Ouro==&lt;br /&gt;
&lt;br /&gt;
Nesta seção, insira 3 ou 4 funcionalidades que '''diferenciam''' e destacam o produto. De preferência coloque apenas os nomes das funcionalidades&lt;br /&gt;
&lt;br /&gt;
==Link do Product Backlog==&lt;br /&gt;
&lt;br /&gt;
Nesta seção, insira o link do Product Backlog do produto&lt;br /&gt;
&lt;br /&gt;
==Arquitetura==&lt;br /&gt;
&lt;br /&gt;
==Arquitetura BD==&lt;br /&gt;
&lt;br /&gt;
[[:Arquivo:Diagram Avalia+.jpg|Imagem da modelagem de tabelas]]&lt;br /&gt;
&lt;br /&gt;
==Arquitetura Front-End==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;O Avalia+ não se utiliza de rotas virtuais do ArgularJS, diferentemente de uma aplicação SPA[http://tableless.com.br/criando-uma-aplicacao-single-page-com-angularjs/]).&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Todos os componentes (construídos internamente) do Avalia+ (controllers, directives, filters, services e etc) são construídos baseados no pattern IIFE[https://sarfraznawaz.wordpress.com/2012/01/26/javascript-self-invoking-functions/]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Estrutura funcional===&lt;br /&gt;
&lt;br /&gt;
- Pastas (negrito) &amp;lt;br/&amp;gt;&lt;br /&gt;
- Arquivos (negrito + itálico)&lt;br /&gt;
&lt;br /&gt;
*&amp;lt;b&amp;gt;css&amp;lt;/b&amp;gt;&lt;br /&gt;
**&amp;lt;b&amp;gt;vendor&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;angular-motion&amp;lt;/b&amp;gt;&lt;br /&gt;
****&amp;lt;b&amp;gt;modules&amp;lt;/b&amp;gt; - animações utilizaveis com angularJS ng-animate&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;awesome-bootstrap-checkbox.css&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - customizações de layout realizadas sobre os campos checkbox/radio do html&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;bootstrap.css&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - franework&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;font-awesome.css&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - customização de fontes para bootstrap&lt;br /&gt;
**&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;prova.css&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - estilos para gerar .pdf da prova&lt;br /&gt;
**&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;style.scss&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - estilos gerais do sistema &lt;br /&gt;
*&amp;lt;b&amp;gt;fonts&amp;lt;/b&amp;gt; - fontes awesome/material&lt;br /&gt;
*&amp;lt;b&amp;gt;images&amp;lt;/b&amp;gt; - imagens gerais do sistema/manual do sistema em .pdf&lt;br /&gt;
*&amp;lt;b&amp;gt;js&amp;lt;/b&amp;gt;&lt;br /&gt;
**&amp;lt;b&amp;gt;angular&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;controllers&amp;lt;/b&amp;gt; - rotas 'físicas' asp.NET&lt;br /&gt;
***&amp;lt;b&amp;gt;directives&amp;lt;/b&amp;gt;&lt;br /&gt;
****&amp;lt;b&amp;gt;_bundle&amp;lt;/b&amp;gt; - todas as diretivas utilizadas no sistema&lt;br /&gt;
****&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;directives.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - modulo centralizador de diretivas&lt;br /&gt;
***&amp;lt;b&amp;gt;filters&amp;lt;/b&amp;gt;&lt;br /&gt;
****&amp;lt;b&amp;gt;_bundle&amp;lt;/b&amp;gt; - todos os filtros utilizados no sistema&lt;br /&gt;
***&amp;lt;b&amp;gt;models&amp;lt;/b&amp;gt; - todos os 'models' são serviços que são construídos com base na utilização dos serviços nativos '$http/$resource'&lt;br /&gt;
***&amp;lt;b&amp;gt;services&amp;lt;/b&amp;gt;&lt;br /&gt;
****&amp;lt;b&amp;gt;_bundle&amp;lt;/b&amp;gt; - todos os serviços utilizados no sistema&lt;br /&gt;
****&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;ApiSetting.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - config. Api&lt;br /&gt;
****&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;services.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - modulo centralizador de serviços&lt;br /&gt;
****&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;authenticationinterceptor.service.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - modulo responsável por interceptar todas requisições realizadas sobre AJAX &lt;br /&gt;
**&amp;lt;b&amp;gt;vendor&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;angular&amp;lt;/b&amp;gt; - framework AngularJS&lt;br /&gt;
***&amp;lt;b&amp;gt;compressor&amp;lt;/b&amp;gt; - realiza a compressão de arquivos de imagem (.jpg ideal) utilizando canvas do html&lt;br /&gt;
***&amp;lt;b&amp;gt;datepicker&amp;lt;/b&amp;gt; - plugin para exibição e utilização de calendário&lt;br /&gt;
***&amp;lt;b&amp;gt;highcharts&amp;lt;/b&amp;gt; - plugin para exibição gráficos&lt;br /&gt;
***&amp;lt;b&amp;gt;redactor&amp;lt;/b&amp;gt; - plugin editor de textos&lt;br /&gt;
***&amp;lt;b&amp;gt;resumable&amp;lt;/b&amp;gt; - plugin para realizar uploads com possibilidade de pause&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;bootstrap-3.2.0.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;jquery-2.1.1.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;jquery-ui.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;mathJax.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - framework para exibição de formulas matemáticas complexas através de &amp;lt;b&amp;gt;LaTeX, MathML[http://docs.mathjax.org/en/latest/tex.html]&amp;lt;/b&amp;gt;&lt;br /&gt;
***&amp;lt;b&amp;gt;&amp;lt;i&amp;gt;moment.js&amp;lt;/i&amp;gt;&amp;lt;/b&amp;gt; - plugin para formatação de datas&lt;br /&gt;
*&amp;lt;b&amp;gt;tests&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Controllers===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;Todos os controllers AngularJS (construídos internamente) são baseados em:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;- &amp;lt;b&amp;gt;getter&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
* na maioria dos controllers é injetado os módulos base (centralizadores) ['services', 'filters', 'directives]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
      angular.module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
   &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;- &amp;lt;b&amp;gt;setter&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
* nome é baseado no prefix + suffix : [nome da View asp.NET] + [&amp;quot;Controller&amp;quot;]&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
   &amp;lt;pre&amp;gt;&lt;br /&gt;
      angular.module('appMain').controller(&amp;quot;FormAbsenceReasonController&amp;quot;, FormAbsenceReasonController);&lt;br /&gt;
&lt;br /&gt;
      function FormAbsenceReasonController() {};&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;- &amp;lt;b&amp;gt;injector&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
* realiza as injeções de dependências&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
     FormAbsenceReasonController.$inject = ['$scope', '$rootScope', '$window', '$notification', '$util', 'AbsenceReasonModel'];&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;- &amp;lt;b&amp;gt;instanciar function no escopo &amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; &lt;br /&gt;
* funções que são criadas e atribuídas ao escopo angular devem possuir um nome para facilitar o rastreamento de erros no console. Funções anônimas atribuídas diretamente ao escopo do Angular perdem a rastreabilidade em determinados casos.&lt;br /&gt;
* funções atribuídas ao escopo ficam visíveis através dos $scopes do angular, algumas pessoas preferem utilizar funções no escopo se realmente for necessário seu uso na view (.html), e optam por deixa-las privadas (não atribuídas ao escopo angular).&lt;br /&gt;
* se for implementado o uso de testes unitários devido ao ciclo de vida do angular o Jasmine[http://jasmine.github.io/] só consegue enxergar funções públicas (presentes no escopo do angular), recomenda-se cautela quando ao uso de funções privadas em soluções angular.&lt;br /&gt;
 &amp;lt;pre&amp;gt;&lt;br /&gt;
     //função publica: para acesso no escopo do angularJS &lt;br /&gt;
     $scope.minhaFuncPublic = function __minhaFuncPublic() { };&lt;br /&gt;
&lt;br /&gt;
     //função publica: para acesso no escopo do angularJS, porém anônima&lt;br /&gt;
     $scope.minhaFuncPublicAnonymous = function () { };&lt;br /&gt;
&lt;br /&gt;
     //função privada: sem acesso no escopo do angularJS &lt;br /&gt;
     function minhaFunc() { };&lt;br /&gt;
  &amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
====Exemplo controller AngularJS====&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;- arquivo: formAbsenceReasonController.js&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
/**&lt;br /&gt;
 * function Cadastro/Edição Absence Reason Controller&lt;br /&gt;
 * @namespace Controller&lt;br /&gt;
 * @author Julio Cesar da Silva - 02/03/2016&lt;br /&gt;
 */&lt;br /&gt;
(function (angular, $) {&lt;br /&gt;
&lt;br /&gt;
    'use strict';&lt;br /&gt;
&lt;br /&gt;
    //~SETTER&lt;br /&gt;
    angular&lt;br /&gt;
        .module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
    &lt;br /&gt;
    //~GETTER&lt;br /&gt;
    angular&lt;br /&gt;
        .module('appMain')&lt;br /&gt;
        .controller(&amp;quot;FormAbsenceReasonController&amp;quot;, FormAbsenceReasonController);&lt;br /&gt;
    &lt;br /&gt;
    FormAbsenceReasonController.$inject = ['$scope', '$rootScope', '$window', '$notification', '$util', 'AbsenceReasonModel'];&lt;br /&gt;
&lt;br /&gt;
    function FormAbsenceReasonController($scope, $rootScope, $window, $notification, $util, AbsenceReasonModel) {&lt;br /&gt;
&lt;br /&gt;
        $scope.params = $util.getUrlParams();&lt;br /&gt;
        $scope.absenceReason = { Description: undefined };&lt;br /&gt;
&lt;br /&gt;
        function Init() {&lt;br /&gt;
&lt;br /&gt;
            $notification.clear();&lt;br /&gt;
        &lt;br /&gt;
            if ($scope.params.Id !== undefined) {&lt;br /&gt;
&lt;br /&gt;
                AbsenceReasonModel.findSimple({ Id: $scope.params.Id }, function (result) {&lt;br /&gt;
&lt;br /&gt;
                    if (result.success) {&lt;br /&gt;
                        $scope.absenceReason = result.absenceReason;&lt;br /&gt;
                    }&lt;br /&gt;
                    else {&lt;br /&gt;
                        $notification[result.type ? result.type : 'error'](result.message);&lt;br /&gt;
                    }&lt;br /&gt;
                });&lt;br /&gt;
            }  &lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
        $scope.setNewDefault = function setNewDefault() {&lt;br /&gt;
            if (!$scope.absenceReason.IsDefault) {&lt;br /&gt;
                angular.element('#modal').modal('show');&lt;br /&gt;
            }&lt;br /&gt;
            $scope.absenceReason.IsDefault = true;&lt;br /&gt;
        };&lt;br /&gt;
        &lt;br /&gt;
        $scope.salvar = function __salvar() {&lt;br /&gt;
&lt;br /&gt;
            if ($scope.verifica()) {&lt;br /&gt;
&lt;br /&gt;
                AbsenceReasonModel.save($scope.absenceReason, function (result) {&lt;br /&gt;
&lt;br /&gt;
                    if (result.success) {&lt;br /&gt;
                        $notification.success(result.message);&lt;br /&gt;
                        $window.location.href = '/AbsenceReason/List';&lt;br /&gt;
                    }&lt;br /&gt;
                    else {&lt;br /&gt;
                        $notification[result.type ? result.type : 'error'](result.message);&lt;br /&gt;
                    }                  &lt;br /&gt;
                }); &lt;br /&gt;
            }&lt;br /&gt;
        };&lt;br /&gt;
        &lt;br /&gt;
        $scope.voltar = function __voltar() {&lt;br /&gt;
            $window.location.href = '/AbsenceReason/List';&lt;br /&gt;
        };&lt;br /&gt;
            &lt;br /&gt;
        $scope.verifica = function __verifica() {&lt;br /&gt;
&lt;br /&gt;
            if (!$scope.absenceReason.Description) {&lt;br /&gt;
                $notification.alert('O campo &amp;quot;Descrição&amp;quot; é obrigatório.');    &lt;br /&gt;
                angular.element('#description').focus();&lt;br /&gt;
                return false;&lt;br /&gt;
            }&lt;br /&gt;
            return true;&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
        Init();&lt;br /&gt;
    };&lt;br /&gt;
&lt;br /&gt;
})(angular, jQuery);&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;- arquivo: ~\AbsenceReason\Form.html&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&amp;lt;!DOCTYPE html&amp;gt;&lt;br /&gt;
&amp;lt;html data-ng-app=&amp;quot;appMain&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;head&amp;gt;&lt;br /&gt;
       &amp;lt;meta charset=&amp;quot;utf-8&amp;quot; /&amp;gt;&lt;br /&gt;
       &amp;lt;title&amp;gt;FormAbsenceReason&amp;lt;/title&amp;gt;&lt;br /&gt;
   &amp;lt;/head&amp;gt;&lt;br /&gt;
   &amp;lt;body&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;wellCustom&amp;quot; data-ng-controller=&amp;quot;FormAbsenceReasonController&amp;quot;&amp;gt;&lt;br /&gt;
&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;  &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Directives===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
Quase todas as diretivas ficam centralizadas no module &amp;lt;b&amp;gt;directives&amp;lt;/b&amp;gt;, com exceção de algumas third party (tooltip, popover e etc).&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
A vantagem de adotar um modulo centralizador é que as diretivas que são injetadas são somente aquelas carregadas (arquivo .js) pelo BunfleConfig.cs.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====alert====&lt;br /&gt;
&amp;lt;p&amp;gt;dependência: &amp;lt;b&amp;gt;../services/_bundle/notification/notification.js&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Composto por 2 diretivas:&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;alert&amp;lt;/b&amp;gt; - responsável por 'vigiar' o service &amp;lt;b&amp;gt;$notification&amp;lt;/b&amp;gt; e criar/excluir uma nova notificação visual (html).&lt;br /&gt;
* &amp;lt;b&amp;gt;autoClose&amp;lt;/b&amp;gt; - responsável por 'empilhar' as notificações em chamadas assíncronas e remover no término do tempo de permanência na pilha.&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt; &lt;br /&gt;
   &amp;lt;alert&amp;gt;&amp;lt;/alert&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====checkbox-group====&lt;br /&gt;
&amp;lt;p&amp;gt;Utiliza um model para armazenar uma lista de checkbox selecionados&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div data-ng-repeat=&amp;quot;($indexPeriodo, periodo) in periodoCurso.lista track by $indexPeriodo&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;input id=&amp;quot;checkbox_{{$indexPeriodo}}&amp;quot; type=&amp;quot;checkbox&amp;quot; checklist-model=&amp;quot;periodoCurso.selecionados&amp;quot; checklist-value=&amp;quot;periodo&amp;quot; /&amp;gt;&lt;br /&gt;
        &amp;lt;label for=&amp;quot;checkbox_{{$indexPeriodo}}&amp;quot;&amp;gt;{{periodo.Description}}&amp;lt;/label&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====collapse====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza o controle de &amp;lt;b&amp;gt;collapse (bootstrap)&amp;lt;/b&amp;gt; em elementos de um ng-repeat. Utilizado no sistema somente &amp;lt;i&amp;gt;/Parameter&amp;lt;/i&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;accPadrao&amp;quot; ng-model=&amp;quot;grupos&amp;quot; data-bs-collapse&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;cards&amp;quot; ng-repeat=&amp;quot;(catIndex,category) in categories track by catIndex&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;div class=&amp;quot;tituloAcc&amp;quot; data-bs-collapse-toggle&amp;gt;&lt;br /&gt;
               &amp;lt;h4&amp;gt;&lt;br /&gt;
                  {{category.Description}}&lt;br /&gt;
                  &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;{{ grupos == $index ? 'keyboard_arrow_up' : 'keyboard_arrow_down' }}&amp;lt;/i&amp;gt;&lt;br /&gt;
               &amp;lt;/h4&amp;gt;&lt;br /&gt;
           &amp;lt;/div&amp;gt;&lt;br /&gt;
           &amp;lt;div class=&amp;quot;panel-collapse&amp;quot; data-bs-collapse-target&amp;gt;&lt;br /&gt;
             conteúdo aqui&lt;br /&gt;
           &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====datepicker-directive====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza o controle do plugin datepicker no escopo do angularJS&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;dependência:&amp;lt;/b&amp;gt; vendor/datepicker.js&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;input id=&amp;quot;dateStart&amp;quot; type=&amp;quot;text&amp;quot; placeholder=&amp;quot;Data de Início&amp;quot; data-ng-model=&amp;quot;dateStart&amp;quot; datepicker/&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====fieldinteger====&lt;br /&gt;
&amp;lt;p&amp;gt;Permite somente a entrada de caracteres numéricos.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;input type=&amp;quot;text&amp;quot; data-ng-model=&amp;quot;idade&amp;quot; fieldinteger /&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====highcharts-ng====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza a manipulação do plugin.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;highchart class=&amp;quot;chart&amp;quot; config=&amp;quot;chart&amp;quot;&amp;gt;&amp;lt;/highchart&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====item-brief====&lt;br /&gt;
&amp;lt;p&amp;gt;Mostra o resumo detalhado de um item. (Obrigatório id do item)&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;item-brief item-id=&amp;quot;{{item.Id}}&amp;quot; can-print=&amp;quot;false&amp;quot;&amp;gt;&amp;lt;/item-brief&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====menu====&lt;br /&gt;
&amp;lt;p&amp;gt;Controla e constrói o menu do sistema. (localizado na master page)&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div menu user='@{Html.RenderAction(&amp;quot;NomeUsuarioLogado&amp;quot;,&amp;quot;Layout&amp;quot;);}' system='@ViewBag.Title'&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====modal====&lt;br /&gt;
&amp;lt;p&amp;gt;Constrói uma modal. Utiliza-se da diretiva nativa &amp;lt;b&amp;gt;ng-transclude&amp;lt;/b&amp;gt; para obter html específico, obedece ao escopo pai do 'controller' (escopo público)&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt; Caso necessário customização das características da modal, utilizar convencional do bootstrap sem a directiva. &amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;modal id=&amp;quot;cancelModal&amp;quot; modal-title=&amp;quot;&amp;lt;p&amp;gt;Deseja realmente sair?&amp;lt;/p&amp;gt;&amp;quot;&amp;gt;&lt;br /&gt;
       &amp;lt;div class=&amp;quot;container-fluid&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;div class=&amp;quot;row&amp;quot;&amp;gt;&lt;br /&gt;
	     &amp;lt;div class=&amp;quot;col-sm-12 text-right&amp;quot;&amp;gt;&lt;br /&gt;
	        &amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;btnPadrao&amp;quot; ng-click=&amp;quot;cancel();&amp;quot;&amp;gt;Sim&amp;lt;/button&amp;gt;&lt;br /&gt;
		&amp;lt;button type=&amp;quot;button&amp;quot; class=&amp;quot;btnCancelar2&amp;quot; data-dismiss=&amp;quot;modal&amp;quot;&amp;gt;Não&amp;lt;/button&amp;gt;&lt;br /&gt;
	     &amp;lt;/div&amp;gt;&lt;br /&gt;
	  &amp;lt;/div&amp;gt;&lt;br /&gt;
	&amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;/modal&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====modal-alert====&lt;br /&gt;
&amp;lt;p&amp;gt; Notificações internas ao escopo da modal. (Necessário construir no controller objeto de notificações)&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;modal-alert notification=&amp;quot;notification.objNotification&amp;quot;&amp;gt;&amp;lt;/modal-alert&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ng-change-file====&lt;br /&gt;
&amp;lt;p&amp;gt; Chamada de callback quando &amp;lt;b&amp;gt;input['file']&amp;lt;/b&amp;gt; sofre uma alteração. Utilizável para realização de upload de arquivos dentro do escopo do controller.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;input id=&amp;quot;fileInport&amp;quot; type=&amp;quot;file&amp;quot; data-ng-change-file=&amp;quot;upload&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ng-title====&lt;br /&gt;
&amp;lt;p&amp;gt; Mostrar title em options gerador pela diretiva nativa &amp;lt;b&amp;gt;ng-options&amp;lt;/b&amp;gt; na tag &amp;lt;b&amp;gt;&amp;lt;select&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
   &amp;lt;script&amp;gt;&lt;br /&gt;
       $scope.pessoas.lista = [{Id: 1, Description:'João'}, {Id: 2, Description:'Paulo'}, {Id: 3, Description:'Ana'}, {Id: 4, Description:'Mayra'}];&lt;br /&gt;
   &amp;lt;/script&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;select class=&amp;quot;form-control&amp;quot;&lt;br /&gt;
        ng-options=&amp;quot;pessoa as pessoa.Description for pessoa in pessoas.lista&amp;quot;&lt;br /&gt;
        ng-title=&amp;quot;pessoas.lista&amp;quot;&lt;br /&gt;
        ng-title-propertie=&amp;quot;Description&amp;quot;&lt;br /&gt;
        ng-title-index=&amp;quot;1&amp;quot;&lt;br /&gt;
        ng-title-selected&amp;gt;&lt;br /&gt;
        &amp;lt;option value=&amp;quot;&amp;quot;&amp;gt;--Selecione--&amp;lt;/option&amp;gt;&lt;br /&gt;
   &amp;lt;/select&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ng-show-loading====&lt;br /&gt;
&amp;lt;p&amp;gt; Mostra/oculta html de loading. Utilizado dentro do template da diretiva &amp;lt;b&amp;gt;/directives/_bundle/preloading/preloading.js&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div id=&amp;quot;preloading&amp;quot; ng-show-loading class=&amp;quot;ng-cloak loading-box&amp;quot;&amp;gt;&amp;lt;label&amp;gt;{{message}}&amp;lt;/label&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====notification-filter====&lt;br /&gt;
&amp;lt;p&amp;gt; Descontinuada... Os filtros do sistema não seguem um mesmo padrão de construção nos controles, o que torna a diretiva dispensável&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====page====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza o controle da paginação.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&amp;lt;b&amp;gt;dependência: &amp;lt;/b&amp;gt; &amp;quot;services/_bundle/pager/service.js&amp;quot; necessário injeção de dependência no controller - &amp;lt;b&amp;gt;$pager&amp;lt;/b&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Há 2 formas de indicar 'paginador':&amp;lt;/p&amp;gt;&lt;br /&gt;
* atributo &amp;quot;pager&amp;quot; funciona com objetos do escopo bind-two-way do angular, passagem de vários níveis de objeto&lt;br /&gt;
* atributo &amp;quot;varkey&amp;quot; funciona com somente 1 nível de objeto&lt;br /&gt;
- exemplo 1: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;page method=&amp;quot;getUploadQueueStatus()&amp;quot; &lt;br /&gt;
         pager=&amp;quot;pagerUploadQueue.paginate&amp;quot; &lt;br /&gt;
         total-pages=&amp;quot;{{pagerUploadQueue.pages}}&amp;quot; &lt;br /&gt;
         total-itens=&amp;quot;{{pagerUploadQueue.totalItens}}&amp;quot; &lt;br /&gt;
         page-size=&amp;quot;pagerUploadQueue.pageSize&amp;quot; &lt;br /&gt;
         data-arr-page-size=&amp;quot;[10,20,30,40,50,100]&amp;quot;&amp;gt;&amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
- exemplo 2: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;page method=&amp;quot;Paginate()&amp;quot; &lt;br /&gt;
         varkey=&amp;quot;paginate &amp;quot; &lt;br /&gt;
         total-pages=&amp;quot;{{pages}}&amp;quot; &lt;br /&gt;
         total-itens=&amp;quot;{{totalItens}}&amp;quot; &lt;br /&gt;
         page-size=&amp;quot;pageSize&amp;quot; &lt;br /&gt;
         data-arr-page-size=&amp;quot;[10,20,30,40,50,100]&amp;quot;&amp;gt;&amp;lt;/page&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
- exemplo no controller&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     $scope.paginate = $pager(ReportCorrectionModel.getDres);&lt;br /&gt;
     $scope.totalItens = 0;&lt;br /&gt;
     $scope.pages = 0;&lt;br /&gt;
     $scope.pageSize = 10;&lt;br /&gt;
     $scope.message = false;&lt;br /&gt;
     $scope.listResult = null;&lt;br /&gt;
&lt;br /&gt;
     $scope.search = function __search() {&lt;br /&gt;
          if (!validateDate() || !validate()) return;&lt;br /&gt;
	     $scope.pages = 0;&lt;br /&gt;
	     $scope.totalItens = 0;&lt;br /&gt;
	     $scope.paginate.indexPage(0);&lt;br /&gt;
	     $scope.pageSize = $scope.paginate.getPageSize();&lt;br /&gt;
	     $scope.searcheableFilter = angular.copy($scope.filters);&lt;br /&gt;
	     Paginate();&lt;br /&gt;
     };&lt;br /&gt;
     &lt;br /&gt;
     function Paginate() { &lt;br /&gt;
         $scope.paginate.paginate($scope.searcheableFilter).then(function (result) {&lt;br /&gt;
             if (result.success) {&lt;br /&gt;
		if (result.lista.length &amp;gt; 0) {&lt;br /&gt;
		    $scope.paginate.nextPage();&lt;br /&gt;
		    $scope.listResult = result.lista;&lt;br /&gt;
		    $scope.QuantidadeTotal = result.QuantidadeTotal;&lt;br /&gt;
		    if (!$scope.pages &amp;gt; 0) {&lt;br /&gt;
		        $scope.pages = $scope.paginate.totalPages();&lt;br /&gt;
		        $scope.totalItens = $scope.paginate.totalItens();&lt;br /&gt;
		    }&lt;br /&gt;
		} else {&lt;br /&gt;
		      $scope.message = true;&lt;br /&gt;
		      $scope.listResult = null;&lt;br /&gt;
		}&lt;br /&gt;
              }&lt;br /&gt;
	      else {&lt;br /&gt;
		  $notification[result.type ? result.type : 'error'](result.message);&lt;br /&gt;
	      }&lt;br /&gt;
       }, function () {&lt;br /&gt;
              $scope.message = true;&lt;br /&gt;
	       $scope.listResult = null;&lt;br /&gt;
       });&lt;br /&gt;
   };&lt;br /&gt;
   $scope.Paginate = Paginate;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====tooltip/popover====&lt;br /&gt;
&amp;lt;p&amp;gt; Responsável por construir as tooltips/popovers do sistema: &amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;&lt;br /&gt;
* Para utilização de popover há dependência da tooltip - &amp;lt;b&amp;gt;directives/_bundle/popover/tooltip.js&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;directives/_bundle/popover/helpers/dimensions.js&amp;lt;/b&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;css/vendor/angular-motion/**.css&amp;lt;/b&amp;gt;, aplica as animações&lt;br /&gt;
&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo popover:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;!-- utilização de popover no html--&amp;gt;&lt;br /&gt;
   &amp;lt;button class=&amp;quot;btnMais&amp;quot;&lt;br /&gt;
           type=&amp;quot;button&amp;quot;&lt;br /&gt;
           data-ng-click=&amp;quot;setMenu(item.Item.ItemId, item.Item.LastVersion, item.Item.BaseTextId)&amp;quot;&lt;br /&gt;
           data-placement=&amp;quot;top&amp;quot; data-trigger=&amp;quot;focus&amp;quot;&lt;br /&gt;
           data-custom-class=&amp;quot;itemListPopover&amp;quot;&lt;br /&gt;
           data-template=&amp;quot;Assets/js/angular/controllers/item/listItemMenu.html&amp;quot;&lt;br /&gt;
           data-animation=&amp;quot;popover-fade&amp;quot;&lt;br /&gt;
           data-container=&amp;quot;body&amp;quot;&lt;br /&gt;
           data-bs-popover=&amp;quot;popovermenu&amp;quot;&amp;gt;&lt;br /&gt;
           &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;view_list&amp;lt;/i&amp;gt;&lt;br /&gt;
   &amp;lt;/button&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;!-- template listItemMenu.html--&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;popover&amp;quot; tabindex=&amp;quot;-1&amp;quot; ng-show=&amp;quot;content&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;div class=&amp;quot;arrow&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
      &amp;lt;div class=&amp;quot;popover-content&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;ul class=&amp;quot;listaPopover&amp;quot;&amp;gt;&lt;br /&gt;
             &amp;lt;li&amp;gt;&lt;br /&gt;
		 &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;create&amp;lt;/i&amp;gt;&lt;br /&gt;
		 &amp;lt;a href=&amp;quot;javascript:void(0)&amp;quot; ng-click=&amp;quot;popovermenu.editar(popovermenu.id); $hide()&amp;quot;&amp;gt;Editar&amp;lt;/a&amp;gt;&lt;br /&gt;
	     &amp;lt;/li&amp;gt;&lt;br /&gt;
	     &amp;lt;li ng-hide=&amp;quot;item.Item.ItemNarrated&amp;quot; ng-click=&amp;quot;popovermenu.addItem(popovermenu.id); $hide()&amp;quot;&amp;gt;&lt;br /&gt;
		 &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;add&amp;lt;/i&amp;gt;&lt;br /&gt;
		 &amp;lt;a href=&amp;quot;javascript:void(0)&amp;quot;&amp;gt;Adicionar Item&amp;lt;/a&amp;gt;&lt;br /&gt;
	     &amp;lt;/li&amp;gt;&lt;br /&gt;
	     &amp;lt;li ng-click=&amp;quot;popovermenu.excluir(popovermenu.id); $hide()&amp;quot;&amp;gt;&lt;br /&gt;
		 &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;close&amp;lt;/i&amp;gt;&lt;br /&gt;
		 &amp;lt;a href=&amp;quot;javascript:void(0)&amp;quot;&amp;gt;Excluir&amp;lt;/a&amp;gt;&lt;br /&gt;
	     &amp;lt;/li&amp;gt;&lt;br /&gt;
          &amp;lt;/ul&amp;gt;&lt;br /&gt;
      &amp;lt;/div&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   //utilização no controller&lt;br /&gt;
   $scope.popovermenu = {&lt;br /&gt;
	title: &amp;quot;empty&amp;quot;,&lt;br /&gt;
	content: &amp;quot;empty&amp;quot;,&lt;br /&gt;
	id: undefined,&lt;br /&gt;
	lastVersion: undefined,&lt;br /&gt;
        visualizar: visualizarCallback, //function&lt;br /&gt;
        editar: editarCallback, //function&lt;br /&gt;
	excluir: excluirCallback, //function&lt;br /&gt;
	addItem: addItemCallback, //function&lt;br /&gt;
   };&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- exemplo tooltip com title:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &amp;lt;button type=&amp;quot;button&amp;quot;&lt;br /&gt;
             class=&amp;quot;btnPadrao&amp;quot;&lt;br /&gt;
             data-btn-checkbox=&amp;quot;&amp;quot;&lt;br /&gt;
             data-btn-checkbox-true=&amp;quot;1&amp;quot;&lt;br /&gt;
             data-btn-checkbox-false=&amp;quot;0&amp;quot;&lt;br /&gt;
             data-trigger=&amp;quot;hover&amp;quot;&lt;br /&gt;
             data-type=&amp;quot;success&amp;quot;&lt;br /&gt;
             data-title=&amp;quot;Aqui vai a descrição do que esse elemento representa.&amp;quot;&lt;br /&gt;
             data-placement=&amp;quot;top&amp;quot;&lt;br /&gt;
             data-container=&amp;quot;body&amp;quot;&lt;br /&gt;
             data-bs-tooltip&amp;gt;&lt;br /&gt;
            &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;add&amp;lt;/i&amp;gt;&lt;br /&gt;
      &amp;lt;/button&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- exemplo tooltip com template:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- Utilização de tooltip com template --&amp;gt;&lt;br /&gt;
    &amp;lt;div style=&amp;quot;cursor:pointer; right: 15px;&amp;quot;&lt;br /&gt;
         data-trigger=&amp;quot;hover&amp;quot;&lt;br /&gt;
         data-type=&amp;quot;success&amp;quot;&lt;br /&gt;
         data-template=&amp;quot;Assets/js/angular/controllers/test/currentFiltersDiscipline.html&amp;quot;&lt;br /&gt;
         data-placement=&amp;quot;bottom&amp;quot;&lt;br /&gt;
         data-animation=&amp;quot;am-fade&amp;quot;&lt;br /&gt;
         data-container=&amp;quot;body&amp;quot;&lt;br /&gt;
         data-bs-tooltip&lt;br /&gt;
         class=&amp;quot;notificationFilter&amp;quot;&amp;gt;{{popoverFiltersDisciplines.selecteds.length}}&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;!-- Utilização de tooltip com template --&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;tooltip in&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;div class=&amp;quot;tooltip-inner html-bind-trusted imgResponsive&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div data-ng-if=&amp;quot;popoverFiltersDisciplines.selecteds.length!=0&amp;quot;&amp;gt;Filtros selecionados&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;hr data-ng-if=&amp;quot;popoverFiltersDisciplines.selecteds.length!=0&amp;quot; /&amp;gt;&lt;br /&gt;
            &amp;lt;ul style=&amp;quot;list-style:none; padding: 0px 0px 0px 0px;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;li data-ng-repeat=&amp;quot;($index, filter) in popoverFiltersDisciplines.selecteds track by $index&amp;quot; style=&amp;quot;margin: 10px 0px 0px 0px&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;i class=&amp;quot;material-icons&amp;quot;&amp;gt;check&amp;lt;/i&amp;gt;  {{filter.Description}}&lt;br /&gt;
                &amp;lt;/li&amp;gt;&lt;br /&gt;
            &amp;lt;/ul&amp;gt;&lt;br /&gt;
            &amp;lt;span data-ng-if=&amp;quot;popoverFiltersDisciplines.selecteds.length==0&amp;quot;&amp;gt;Nenhum filtro selecionado&amp;lt;/span&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;br/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====preloading====&lt;br /&gt;
&amp;lt;p&amp;gt;Indica que há requisições Ajax em progresso no sistema. Trabalha baseando-se no service &amp;lt;b&amp;gt;$httpTransform&amp;lt;/b&amp;gt; presente no arquivo &amp;lt;b&amp;gt;/service/authenticationinterceptor.service.js&amp;lt;/b&amp;gt; &amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;preloading message=&amp;quot;Carregando...&amp;quot;&amp;gt;&amp;lt;/preloading&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====radio-select====&lt;br /&gt;
&amp;lt;p&amp;gt;Seleção de radio.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;div radio-select &lt;br /&gt;
         radiolist=&amp;quot;situationList&amp;quot; &lt;br /&gt;
         radioselected=&amp;quot;selectedObjSituation&amp;quot; &lt;br /&gt;
         custom-class=&amp;quot;radio-inline&amp;quot; &lt;br /&gt;
         style=&amp;quot;margin: 0 -84px;&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====rating====&lt;br /&gt;
&amp;lt;p&amp;gt;Rating de dificuldades do sistema.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div rating-directive &lt;br /&gt;
        id=&amp;quot;dificuldade&amp;quot; &lt;br /&gt;
        list=&amp;quot;dificuldade.lista&amp;quot; &lt;br /&gt;
        difficulty=&amp;quot;dificuldade.objDificuldade&amp;quot; &lt;br /&gt;
        lock=&amp;quot;false&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====redactor-directive====&lt;br /&gt;
&amp;lt;p&amp;gt;Controlar o plugin redactor.js através de uma directiva angularJS.&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;images&amp;lt;/b&amp;gt; - model que armazena os ids dos arquivos utilizados dentro do redactor&lt;br /&gt;
* &amp;lt;b&amp;gt;model&amp;lt;/b&amp;gt; - armazena o texto html gerado pelo redactor&lt;br /&gt;
* &amp;lt;b&amp;gt;tipo&amp;lt;/b&amp;gt; - indica para qual campo (tabela) o arquivo presente no redactor pertence&lt;br /&gt;
* &amp;lt;b&amp;gt;plugins&amp;lt;/b&amp;gt; - foram criados plugins internos para o redactor, veja: vendor/redactor&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;textarea redactor&lt;br /&gt;
              id=&amp;quot;textoBase&amp;quot;&lt;br /&gt;
              name=&amp;quot;textoBase&amp;quot; &lt;br /&gt;
              class=&amp;quot;form-control&amp;quot; &lt;br /&gt;
              images=&amp;quot;textobase.Files&amp;quot; &lt;br /&gt;
              data-ng-model=&amp;quot;textobase.Description&amp;quot; &lt;br /&gt;
              tipo=&amp;quot;@((Byte)EnumFileType.BaseText)&amp;quot;&amp;gt; &lt;br /&gt;
    &amp;lt;/textarea&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====report-filters====&lt;br /&gt;
&amp;lt;p&amp;gt;Filtros laterais para relatórios devido a 3 tela utilizarem a mesma sequência de filtros eles foram transformados em diretiva&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &amp;lt;report-filters filters=&amp;quot;filters&amp;quot; global=&amp;quot;global&amp;quot;&amp;gt;&amp;lt;/report-filters&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====tags-input====&lt;br /&gt;
&amp;lt;p&amp;gt;Cria um campo do tipo tags&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;!-- elemento --&amp;gt;&lt;br /&gt;
   &amp;lt;tags-input ng-model=&amp;quot;tags&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/tags-input&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //formato aceito&lt;br /&gt;
   $scope.tags = [{ text: 'just' }, { text: 'some' }, { text: 'cool' }];&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====uploader====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza o upload de arquivos.&amp;lt;/p&amp;gt;&lt;br /&gt;
* &amp;lt;b&amp;gt;upload.js&amp;lt;/b&amp;gt; - realiza o upload&lt;br /&gt;
* &amp;lt;b&amp;gt;uploader.js&amp;lt;/b&amp;gt; - verifica as alterações do input['file']&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div upload&lt;br /&gt;
        type=&amp;quot;File&amp;quot; &lt;br /&gt;
        trash=&amp;quot;true&amp;quot; &lt;br /&gt;
        placeholder=&amp;quot;um arquivo&amp;quot; &lt;br /&gt;
        callback=&amp;quot;fileUploadSuccess&amp;quot; &lt;br /&gt;
        component=&amp;quot;modelFile&amp;quot;&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====writemaths====&lt;br /&gt;
&amp;lt;p&amp;gt;Mostra o preview das fórmulas matemáticas LaTex digitadas no plugin redactor.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
   &amp;lt;div writemaths position=&amp;quot;center top&amp;quot; previewposition=&amp;quot;center bottom&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;textarea redactor&lt;br /&gt;
                  id=&amp;quot;textoBase&amp;quot; &lt;br /&gt;
                  name=&amp;quot;textoBase&amp;quot; &lt;br /&gt;
                  class=&amp;quot;form-control&amp;quot; &lt;br /&gt;
                  images=&amp;quot;textobase.Files&amp;quot; &lt;br /&gt;
                  ng-model=&amp;quot;textobase.Description&amp;quot; &lt;br /&gt;
                  tipo=&amp;quot;@((Byte)EnumFileType.BaseText)&amp;quot;&amp;gt; &lt;br /&gt;
         &amp;lt;/textarea&amp;gt;&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Filters===&lt;br /&gt;
Filtros são a maneira mais dinâmica de formatar dados na dinâmica bind do angular.&lt;br /&gt;
&lt;br /&gt;
====minimize====&lt;br /&gt;
&amp;lt;p&amp;gt;Aplica reticências em um bind a partir do length indicado&amp;lt;/p&amp;gt;&lt;br /&gt;
* recomenda-se utilização de tooltip para exibição do texto na integra.&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    $scope.meuTexto = &amp;quot;Um texto que extremamente longo pode ser minificado&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div&amp;gt;&lt;br /&gt;
      {{meuTexto | minimize:20}}&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //resultado seria&lt;br /&gt;
   &amp;quot;Um texto que extrema...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====moment====&lt;br /&gt;
&amp;lt;p&amp;gt;Formatador de dadas utilizando-se do plugin moment.&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo para formato ISO 8601&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    $scope.createDate = &amp;quot;2016/01/01&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div&amp;gt;&lt;br /&gt;
      {{createDate | moment:&amp;quot;DD/MM/YYYY&amp;quot;:true}}&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //resultado seria&lt;br /&gt;
   &amp;quot;01/01/2016&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
- exemplo para formato &amp;lt;b&amp;gt;/date()/json&amp;lt;/b&amp;gt; -&amp;gt; /Date(1224043200000)/&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    $scope.createDate = new Date();&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div&amp;gt;&lt;br /&gt;
      {{createDate | moment:&amp;quot;DD/MM/YYYY&amp;quot;}}&lt;br /&gt;
   &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //resultado seria&lt;br /&gt;
   &amp;quot;01/01/2016&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====trustedHtml====&lt;br /&gt;
&amp;lt;p&amp;gt;Converte html não confiável para confiável, utilizado em locais com &amp;lt;b&amp;gt;ng-bind-html&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   $scope.meuHtml = &amp;quot;&amp;lt;div&amp;gt;Meu texto&amp;lt;/div&amp;gt;&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div ng-bind-html=&amp;quot;meuHtml | trustedHtml&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //resultado seria, sem o filtro o bind daria erro de trust&lt;br /&gt;
   &amp;quot;Meu texto&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====capitalize====&lt;br /&gt;
&amp;lt;p&amp;gt;Converte a 1ª letra em ToUpperCase &amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   $scope.label= &amp;quot;código&amp;quot;;&lt;br /&gt;
&lt;br /&gt;
   &amp;lt;div&amp;gt; {{label | capitalize}}&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
   //resultado seria: &amp;quot;Código&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====between====&lt;br /&gt;
&amp;lt;p&amp;gt; Utilizado na diretiva de paginação do sistema.&amp;lt;/p&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====changeBlankSpace====&lt;br /&gt;
&amp;lt;p&amp;gt;Realiza a conversão de caracteres de espaçamento nas transações i/o do redactor.&lt;br /&gt;
Troca os caracteres de espaçamento de &amp;lt;b&amp;gt;\s&amp;lt;/b&amp;gt; para &amp;lt;b&amp;gt;&amp;amp;nbsp;&amp;lt;/b&amp;gt;. Assim os espaços em branco são respeitados no ng-bind&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &amp;lt;div ng-bind-html=&amp;quot;(abstract.textbase | changeBlankSpace) | trustedHtml&amp;quot;&amp;gt;&amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====tagToString====&lt;br /&gt;
&amp;lt;p&amp;gt;Quando um &amp;lt;b&amp;gt;texto base&amp;lt;/b&amp;gt; possuí somente imagens o filtro retorna uma string indicando &amp;lt;b&amp;gt;&amp;lt;somente imagem&amp;gt;&amp;lt;/b&amp;gt;&amp;lt;/p&amp;gt;&lt;br /&gt;
- exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    {{ itens.Statement | tagToString }}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Models===&lt;br /&gt;
A camada de comunicação do sistema, os models são mapeados segundo os controllers presentes no asp.Net, são serviços que são injetados nos controllers (angularjs) que irão interagir com 1 ou mais controller (asp.Net). No Avalia+ o serviço foi contruído com o componente nativo &amp;lt;b&amp;gt;$resource&amp;lt;/b&amp;gt;. Como ele vem sendo utilizado desde o começo resolveu adota-lo como padrão. No entanto, uma possível futura melhoria ou abordagem seria interessante fazer o uso de &amp;lt;b&amp;gt;$http&amp;lt;/b&amp;gt;.&lt;br /&gt;
-exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
     &lt;br /&gt;
    /* &lt;br /&gt;
     * File-Model&lt;br /&gt;
     */&lt;br /&gt;
    (function () {&lt;br /&gt;
	angular.module('services').factory('FileModel', ['$resource', function ($resource) {&lt;br /&gt;
&lt;br /&gt;
		// Model&lt;br /&gt;
		var model = {&lt;br /&gt;
&lt;br /&gt;
			'uploadFile': {&lt;br /&gt;
				method: 'POST',&lt;br /&gt;
				url: base_url('File/UploadFile')&lt;br /&gt;
			},&lt;br /&gt;
			'upload': {&lt;br /&gt;
				method: 'POST',&lt;br /&gt;
				url: base_url('File/Upload')&lt;br /&gt;
			},&lt;br /&gt;
			'delete': {&lt;br /&gt;
				method: 'POST',&lt;br /&gt;
				url: base_url('File/LogicalDelete')&lt;br /&gt;
			},&lt;br /&gt;
			'searchUploadedFiles': {&lt;br /&gt;
			    method: 'GET',&lt;br /&gt;
			    url: base_url('File/SearchUploadedFiles')&lt;br /&gt;
			},&lt;br /&gt;
			'existsLinkedFiles': {&lt;br /&gt;
			    method: 'GET',&lt;br /&gt;
			    url: base_url('File/ExistsLinkedFiles')&lt;br /&gt;
			},&lt;br /&gt;
			'checkFileExists': {&lt;br /&gt;
			    method: 'GET',&lt;br /&gt;
			    url: base_url('File/CheckFileExists')&lt;br /&gt;
			},&lt;br /&gt;
			'checkFilePathExists': {&lt;br /&gt;
			    method: 'GET',&lt;br /&gt;
			    url: base_url('File/CheckFilePathExists')&lt;br /&gt;
			}&lt;br /&gt;
		};&lt;br /&gt;
&lt;br /&gt;
		// Retorna o serviço       &lt;br /&gt;
		return $resource('', {}, model);&lt;br /&gt;
&lt;br /&gt;
	}]);&lt;br /&gt;
   })();&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Services===&lt;br /&gt;
Serviços básicos do sistema.&lt;br /&gt;
&lt;br /&gt;
====notification====&lt;br /&gt;
&amp;lt;p&amp;gt;Controla a pilha de notificações do sistema, pilha que é utilizada pela diretiva &amp;lt;b&amp;gt;alert.js&amp;lt;/b&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
-exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- html com a diretiva alert--&amp;gt;&lt;br /&gt;
    &amp;lt;alert&amp;gt;&amp;lt;/alert&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    (function (angular, $) {&lt;br /&gt;
&lt;br /&gt;
        'use strict';&lt;br /&gt;
&lt;br /&gt;
        //~SETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
    &lt;br /&gt;
        //~GETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain')&lt;br /&gt;
            .controller(&amp;quot;FormController&amp;quot;, FormController);&lt;br /&gt;
    &lt;br /&gt;
        FormController.$inject = ['$scope', '$notification'];&lt;br /&gt;
&lt;br /&gt;
        function FormController($scope, $notification) {&lt;br /&gt;
            $notification.alert('minha mensagem aqui.');&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
   })(angular, jQuery);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====pager====&lt;br /&gt;
&amp;lt;p&amp;gt;Controla a paginação utilizada no sistema. Dependente da diretiva  &amp;lt;b&amp;gt;page.js&amp;lt;/b&amp;gt;.&amp;lt;/p&amp;gt;&lt;br /&gt;
&amp;lt;p&amp;gt;Há duas maneiras de indicar para a diretiva quem é a instancia que controla a paginação:&amp;lt;/p&amp;gt;&lt;br /&gt;
*{object} pager=&amp;quot;paginate&amp;quot; recebe a instância do $pager &amp;lt;b&amp;gt;$scope, exemplo -&amp;gt; $scope.nivel1.nivel2.paginate&amp;lt;/b&amp;gt;&lt;br /&gt;
*{string} varkey=&amp;quot;paginate&amp;quot; recebe o nome da instância presente no $parent (Só funciona para objetos de 1 único nivel no &amp;lt;b&amp;gt;$scope, exemplo -&amp;gt; $scope['paginate']&amp;lt;/b&amp;gt;)&lt;br /&gt;
-exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
    &amp;lt;!-- html com a diretiva page --&amp;gt;&lt;br /&gt;
    &amp;lt;page method=&amp;quot;search()&amp;quot; &lt;br /&gt;
          pager=&amp;quot;paginate&amp;quot; &lt;br /&gt;
          total-pages=&amp;quot;{{pages}}&amp;quot; &lt;br /&gt;
          total-itens=&amp;quot;{{totalItens}}&amp;quot; &lt;br /&gt;
          page-size=&amp;quot;pageSize&amp;quot; &lt;br /&gt;
          data-arr-page-size=&amp;quot;[10,20,30,40,50,100]&amp;quot;&amp;gt;&amp;lt;/page&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
    (function (angular, $) {&lt;br /&gt;
&lt;br /&gt;
        'use strict';&lt;br /&gt;
&lt;br /&gt;
        //~SETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
    &lt;br /&gt;
        //~GETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain')&lt;br /&gt;
            .controller(&amp;quot;FormController&amp;quot;, FormController);&lt;br /&gt;
    &lt;br /&gt;
        FormController.$inject = ['$scope', '$pager', 'SkillModel'];&lt;br /&gt;
&lt;br /&gt;
        function FormController($scope, $pager, SkillModel) {&lt;br /&gt;
            &lt;br /&gt;
             $scope.paginate = $pager(SkillModel.searchByMatrix); //deve receber o service $resource&lt;br /&gt;
             $scope.message = false;&lt;br /&gt;
             $scope.pages = 0;&lt;br /&gt;
	     $scope.totalItens = 0;&lt;br /&gt;
	     $scope.pageSize = 10;&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
   })(angular, jQuery);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====util====&lt;br /&gt;
&amp;lt;p&amp;gt;Centralizador de utilidades do sistema, inclusive a function responsável por obter os parâmetros presente na query string da url&amp;lt;/p&amp;gt;&lt;br /&gt;
-exemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
    (function (angular, $) {&lt;br /&gt;
&lt;br /&gt;
        'use strict';&lt;br /&gt;
&lt;br /&gt;
        //~SETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
    &lt;br /&gt;
        //~GETTER&lt;br /&gt;
        angular&lt;br /&gt;
            .module('appMain')&lt;br /&gt;
            .controller(&amp;quot;FormController&amp;quot;, FormController);&lt;br /&gt;
    &lt;br /&gt;
        FormController.$inject = ['$scope', '$util'];&lt;br /&gt;
&lt;br /&gt;
        function FormController($scope, $util) {&lt;br /&gt;
            &lt;br /&gt;
            $scope.params = $util.getUrlParams();&lt;br /&gt;
        };&lt;br /&gt;
&lt;br /&gt;
   })(angular, jQuery);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====ApiSetting====&lt;br /&gt;
Responsável por configurar requisições de comunicação com API. Vide utilização no service de interceptação de requisições&lt;br /&gt;
&lt;br /&gt;
====authenticationinterceptor.service====&lt;br /&gt;
&amp;lt;p&amp;gt;Todas as requisições (request/response/error) partindo dos componentes nativos &amp;lt;b&amp;gt;$resource/$http&amp;lt;/b&amp;gt; serão interceptadas antes de seguir o fluxo normal client/server/client. &amp;lt;/p&amp;gt;&lt;br /&gt;
*$httpTransform -&amp;gt; serviço presente no interceptor responsável por contabilizar a pilha de requisições &amp;lt;b&amp;gt;ngShowLoading.js/preloading.js&amp;lt;/b&amp;gt; utilizam-se desse serviço para mostrar o loader do sistema.&lt;br /&gt;
*Para controllers (angularJS) que não se comunicam com API basta &amp;lt;b&amp;gt;não&amp;lt;/b&amp;gt; configurar o service $ApiSetting&lt;br /&gt;
*Para controllers (angularJS) que se comunicam com APi segue abaixo o exemplo de como config. o service&lt;br /&gt;
-examplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
     (function (angular, $) {&lt;br /&gt;
&lt;br /&gt;
	'use strict';&lt;br /&gt;
&lt;br /&gt;
	//~SETTER&lt;br /&gt;
	angular&lt;br /&gt;
		.module('appMain', ['services', 'filters', 'directives']);&lt;br /&gt;
&lt;br /&gt;
	//~GETTER&lt;br /&gt;
	angular&lt;br /&gt;
	    .module('appMain')&lt;br /&gt;
	    .controller(&amp;quot;CorrectionController&amp;quot;, CorrectionController)&lt;br /&gt;
            .config($config);&lt;br /&gt;
&lt;br /&gt;
	CorrectionController.$inject = ['$scope'];&lt;br /&gt;
	$config.$inject = ['$apiSettingConfigProvider'];&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
	function $config($apiSettingConfigProvider) {&lt;br /&gt;
	    var params = $apiSettingConfigProvider.getUrlParams();&lt;br /&gt;
	    $apiSettingConfigProvider.setUrlMethodExcluded(&amp;quot;GetAuthorize&amp;quot;);&lt;br /&gt;
	    $apiSettingConfigProvider.setUrlAuthentication(base_url(&amp;quot;/MeuControllerASPNET/GetAuthorize&amp;quot;));&lt;br /&gt;
	};&lt;br /&gt;
&lt;br /&gt;
	&lt;br /&gt;
	function CorrectionController($scope) {&lt;br /&gt;
        }&lt;br /&gt;
&lt;br /&gt;
     })(angular, jQuery);&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Versões dos frameworks===&lt;br /&gt;
&lt;br /&gt;
{| border=1&lt;br /&gt;
|- &lt;br /&gt;
| Framework || versão || customizado p/ necessidade interna || Ref.&lt;br /&gt;
|- &lt;br /&gt;
| angularJS || 1.4.9 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || https://angularjs.org/&lt;br /&gt;
|- &lt;br /&gt;
| compressor || 0.1 || &amp;lt;center&amp;gt;sim&amp;lt;/center&amp;gt; || Mstech&lt;br /&gt;
|- &lt;br /&gt;
| datepicker || 2012 || &amp;lt;center&amp;gt;sim&amp;lt;/center&amp;gt; || http://www.eyecon.ro/bootstrap-datepicker&lt;br /&gt;
|- &lt;br /&gt;
| highcharts || 4.0.4 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || http://www.highcharts.com/&lt;br /&gt;
|- &lt;br /&gt;
| redactor || 10.2.5 || &amp;lt;center&amp;gt;sim&amp;lt;/center&amp;gt; || https://imperavi.com/redactor/&lt;br /&gt;
|- &lt;br /&gt;
| resumable || x.x || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || http://github.com/23/resumable.js&lt;br /&gt;
|- &lt;br /&gt;
| bootstrap || 3.2.0 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || http://getbootstrap.com/&lt;br /&gt;
|- &lt;br /&gt;
| jquery || 2.1.1 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || https://jquery.com/&lt;br /&gt;
|- &lt;br /&gt;
| jqueryui || 1.10.3 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || http://jqueryui.com&lt;br /&gt;
|- &lt;br /&gt;
| mathJax|| x.x || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || https://www.mathjax.org/&lt;br /&gt;
|- &lt;br /&gt;
| moment || 2.10.6 || &amp;lt;center&amp;gt;não&amp;lt;/center&amp;gt; || http://momentjs.com/&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Estrutura de pastas===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
├───css&lt;br /&gt;
│   │   prova.css&lt;br /&gt;
│   │   style.css&lt;br /&gt;
│   │   style.css.map&lt;br /&gt;
│   │   style.min.css&lt;br /&gt;
│   │   style.scss&lt;br /&gt;
│   │   &lt;br /&gt;
│   ├───vendor&lt;br /&gt;
│   │   │   awesome-bootstrap-checkbox.css&lt;br /&gt;
│   │   │   bootstrap.css&lt;br /&gt;
│   │   │   font-awesome.css&lt;br /&gt;
│   │   │   &lt;br /&gt;
│   │   └───angular-motion&lt;br /&gt;
│   │       │   angular-motion.css&lt;br /&gt;
│   │       │   &lt;br /&gt;
│   │       └───modules&lt;br /&gt;
│   │               collapse.css&lt;br /&gt;
│   │               fade-and-slide.css&lt;br /&gt;
│   │               fade.css&lt;br /&gt;
│   │               flip.css&lt;br /&gt;
│   │               menu.css&lt;br /&gt;
│   │               popover-fade.css&lt;br /&gt;
│   │               &lt;br /&gt;
│   └───_bundle&lt;br /&gt;
│           angular.css&lt;br /&gt;
│           &lt;br /&gt;
├───fonts&lt;br /&gt;
│       &lt;br /&gt;
├───images&lt;br /&gt;
│&lt;br /&gt;
├───js&lt;br /&gt;
│   ├───angular&lt;br /&gt;
│   │   ├───controllers&lt;br /&gt;
│   │   │   ├───absenceReason&lt;br /&gt;
│   │   │   │       formAbsenceReasonController.js&lt;br /&gt;
│   │   │   │       listAbsenceReasonController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───adherence&lt;br /&gt;
│   │   │   │       adherenceController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───answerSheet&lt;br /&gt;
│   │   │   │       answerSheetLotController.js&lt;br /&gt;
│   │   │   │       answerSheetStudentController.js&lt;br /&gt;
│   │   │   │       batchDetailsController.js&lt;br /&gt;
│   │   │   │       customTooltip.html&lt;br /&gt;
│   │   │   │       schoolLotMenu.html&lt;br /&gt;
│   │   │   │       testLotMenu.html&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───cognitiveCompetence&lt;br /&gt;
│   │   │   │       formCognitiveCompetenceController.js&lt;br /&gt;
│   │   │   │       listCognitiveCompetenceController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───correction&lt;br /&gt;
│   │   │   │       correctionController.js&lt;br /&gt;
│   │   │   │       correctionResultController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───correlatedSkill&lt;br /&gt;
│   │   │   │       formCorrelatedSkillController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───discipline&lt;br /&gt;
│   │   │   │       formDisciplineController.js&lt;br /&gt;
│   │   │   │       listDisciplineController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───evaluationMatrix&lt;br /&gt;
│   │   │   │       evaluationMatrixController.js&lt;br /&gt;
│   │   │   │       evaluationMatrixListController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───file&lt;br /&gt;
│   │   │   │       fileController.js&lt;br /&gt;
│   │   │   │       fileMenu.html&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───home&lt;br /&gt;
│   │   │   │       homeController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───item&lt;br /&gt;
│   │   │   │       formItemController.js&lt;br /&gt;
│   │   │   │       listItemController.js&lt;br /&gt;
│   │   │   │       listItemMenu.html&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───itemLevel&lt;br /&gt;
│   │   │   │       formItemLevelController.js&lt;br /&gt;
│   │   │   │       listItemLevelController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───itemType&lt;br /&gt;
│   │   │   │       itemTypeFormController.js&lt;br /&gt;
│   │   │   │       itemTypeListController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───modelEvaluationMatrix&lt;br /&gt;
│   │   │   │       modelEvaluationMatrixController.js&lt;br /&gt;
│   │   │   │       modelEvaluationMatrixListController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───modelTest&lt;br /&gt;
│   │   │   │       modelTestController.js&lt;br /&gt;
│   │   │   │       modelTestListController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───parameter&lt;br /&gt;
│   │   │   │       parameterController.js&lt;br /&gt;
│   │   │   │       parameterMenu.html&lt;br /&gt;
│   │   │   │       parameterVersionableMenu.html&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───performanceLevel&lt;br /&gt;
│   │   │   │       formPerformanceLevelController.js&lt;br /&gt;
│   │   │   │       listPerformanceLevelController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportAnswerSheet&lt;br /&gt;
│   │   │   │       reportAnswerSheetDREController.js&lt;br /&gt;
│   │   │   │       reportAnswerSheetFilesController.js&lt;br /&gt;
│   │   │   │       reportAnswerSheetSchoolController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportCorrection&lt;br /&gt;
│   │   │   │       reportClasseController.js&lt;br /&gt;
│   │   │   │       reportDREController.js&lt;br /&gt;
│   │   │   │       reportSchoolController.js&lt;br /&gt;
│   │   │   │       reportStudentController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportItem&lt;br /&gt;
│   │   │   │       reportItemController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportTest&lt;br /&gt;
│   │   │   │       graphicPerformanceSchoolController.js&lt;br /&gt;
│   │   │   │       performanceItemController.js&lt;br /&gt;
│   │   │   │       performanceSchoolController.js&lt;br /&gt;
│   │   │   │       performanceSkillController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───test&lt;br /&gt;
│   │   │   │       indexRequestRevokeMenu.html&lt;br /&gt;
│   │   │   │       menu-test-import-tpl.html&lt;br /&gt;
│   │   │   │       testAdministrateController.js&lt;br /&gt;
│   │   │   │       testController.js&lt;br /&gt;
│   │   │   │       testImportController.js&lt;br /&gt;
│   │   │   │       testListController.js&lt;br /&gt;
│   │   │   │       testListMenu.html&lt;br /&gt;
│   │   │   │       testReportController.js&lt;br /&gt;
│   │   │   │       testRequestRevokeController.js&lt;br /&gt;
│   │   │   │       testResponsesController.js&lt;br /&gt;
│   │   │   │       testRevokeController.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   └───testType&lt;br /&gt;
│   │   │           formTestTypeController.js&lt;br /&gt;
│   │   │           listTestTypeController.js&lt;br /&gt;
│   │   │           &lt;br /&gt;
│   │   ├───directives&lt;br /&gt;
│   │   │   │   directives.js&lt;br /&gt;
│   │   │   │   &lt;br /&gt;
│   │   │   └───_bundle&lt;br /&gt;
│   │   │       ├───alert&lt;br /&gt;
│   │   │       │       alert.css&lt;br /&gt;
│   │   │       │       alert.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───checkbox-group&lt;br /&gt;
│   │   │       │       ckeckbox-group.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───collapse&lt;br /&gt;
│   │   │       │       collapse.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───datepicker&lt;br /&gt;
│   │   │       │       datepicker-directive.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───fieldinteger&lt;br /&gt;
│   │   │       │       fieldinteger.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───highcharts&lt;br /&gt;
│   │   │       │       highcharts-ng.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───item-brief&lt;br /&gt;
│   │   │       │       item-brief.html&lt;br /&gt;
│   │   │       │       item-brief.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───menu&lt;br /&gt;
│   │   │       │       menu.html&lt;br /&gt;
│   │   │       │       menu.js&lt;br /&gt;
│   │   │       │       sitemas.html&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───modal&lt;br /&gt;
│   │   │       │       modal.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───modal-alert&lt;br /&gt;
│   │   │       │       modal-alert.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───ng-change-file&lt;br /&gt;
│   │   │       │       ng-change-file.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───ng-title&lt;br /&gt;
│   │   │       │       ng-title.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───ngShowLoading&lt;br /&gt;
│   │   │       │       ngShowLoading.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───notification-filter&lt;br /&gt;
│   │   │       │       notification.filter.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───page&lt;br /&gt;
│   │   │       │       page.css&lt;br /&gt;
│   │   │       │       page.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───popover&lt;br /&gt;
│   │   │       │   │   popover.html&lt;br /&gt;
│   │   │       │   │   popover.js&lt;br /&gt;
│   │   │       │   │   tooltip.html&lt;br /&gt;
│   │   │       │   │   tooltip.js&lt;br /&gt;
│   │   │       │   │   &lt;br /&gt;
│   │   │       │   └───helpers&lt;br /&gt;
│   │   │       │           date-parser.js&lt;br /&gt;
│   │   │       │           debounce.js&lt;br /&gt;
│   │   │       │           dimensions.js&lt;br /&gt;
│   │   │       │           parse-options.js&lt;br /&gt;
│   │   │       │           raf.js&lt;br /&gt;
│   │   │       │           &lt;br /&gt;
│   │   │       ├───preloading&lt;br /&gt;
│   │   │       │       preloading.css&lt;br /&gt;
│   │   │       │       preloading.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───radio-select&lt;br /&gt;
│   │   │       │       radio-select.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───rating&lt;br /&gt;
│   │   │       │       rating-directive.js&lt;br /&gt;
│   │   │       │       rating.css&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───redactor-directive&lt;br /&gt;
│   │   │       │       redactor-directive.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───reportFilters&lt;br /&gt;
│   │   │       │       filtersTpl.html&lt;br /&gt;
│   │   │       │       reportFilters.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───tags-input&lt;br /&gt;
│   │   │       │       ng-tags-input.css&lt;br /&gt;
│   │   │       │       ng-tags-input.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───uploader&lt;br /&gt;
│   │   │       │       upload.js&lt;br /&gt;
│   │   │       │       uploader.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       └───writemaths&lt;br /&gt;
│   │   │               rangy-core.js&lt;br /&gt;
│   │   │               textinputs_jquery.js&lt;br /&gt;
│   │   │               writemaths-directive.js&lt;br /&gt;
│   │   │               writemaths.css&lt;br /&gt;
│   │   │               writemaths.js&lt;br /&gt;
│   │   │               &lt;br /&gt;
│   │   ├───filters&lt;br /&gt;
│   │   │   │   filters.js&lt;br /&gt;
│   │   │   │   &lt;br /&gt;
│   │   │   └───_bundle&lt;br /&gt;
│   │   │       ├───between&lt;br /&gt;
│   │   │       │       between.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───changeBlankSpace&lt;br /&gt;
│   │   │       │       changeBlankSpace.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───minimize&lt;br /&gt;
│   │   │       │       minimize.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───moment&lt;br /&gt;
│   │   │       │       moment.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       ├───tagToString&lt;br /&gt;
│   │   │       │       tagToString.js&lt;br /&gt;
│   │   │       │       &lt;br /&gt;
│   │   │       └───trustedHtml&lt;br /&gt;
│   │   │               trustedHtml.js&lt;br /&gt;
│   │   │           &lt;br /&gt;
│   │   ├───models&lt;br /&gt;
│   │   │   ├───AbsenceReason&lt;br /&gt;
│   │   │   │       absenceReasonModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───adherence&lt;br /&gt;
│   │   │   │       adherenceApiModel.js&lt;br /&gt;
│   │   │   │       adherenceModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───answerSheet&lt;br /&gt;
│   │   │   │       answerSheetModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───cognitiveCompetence&lt;br /&gt;
│   │   │   │       cognitiveCompetenceModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───correction&lt;br /&gt;
│   │   │   │       correctionApiModel.js&lt;br /&gt;
│   │   │   │       correctionModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───correlatedSkill&lt;br /&gt;
│   │   │   │       correlatedSkillModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───course&lt;br /&gt;
│   │   │   │       courseModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───discipline&lt;br /&gt;
│   │   │   │       disciplineModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───evaluationMatrix&lt;br /&gt;
│   │   │   │       evaluationMatrixModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───evaluationMatrixCourse&lt;br /&gt;
│   │   │   │       evaluationMatrixCourseModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───EvaluationMatrixCourseCurriculumGrade&lt;br /&gt;
│   │   │   │       EvaluationMatrixCourseCurriculumGradeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───file&lt;br /&gt;
│   │   │   │       fileModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───formatType&lt;br /&gt;
│   │   │   │       formatTypeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───Integration&lt;br /&gt;
│   │   │   │   ├───course&lt;br /&gt;
│   │   │   │   │       courseModel.js&lt;br /&gt;
│   │   │   │   │       &lt;br /&gt;
│   │   │   │   ├───curriculumGrade&lt;br /&gt;
│   │   │   │   │       curriculumGradeModel.js&lt;br /&gt;
│   │   │   │   │       &lt;br /&gt;
│   │   │   │   ├───levelEducation&lt;br /&gt;
│   │   │   │   │       levelEducationModel.js&lt;br /&gt;
│   │   │   │   │       &lt;br /&gt;
│   │   │   │   └───modality&lt;br /&gt;
│   │   │   │           modalityModel.js&lt;br /&gt;
│   │   │   │           &lt;br /&gt;
│   │   │   ├───item&lt;br /&gt;
│   │   │   │       itemModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───itemLevel&lt;br /&gt;
│   │   │   │       itemLevelModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───itemSituation&lt;br /&gt;
│   │   │   │       itemSituationModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───itemType&lt;br /&gt;
│   │   │   │       itemTypeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───modelEvaluationMatrix&lt;br /&gt;
│   │   │   │       modelEvaluationMatrixModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───modelSkillLevel&lt;br /&gt;
│   │   │   │       modelSkillLevelModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───modelTestModel&lt;br /&gt;
│   │   │   │       modelTestModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───parameter&lt;br /&gt;
│   │   │   │       parameterModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───performanceLevel&lt;br /&gt;
│   │   │   │       performanceLevelModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportAnswerSheet&lt;br /&gt;
│   │   │   │       reportAnswerSheetModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportCorrection&lt;br /&gt;
│   │   │   │       reportCorrectionModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportItem&lt;br /&gt;
│   │   │   │       reportItemModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───reportTest&lt;br /&gt;
│   │   │   │       reportTestModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───skill&lt;br /&gt;
│   │   │   │       skillModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───test&lt;br /&gt;
│   │   │   │       testAdministrateModel.js&lt;br /&gt;
│   │   │   │       testImportExportModel.js&lt;br /&gt;
│   │   │   │       testListModel.js&lt;br /&gt;
│   │   │   │       testModel.js&lt;br /&gt;
│   │   │   │       testRequestRevokeModel.js&lt;br /&gt;
│   │   │   │       testRevokeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───TestPerformanceLevel&lt;br /&gt;
│   │   │   │       testPerformanceLevelModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───testType&lt;br /&gt;
│   │   │   │       testTypeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───testTypeCourse&lt;br /&gt;
│   │   │   │       testTypeCourseModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───testTypeCourseCurriculumGrade&lt;br /&gt;
│   │   │   │       testTypeCourseCurriculumGradeModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   ├───testTypeItemLevel&lt;br /&gt;
│   │   │   │       testTypeItemLevelModel.js&lt;br /&gt;
│   │   │   │       &lt;br /&gt;
│   │   │   └───typeLevelEducation&lt;br /&gt;
│   │   │           typeLevelEducationModel.js&lt;br /&gt;
│   │   │           &lt;br /&gt;
│   │   └───services&lt;br /&gt;
│   │       │   authenticationinterceptor.service.js&lt;br /&gt;
│   │       │   services.js&lt;br /&gt;
│   │       │   ApiSetting.js&lt;br /&gt;
│   │       │   &lt;br /&gt;
│   │       └───_bundle&lt;br /&gt;
│   │           ├───notification&lt;br /&gt;
│   │           │       notification.js&lt;br /&gt;
│   │           │       &lt;br /&gt;
│   │           ├───pager&lt;br /&gt;
│   │           │       services.js&lt;br /&gt;
│   │           │       &lt;br /&gt;
│   │           ├───util&lt;br /&gt;
│   │           │       util.js&lt;br /&gt;
│   │                   &lt;br /&gt;
│   └───vendor&lt;br /&gt;
│       │   bootstrap-3.2.0.js&lt;br /&gt;
│       │   jquery-2.1.1.js&lt;br /&gt;
│       │   jquery-ui.js&lt;br /&gt;
│       │   mathJax.js&lt;br /&gt;
│       │   moment.js&lt;br /&gt;
│       │   &lt;br /&gt;
│       ├───angular-1.4.9&lt;br /&gt;
│       │   │   angular-animate.js&lt;br /&gt;
│       │   │   angular-aria.js&lt;br /&gt;
│       │   │   angular-cookies.js&lt;br /&gt;
│       │   │   angular-loader.js&lt;br /&gt;
│       │   │   angular-message-format.js&lt;br /&gt;
│       │   │   angular-messages.js&lt;br /&gt;
│       │   │   angular-mocks.js&lt;br /&gt;
│       │   │   angular-resource.js&lt;br /&gt;
│       │   │   angular-route.js&lt;br /&gt;
│       │   │   angular-sanitize.js&lt;br /&gt;
│       │   │   angular-scenario.js&lt;br /&gt;
│       │   │   angular-touch.js&lt;br /&gt;
│       │   │   angular.js&lt;br /&gt;
│       │   │   &lt;br /&gt;
│       │   └───i18n&lt;br /&gt;
│       ├───compressor&lt;br /&gt;
│       │       compressor.js&lt;br /&gt;
│       │       &lt;br /&gt;
│       ├───datepicker&lt;br /&gt;
│       │       datepicker.css&lt;br /&gt;
│       │       datepicker.js&lt;br /&gt;
│       │       &lt;br /&gt;
│       ├───highcharts-4.0.4&lt;br /&gt;
│       │   │   highcharts-3d.js&lt;br /&gt;
│       │   │   highcharts-all.js&lt;br /&gt;
│       │   │   highcharts-more.js&lt;br /&gt;
│       │   │   highcharts.js&lt;br /&gt;
│       │   │   &lt;br /&gt;
│       │   └───modules&lt;br /&gt;
│       │           exporting.js&lt;br /&gt;
│       │           no-data-to-display.js&lt;br /&gt;
│       │           &lt;br /&gt;
│       ├───redactor&lt;br /&gt;
│       │       accents.gif&lt;br /&gt;
│       │       accents_ext.gif&lt;br /&gt;
│       │       arrows.gif&lt;br /&gt;
│       │       brackets.gif&lt;br /&gt;
│       │       clips.js&lt;br /&gt;
│       │       fontcolor.js&lt;br /&gt;
│       │       fontfamily.js&lt;br /&gt;
│       │       fontsize.js&lt;br /&gt;
│       │       foreign.gif&lt;br /&gt;
│       │       function.png&lt;br /&gt;
│       │       greeklower.gif&lt;br /&gt;
│       │       greekupper.gif&lt;br /&gt;
│       │       imagemanager.js&lt;br /&gt;
│       │       mathLatex.css&lt;br /&gt;
│       │       mathLatex.js&lt;br /&gt;
│       │       matrix.gif&lt;br /&gt;
│       │       operators.gif&lt;br /&gt;
│       │       redactor-font.eot&lt;br /&gt;
│       │       redactor.css&lt;br /&gt;
│       │       redactor.js&lt;br /&gt;
│       │       redactor.less&lt;br /&gt;
│       │       relations.gif&lt;br /&gt;
│       │       subsupset.gif&lt;br /&gt;
│       │       symbols.gif&lt;br /&gt;
│       │       table.js&lt;br /&gt;
│       │       &lt;br /&gt;
│       └───resumable-js&lt;br /&gt;
│               resumable.js&lt;br /&gt;
│               test.html&lt;br /&gt;
│               &lt;br /&gt;
└───tests&lt;br /&gt;
    │   conf.js&lt;br /&gt;
    │   jasmine-runner.html&lt;br /&gt;
    │   karma.conf.js&lt;br /&gt;
    │   package.json&lt;br /&gt;
    │   &lt;br /&gt;
    ├───e2e&lt;br /&gt;
    │   └───controllers&lt;br /&gt;
    │           OMRController.e2e.js&lt;br /&gt;
    │           &lt;br /&gt;
    └───unit&lt;br /&gt;
        │   razor.js&lt;br /&gt;
        │   &lt;br /&gt;
        ├───controllers&lt;br /&gt;
        │       fileController.test.js&lt;br /&gt;
        │       formItemController.test.js&lt;br /&gt;
        │       &lt;br /&gt;
        ├───directives&lt;br /&gt;
        ├───factories&lt;br /&gt;
        ├───filters&lt;br /&gt;
        ├───models&lt;br /&gt;
        └───services&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Outras informações==&lt;br /&gt;
* [[Requisitos funcionais]]&lt;br /&gt;
* [[Requisitos não funcionais]]&lt;br /&gt;
* [[Especificações mínimas de hardware e software - Avalia+]]&lt;br /&gt;
* [[Arquitetura do produto]]&lt;br /&gt;
* [[Integrações]]&lt;br /&gt;
* [[Manual de instalação]]&lt;/div&gt;</summary>
		<author><name>Thiago.silvestre</name></author>	</entry>

	</feed>