File: /var/www/vhost/disk-apps/demo-telemedicina.teky.com.co/public/js/clinic_document/specific_data.js
$(document).ready(function(){
$('.select2').select2();
});
function getValuesSpecificData(){
let formControls = JSON.parse( window.atob(window.__DYNAMIC_FORM) );
let data = [];
let resultValidation = validateInputRules(formControls);
if(!resultValidation.isValid){
return resultValidation;
}
for(let i = 0; i < formControls.fields.length; i++){
let name_control = formControls.fields[i].name_control;
let field_id = formControls.fields[i].id;
switch (formControls.fields[i].field_input.id) {
case 1: // Select
case 3: // Date
case 4: // Datetime
case 5: // Email
case 6: // Number
case 7: // Text
case 8: // Time
case 9: // URL
case 11: // Textarea
data.push({
is_multiple: formControls.fields[i].multiple,
field_id: field_id,
value: $(`#${name_control}`).val()
});
break;
case 2: // Checkbox
case 10: // Toggle
data.push({
is_multiple: formControls.fields[i].multiple,
field_id: field_id,
value: ($(`#${name_control}`).is(':checked') ? true : false)
});
break;
default:
break;
}
}
return data;
}
function validateInputRules(formControls){
let returnMessage = {
isValid: true,
messages: []
};
for(let i = 0; i < formControls.fields.length; i++){
let currentField = formControls.fields[i];
let name_control = currentField.name_control;
let currentValue = $(`#${name_control}`).val();
if(currentField.required == 1){
if(!currentValue){
returnMessage.isValid = false;
returnMessage.messages.push(`El valor para el campo '${currentField.name}' es obligatorio`);
continue;
}
}
if(currentField.minlength){
if(currentValue.length < currentField.minlength){
returnMessage.isValid = false;
returnMessage.messages.push(`El valor de '${currentField.name}', debe ser mínimo de ${currentField.minlength} caracteres.` );
}
}
if(currentField.maxlength){
if(currentValue.length > currentField.maxlength){
returnMessage.isValid = false;
returnMessage.messages.push(`El valor de '${currentField.name}', debe ser máximo de ${currentField.maxlength} caracteres.` );
}
}
if(currentField.min){
if(parseFloat(currentValue) < currentField.min){
returnMessage.isValid = false;
returnMessage.messages.push(`El valor de '${currentField.name}', debe ser minimo ${currentField.min}.` );
}
}
if(currentField.max){
if(parseFloat(currentValue) > currentField.max){
returnMessage.isValid = false;
returnMessage.messages.push(`El valor de '${currentField.name}', debe ser maximo ${currentField.max}.` );
}
}
}
return returnMessage;
}
function setValuesSpecificData(data){
for(let i = 0; i < data.header_value.header_value_details.length; i++){
let currentField = $(`#${data.header_value.header_value_details[i].field.name_control}`);
let currentValue = data.header_value.header_value_details[i].value;
switch (data.header_value.header_value_details[i].field.field_input_id) {
case 1: // Select
if(!currentValue){
currentField.val(null);
break;
}
if(data.header_value.header_value_details[i].field.multiple){
currentField.val(currentValue.split(","));
} else{
currentField.val(currentValue);
}
break;
case 3: // Date
case 4: // Datetime
case 5: // Email
case 6: // Number
case 7: // Text
case 8: // Time
case 9: // URL
case 11: // Textarea
if(!currentValue){
currentField.val(null);
break;
}
currentField.val(currentValue);
break;
case 2: // Checkbox
case 10: // Toggle
currentField.prop("checked", (currentValue == 1 ? true : false));
break;
default:
break;
}
}
}
function setFieldDatasource(data, i, currentField, currentValue){
let datasourceField = data.header_value.header_value_details[i].field;
if(datasourceField.field_datasource.type == 'hard'){ // For y agregar valores.
setHardDatasource(datasourceField.field_datasource, currentField, currentValue);
}else{
setAjaxDatasource(datasourceField.field_datasource, currentField, currentValue);
}
}
function setAjaxDatasource(datasourceField, currentField, currentValue){
$.ajax({
method: "GET" ,
url: `/datasources/${datasourceField.url}`,
success: function(res){
for(let i = 0; i < res.data.length; i++){
let value = res.data[i].name;
let id = res.data[i].id;
currentField.append(new Option(value, id));
}
currentField.val(currentValue.split(','));
}
})
}
function setHardDatasource(datasourceField, currentField, currentValue){
for(let i = 0; i < datasourceField.main_datasource.manual_datasources.length; i++){
let value = datasourceField.main_datasource.manual_datasources[i].value;
currentField.append(new Option(value, value));
}
currentField.val(currentValue);
}