Snippets

Jorge Guerra AngularJS

Created by Jorge Guerra
angular.module('wc-general-informe-notas')
.controller('AnalisisEvaluacionController', ['$scope','$state','urlBasePartials', 'idColegio', 'anio', 'EvaluacionFactory',
    function ($scope, $state, urlBasePartials, idColegio, anio, EvaluacionFactory) {
        $scope.setRangos = function () {
            $scope.rangosAnalisisEvaluacion = [
                {nivel: "Bajo", desde: 1, hasta: 3.9},
                {nivel: "Medio Bajo", desde: 4, hasta: 4.9},
                {nivel: "Medio Alto", desde: 5, hasta: 5.9},
                {nivel: "Alto", desde: 6, hasta: 7},
            ];
        }
        $scope.informe =13;
        $scope.dato = {};
        $scope.dato.notas = [];
        $scope.vista = [];
        $scope.vista[13] = urlBasePartials + "tablas/analisis-evaluacion.html";
        $scope.idColegio = idColegio;
        $scope.anio = anio;
        $scope.nombreCurso = $('#curso option:selected').text();
        $scope.casillero = $('#casillero option:selected').text();
        $scope.evaluacion = null;
        $scope.setRangos();

        $scope.generarInforme = function () {
            EvaluacionFactory.patch({
                idEvaluacion: $scope.filtroCasillero,
                idSector: $scope.filtroAsignatura,
                idCurso: $scope.filtroCurso,
                idEvaluacionCursoSector: $scope.evaluacionCs[$scope.filtroPeriodo],
                'expand[]': ['r_evaluacion_nota','nota_detalle','r_nota_alumno','alumno_detalle']
            }, function (evaluacion) {
                $scope.evaluacion = evaluacion;
            })
        }
        $scope.$watch('filtroCasillero', function (newVal) {
            if (newVal != null)
                $scope.generarInforme();
        })
}])

