103 lines
5.0 KiB
JavaScript
103 lines
5.0 KiB
JavaScript
I18n.scoped('find_outcome', function(I18n) {
|
|
var find_outcome = (function() {
|
|
return {
|
|
find: function(callback, options) {
|
|
options = options || {};
|
|
find_outcome.callback = callback;
|
|
var $dialog = $("#find_outcome_criterion_dialog");
|
|
if(!$dialog.hasClass('loaded')) {
|
|
$dialog.find(".loading_message").text(I18n.t('messages.loading_outcomes', "Loading Outcomes..."));
|
|
$.ajaxJSON($dialog.find(".outcomes_list_url").attr('href'), 'GET', {}, function(data) {
|
|
valids = [];
|
|
for(var idx in data) {
|
|
var outcome = data[idx].learning_outcome;
|
|
if(!options.for_rubric || (outcome.data && outcome.data.rubric_criterion)) {
|
|
valids.push(outcome);
|
|
}
|
|
}
|
|
if(valids.length === 0) {
|
|
var message;
|
|
if (options.for_rubric) {
|
|
message = I18n.t('messages.no_rubric_outcomes_found', "No Rubric-Configured Outcomes found");
|
|
} else {
|
|
message = I18n.t('messages.no_outcomes_found', "No Outcomes found");
|
|
}
|
|
$dialog.find(".loading_message").text(message);
|
|
} else {
|
|
$dialog.find(".loading_message").hide();
|
|
$dialog.addClass('loaded');
|
|
for(var idx in valids) {
|
|
var outcome = valids[idx];
|
|
outcome.name = outcome.short_description;
|
|
outcome.mastery_points = outcome.data.rubric_criterion.mastery_points || outcome.data.rubric_criterion.points_possible;
|
|
var $name = $dialog.find(".outcomes_select.blank:first").clone(true).removeClass('blank');
|
|
outcome.title = outcome.short_description;
|
|
var $text = $("<div/>");
|
|
$text.text(outcome.short_description);
|
|
outcome.title = $.truncateText($.trim($text.text()), 35);
|
|
outcome.display_name = outcome.cached_context_short_name || "";
|
|
$name.fillTemplateData({data: outcome});
|
|
$dialog.find(".outcomes_selects").append($name.show());
|
|
var $outcome = $dialog.find(".outcome.blank:first").clone(true).removeClass('blank');
|
|
$outcome
|
|
.find(".mastery_level").attr('id', 'outcome_question_bank_mastery_' + outcome.id).end()
|
|
.find(".mastery_level_text").attr('for', 'outcome_question_bank_mastery_' + outcome.id);
|
|
outcome.learning_outcome_id = outcome.id;
|
|
var criterion = outcome.data && outcome.data.rubric_criterion
|
|
var pct = (criterion.points_possible && criterion.mastery_points != null && (criterion.mastery_points / criterion.points_possible)) || 0;
|
|
pct = (Math.round(pct * 10000) / 100.0) || "";
|
|
$outcome.find(".mastery_level").val(pct);
|
|
$outcome.fillTemplateData({data: outcome, htmlValues: ['description']});
|
|
$outcome.addClass('outcome_' + outcome.id);
|
|
if(outcome.data && outcome.data.rubric_criterion) {
|
|
for(var jdx in outcome.data.rubric_criterion.ratings) {
|
|
var rating = outcome.data.rubric_criterion.ratings[jdx];
|
|
var $rating = $outcome.find(".rating.blank").clone(true).removeClass('blank');
|
|
$rating.fillTemplateData({data: rating});
|
|
$outcome.find("tr").append($rating.show());
|
|
}
|
|
}
|
|
$dialog.find(".outcomes_list").append($outcome);
|
|
}
|
|
$dialog.find(".outcomes_select:not(.blank):first").click();
|
|
}
|
|
}, function(data) {
|
|
$dialog.find(".loading_message").text(I18n.t('errors.outcome_retrieval_failed', "Outcomes Retrieval failed unexpected. Please try again."));
|
|
});
|
|
}
|
|
var find_outcome_title;
|
|
if (options.for_rubric) {
|
|
find_outcome_title = I18n.t('titles.find_outcome_criterion', "Find Outcome Criterion");
|
|
} else {
|
|
find_outcome_title = I18n.t('titles.find_outcome', "Find Outcome");
|
|
}
|
|
$dialog.dialog('close').dialog({
|
|
autoOpen: false,
|
|
modal: true,
|
|
title: find_outcome_title,
|
|
width: 700,
|
|
height: 400
|
|
}).dialog('open');
|
|
}
|
|
}
|
|
})();
|
|
window.find_outcome = find_outcome;
|
|
$(document).ready(function() {
|
|
$("#find_outcome_criterion_dialog .outcomes_select").click(function(event) {
|
|
event.preventDefault();
|
|
$("#find_outcome_criterion_dialog .outcomes_select.selected_side_tab").removeClass('selected_side_tab');
|
|
$(this).addClass('selected_side_tab');
|
|
var id = $(this).getTemplateData({textValues: ['id']}).id;
|
|
$("#find_outcome_criterion_dialog .outcomes_list .outcome").hide();
|
|
$("#find_outcome_criterion_dialog .outcomes_list .outcome_" + id).show();
|
|
});
|
|
$("#find_outcome_criterion_dialog .select_outcome_link").click(function(event) {
|
|
event.preventDefault();
|
|
var $outcome = $(this).parents(".outcome");
|
|
$("#find_outcome_criterion_dialog").dialog('close');
|
|
if($.isFunction(find_outcome.callback)) {
|
|
find_outcome.callback($outcome);
|
|
}
|
|
});
|
|
});
|
|
}); |