Commit cbb1cb0665958e01464b99a1eecf1ee61ca5edaa

Authored by Thieres Tembra
1 parent 49c6eaf0
Exists in master

Modificado a rotina de Lançamento de Faltas/Notas para:

1) Adicionar o campo "Seção" criado no cadastro de Área de Conhecimento
para melhor entendimento do usuário na leitura das áreas de conhecimento
que agrupam os componentes.

2) Fazer de cada agrupamento da Área de Conhecimento um menu "dropdown"
para diminuir a quantidade de informação apresentada ao usuário de uma
única só vez, deixando com que o mesmo escolha qual área quer
expandir/recolher para realizar o lançamento das notas e faltas.

/*
 * Modificações por arquivo/pasta
 */

[1] File: /ieducar/modules/Avaliacao/Views/DiarioApiController.php
    - Modificado o método "loadComponentesCurricularesForMatricula":
      * Criado variável "$nomeArea" com o resultado da concatenação das
variáveis "$area->secao" e "$area->nome"
        + OBS: Se o campo seção estiver em branco, o mesmo não será
considerado. Caso esteja preenchido os textos concatenados serão
separados por um hífen (" - ") para melhor leitura do texto.
      * Alterado conteúdo da variável "$componente['area_nome']" para
agora utilizar a nova variável "$nomeArea"
      * Alterado conteúdo da variável "$componente['my_order']" para
agora utilizar a nova variável "$nomeArea"
    - Modificado o método "getAreaConhecimento":
      * Criado nova propriedade "secao" na classe padrão
"$areaConhecimento" para guardar o novo campo "Seção" da Área de
Conhecimento


[2] File: /ieducar/modules/Avaliacao/Assets/Diario.js
    - Modificado a função "updateComponenteCurriculares()":
      * Criado nova variável "setaDireita" para contemplar o HTML
referente a imagem do arquivo [6]
      * Criado nova variável "setaBaixo" para contemplar o HTML
referente a imagem do arquivo [5]
      * Removido o cabeçalho dos componentes curriculares ($ccHeader) da
posição abaixo dos dados do aluno
      * Adicionado um cabeçalho dos componentes curriculares ($ccHeader)
para cada grupo de área de conhecimento
      * Adicionado classe "tr-area-conhecimento" e atributo data
"areaid" para cada linha referente ao grupo da área de conhecimento com
seu respectivo id
      * Adicionado classe "tr-componente-curricular" para o cabeçalho e
para cada linha dos componentes curriculares com o respectivo id da área
de conhecimento a qual pertence
      * Adicionado evento "click", responsável pela animação do menu
dropdown, em cada linha referente ao grupo da área de conhecimento
    - Adicionado plugin "slideRow" no jQuery


[3] File: /ieducar/intranet/styles/mytdt.css
    - Modificado estilo da classe "area-conhecimento"
    - Adicionado estilo da classe "area-conhecimento-destaque" para
utilizar quando a área de conhecimento estiver expandida
    - Adicionado estilo da classe "area-conhecimento-seta" referente as
setas que informam se a área de conhecimento está expandida ou recolhida
    - Adicionado estilo da classe "seta-baixo" referente a seta que
informa se a área de conhecimento está expandida
    - Adicionado estilo da classe "tr-componente-curricular" referente
aos componentes curriculares


[4] Folder: /ieducar/intranet/imagens/mytdt/
    - Nova pasta criada para contemplar as imagens das contribuições da
MyTDT Corp. para o i-Educar


[5] File: /ieducar/intranet/imagens/mytdt/seta-branca-baixo.png
    - Imagem de seta na cor branca apontando para baixo para sinalizar a
área de conhecimento expandida 


[6] File: /ieducar/intranet/imagens/mytdt/seta-preta-direita.png
    - Imagem de seta na cor preta apontando para direita para sinalizar
a área de conhecimento recolhida


[7] File: /ieducar/lib/Portabilis/Business/Professor.php
    - Modificado as queries dos métodos
