Speak to any coordinators and/or professors in your School or
Program that may be affected when you update this rubric. Professors
that have already used this rubric will keep a copy of it as
they used it, not an updated one.
Do you want to update this rubric?
Delete Rubric
Please note: By deleting this rubric, it will no longer be available
to your school's or program's professors. However, professors that
have already used it will keep a copy in their activities. Speak to
any coordinators and/or professors in your School or Program that may be affected.
Are you sure you want to delete this rubric?
General Information
Note: You can hide or show this section by clicking on its heading. You may want to hide it to have more space.
Copyright
You are adding criteria to your program
@stop
@section('included-js')
@stop
@section('javascript')
$('#select-outcome').on('change',function(){
fetchObjective(this);
})
// --------------------------------------------------------------------------
// Functions
// --------------------------------------------------------------------------
function fetchObjective(outcome){
$.post(
"{{URL::route('fetchObjectivesForSelect')}}",
{
outcomeID:$(outcome).find(':selected').data('outcome-id'),
},
function(data){
options = '';
for(objective_index in data){
options += '';
}
$('#select-objective').html(options);
$('#select-objective').selectpicker('refresh');
fetchCriteria($('#select-outcome'), $('#select-objective'));
}, 'json',
);
}
// Fetch criteria associated to a specific learning outcome
//here
function fetchCriteria(outcome, objective)
{
amount_of_scales = parseInt($('#number_of_scales').find(':selected').val());
maximum = parseInt($('#max_score').find(":selected").val());
$.post
(
"{{ URL::route('fetchCriteria') }}",
{
outcome_id: outcome.find(':selected').data('outcome-id'),
objective_id: objective.find(':selected').val(),
num_scales: amount_of_scales,
maximum: maximum,
filter: $('input[name=criteria-filter]:checked').val()
},
function(data)
{
$('#select-criterion').empty();
// Append criteria
data.forEach( function (arrayItem)
{
objectives = JSON.stringify(arrayItem.objectives);
$('#select-criterion')
.append('');
});
// If there are no criteria assigned to the selected outcome, disable the
// input and the button used to add criteria.
if(!$('#select-criterion').children().length)
{
$('#select-criterion').prop('disabled', true);
$('#button-add-criterion').prop('disabled', true);
}
// Otherwise, enable both the input and the button
else
{
$('#select-criterion').prop('disabled', false);
$('#button-add-criterion').prop('disabled', false);
}
$('#updated-text').fadeIn('slow').fadeOut('slow');
refreshSelects();
}
);
}
// Add a new criterion to the rubric
function addCriterion()
{
// Show the rubric container
if(!$('tbody').children().length)
{
$('#rubric-container').show();
}
// Get the selected criterion's id
var id= parseInt($('#select-criterion').find(':selected').data('criterion-id'));
var program_ids = $('#select-criterion').find(':selected').data('program-ids');
var objectives = $('#select-criterion').find(':selected').data('assoc-objectives');
// Check for duplicates
var duplicates=false;
numberOfScale = $('#number_of_scales').find(':selected').val();
$('tbody tr').each(function()
{
if ($(this).data('criterion-id') == id)
{
duplicates=true;
}
});
// If there are any, display an error
if(duplicates)
{
$('#js-error-row').show();
$('#js-error-row').find('#error-message').text('Error: The selected criterion was already added.');
return;
}
// Otherwise, hide the error container
else
{
$('#js-error-row').hide();
}
// Fetch information of the criterion selected
$.post
(
"{{ URL::route('fetchCriterionWithTemplate') }}",
{ id: id,
},
function(data)
{
// Append the fetched data
copyright = null;
notes = null;
if(data.criterion.copyright){
copyright = data.criterion.copyright;
}
if(data.criterion.notes){
notes = data.criterion.notes;
}
objectives = JSON.stringify(objectives);
var str ='
';
var subcriteria = '';
if(data.criterion.subcriteria){
var subcriteria_array = JSON.parse(data.criterion.subcriteria);
subcriteria = '
';
$('table tbody').append(str);
// Build copyright list
buildCopyrightList();
// Enable X-Edtable on this new row
$('.editable').editable({
unsavedclass: null,
rows: 4
});
// Turn on tooltips again (because content is dynamic)
$('[data-toggle="tooltip"]').tooltip();
// Sortable rows
$('.table').sortable({
handle: 'span.glyphicon.glyphicon-move',
containerSelector: 'table',
itemPath: '> tbody',
itemSelector: 'tr',
placeholder: '
'
});
},
'json',
);
}
// Fetch single criterion
function fetchCriterion(criterion)
{
$.post
(
"{{ URL::route('fetchCriterion') }}",
{ id: outcome.find(':selected').data('outcome-id')},
function(data)
{
$('#select-criterion').empty();
data.forEach( function (arrayItem)
{
$('#select-criterion')
.append('');
});
$('#select-criterion').append('');
refreshSelects();
}
);
}
// Build list from copyright info in rubric
function buildCopyrightList()
{
// Empty the copyright list
$('#copyright-list').empty();
$('tbody tr').each(function( index )
{
var criterion = $(this);
// If there's copyright info
if(criterion.data('criterion-copyright')!=null){
var copyright = criterion.data('criterion-copyright');
if($('#copyright-list li').length>0)
{
var found = false;
$('#copyright-list li').each(function()
{
// If found, give the string its number
if(copyright==$(this).find('span').text())
{
copyrightNumber = Number.parseInt($(this).find('sup').text());
console.log('a: '+copyrightNumber);
criterion.children('td:nth-child(2)').find('sup').text(copyrightNumber);
found =true;
//to break
return false;
}
});
// Otherwise, give it the next number and append a new item to the
// list
if(!found)
{
var copyrightNumber = $('#copyright-list li').length+1;
console.log('b: '+copyrightNumber);
console.log(criterion.children('td:nth-child(2)').find('sup').length);
criterion.children('td:nth-child(2)').find('sup').text(copyrightNumber);
$('#copyright-list').append('
');
}
}
});
if($('#copyright-info li').length>0)
{
$('#copyright-info').show();
}
else
{
$('#copyright-info').hide();
}}
/* if(criterion.data('criterion-copyright')!=null)
{
var copyright = criterion.data('criterion-copyright');
// If there is anything in the copyright list
if($('#copyright-list li').length>0)
{
// Check copyright list for the same copyright text
var found = false;
$('#copyright-list li').each(function()
{
// If found, give the string its number
if(copyright==$(this).find('span').text())
{
copyrightNumber = Number.parseInt($(this).find('sup').text());
console.log('a: '+copyrightNumber);
criterion.children('td:nth-child(2)').find('sup').text(copyrightNumber);
found =true;
//to break
return false;
}
});
// Otherwise, give it the next number and append a new item to the
// list
if(!found)
{
var copyrightNumber = $('#copyright-list li').length+1;
console.log('b: '+copyrightNumber);
console.log(criterion.children('td:nth-child(2)').find('sup').length);
criterion.children('td:nth-child(2)').find('sup').text(copyrightNumber);
$('#copyright-list').append('
'+copyrightNumber+' '+copyright+'
');
}
}
// Otherwise, give it number 1 and append it
else
{
criterion.children('td:nth-child(2)').find('sup').text('1');
$('#copyright-list').append('
1 '+copyright+'
');
}
}
});
if($('#copyright-info li').length>0)
{
$('#copyright-info').show();
}
else
{
$('#copyright-info').hide();
}
}
*/
function refreshSelects()
{
$('#select-template').selectpicker('refresh');
$('#select-school').selectpicker('refresh');
$('#select-program').selectpicker('refresh');
$('#select-outcome').selectpicker('refresh');
$('#select-criterion').selectpicker('refresh');
$('#expected_percentage').selectpicker('refresh');
$('#expected_points').selectpicker('refresh');
$('#number_of_scales').selectpicker('refresh');
$('#select-objective').selectpicker('refresh');
}
// Fetch programs associated to a specific school
function fetchPrograms(school)
{
$.ajax({
type: 'POST',
url: "{{ URL::action('ProgramsController@fetch') }}",
data: { id: school.find(':selected').data('school-id')},
success: function(data)
{
$('#select-program').empty();
$('#select-program').append('');
data.forEach( function (program)
{
$('#select-program')
.append('');
});
},
async:false
});
if($('#select-school').find(':selected').data('school-id')!=0)
$('#select-program').prop('disabled', false);
else
$('#select-program').prop('disabled', true);
refreshSelects();
}
// Load a template. This function is different from the one for professors
function loadTemplate()
{
$.post
(
"{{ URL::to('loadTemplate') }}",
{ id: $('#select-template').find(':selected').data('template-id')},
function(data)
{
// Show the container and empty all rows
$('#rubric-container').show();
$('tbody').empty();
//Set the name of the rubric
$('#rubric-name').val(data.template.name);
// Set school id to 0, then to the saved value if it exists
$('#select-school option[data-school-id="0"]').prop('selected', true);
$('#select-school option[data-school-id="'+data.template.school_id+'"]').prop('selected', true);
// Fetch programs associated to that school
fetchPrograms($('#select-school'));
// Set program id to 0, then to the saved value if it exists
$('#select-program option[data-program-id="0"]').prop('selected', true);
$('#select-program option[data-program-id="'+data.template.program_id+'"]').prop('selected', true);
// Set expected values
console.log(data.template.expected_percentage);
console.log(data.template.expected_points);
console.log(data.template.max_score);
$('#max_score').val(data.template.max_score);
$('#max_score').trigger("change");
$('#expected_percentage').val(data.template.expected_percentage);
$('#expected_points').val(data.template.expected_points);
$('#number_of_scales').val(data.template.num_scales);
refreshSelects();
changeTable();
// Set visibility
var is_visible = data.template.is_visible;
if(is_visible)
{
$('#is_visible0').prop('checked', false);
$('#is_visible1').prop('checked', true);
}
else
{
$('#is_visible1').prop('checked', false);
$('#is_visible0').prop('checked', true);
}
// Set the contents of the rubric
var temp_criterion = data.criterion;
for(temp_c in temp_criterion){
current_criterion = temp_criterion[temp_c]
objectives = JSON.stringify(current_criterion.objectives);
var str = '
';
var subcriteria ='';
if(current_criterion.subcriteria){
var subcriteria_array = JSON.parse(current_criterion.subcriteria);
subcriteria = '
';
for(scaleIndex in current_criterion.scales){
scale = current_criterion.scales[scaleIndex];
str+='
'+scale.description+'
';
}
str+= '
'+current_criterion.outcomes+'
'
str+='
';
$('table tbody').append(str);
// Enable X-Edtable on this new row
$('.editable').editable({
unsavedclass: null,
rows: 4
});
// Turn on tooltips again (because content is dynamic)
$('[data-toggle="tooltip"]').tooltip();
refreshSelects();
}
/*
var contents = JSON.parse(data.contents);
contents.forEach(function (data)
{
// Append the fetched data
var str ='
';
var subcriteria = '';
if(data.subcriteria){
var subcriteria_array = data.subcriteria;
subcriteria = '
';
$('#theScaleTitles').html(editableTitles);
$("#criterion-header").html(newScaleHeaders);
$('#allCriteria').html(' ');
}
// When a school changes, update its programs. If all is selected, disable
$('#select-school').on('change', function()
{
toggleProgramSelect($(this));
});
$('#max_score').on('change', function(){
var max = parseInt($('#max_score').find(':selected').val());
var stringToScales = "";
selectedValue = 1;
valueBefore = 0;
for(i=2; i<=20; i++){
if(max%i==0){
stringToScales += "";
selectedValue = i - valueBefore;
valueBefore = i;
}
}
$('#number_of_scales').html(stringToScales);
$('#number_of_scales').selectpicker('refresh');
$('#number_of_scales').val(selectedValue);
$('#number_of_scales').selectpicker('refresh');
var expected_points = Math.floor(max *0.7);
var expected_points_html = '';
for(i=1; i '+i+'';
}
$('#expected_points').html(expected_points_html);
refreshSelects();
$('#expected_points').val(expected_points);
refreshSelects();
changeTable();
fetchCriteria($('#select-outcome'), $('#select-objective'))
})
$('#number_of_scales').on('change', function(){
changeTable();
$('#rubric-container').hide();
$('#rubric-name').val('');
$('tbody').empty();
})
// When a learning outcome changes, update its criteria
/*$('#select-outcome, input[name=criteria-filter]').on('change', function()
{
fetchCriteria($('#select-outcome'));
});
*/
// When the add button is clicked
$('#button-add-criterion').on('click', function(e)
{
//Prevent page refresh
e.preventDefault();
//Add new criterion
addCriterion();
});
// When the create or update buttons are clicked (.save)
$('.save').on('click', function(e)
{
//Prevent page refresh
e.preventDefault();
var emptyFields=false;
$('#allCriteria').children('td').each(function()
{
if (($(this).text() == "" || $(this).text() == "Empty") && !($(this).hasClass('nullable')) )
{
emptyFields=true;
}
});
// If any fields are empty, display error
if(emptyFields || $.trim($('#rubric-name').val())=='')
{
$('#js-error-row').show();
$('#js-error-row').find('#error-message').text('Error: Please fill all the fields. Make sure your rubric has a name and all scale scores are filled.');
return;
}
else
{
$('#js-error-row').hide();
}
// Check whether a rubric with the written name already exists
if($(this).attr('id')=='button-create-rubric' && nameExists())
{
$('#js-error-row').show();
$('#js-error-row').find('#error-message').text('Error: A template with that name already exists.');
return;
}
else
{
$('#js-error-row').hide();
}
program_id = $('#select-program').find(':selected').data('program-id')
if(program_id == 0){
$('#modal-title-rubric').html("All criteria will be associated with this school's programs");
htmlString = "
The following criteria and objectives will be matched with all programs