angular.module('wc-general-informe-notas')
    .controller('PrincipalController',
        ['$scope', '$state', 'urlBasePartials', 'urlBaseImg', 'idUsuario', 'idColegio', 'Curso', 'Colegio', 'ConfiguracionSistemaColegio', 'anio', 'CursoSectorFactory', '$window', 'SectoresMineducFactory',
            function ($scope, $state, urlBasePartials, urlBaseImg, idUsuario, idColegio, Curso, Colegio, ConfiguracionSistemaColegio, anio, CursoSectorFactory, $window, SectoresMineducFactory) {

                $scope.icon_printer = urlBaseImg + 'printer.png';
                $scope.icon_pdf = urlBaseImg + 'pdf.png';
                $scope.icon_excel = urlBaseImg + 'excel.png';
                $scope.cursos_lista = [];
                $scope.cursos = [];
                $scope.periodos_lista = [];
                $scope.periodos = [];
                $scope.sectoresMineduc = [];
                $scope.casilleros = [];
                $scope.evaluacionCs = [];
                $scope.campos_analisis_evaluacion = urlBasePartials + "encabezado/analisis-evaluacion.html";
                $scope.vistaAnalisisEvaluacion = urlBasePartials + "tablas/analisis-evaluacion.html";

                $scope.getCasilleros = function () {
                    $scope.casilleros = [];
                    CursoSectorFactory.get({
                        idCurso: $scope.filtroCurso,
                        idSector: $scope.filtroAsignatura,
                        'expand[]': [
                            'r_curso_sector_evaluacion_curso_sector',
                            'evaluacion_curso_sector_detalle',
                            'r_evaluaciones_evaluacion_curso_sector',
                            'evaluacion_detalle',
                            'r_evaluacion_curso_sector_periodo',
                            'periodo_detalle'
                        ]
                    }, function (data) {
                        for (var i = 0; i < data.evaluacion_curso_sector.length; i++)
                        {
                            var evaluacionCs = data.evaluacion_curso_sector[i];
                            if (evaluacionCs.periodo == undefined) continue;
                            $scope.evaluacionCs[evaluacionCs.periodo.id] = evaluacionCs.id;
                            $scope.casilleros[evaluacionCs.periodo.id] = [];
                            var examen = null;
                            evaluacionCs.evaluaciones.forEach(function (evaluacion) {
                                if (evaluacion.posicion == 0) {
                                    examen = evaluacion;
                                    examen.nombre = "Examen";
                                }
                                else if (evaluacion.tipo == 1) {
                                    evaluacion.nombre = evaluacion.posicion;
                                    $scope.casilleros[evaluacionCs.periodo.id].push(evaluacion);
                                }
                            })

                            if (examen != null)
                                $scope.casilleros[evaluacionCs.periodo.id].push(examen);

                            $scope.casilleros[evaluacionCs.periodo.id].push({id: 'pfg', 'nombre': 'Promedio Asignatura'});
                            $scope.casilleros[evaluacionCs.periodo.id].push({id: 'pc', 'nombre': 'Promedio Curso' });
                        }
                    });
                }

                $scope.tiposInformes = [
                    // {id:1,nombre:"(Prebásica) Informe al hogar detallado"},
                    // {id:2,nombre:"(Prebásica) Informe al hogar resumido"},
                    // {id:3,nombre:"(Prebásica) Resultados grupales 1° evaluación"},
                    // {id:4,nombre:"(Prebásica) Resultados grupales 2° evaluación"},
                    // {id:5,nombre:"(Prebásica) Resultados grupales 3° evaluación"},
                    // {id:6,nombre:"(Prebásica) Resumen anual de resultados"},
                    {id: 7, nombre: "Detalle de notas parciales"},
                    {id: 8, nombre: "Notas parciales"},
                    {id: 9, nombre: "Resumen de notas finales"},
                    {id: 10, nombre: "Resumen de notas del curso"},
                    {id: 11, nombre: "Archivos SIGE: Calificaciones Finales"},
                    {id: 12, nombre: "Archivos SIGE: Situación Final"},
                    {id: 13, nombre: "Análisis de evaluación"}
                ];

                Curso.query({idColegio: idColegio, a: anio}, function (data) {
                    $scope.cursos_lista = data;
                });

                Colegio.query({colegio: idColegio},function (data) {
                    $scope.colegio_actual = data;
                    // console.log($scope.colegio_selected)
                });

                $scope.periodos = [{id: 0, 'nombre': 'Todos'}];
                ConfiguracionSistemaColegio.get({idColegio: idColegio}, function (data) {
                    $scope.periodos_lista = data.periodos;
                    angular.forEach($scope.periodos_lista, function (periodo) {
                        $scope.periodos.push(periodo);
                    });
                });

                var cursosPrebasica = function () {
                    var c = [];
                    $scope.cursos = [];
                    angular.forEach($scope.cursos_lista, function (curso) {
                        if (curso.nivel_id < 21) {
                            c.push(curso);
                        }
                    });
                    $scope.cursos = c;
                };
                $scope.cursosBasicaMedia = function () {
                    var c = [];
                    $scope.cursos = [];
                    angular.forEach($scope.cursos_lista, function (curso) {
                        if (curso.nivel_id >= 21) {
                            c.push(curso);
                        }
                    });
                    $scope.cursos = c;
                };

                var cursosTodos = function () {
                    $scope.cursos = [];
                    $scope.cursos = $scope.cursos_lista;
                };

                $scope.cambiarInforme = function (tipoInforme) {
                    $scope.filtroCurso=null;
                    switch (tipoInforme) {
                        case 7:
                        case 8:
                        case 9:
                        case 10:
                        case 12:
                        case 13:
                            $scope.cursosBasicaMedia();
                            break;
                        case 11:
                            SectoresMineducFactory.query({}, function (retorno) {
                                $scope.sectoresMineduc = retorno;
                                $scope.cursosBasicaMedia();
                            });
                            break;
                    }
                };

                $scope.cambiarCurso = function (curso) {
                    if ($scope.tipoInforme == 9)
                        $scope.cambiarPeriodo();
                    if ($scope.tipoInforme == 13){
                        $scope.sectores = [];
                        $scope.evaluaciones = [];
                        CursoSectorFactory.query({idColegio:idColegio, idCurso:$scope.filtroCurso}, function (data) {
                            for(var i = 0; i < data.length; i++)
                            {
                                $scope.sectores.push(data[i].sector)
                            }
                        });
                    }
                    if($scope.tipoInforme == 11){
                        $scope.sectores = [];
                        CursoSectorFactory.query({idColegio:idColegio, idCurso: $scope.filtroCurso}, function (data) {
                            for(var i = 0; i < data.length; i++)
                            {
                                $scope.sectores.push(data[i].sector)
                            }
                        });

                        $state.go('informes.sigeCalificacionFinal', {
                            cursoId: $scope.filtroCurso,
                            periodoId: null,
                            mostrarPromedios: null,
                            soloPromedios: null
                        });
                    }
                    if($scope.tipoInforme == 12){
                        $scope.sectores = [];
                        CursoSectorFactory.query({idColegio:idColegio, idCurso: $scope.filtroCurso}, function (data) {
                            for(var i = 0; i < data.length; i++)
                            {
                                $scope.sectores.push(data[i].sector)
                            }
                        });

                        $state.go('informes.sigeSituacionFinal', {
                            cursoId: $scope.filtroCurso,
                            periodoId: null,
                            mostrarPromedios: null,
                            soloPromedios: null
                        });
                    }
                    $scope.filtroPeriodo = null;
                };

                $scope.cambiarPeriodo = function () {
                    switch ($scope.tipoInforme) {
                        case 7:
                            $state.go('informes.detalleNotasParciales', {
                                cursoId: $scope.filtroCurso,
                                periodoId: $scope.filtroPeriodo,
                                mostrarPromedios: null,
                                soloPromedios: null
                            });
                            break;
                        case 8:
                            $state.go('informes.notasParciales', {
                                cursoId: $scope.filtroCurso,
                                periodoId: $scope.filtroPeriodo,
                                mostrarPromedios: true,
                                soloPromedios: null
                            });
                            break;
                        case 9:
                            $state.go('informes.notasParciales', {
                                cursoId: $scope.filtroCurso,
                                periodoId: null,
                                mostrarPromedios: null,
                                soloPromedios: true
                            });
                            break;
                        case 10:
                            $state.go('informes.notasParciales', {
                                cursoId: $scope.filtroCurso,
                                periodoId: $scope.filtroPeriodo
                            });
                            break;
                    }
                };

                $scope.cambiarCasillero = function () {
                    $state.go('informes.analisisEvaluacion',{
                        cursoId: $scope.filtroCurso,
                        asignatura: $scope.filtroAsignatura,
                        periodo: $scope.filtroPeriodo,
                        casillero: $scope.filtroCasillero
                    })
                }

                $scope.imprimirPDF = function () {
                    var id = '#information';
                    var ventana = $window.open('', '_blank');
                    ventana.document.write($(id).html());
                    ventana.document.close();
                    ventana.print();
                    ventana.close();
                };

            }]);