"componentesCurricularesTurmaAlocado()" e
"componentesCurricularesCursoAlocado()":
      * Adicionado campo (SELECT) "ac.secao as secao_area_conhecimento"
      * Adicionado ordenamento (ORDER) "ac.secao"


[8] File:
/ieducar/modules/DynamicInput/Views/ComponenteCurricularController.php
    - Modificado as duas queries do método
"getComponentesCurriculares()":
      * Adicionado campo (SELECT) "ac.secao as secao_area_conhecimento"
      * Adicionado ordenamento (ORDER) "ac.secao"
    - Alterado o conteúdo da chave "group" da variável "$options[]":
Agora a variável contém o resultado da concatenação dos campos
"secao_area_conhecimento" e "area_conhecimento" retornados por uma das
queries mencionadas acima ou no
arquivo [4]
      * OBS: Se o campo seção estiver em branco, o mesmo não será
considerado. Caso esteja preenchido os textos concatenados serão
separados por um hífen (" - ") para melhor leitura do texto.


Change-Id: Id482706ce383a839d8bc70cd49b36a11fad2ed8d
Signed-off-by: Thieres Tembra <tdt@mytdt.com.br>
ieducar/intranet/imagens/mytdt/seta-branca-baixo.png 0 → 100644

2.85 KB

ieducar/intranet/imagens/mytdt/seta-preta-direita.png 0 → 100644

2.83 KB

