Replaced all Ruby constants instances in JS to be called from JS.

This commit is contained in:
Matej Zrimšek 2016-10-06 16:39:54 +02:00
parent 0780bd2416
commit 05acf5a725
6 changed files with 32 additions and 46 deletions

View file

@ -192,10 +192,10 @@ function processResult(ev, resultTypeEnum, editMode, forS3) {
switch(resultTypeEnum) { switch(resultTypeEnum) {
case ResultTypeEnum.FILE: case ResultTypeEnum.FILE:
var $nameInput = $form.find("#result_name"); var $nameInput = $form.find("#result_name");
var nameValid = textValidator(ev, $nameInput, TextLimitEnum.OPTIONAL, var nameValid = textValidator(ev, $nameInput, 0, NAME_MAX_LENGTH);
TextLimitEnum.NAME_MAX_LENGTH);
var $fileInput = $form.find("#result_asset_attributes_file"); var $fileInput = $form.find("#result_asset_attributes_file");
var filesValid = filesValidator(ev, $fileInput, FileTypeSizeEnum.FILE, editMode); var filesValid = filesValidator(ev, $fileInput, FileTypeEnum.FILE,
editMode);
if(nameValid && filesValid) { if(nameValid && filesValid) {
if(forS3) { if(forS3) {
@ -210,21 +210,17 @@ function processResult(ev, resultTypeEnum, editMode, forS3) {
break; break;
case ResultTypeEnum.TABLE: case ResultTypeEnum.TABLE:
var $nameInput = $form.find("#result_name"); var $nameInput = $form.find("#result_name");
var nameValid = textValidator(ev, $nameInput, TextLimitEnum.OPTIONAL, var nameValid = textValidator(ev, $nameInput, 0, NAME_MAX_LENGTH);
TextLimitEnum.NAME_MAX_LENGTH);
break; break;
case ResultTypeEnum.TEXT: case ResultTypeEnum.TEXT:
var $nameInput = $form.find("#result_name"); var $nameInput = $form.find("#result_name");
var nameValid = textValidator(ev, $nameInput, TextLimitEnum.OPTIONAL, var nameValid = textValidator(ev, $nameInput, 0, NAME_MAX_LENGTH);
TextLimitEnum.NAME_MAX_LENGTH);
var $textInput = $form.find("#result_result_text_attributes_text"); var $textInput = $form.find("#result_result_text_attributes_text");
textValidator(ev, $textInput, TextLimitEnum.REQUIRED, textValidator(ev, $textInput, 1, TEXT_MAX_LENGTH);
TextLimitEnum.TEXT_MAX_LENGTH);
break; break;
case ResultTypeEnum.COMMENT: case ResultTypeEnum.COMMENT:
var $commentInput = $form.find("#comment_message"); var $commentInput = $form.find("#comment_message");
var commentValid = textValidator(ev, $commentInput, TextLimitEnum.REQUIRED, var commentValid = textValidator(ev, $commentInput, 1, TEXT_MAX_LENGTH);
TextLimitEnum.TEXT_MAX_LENGTH);
break; break;
} }
} }

View file

@ -1438,8 +1438,8 @@ function bindNewModuleAction(gridDistX, gridDistY) {
function handleNewNameConfirm(ev) { function handleNewNameConfirm(ev) {
var input = $("#new-module-name-input"); var input = $("#new-module-name-input");
// Validate module name // Validate module name
var moduleNameValid = textValidator(ev, input, var moduleNameValid = textValidator(ev, input, NAME_MIN_LENGTH,
TextLimitEnum.NAME_MIN_LENGTH, TextLimitEnum.NAME_MAX_LENGTH, true); NAME_MAX_LENGTH, true);
if (moduleNameValid) { if (moduleNameValid) {
// Set the "clicked" property to true // Set the "clicked" property to true
modal.data("submit", "true"); modal.data("submit", "true");
@ -1528,8 +1528,8 @@ function initEditModules() {
function handleRenameConfirm(modal, ev) { function handleRenameConfirm(modal, ev) {
var input = modal.find("#edit-module-name-input"); var input = modal.find("#edit-module-name-input");
// Validate module name // Validate module name
var moduleNameValid = textValidator(ev, input, var moduleNameValid = textValidator(ev, input, NAME_MIN_LENGTH,
TextLimitEnum.NAME_MIN_LENGTH, TextLimitEnum.NAME_MAX_LENGTH, true); NAME_MAX_LENGTH, true);
if (moduleNameValid) { if (moduleNameValid) {
var newName = input.val(); var newName = input.val();
var moduleId = modal.attr("data-module-id"); var moduleId = modal.attr("data-module-id");
@ -1636,8 +1636,7 @@ function initEditModuleGroups() {
function handleRenameConfirm(modal, ev) { function handleRenameConfirm(modal, ev) {
var input = modal.find("#edit-module-group-name-input"); var input = modal.find("#edit-module-group-name-input");
// Validate module group name // Validate module group name
var moduleNameValid = textValidator(ev, input, TextLimitEnum.REQUIRED, var moduleNameValid = textValidator(ev, input, 1, NAME_MAX_LENGTH, true);
TextLimitEnum.NAME_MAX_LENGTH, true);
if (moduleNameValid) { if (moduleNameValid) {
var newModuleGroupName = input.val(); var newModuleGroupName = input.val();
var moduleId = modal.attr("data-module-id"); var moduleId = modal.attr("data-module-id");

View file

@ -497,7 +497,7 @@ function importProtocolFromFile(
$.extend(data_json, params); $.extend(data_json, params);
var rough_size = roughSizeOfObject(data_json); var rough_size = roughSizeOfObject(data_json);
if (rough_size > <%= Constants::FILE_MAX_SIZE_MB.megabytes %>) { if (rough_size > FILE_MAX_SIZE_B) {
// Call the callback function // Call the callback function
resultCallback({ name: protocolJson["name"], new_name: null, status: "size_too_large" }); resultCallback({ name: protocolJson["name"], new_name: null, status: "size_too_large" });
return; return;

View file

@ -493,15 +493,13 @@ function processStep(ev, editMode, forS3) {
$form.removeBlankFileForms(); $form.removeBlankFileForms();
var $fileInputs = $form.find("input[type=file]"); var $fileInputs = $form.find("input[type=file]");
var filesValid = filesValidator(ev, $fileInputs, FileTypeSizeEnum.FILE); var filesValid = filesValidator(ev, $fileInputs, FileTypeEnum.FILE);
var $checklists = $form.find(".nested_step_checklists"); var $checklists = $form.find(".nested_step_checklists");
var checklistsValid = checklistsValidator(ev, $checklists, editMode); var checklistsValid = checklistsValidator(ev, $checklists, editMode);
var $nameInput = $form.find("#step_name"); var $nameInput = $form.find("#step_name");
var nameValid = textValidator(ev, $nameInput, TextLimitEnum.REQUIRED, var nameValid = textValidator(ev, $nameInput, 1, NAME_MAX_LENGTH);
TextLimitEnum.NAME_MAX_LENGTH);
var $descrTextarea = $form.find("#step_description"); var $descrTextarea = $form.find("#step_description");
var descriptionValid = textValidator(ev, $descrTextarea, var descriptionValid = textValidator(ev, $descrTextarea, 0, TEXT_MAX_LENGTH);
TextLimitEnum.OPTIONAL, TextLimitEnum.TEXT_MAX_LENGTH);
if (filesValid && checklistsValid && nameValid && descriptionValid) { if (filesValid && checklistsValid && nameValid && descriptionValid) {
if (forS3) { if (forS3) {

View file

@ -18,35 +18,27 @@ $.fn.onSubmitValidator = function(validatorCb) {
} }
}; };
var TextLimitEnum = Object.freeze({
OPTIONAL: 0,
REQUIRED: 1,
NAME_MIN_LENGTH: "<%= Constants::NAME_MIN_LENGTH %>",
NAME_MAX_LENGTH: "<%= Constants::NAME_MAX_LENGTH %>",
TEXT_MAX_LENGTH: "<%= Constants::TEXT_MAX_LENGTH %>"
});
/* /*
* @param {boolean} clearErr Set clearErr to true if this is the only * @param {boolean} clearErr Set clearErr to true if this is the only
* error that can happen/show. * error that can happen/show.
*/ */
function textValidator(ev, textInput, textLimitEnumMin, textLimitEnumMax, clearErr) { function textValidator(ev, textInput, textLimitMin, textLimitMax, clearErr) {
clearErr = _.isUndefined(clearErr) ? false : clearErr; clearErr = _.isUndefined(clearErr) ? false : clearErr;
var text = $(textInput).val().trim(); var text = $(textInput).val().trim();
$(textInput).val(text); $(textInput).val(text);
var nameTooShort = text.length < textLimitEnumMin; var nameTooShort = text.length < textLimitMin;
var nameTooLong = text.length > textLimitEnumMax; var nameTooLong = text.length > textLimitMax;
var errMsg; var errMsg;
if (nameTooShort) { if (nameTooShort) {
if (textLimitEnumMin === TextLimitEnum.REQUIRED) { if (textLimitMin === 1) {
errMsg = I18n.t("general.text.not_blank"); errMsg = I18n.t("general.text.not_blank");
} else { } else {
errMsg = I18n.t("general.text.length_too_short", { min_length: textLimitEnumMin }); errMsg = I18n.t("general.text.length_too_short", { min_length: textLimitMin });
} }
} else if (nameTooLong) { } else if (nameTooLong) {
errMsg = I18n.t("general.text.length_too_long", { max_length: textLimitEnumMax }); errMsg = I18n.t("general.text.length_too_long", { max_length: textLimitMax });
} }
var noErrors = _.isUndefined(errMsg); var noErrors = _.isUndefined(errMsg);
@ -71,7 +63,8 @@ function checklistsValidator(ev, checklists, editMode) {
if ($item.css('display') != 'none') { if ($item.css('display') != 'none') {
if ($itemInput.val()) { if ($itemInput.val()) {
var itemNameValid = textValidator(ev, $itemInput, TextLimitEnum.REQUIRED, TextLimitEnum.TEXT_MAX_LENGTH); var itemNameValid = textValidator(ev, $itemInput, 1,
TEXT_MAX_LENGTH);
if (!itemNameValid) { if (!itemNameValid) {
noErrors = false; noErrors = false;
} }
@ -86,9 +79,9 @@ function checklistsValidator(ev, checklists, editMode) {
var $checklistInput = $checklist.find(".checklist_name"); var $checklistInput = $checklist.find(".checklist_name");
// In edit mode, checklist's name can't be blank if any items present // In edit mode, checklist's name can't be blank if any items present
var allowBlankChklstName = !(anyChecklistItemFilled || editMode); var allowBlankChklstName = !(anyChecklistItemFilled || editMode);
var textLimitEnumMin = allowBlankChklstName ? TextLimitEnum.OPTIONAL : TextLimitEnum.REQUIRED; var textLimitMin = allowBlankChklstName ? 0 : 1;
var checklistNameValid = textValidator(ev, $checklistInput, var checklistNameValid = textValidator(ev, $checklistInput,
textLimitEnumMin, TextLimitEnum.TEXT_MAX_LENGTH); textLimitMin, TEXT_MAX_LENGTH);
if (!checklistNameValid) { if (!checklistNameValid) {
noErrors = false; noErrors = false;
} else if (allowBlankChklstName) { } else if (allowBlankChklstName) {
@ -101,9 +94,9 @@ function checklistsValidator(ev, checklists, editMode) {
return noErrors; return noErrors;
} }
var FileTypeSizeEnum = Object.freeze({ var FileTypeEnum = Object.freeze({
FILE: "<%= Constants::FILE_MAX_SIZE_MB.megabytes %>", FILE: 0,
AVATAR: "<%= Constants::AVATAR_MAX_SIZE_MB.megabytes %>" AVATAR: 1
}); });
function filesValidator(ev, fileInputs, fileTypeEnum, canBeEmpty) { function filesValidator(ev, fileInputs, fileTypeEnum, canBeEmpty) {
@ -138,9 +131,9 @@ function filesSizeValidator(ev, fileInputs, fileTypeEnum) {
} }
if (file.size > fileTypeEnum) { if (file.size > fileTypeEnum) {
switch (fileTypeEnum) { switch (fileTypeEnum) {
case FileTypeSizeEnum.FILE: case FileTypeEnum.FILE:
return "<%= I18n.t 'general.file.size_exceeded', file_size: Constants::FILE_MAX_SIZE_MB %>".strToErrorFormat(); return "<%= I18n.t 'general.file.size_exceeded', file_size: Constants::FILE_MAX_SIZE_MB %>".strToErrorFormat();
case FileTypeSizeEnum.AVATAR: case FileTypeEnum.AVATAR:
return "<%= I18n.t 'general.file.size_exceeded', file_size: Constants::AVATAR_MAX_SIZE_MB %>".strToErrorFormat(); return "<%= I18n.t 'general.file.size_exceeded', file_size: Constants::AVATAR_MAX_SIZE_MB %>".strToErrorFormat();
} }
} }

View file

@ -68,7 +68,7 @@ function processFile(ev, forS3) {
$form.clearFormErrors(); $form.clearFormErrors();
var $fileInput = $form.find("input[type=file]"); var $fileInput = $form.find("input[type=file]");
if(filesValidator(ev, $fileInput, FileTypeSizeEnum.AVATAR)) { if(filesValidator(ev, $fileInput, FileTypeEnum.AVATAR)) {
if(forS3) { if(forS3) {
// Redirects file uploading to S3 // Redirects file uploading to S3
var url = "/avatar_signature.json"; var url = "/avatar_signature.json";