Browse Source

Finished improving filter option and working

Igor 4 năm trước cách đây
mục cha
commit
44a39bcf46

+ 5 - 0
css/ivprog-visual-1.0.css

@@ -1013,4 +1013,9 @@ div.ui.checkbox.transition.visible {
 .dimmer_content_message {
 	color: white;
 	display: none;
+}
+
+.circular.inverted.teal.question.icon {
+	font-size: 12px;
+	margin-left: 10px;
 }

+ 4 - 1
i18n/en/ui.json

@@ -139,5 +139,8 @@
   "$castInt": "to_integer",
   "$castBool": "to_logic",
   "$castString": "to_string",
-  "text_ivprog_version":"Version"
+  "text_ivprog_version":"Version",
+  "text_teacher_filter": "Filter",
+  "text_teacher_filter_active": "Activate",
+  "text_teacher_filter_help": "When filter is activated, all iVProg modifications will be blocked."
 }

+ 4 - 1
i18n/es/ui.json

@@ -138,5 +138,8 @@
   "$castInt": "to_integer",
   "$castBool": "to_logic",
   "$castString": "to_string",
-  "text_ivprog_version":"Version"
+  "text_ivprog_version":"Version",
+  "text_teacher_filter": "Filter",
+  "text_teacher_filter_active": "Activate",
+  "text_teacher_filter_help": "When filter is activated, all iVProg modifications will be blocked."
 }

+ 4 - 1
i18n/pt/ui.json

@@ -112,5 +112,8 @@
   "tooltip_terminal_clear":"Limpa o terminal removendo todos os textos",
   "tooltip_terminal_show":"Exibe o terminal caso esteja escondido",
   "tooltip_terminal_hide":"Esconde o terminal caso não esteja escondido",
-  "text_ivprog_version":"Versão"
+  "text_ivprog_version":"Versão",
+  "text_teacher_filter": "Filtro",
+  "text_teacher_filter_active": "Ativado",
+  "text_teacher_filter_help": "Ao ativar o filtro, as modificações do iVProg estarão bloqueadas."
 }

+ 88 - 0
js/iassign-integration-functions.js

