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) {
case ResultTypeEnum.FILE:
var $nameInput = $form.find("#result_name");
var nameValid = textValidator(ev, $nameInput, TextLimitEnum.OPTIONAL,
TextLimitEnum.NAME_MAX_LENGTH);
var nameValid = textValidator(ev, $nameInput, 0, NAME_MAX_LENGTH);
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(forS3) {
@ -210,21 +210,17 @@ function processResult(ev, resultTypeEnum, editMode, forS3) {
break;
case ResultTypeEnum.TABLE:
var $nameInput = $form.find("#result_name");
var nameValid = textValidator(ev, $nameInput, TextLimitEnum.OPTIONAL,
TextLimitEnum.NAME_MAX_LENGTH);
var nameValid = textValidator(ev, $nameInput, 0, NAME_MAX_LENGTH);
break;
case ResultTypeEnum.TEXT:
var $nameInput = $form.find("#result_name");
var nameValid = textValidator(ev, $nameInput, TextLimitEnum.OPTIONAL,
TextLimitEnum.NAME_MAX_LENGTH);
var nameValid = textValidator(ev, $nameInput, 0, NAME_MAX_LENGTH);
var $textInput = $form.find("#result_result_text_attributes_text");
textValidator(ev, $textInput, TextLimitEnum.REQUIRED,
TextLimitEnum.TEXT_MAX_LENGTH);
textValidator(ev, $textInput, 1, TEXT_MAX_LENGTH);
break;
case ResultTypeEnum.COMMENT:
var $commentInput = $form.find("#comment_message");
var commentValid = textValidator(ev, $commentInput, TextLimitEnum.REQUIRED,
TextLimitEnum.TEXT_MAX_LENGTH);
var commentValid = textValidator(ev, $commentInput, 1, TEXT_MAX_LENGTH);
break;
}
}

View file

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

View file

@ -497,7 +497,7 @@ function importProtocolFromFile(
$.extend(data_json, params);
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
resultCallback({ name: protocolJson["name"], new_name: null, status: "size_too_large" });
return;

View file

@ -493,15 +493,13 @@ function processStep(ev, editMode, forS3) {
$form.removeBlankFileForms();
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 checklistsValid = checklistsValidator(ev, $checklists, editMode);
var $nameInput = $form.find("#step_name");
var nameValid = textValidator(ev, $nameInput, TextLimitEnum.REQUIRED,
TextLimitEnum.NAME_MAX_LENGTH);
var nameValid = textValidator(ev, $nameInput, 1, NAME_MAX_LENGTH);
var $descrTextarea = $form.find("#step_description");
var descriptionValid = textValidator(ev, $descrTextarea,
TextLimitEnum.OPTIONAL, TextLimitEnum.TEXT_MAX_LENGTH);
var descriptionValid = textValidator(ev, $descrTextarea, 0, TEXT_MAX_LENGTH);
if (filesValid && checklistsValid && nameValid && descriptionValid) {
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
* error that can happen/show.
*/
function textValidator(ev, textInput, textLimitEnumMin, textLimitEnumMax, clearErr) {
function textValidator(ev, textInput, textLimitMin, textLimitMax, clearErr) {
clearErr = _.isUndefined(clearErr) ? false : clearErr;
var text = $(textInput).val().trim();
$(textInput).val(text);
var nameTooShort = text.length < textLimitEnumMin;
var nameTooLong = text.length > textLimitEnumMax;
var nameTooShort = text.length < textLimitMin;
var nameTooLong = text.length > textLimitMax;
var errMsg;
if (nameTooShort) {
if (textLimitEnumMin === TextLimitEnum.REQUIRED) {
if (textLimitMin === 1) {
errMsg = I18n.t("general.text.not_blank");
} 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) {
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);
@ -71,7 +63,8 @@ function checklistsValidator(ev, checklists, editMode) {
if ($item.css('display') != 'none') {
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) {
noErrors = false;
}
@ -86,9 +79,9 @@ function checklistsValidator(ev, checklists, editMode) {
var $checklistInput = $checklist.find(".checklist_name");
// In edit mode, checklist's name can't be blank if any items present
var allowBlankChklstName = !(anyChecklistItemFilled || editMode);
var textLimitEnumMin = allowBlankChklstName ? TextLimitEnum.OPTIONAL : TextLimitEnum.REQUIRED;
var textLimitMin = allowBlankChklstName ? 0 : 1;
var checklistNameValid = textValidator(ev, $checklistInput,
textLimitEnumMin, TextLimitEnum.TEXT_MAX_LENGTH);
textLimitMin, TEXT_MAX_LENGTH);
if (!checklistNameValid) {
noErrors = false;
} else if (allowBlankChklstName) {
@ -101,9 +94,9 @@ function checklistsValidator(ev, checklists, editMode) {
return noErrors;
}
var FileTypeSizeEnum = Object.freeze({
FILE: "<%= Constants::FILE_MAX_SIZE_MB.megabytes %>",
AVATAR: "<%= Constants::AVATAR_MAX_SIZE_MB.megabytes %>"
var FileTypeEnum = Object.freeze({
FILE: 0,
AVATAR: 1
});
function filesValidator(ev, fileInputs, fileTypeEnum, canBeEmpty) {
@ -138,9 +131,9 @@ function filesSizeValidator(ev, fileInputs, fileTypeEnum) {
}
if (file.size > fileTypeEnum) {
switch (fileTypeEnum) {
case FileTypeSizeEnum.FILE:
case FileTypeEnum.FILE:
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();
}
}

View file

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