<div class="panel panel-default" style="border: 1px solid #D8D6D6 !important;margin-left: 5%;margin-right: 5%; overflow: hidden" ng-show="tipoInforme == 13" ng-controller="AnalisisEvaluacionController">
    <div class="panel-body table-responsive">
        <div class="row">
            <div class="col-md-2 text-right"><strong>Nivel</strong></div>
            <div class="col-md-2 text-center" ng-repeat="rango in rangosAnalisisEvaluacion track by $index"><strong>Rango {{rango.nivel}}</strong></div>
        </div>
        <div class="row text-center">
            <div class="col-md-push-2 col-md-2" ng-repeat="rango in rangosAnalisisEvaluacion track by $index">
                <div class="col-md-6">Desde</div>
                <div class="col-md-6">Hasta</div>
            </div>
        </div>
        <div class="row">
            <div class="col-md-2"></div>
            <div class="col-md-2 text-center" ng-repeat="rango in rangosAnalisisEvaluacion track by $index">
                <div class="col-md-6"><input class="form-control input-sm text-center" type="number" step="0.1" max="7.0" min="1" ng-model="rango.desde"></div>
                <div class="col-md-6"><input class="form-control input-sm text-center" type="number" step="0.1" max="7.0" min="1"  ng-model="rango.hasta"></div>
            </div>
        </div>
        <div class="row" style="margin-top: 1.5em">
            <div class="col-md-12 text-center">
                <button type="button" class="btn btn-primary" ng-click="generarInforme()">Confirmar</button>
                <button type="button" class="btn btn-primary" ng-click="setRangos()">Limpiar campo nota</button>
            </div>
        </div>
    </div>
