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
These are the objectives in each Criterion in this Rubric
@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
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();
console.log(data);
// 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 ='
';
// console.log(str);
var subcriteria = '';
if(data.criterion.subcriteria){
var subcriteria_array = JSON.parse(data.criterion.subcriteria);
subcriteria = '
';
console.log(str);
$('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);
console.log(data.template.school_id);
console.log($('#select-school'));
// 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);
console.log($('#select-school'));
// 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;
console.log(temp_criterion);
for(temp_c in temp_criterion){
current_criterion = temp_criterion[temp_c]
console.log(current_criterion.program_ids);
objectives = JSON.stringify(current_criterion.objectives);
//var str = '
';
var str = "
";
console.log(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+='
';
console.log(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