@@ -55,6 +55,7 @@ function getAnswer () {
         + ',\n"settings_data_types": \n' + JSON.stringify($('form[name="settings_data_types"]').serializeArray()) 
         + ',\n"settings_commands": \n' + JSON.stringify($('form[name="settings_commands"]').serializeArray()) 
         + ',\n"settings_functions": \n' + JSON.stringify($('form[name="settings_functions"]').serializeArray()) 
+        + ',\n"settings_filter": \n' + JSON.stringify($('form[name="settings_filter"]').serializeArray()) 
         + ' } ';
 
     if ($("input[name='include_algo']").is(':checked')) {
@@ -125,6 +126,7 @@ var settingsDataTypes = null;
 var settingsCommands = null;
 var settingsFunctions = null;
 var settingsProgrammingTypes = null;
+var settingsFilter = null;
 var algorithm_in_ilm = null;
 var previousContent = null;
 
@@ -163,6 +165,7 @@ function prepareActivityToEdit (ilm_cont) {
   settingsDataTypes = content.settingsDataTypes;
   settingsCommands = content.settingsCommands;
   settingsFunctions = content.settingsFunctions;
+  settingsFilter = content.settingsFilter;
 
   for (var i = 0; i < testCases.length; i++) {
     addTestCase(testCases[i]);
@@ -176,6 +179,9 @@ function prepareActivityToEdit (ilm_cont) {
   }
 
   ivprogTextualOrVisual();
+  if (settingsFilter && settingsFilter[0]) {
+    blockAllEditingOptions();
+  }
 }
 
 function parsePreviousAlgorithm () {
@@ -242,6 +248,7 @@ function prepareActivityToStudent (ilm_cont) {
     settingsDataTypes = content.settingsDataTypes;
     settingsCommands = content.settingsCommands;
     settingsFunctions = content.settingsFunctions;
+    settingsFilter = content.settingsFilter;
 
     if (content.algorithmInIlm != null) {
         algorithm_in_ilm = content.algorithmInIlm;
@@ -251,6 +258,9 @@ function prepareActivityToStudent (ilm_cont) {
     renderAlgorithm();
 
     ivprogTextualOrVisual();
+    if (settingsFilter && settingsFilter[0]) {
+      blockAllEditingOptions();
+    }
 }
 
 // Função para organizar se para criação, visualização ou resolução de atividade
@@ -292,6 +302,66 @@ function prepareEnvironment () {
   }
 }
 
+function blockAllEditingOptions () {
+
+  if ((iLMparameters.iLM_PARAM_AssignmentURL == "true") && (iLMparameters.iLM_PARAM_SendAnswer == "true")) {
+    return;
+  }
+
+  $('.add_global_button').addClass('disabled');
+  $('.move_function').addClass('disabled');
+  $('.add_function_button').addClass('disabled'); 
+  $('.add_var_button_function .ui.icon.button.purple').addClass('disabled');
+  $('.add_var_button_function').addClass('disabled');
+  $('.menu_commands').addClass('disabled');
+  
+  $('.global_type').addClass('disabled');
+  $('.editing_name_var').addClass('disabled');
+  $('.span_value_variable').addClass('disabled');
+
+  $('.remove_global').addClass('disabled'); 
+  $('.ui.icon.ellipsis.vertical.inverted').addClass('disabled');
+
+  $('.alternate_constant').addClass('disabled'); 
+  $('.remove_variable').addClass('disabled'); 
+  
+  $('.add_global_matrix_column').addClass('disabled'); 
+  $('.remove_global_matrix_column').addClass('disabled'); 
+  
+  $('.add_global_matrix_line').addClass('disabled'); 
+  $('.remove_global_matrix_line').addClass('disabled'); 
+
+  $('.add_global_vector_column').addClass('disabled'); 
+  $('.remove_global_vector_column').addClass('disabled'); 
+
+  $('.add_expression').addClass('disabled'); 
+  $('.add_parentheses').addClass('disabled'); 
+
+  $('.remove_function_button').addClass('disabled'); 
+  $('.button_remove_command').addClass('disabled'); 
+
+  $('.command_drag').addClass('disabled'); 
+  $('.simple_add').addClass('disabled'); 
+
+  $('.add_parameter_button').addClass('disabled'); 
+  $('.parameter_div_edit').addClass('disabled');
+  $('.function_name_div_updated').addClass('disabled');
+  $('.value_rendered').addClass('disabled');
+  $('.var_name').addClass('disabled');
+  $('.variable_rendered').addClass('disabled');
+  
+  $('.dropdown').addClass('disabled'); 
+  $('.remove_parameter').addClass('disabled');
+  
+  $('.ui.dropdown.global_type.disabled').css('opacity', '1');
+  $('.ui.dropdown.variable_type.disabled').css('opacity', '1');
+  $('.ui.dropdown.function_return.disabled').css('opacity', '1');
+  $('.ui.dropdown.parameter_type.disabled').css('opacity', '1');
+
+
+  ivprogCore.CodeEditor.disable(true);
+}
+
 function ivprogTextualOrVisual () {
 
   if (settingsProgrammingTypes) {
@@ -482,6 +552,19 @@ function prepareTableSettings (div_el) {
     +'<div class="column"><div class="ui checkbox"><input type="checkbox" name="functions_move" checked tabindex="0" class="hidden small"><label>'+LocalizedStrings.getUI('text_teacher_create_movement_functions')+'</label></div></div>'
     +'</div></form>');
 
+  div_el.append('<h4 class="ui header">'+LocalizedStrings.getUI('text_teacher_filter')+'<i class="circular inverted teal question icon"></i></h4>');
+  div_el.append('<form name="settings_filter"><div class="ui stackable one column grid">'
+    +'<div class="column"><div class="ui checkbox"><input type="checkbox" name="filter_active" tabindex="0" class="hidden small"><label>'+LocalizedStrings.getUI('text_teacher_filter_active')+'</label></div></div>'
+    +'</div></form>');
+
+  $('.circular.inverted.teal.question.icon').popup({
+    content : LocalizedStrings.getUI("text_teacher_filter_help"),
+    delay: {
+      show: 750,
+      hide: 0
+    }
+  });
+
   $('.ui.checkbox').checkbox();
 
 }
@@ -575,6 +658,7 @@ function teacherAutoEval (data) {
     settingsDataTypes = content.settingsDataTypes;
     settingsCommands = content.settingsCommands;
     settingsFunctions = content.settingsFunctions;
+    settingsFilter = content.settingsFilter;
 
     if (content.algorithmInIlm != null) {
       algorithm_in_ilm = content.algorithmInIlm;
@@ -583,5 +667,9 @@ function teacherAutoEval (data) {
     }
 
     ivprogTextualOrVisual();
+    if (settingsFilter && settingsFilter[0]) {
+      
+      blockAllEditingOptions();
+    }
   });
 }

+ 2 - 1
js/util/iassignHelpers.js

@@ -49,7 +49,8 @@ export function prepareActivityToStudentHelper (ilm_cont) {
     settingsDataTypes: content.settings_data_types,
     settingsCommands: content.settings_commands,
     settingsFunctions: content.settings_functions,
-    algorithmInIlm: content.algorithm_in_ilm
+    algorithmInIlm: content.algorithm_in_ilm,
+    settingsFilter: content.settings_filter
   }
 }
 

+ 4 - 0
js/visualUI/algorithm.js

@@ -29,4 +29,8 @@ export function renderAlgorithm () {
 
 	setTimeout(function(){ window.block_render = false; }, 100);
 	console.log('fim do render');
+
+	if (settingsFilter && settingsFilter[0]) {
+      blockAllEditingOptions();
+    } 
 }