</div>
angular.module('wc-general-informe-notas', [
    'ui.router',
    'ngResource',
    'ui.bootstrap',
    'wc.general',
    'wc-general-informe-notas.utilidades',
    'dsy-servicios-wcm',
    'ngSanitize',
    'ngMaterial',
    'ngMessages',
    'ngAnimate',
    'wc-sigeService',
    'ngTable',
    'ngFileSaver'
])

/** Constantes **/
    .constant('idColegio', wcConstants.colegioId)
    .constant('idUsuario', wcConstants.usuarioId)
    .constant('anio', wcConstants.anio)
    .constant('urlBase', wcConstants.urlBase)
    .constant('urlBaseImg', wcConstants.urlBaseImg)
    .constant('urlBaseApi', wcConstants.urlBaseApi)
    .constant('urlBasePartials', wcConstants.urlBasePartials)

    .run(function ($http, $rootScope, $state, $stateParams) {
        $http.defaults.headers.common = {'api-key': wcConstants.apiKey};
        $rootScope.$state = $state;
        $rootScope.$stateParams = $stateParams;
    })
    .config(['$stateProvider', '$urlRouterProvider', 'urlBasePartials',
        function ($stateProvider, $urlRouterProvider, urlBasePartials) {
            $stateProvider
                .state('informes', {
                    url: '/',
                    templateUrl: urlBasePartials + 'index.html',
                    controller: 'PrincipalController'
                })
                .state('informes.notasParciales', {
                    url: 'notas-parciales/:cursoId?:periodoId&:mostrarPromedios&:soloPromedios',
                    params:{
                        tipoInforme: 8
                    },
                    views: {
                        'vistaPreliminar': {
                            templateUrl: urlBasePartials + 'notas_parciales_detalle.html',
                            controller: 'NotasParcialesDetalleController'
                        }
                    }
                })
                .state('informes.detalleNotasParciales', {
                    url: 'detalle-notas-parciales/:cursoId?:periodoId&:mostrarPromedios&:soloPromedios',
                    params:{
                        tipoInforme: 7
                    },
                    views: {
                        'vistaPreliminar': {
                            templateUrl: urlBasePartials + 'notas_parciales_detalle.html',
                            controller: 'NotasParcialesDetalleController'
                        }
                    }
                })
                .state('informes.notasCurso', {
                    url: 'notas-parciales/:cursoId?:periodoId',
                    views: {
                        'vistaPreliminar': {
                            templateUrl: urlBasePartials + 'notas_curso.html',
                            controller: 'NotasParcialesDetalleController'
                        }
                    }
                })
                .state('informes.sigeCalificacionFinal', {
                    url: 'notas-sige/:cursoId',
                    views: {
                        'vistaPreliminar': {
                            templateUrl: urlBasePartials + 'sige/calificaciones_finales.html',
                            controller: 'SigeCalificacionFinalController as Mineduc'
                        }
                    }
                })
                .state('informes.sigeSituacionFinal', {
                    url: 'situacion-sige/:cursoId',
                    views: {
                        'vistaPreliminar': {
                            templateUrl: urlBasePartials + 'sige/situacion_final.html',
                            controller: 'SigeSituacionFinalController as Mineduc'
                        }
                    }
                })
                .state('informes.analisisEvaluacion',{
                    url: 'analisis-evaluacion/:cursoId/:asignatura/:periodo/:casillero',
                    views: {
                        'vistaPreliminar': {
                            templateUrl: urlBasePartials + 'notas_parciales_detalle.html',
                            controller: 'AnalisisEvaluacionController'
                        }
                    }
                })

            $urlRouterProvider.otherwise('/');
        }
    ]);