ieducar/intranet/styles/mytdt.css
... ... @@ -9,8 +9,29 @@
9 9 * @company MyTDT Corporation [http://www.mytdt.com.br]
10 10 */
11 11 td.area-conhecimento {
12   - background-color: #546C76;
13   - color: #FFF;
  12 + background-color: #A1B3BD;
  13 + color: #000;
14 14 font-weight: bold;
15 15 text-align: left;
  16 + cursor: pointer;
  17 +}
  18 +
  19 +td.area-conhecimento-destaque {
  20 + background-color: #546C76 !important;
  21 + color: #FFF !important;
  22 +}
  23 +
  24 +td.area-conhecimento img.area-conhecimento-seta {
  25 + -moz-user-select: none;
  26 + outline: none;
  27 + border: 0;
  28 + margin-top: -1px;
  29 +}
  30 +
  31 +td.area-conhecimento img.seta-baixo {
  32 + display: none;
  33 +}
  34 +
  35 +.tr-componente-curricular {
  36 + display: none;
16 37 }
... ...
ieducar/lib/Portabilis/Business/Professor.php
... ... @@ -102,14 +102,14 @@ class Portabilis_Business_Professor {
102 102  
103 103  
104 104 protected static function componentesCurricularesTurmaAlocado($turmaId, $anoLetivo, $userId) {
105   - $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento
  105 + $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento, ac.secao as secao_area_conhecimento
106 106 from modules.componente_curricular_turma as cct, pmieducar.turma, modules.componente_curricular as cc, modules.area_conhecimento as ac,
107 107 pmieducar.escola_ano_letivo as al, pmieducar.servidor_disciplina as scc
108 108 where turma.cod_turma = $1 and cct.turma_id = turma.cod_turma and cct.escola_id = turma.ref_ref_cod_escola
109 109 and cct.componente_curricular_id = cc.id and al.ano = $2 and cct.escola_id = al.ref_cod_escola and
110 110 scc.ref_ref_cod_instituicao = turma.ref_cod_instituicao and scc.ref_cod_servidor = $3 and
111 111 scc.ref_cod_curso = turma.ref_cod_curso and scc.ref_cod_disciplina = cc.id and cc.area_conhecimento_id = ac.id
112   - order by ac.nome, cc.nome";
  112 + order by ac.secao, ac.nome, cc.nome";
113 113  
114 114 $options = array('params' => array($turmaId, $anoLetivo, $userId));
115 115  
... ... @@ -118,7 +118,7 @@ class Portabilis_Business_Professor {
118 118  
119 119  
120 120 protected static function componentesCurricularesCursoAlocado($turmaId, $anoLetivo, $userId) {
121   - $sql = "select cc.id as id, cc.nome as nome, ac.nome as area_conhecimento from pmieducar.serie, pmieducar.escola_serie_disciplina as esd,
  121 + $sql = "select cc.id as id, cc.nome as nome, ac.nome as area_conhecimento, ac.secao as secao_area_conhecimento from pmieducar.serie, pmieducar.escola_serie_disciplina as esd,
122 122 pmieducar.turma, modules.componente_curricular as cc, modules.area_conhecimento as ac, pmieducar.escola_ano_letivo as al,
123 123 pmieducar.servidor_disciplina as scc where turma.cod_turma = $1 and serie.cod_serie =
124 124 turma.ref_ref_cod_serie and esd.ref_ref_cod_escola = turma.ref_ref_cod_escola and esd.ref_ref_cod_serie =
... ... @@ -126,7 +126,7 @@ class Portabilis_Business_Professor {
126 126 al.ref_cod_escola and serie.ativo = 1 and esd.ativo = 1 and al.ativo = 1 and scc.ref_ref_cod_instituicao =
127 127 turma.ref_cod_instituicao and scc.ref_cod_servidor = $3 and scc.ref_cod_curso = serie.ref_cod_curso and
128 128 scc.ref_cod_disciplina = cc.id and cc.area_conhecimento_id = ac.id
129   - order by ac.nome, cc.nome";
  129 + order by ac.secao, ac.nome, cc.nome";
130 130  
131 131 $options = array('params' => array($turmaId, $anoLetivo, $userId));
132 132  
... ...
ieducar/modules/Avaliacao/Assets/Javascripts/Diario.js
... ... @@ -715,34 +715,61 @@ function updateComponenteCurriculares($targetElement, matriculaId, componentesCu
715 715  
716 716 var areas = new Array();
717 717  
718   - var $ccHeader = $j('<tr />').addClass('strong');
719   -
720   - $j('<td />').addClass('center').html('Componente curricular').appendTo($ccHeader);
721   - updateComponenteCurricularHeaders($ccHeader, $j('<td />'));
722   -
723   - $ccHeader.appendTo($targetElement);
724   -
725   - var areaColspan = $j('td', $ccHeader).length;
726   -
  718 + var setaDireita = "<img src=\"imagens/mytdt/seta-preta-direita.png\" align=\"top\" class=\"area-conhecimento-seta seta-direita\" />";
  719 + var setaBaixo = "<img src=\"imagens/mytdt/seta-branca-baixo.png\" align=\"top\" class=\"area-conhecimento-seta seta-baixo\" />";
727 720  
728 721 $j.each(componentesCurriculares, function(index, cc) {
729 722 if (areas.indexOf(cc.area_id) == -1) {
730 723 areas.push(cc.area_id);
731 724  
732   - var $areaRow = $j('<tr />');
  725 + //primeiro o header para calcular o colspan
  726 + var $ccHeader = $j('<tr />').addClass('strong').addClass('tr-componente-curricular').data('areaid', cc.area_id);
  727 + $j('<td />').addClass('center').html('Componente curricular').appendTo($ccHeader);
  728 + updateComponenteCurricularHeaders($ccHeader, $j('<td />'));
733 729  
734   - $j('<td />').addClass('area-conhecimento').attr('colspan', areaColspan).html(cc.area_nome).appendTo($areaRow);
  730 + //pegando o colspan
  731 + var areaColspan = $j('td', $ccHeader).length;
735 732  
  733 + var $areaRow = $j('<tr />').addClass('tr-area-conhecimento').data('areaid', cc.area_id);
  734 + var conteudo = setaDireita + setaBaixo + " " + cc.area_nome;
  735 + $j('<td />').addClass('area-conhecimento').attr('colspan', areaColspan).html(conteudo).appendTo($areaRow);
  736 +
  737 + //por fim adicionando primeiro a área depois o header
736 738 $areaRow.appendTo($targetElement);
  739 + $ccHeader.appendTo($targetElement);
737 740 }
738 741  
739   - var $ccRow = $j('<tr />');
  742 + var $ccRow = $j('<tr />').addClass('tr-componente-curricular').data('areaid', cc.area_id);
740 743  
741 744 $j('<td />').addClass('center').html(cc.nome).appendTo($ccRow);
742 745 updateComponenteCurricular($ccRow, matriculaId, cc);
743 746  
744 747 $ccRow.appendTo($targetElement);
745 748 });
  749 +
  750 + $j('.tr-area-conhecimento').bind('click', function() {
  751 + $j('td', this).toggleClass('area-conhecimento-destaque');
  752 +
  753 + var fechado = $j('.seta-baixo', this).is(':hidden');
  754 + if (fechado) {
  755 + $j('.seta-baixo', this).css('display', 'inline');
  756 + $j('.seta-direita', this).css('display', 'none');
  757 + } else {
  758 + $j('.seta-baixo', this).css('display', 'none');
  759 + $j('.seta-direita', this).css('display', 'inline');
  760 + }
  761 +
  762 + var id = $j(this).data('areaid');
  763 + $j('.tr-componente-curricular').each(function() {
  764 + if ($j(this).data('areaid') == id) {
  765 + if ($j(this).is(':hidden')) {
  766 + $j(this).slideRow('down');
  767 + } else {
  768 + $j(this).slideRow('up');
  769 + }
  770 + }
  771 + });
  772 + });
746 773 }
747 774  
748 775  
... ... @@ -837,3 +864,112 @@ function showNextSelectionButton() {
837 864 .appendTo($navActions);
838 865 }
839 866 }
  867 +
  868 +(function($) {
  869 + var sR = {
  870 + defaults: {
  871 + slideSpeed: 400,
  872 + easing: false,
  873 + callback: false
  874 + },
  875 + thisCallArgs: {
  876 + slideSpeed: 400,
  877 + easing: false,
  878 + callback: false
  879 + },
  880 + methods: {
  881 + up: function (arg1,arg2,arg3) {
  882 + if(typeof arg1 == 'object') {
  883 + for(p in arg1) {
  884 + sR.thisCallArgs.eval(p) = arg1[p];
  885 + }
  886 + }else if(typeof arg1 != 'undefined' && (typeof arg1 == 'number' || arg1 == 'slow' || arg1 == 'fast')) {
  887 + sR.thisCallArgs.slideSpeed = arg1;
  888 + }else{
  889 + sR.thisCallArgs.slideSpeed = sR.defaults.slideSpeed;
  890 + }
  891 +
  892 + if(typeof arg2 == 'string'){
  893 + sR.thisCallArgs.easing = arg2;
  894 + }else if(typeof arg2 == 'function'){
  895 + sR.thisCallArgs.callback = arg2;
  896 + }else if(typeof arg2 == 'undefined') {
  897 + sR.thisCallArgs.easing = sR.defaults.easing;
  898 + }
  899 + if(typeof arg3 == 'function') {
  900 + sR.thisCallArgs.callback = arg3;
  901 + }else if(typeof arg3 == 'undefined' && typeof arg2 != 'function'){
  902 + sR.thisCallArgs.callback = sR.defaults.callback;
  903 + }
  904 + var $cells = $(this).find('td');
  905 + $cells.wrapInner('<div class="slideRowUp" />');
  906 + var currentPadding = $cells.css('padding');
  907 + $cellContentWrappers = $(this).find('.slideRowUp');
  908 + $cellContentWrappers.slideUp(sR.thisCallArgs.slideSpeed,sR.thisCallArgs.easing).parent().animate({
  909 + paddingTop: '0px',
  910 + paddingBottom: '0px'},{
  911 + complete: function () {
  912 + $(this).children('.slideRowUp').replaceWith($(this).children('.slideRowUp').contents());
  913 + $(this).parent().css({'display':'none'});
  914 + $(this).css({'padding': currentPadding});
  915 + }});
  916 + var wait = setInterval(function () {
  917 + if($cellContentWrappers.is(':animated') === false) {
  918 + clearInterval(wait);
  919 + if(typeof sR.thisCallArgs.callback == 'function') {
  920 + sR.thisCallArgs.callback.call(this);
  921 + }
  922 + }
  923 + }, 100);
  924 + return $(this);
  925 + },
  926 + down: function (arg1,arg2,arg3) {
  927 + if(typeof arg1 == 'object') {
  928 + for(p in arg1) {
  929 + sR.thisCallArgs.eval(p) = arg1[p];
  930 + }
  931 + }else if(typeof arg1 != 'undefined' && (typeof arg1 == 'number' || arg1 == 'slow' || arg1 == 'fast')) {
  932 + sR.thisCallArgs.slideSpeed = arg1;
  933 + }else{
  934 + sR.thisCallArgs.slideSpeed = sR.defaults.slideSpeed;
  935 + }
  936 +
  937 + if(typeof arg2 == 'string'){
  938 + sR.thisCallArgs.easing = arg2;
  939 + }else if(typeof arg2 == 'function'){
  940 + sR.thisCallArgs.callback = arg2;
  941 + }else if(typeof arg2 == 'undefined') {
  942 + sR.thisCallArgs.easing = sR.defaults.easing;
  943 + }
  944 + if(typeof arg3 == 'function') {
  945 + sR.thisCallArgs.callback = arg3;
  946 + }else if(typeof arg3 == 'undefined' && typeof arg2 != 'function'){
  947 + sR.thisCallArgs.callback = sR.defaults.callback;
  948 + }
  949 + var $cells = $(this).find('td');
  950 + $cells.wrapInner('<div class="slideRowDown" style="display:none;" />');
  951 + $cellContentWrappers = $cells.find('.slideRowDown');
  952 + $(this).show();
  953 + $cellContentWrappers.slideDown(sR.thisCallArgs.slideSpeed, sR.thisCallArgs.easing, function() { $(this).replaceWith( $(this).contents()); });
  954 +
  955 + var wait = setInterval(function () {
  956 + if($cellContentWrappers.is(':animated') === false) {
  957 + clearInterval(wait);
  958 + if(typeof sR.thisCallArgs.callback == 'function') {
  959 + sR.thisCallArgs.callback.call(this);
  960 + }
  961 + }
  962 + }, 100);
  963 + return $(this);
  964 + }
  965 + }
  966 + };
  967 +
  968 + $.fn.slideRow = function(method,arg1,arg2,arg3) {
  969 + if(typeof method != 'undefined') {
  970 + if(sR.methods[method]) {
  971 + return sR.methods[method].apply(this, Array.prototype.slice.call(arguments,1));
  972 + }
  973 + }
  974 + };
  975 +})(jQuery);
840 976 \ No newline at end of file
... ...
ieducar/modules/Avaliacao/Views/DiarioApiController.php
... ... @@ -758,12 +758,13 @@ class DiarioApiController extends ApiCoreController
758 758  
759 759 //buscando pela área do conhecimento
760 760 $area = $this->getAreaConhecimento($componente['id']);
  761 + $nomeArea = (($area->secao != '') ? $area->secao . ' - ' : '') . $area->nome;
761 762 $componente['area_id'] = $area->id;
762   - $componente['area_nome'] = $this->safeString(strtoupper($area->nome), false);
  763 + $componente['area_nome'] = $this->safeString(strtoupper($nomeArea), false);
763 764  
764 765 //criando chave para ordenamento temporário
765 766 //área de conhecimento + componente curricular
766   - $componente['my_order'] = Portabilis_String_Utils::unaccent(strtoupper($area->nome)) . Portabilis_String_Utils::unaccent(strtoupper($_componente->get('nome')));
  767 + $componente['my_order'] = Portabilis_String_Utils::unaccent(strtoupper($nomeArea)) . Portabilis_String_Utils::unaccent(strtoupper($_componente->get('nome')));
767 768  
768 769 $componentesCurriculares[] = $componente;
769 770 }
... ... @@ -794,9 +795,10 @@ class DiarioApiController extends ApiCoreController
794 795  
795 796 $area = $mapper->findAll(array('area_conhecimento'), $where);
796 797  
797   - $areaConhecimento = new stdClass();
798   - $areaConhecimento->id = $area[0]->area_conhecimento->id;
799   - $areaConhecimento->nome = $area[0]->area_conhecimento->nome;
  798 + $areaConhecimento = new stdClass();
  799 + $areaConhecimento->id = $area[0]->area_conhecimento->id;
  800 + $areaConhecimento->nome = $area[0]->area_conhecimento->nome;
  801 + $areaConhecimento->secao = $area[0]->area_conhecimento->secao;
800 802  
801 803 return $areaConhecimento;
802 804 }
... ...
ieducar/modules/DynamicInput/Views/ComponenteCurricularController.php
... ... @@ -71,23 +71,23 @@ class ComponenteCurricularController extends ApiCoreController
71 71 }
72 72  
73 73 else {
74   - $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento
  74 + $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento, ac.secao as secao_area_conhecimento
75 75 from pmieducar.turma, modules.componente_curricular_turma as cct, modules.componente_curricular as cc, modules.area_conhecimento as ac,
76 76 pmieducar.escola_ano_letivo as al where turma.cod_turma = $1 and cct.turma_id = turma.cod_turma and
77 77 cct.escola_id = turma.ref_ref_cod_escola and cct.componente_curricular_id = cc.id and al.ano = $2
78 78 and cct.escola_id = al.ref_cod_escola and cc.area_conhecimento_id = ac.id
79   - order by ac.nome, cc.nome";
  79 + order by ac.secao, ac.nome, cc.nome";
80 80  
81 81 $componentesCurriculares = $this->fetchPreparedQuery($sql, array($turmaId, $ano));
82 82  
83 83 if (count($ComponentesCurriculares) < 1) {
84   - $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento from
  84 + $sql = "select cc.id, cc.nome, ac.nome as area_conhecimento, ac.secao as secao_area_conhecimento from
85 85 pmieducar.turma as t, pmieducar.escola_serie_disciplina as esd, modules.componente_curricular
86 86 as cc, modules.area_conhecimento as ac, pmieducar.escola_ano_letivo as al where t.cod_turma = $1 and esd.ref_ref_cod_escola =
87 87 t.ref_ref_cod_escola and esd.ref_ref_cod_serie = t.ref_ref_cod_serie and esd.ref_cod_disciplina =
88 88 cc.id and al.ano = $2 and esd.ref_ref_cod_escola = al.ref_cod_escola and t.ativo = 1 and
89 89 esd.ativo = 1 and al.ativo = 1 and cc.area_conhecimento_id = ac.id
90   - order by ac.nome, cc.nome";
  90 + order by ac.secao, ac.nome, cc.nome";
91 91  
92 92 $componentesCurriculares = $this->fetchPreparedQuery($sql, array($turmaId, $ano));
93 93 }
... ... @@ -95,9 +95,10 @@ class ComponenteCurricularController extends ApiCoreController
95 95  
96 96 $options = array();
97 97 foreach ($componentesCurriculares as $componenteCurricular) {
  98 + $areaConhecimento = (($componenteCurricular['secao_area_conhecimento'] != '') ? $componenteCurricular['secao_area_conhecimento'] . ' - ' : '') . $componenteCurricular['area_conhecimento'];
98 99 $options['__' . $componenteCurricular['id']] = array(
99 100 'value' => $this->toUtf8($componenteCurricular['nome']),
100   - 'group' => $this->toUtf8($componenteCurricular['area_conhecimento'])
  101 + 'group' => $this->toUtf8($areaConhecimento)
101 102 );
102 103 }
103 104  
... ...