@extends('layouts.master_sin_semesterbar') @section('navigation') @include('local.managers.admins._navigation') @stop @section('main') <div> <div class=""> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> function make_chart(outcomes_info, semesters) { //////// Get values ready for chart var target_line = {{$target}}; var x_label = 'Learning Outcomes'; var y_label = 'Percent of students'; var outcomes_labels = Array(); var i = 0; outcomes_info.forEach(eachOutcome); function eachOutcome(outcome, index) { outcomes_labels.push({v: (index+1), f: outcome.name}); i = i + 1; } // var outcomes_data = Array(); var legend = Array(); legend.push(''); legend.push('Target'); $.each(semesters, function(index, semester){ var name = semester.name; name = name.split(' '); var semester_number = name[0]; var semester_year = name[2]; if (semester_number == 'First'){ semester_number = '1'; } else if (semester_number == 'Second'){ semester_number = '2'; } name = semester_year + " Sem " + semester_number; legend.push(name); }); outcomes_data.push(legend); // var hidden_values = Array(); hidden_values.push(0); hidden_values.push(target_line); var k = 0; while (k < semesters.length){ hidden_values.push(null); k = k + 1; } // outcomes_data.push(hidden_values); // console.log(semesters) $.each(outcomes_info, function(index, outcome){ var temp_outcome_grouping_info = Array(); temp_outcome_grouping_info.push({v:(index+1),f:"Students acheiving Learning Outcomes"}); temp_outcome_grouping_info.push(target_line); // console.log(outcome.semesters) var i = 0; $.each(outcome.semesters, function(index, semester){ // if semester is not the same, insert null. // else, insert info from expected semester. if(semester.name != semesters[i].name){ while(semester.name != semesters[i].name && i < semesters.length){ temp_outcome_grouping_info.push(null); i = i + 1; } } i = i + 1; var total = semester.total_evaluated; var achievers = semester.total_achieved; var percentage = achievers/total; var display_percentage = percentage*100; temp_outcome_grouping_info.push({v:percentage,f:'\nAchieved by ' + display_percentage.toFixed(2) + '%\n(' + achievers + ' achievers and ' + total + ' participants)'}); }); var i = temp_outcome_grouping_info.length; while(i < semesters.length+2){ temp_outcome_grouping_info.push(null); i = i + 1; } outcomes_data.push(temp_outcome_grouping_info); }); var last_hidden_values = [...hidden_values]; last_hidden_values[0] = i+1; outcomes_data.push(last_hidden_values); //////// google.charts.load('current', { packages: ['corechart'] }).then(function () { var data = google.visualization.arrayToDataTable(outcomes_data); // var data = google.visualization.arrayToDataTable([ // ['', 'Target', '2020-21 Sem 2', '2021-22 Sem 1', '2021-22 Sem 2'], // [0, 0.80, null, null, null], // [{v:1,f:"Students acheiving Learning Outcomes"}, 0.80, {v:0.8275,f:82.75}, {v:0.9075,f:'\nAchieved by '+(90.75).toString()+'%\n(60 achievers and 80 participants)'}, {v:0.8475,f:84.75}], // [{v:2,f:"Students acheiving Learning Outcomes"}, 0.80, {v:0.7475,f:74.75}, {v:0.8775,f:87.75}, {v:0.9975,f:60.75}], // [{v:3,f:"Students acheiving Learning Outcomes"}, 0.80, {v:0.6875,f:68.75}, {v:0.9175,f:91.75}, {v:0.8475,f:84.75}], // [4, 0.80, null, null, null] // ]); var chartDiv = document.getElementById('chart_div'); var chart = new google.visualization.ColumnChart(chartDiv); chart.draw(data, { // colors: ['lime', 'magenta'], hAxis: { title: x_label, ticks: outcomes_labels, viewWindow: { min: 0.5, max: outcomes_info.length + 0.5 // el total de outcomes + 0.5 }, textStyle : { fontSize: 10, bold: true, } }, legend: 'right', series: { 0: { type: 'line' } }, title: ' ', chartArea: { width: '70%', // top: 10, // height: '50%' }, vAxis: { title: y_label, format: 'percent', viewWindow: { min: 0, max: 1 } } }); }); } // labels for each outcome grouping var outcomes_info = <?= json_encode($outcomes, JSON_HEX_TAG); ?>; var semesters = <?= json_encode($semesters, JSON_HEX_TAG); ?>; // console.log(outcomes_info); make_chart(outcomes_info,semesters); </script> <script src="https://www.gstatic.com/charts/loader.js"></script> <div class=""> <div class="filters"> <div class="row" style="display: flex;"> <div class="category" > <label for="is_graduate">Level</label> <div class="select"> <select class="selectpicker" name="is_graduate" id="is_graduate"> <option value="0" selected="selected">Undergradute</option> <option value="1">Graduate</option> </select> </div> </div> </div> <div class="row" style="display: flex;"> <div class="category" > <label for="school">School</label> <div class="select"> <select multiple class="selectpicker" name="school" id="school"> <option value="0" selected="selected">All</option> @foreach ($filters['school'] as $school) <option value="{{$school->id}}">{{$school->name}}</option> @endforeach </select> </div> </div> <div class="category" > <label for="program" >Academic Program</label> <div class="select"> <select multiple class="selectpicker" name="program" id="program"> <option value="0" selected="selected">All</option> @foreach ($filters['program'] as $program) <option value="{{$program->id}}">{{$program->name}}</option> @endforeach </select> </div> </div> </div> <div class="row" style="display: flex;"> <div class="category" > <label for="semester">Semester</label> <div class="select"> <select multiple class="selectpicker" name="semester" id="semester"> <option value="0" selected="selected">All</option> @foreach ($filters['semester'] as $semester) <option value="{{$semester->id}}">{{$semester->name}}</option> @endforeach </select> </div> </div> <div class="category" > <label for="year">Academic Year</label> <div class="select"> <select multiple class="selectpicker" name="year" id="year"> <option value="0" selected="selected">All</option> @foreach ($filters['year'] as $year) <option value="{{$year->id}}">{{$year->start}}</option> @endforeach </select> </div> </div> <div class="category" > <label for="outcome">Learning Outcomes</label> <div class="select"> <select multiple class="selectpicker" name="outcome" id="outcome"> <option value="0" selected="selected">All</option> @foreach ($filters['outcome'] as $outcome) <option value="{{$outcome->id}}">{{$outcome->name}}</option> @endforeach </select> </div> </div> </div> </div> <h4 class="container"> <b>Percent of Students Achieving Learning Outcomes By Academic Session</b> </h4> <div class="container" style="height:500px; width:1300px;" id="chart_div"></div> <div class="" style="padding-left: 25px;"> <h5> <b>Annotation</b> </h5> The target line represents the expected percent of students achieving the learning outcome({{$target*100}}%). </div> </div> </div> </div> @stop @section('included-js') <!-- HighCharts --> <script src="{{ asset('vendor/highcharts/highcharts.js') }}"></script> @stop @section('javascript') $(document).ready(function() { $("#year").parent().parent().parent().hide(); // when a filter is focused var previous; $(".category").find("button").focus(function() { previous = Array(); $(this).parent().find("select option:selected").each(function() { previous.push(this.value); }); }); // when a filter is changed $(".category").find("select").change(function() { var new_value = Array(); $(this).parent().find("select option:selected").each(function() { new_value.push(this.value); }); //if statements so that "All" only can be selected alone and dont allow selecting no options if(jQuery.inArray("0",new_value) !== -1 && jQuery.inArray("0",previous) === -1){ $(this).parent().find("select option:selected").each(function() { $(this).removeAttr('selected'); $(this).parent().val(0); //$('.selectpicker').selectpicker('refresh'); new_value = ["0"]; }); }else if(jQuery.inArray("0",new_value) !== -1 && jQuery.inArray("0",previous) !== -1 && new_value.length > previous.length){ $(this).parent().find("select option:selected").each(function() { if(this.value == "0"){ $(this).removeAttr('selected'); //$('.selectpicker').selectpicker('refresh'); new_value = Array(new_value[1]); } }); }else if(new_value.length == 0){ $(this).parent().find("select").val(0); //$('.selectpicker').selectpicker('refresh'); new_value = ["0"]; } previous = new_value; // get values from all selects var schools = $("#school").val(); var programs = $("#program").val(); var semesters = $("#semester").val(); var years = $("#year").val(); var outcomes = $("#outcome").val(); var outcomes = $("#outcome").val(); var is_graduate = $("#is_graduate").val(); // query the values and get new data for chart $.post( "{{ URL::action('AdministratorsController@overview2_filter_results') }}", { schools: (schools), programs: (programs), semesters: (semesters), years: (years), outcomes: (outcomes), is_graduate: (is_graduate), }, function(data) { var filters = data.filters; var outcomes_info = data.outcomes_info; var semesters = data.semesters; //////// update chart make_chart(outcomes_info,semesters); ////////update filters var new_all = $('<option/>',{ 'value': "0", 'html': "All", });; {{-- //update school filter var school_filter = $("#school"); var new_school_options = filters.school; school_filter.find("option").remove(); school_filter.append(new_all.clone(true)); $.each(new_school_options, function(index, school) { var value = school.id; var html = school.name; var new_option = $('<option/>',{ 'value': value, 'html': html, });; school_filter.append(new_option); }); --}} //update school filter var school_filter = $("#school"); var school_selected_options = Array(); school_filter.find("option:selected").each(function() { school_selected_options.push(this.value); }); var new_school_options = filters.school; school_filter.find("option").remove(); if(Array("0")[0] == school_selected_options[0]){ school_filter.append(new_all.clone(true).attr("selected","selected")); } else{ school_filter.append(new_all.clone(true)); } $.each(new_school_options, function(index, school) { var value = school.id.toString(); var html = school.name; var new_option; if(jQuery.inArray(value,school_selected_options) === -1){ new_option = $('<option/>',{ 'value': value, 'html': html, });; }else{ new_option = $('<option/>',{ 'value': value, 'html': html, 'selected': 'selected', });; } school_filter.append(new_option); }); //update semester filter var semester_filter = $("#semester"); var semester_selected_options = Array(); semester_filter.find("option:selected").each(function() { semester_selected_options.push(this.value); }); var new_semester_options = filters.semester; semester_filter.find("option").remove(); if(Array("0")[0] == semester_selected_options[0]){ semester_filter.append(new_all.clone(true).attr("selected","selected")); } else{ semester_filter.append(new_all.clone(true)); } $.each(new_semester_options, function(index, semester) { var value = semester.id.toString(); var html = semester.name; var new_option; if(jQuery.inArray(value,semester_selected_options) === -1){ new_option = $('<option/>',{ 'value': value, 'html': html, });; }else{ new_option = $('<option/>',{ 'value': value, 'html': html, 'selected': 'selected', });; } semester_filter.append(new_option); }); //update program filter var program_filter = $("#program"); var program_selected_options = Array(); program_filter.find("option:selected").each(function() { program_selected_options.push(this.value); }); var new_program_options = filters.program; program_filter.find("option").remove(); if(Array("0")[0] == program_selected_options[0]){ program_filter.append(new_all.clone(true).attr("selected","selected")); } else{ program_filter.append(new_all.clone(true)); } $.each(new_program_options, function(index, program) { var value = program.id.toString(); var html = program.name; var new_option; if(jQuery.inArray(value,program_selected_options) === -1){ new_option = $('<option/>',{ 'value': value, 'html': html, });; }else{ new_option = $('<option/>',{ 'value': value, 'html': html, 'selected': 'selected', });; } program_filter.append(new_option); }); //update outcome filter var outcome_filter = $("#outcome"); var outcome_selected_options = Array(); outcome_filter.find("option:selected").each(function() { outcome_selected_options.push(this.value); }); var new_outcome_options = filters.outcome; outcome_filter.find("option").remove(); if(Array("0")[0] == outcome_selected_options[0]){ outcome_filter.append(new_all.clone(true).attr("selected","selected")); } else{ outcome_filter.append(new_all.clone(true)); } $.each(new_outcome_options, function(index, outcome) { var value = outcome.id.toString(); var html = outcome.name; var new_option; if(jQuery.inArray(value,outcome_selected_options) === -1){ new_option = $('<option/>',{ 'value': value, 'html': html, });; }else{ new_option = $('<option/>',{ 'value': value, 'html': html, 'selected': 'selected', });; } outcome_filter.append(new_option); }); {{-- //update semester filter var semester_filter = $("#semester"); var new_semester_options = filters.semester; semester_filter.find("option").remove(); semester_filter.append(new_all.clone(true)); $.each(new_semester_options, function(index, semester) { var value = semester.id; var html = semester.name; var new_option = $('<option/>',{ 'value': value, 'html': html, });; semester_filter.append(new_option); }); --}} $('.selectpicker').selectpicker('refresh'); } ); }); }); {{-- @include('global.dummy-outcomes') --}} @stop