<div class="col-xs-12"><br>
    <div class="panel panel-default" style="border: 1px solid #D8D6D6 !important;margin-left: 5%;margin-right: 5%;">
        <div class="panel-body table-responsive">
            <div class="col-md-9" id="filtros">
                <div class="col-md-4">
                    <div class="input-group">
                        <label>Tipo de Informe:</label>
                        <select class="form-control" ng-model="tipoInforme" ng-options="tipo.id as tipo.nombre for tipo in tiposInformes" ng-change="cambiarInforme(tipoInforme);">
                            <option value="">Seleccione el tipo</option>
                        </select>
                    </div>
                </div>
                <div class="col-md-4">
                    <div class="input-group">
                        <label>Curso:</label>
                        <select class="form-control" id="curso" ng-model="filtroCurso" ng-options="curso.id as curso.nombre for curso in cursos" ng-change="cambiarCurso(filtroCurso);">
                            <option value="">Seleccione el curso</option>
                        </select>
                    </div>
                </div>
                <div class="col-md-4" ng-show="tipoInforme === 13">
                    <div class="input-group">
                        <label>Asignatura:</label>
                        <select class="form-control" ng-model="filtroAsignatura" ng-options="asignatura.id as asignatura.nombre for asignatura in sectores" ng-change="getCasilleros()">
                            <option value="">Seleccione una asignatura</option>
                        </select>
                    </div>
                </div>
                <div class="col-md-4">
                    <div class="input-group" ng-show="tipoInforme==7 || tipoInforme==8 || tipoInforme==10 || (tipoInforme == 13 && filtroAsignatura)">
                        <label ng-show="tipoInforme != 8">Periodo:</label>
                        <label ng-show="tipoInforme == 8">Detallar Periodo:</label>
                        <select class="form-control" ng-model="filtroPeriodo" ng-options="periodo.id as periodo.nombre for periodo in periodos" ng-change="cambiarPeriodo(filtroPeriodo)">
                            <option value="">Seleccione el periodo</option>
                        </select>
                    </div>
                </div>
                <div class="col-md-4" ng-show="tipoInforme == 13 && filtroPeriodo">
                    <div class="input-group">
                        <label>Casillero:</label>
                        <select class="form-control" id="casillero" ng-model="filtroCasillero" ng-options="casillero.id as casillero.nombre for casillero in casilleros[filtroPeriodo]" ng-change="cambiarCasillero()">
                            <option value="">Seleccione el periodo</option>
                        </select>
                    </div>
                </div>
            </div>

            <div class="col-md-3">
                <div align="right"><br>
                    <table>
                        <tr>
                            <td style="padding-left: 5px;">
                                <button class="btn btn-default" ng-click="imprimirPDF()"><img ng-src="{{icon_pdf}}" style="width: 70px;height: 70px;"><br>Informes a PDF</button>
                            </td>
                            <!--<td style="padding-left: 5px;"><button class="btn btn-default"><img ng-src="{{icon_excel}}" style="width: 70px;height: 70px;"><br>Exportar a Excel</button></td>-->
                        </tr>
                    </table>
                </div>
            </div>
        </div>
    </div>
    <div ng-include="campos_analisis_evaluacion" ng-show="tipoInforme == 13 && filtroCasillero"></div>
    <div class="panel panel-default" style="border: 1px solid #D8D6D6 !important;margin-left: 5%;margin-right: 5%;" id="information">
        <div class="panel-body table-responsive">
            <div ui-view="vistaPreliminar"></div>
        </div>
    </div>
</div>
<style>
    #filtros > div {margin-bottom: 1.1em}
</style>
<style>
    .td-margin{
        width:25%;
        padding-top: 10px;
        padding-bottom: 10px;
        padding-left:10px;
    }
</style>

<div class="col-xs-12 text-center hidden-print" ng-show="loading">
    <p><i class="fa fa-spinner fa-pulse fa-5x"></i></p>
</div>
<div ng-if="!loading && informe !=10 && informe != 11 && informe!=13" ng-repeat="alumno in alumnos">
    <ng-include src="encabezado" ng-if="informe != 11"></ng-include>
    <br>
    <div class="table-responsive">
        <ng-include src="vista[informe]"></ng-include>
    </div>
    <div style="height: 5em" ng-if="$index < (alumnos.length - 1)"></div>
</div>
<div ng-if="informe == 10 || informe == 11 || (informe == 13 && filtroCasillero)"><ng-include src="vista[informe]"></ng-include></div>

Comments (0)

HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.