mirror of
https://github.com/grocy/grocy.git
synced 2025-04-29 01:32:38 +00:00
151 lines
3.3 KiB
JavaScript
151 lines
3.3 KiB
JavaScript
Grocy.Components.UserfieldsForm = {};
|
|
|
|
Grocy.Components.UserfieldsForm.Save = function(success, error)
|
|
{
|
|
if (!$("#userfields-form").length)
|
|
{
|
|
if (success)
|
|
{
|
|
success();
|
|
}
|
|
|
|
return;
|
|
}
|
|
|
|
var jsonData = {};
|
|
|
|
$("#userfields-form .userfield-input").not("div").each(function()
|
|
{
|
|
var input = $(this);
|
|
var fieldName = input.attr("data-userfield-name");
|
|
var fieldValue = input.val();
|
|
|
|
if (input.attr("type") == "checkbox")
|
|
{
|
|
jsonData[fieldName] = "0";
|
|
if (input.is(":checked"))
|
|
{
|
|
jsonData[fieldName] = "1";
|
|
}
|
|
}
|
|
else if (input.attr("type") == "file")
|
|
{
|
|
var old_file = input.data('old-file')
|
|
if (old_file)
|
|
{
|
|
Grocy.Api.Delete('files/userfiles/' + old_file, null, null,
|
|
function(xhr)
|
|
{
|
|
Grocy.FrontendHelpers.ShowGenericError('Could not delete file', xhr);
|
|
});
|
|
jsonData[fieldName] = "";
|
|
}
|
|
if (input[0].files.length > 0)
|
|
{
|
|
// Files service requires an extension
|
|
var fileName = RandomString() + '.' + input[0].files[0].name.split('.').reverse()[0];
|
|
|
|
jsonData[fieldName] = btoa(fileName) + '_' + btoa(input[0].files[0].name);
|
|
Grocy.Api.UploadFile(input[0].files[0], 'userfiles', fileName,
|
|
function(result)
|
|
{
|
|
},
|
|
function(xhr)
|
|
{
|
|
Grocy.FrontendHelpers.ShowGenericError('Error while saving, probably this item already exists', xhr.response)
|
|
}
|
|
);
|
|
}
|
|
else
|
|
{
|
|
//jsonData[fieldName] = null;
|
|
}
|
|
}
|
|
else if ($(this).hasAttr("multiple"))
|
|
{
|
|
jsonData[fieldName] = $(this).val().join(",");
|
|
}
|
|
else
|
|
{
|
|
jsonData[fieldName] = fieldValue;
|
|
}
|
|
});
|
|
|
|
Grocy.Api.Put('userfields/' + $("#userfields-form").data("entity") + '/' + Grocy.EditObjectId, jsonData,
|
|
function(result)
|
|
{
|
|
if (success)
|
|
{
|
|
success();
|
|
}
|
|
},
|
|
function(xhr)
|
|
{
|
|
if (error)
|
|
{
|
|
error();
|
|
}
|
|
}
|
|
);
|
|
}
|
|
|
|
Grocy.Components.UserfieldsForm.Load = function()
|
|
{
|
|
if (!$("#userfields-form").length)
|
|
{
|
|
return;
|
|
}
|
|
|
|
Grocy.Api.Get('userfields/' + $("#userfields-form").data("entity") + '/' + Grocy.EditObjectId,
|
|
function(result)
|
|
{
|
|
$.each(result, function(key, value)
|
|
{
|
|
var input = $(".userfield-input[data-userfield-name='" + key + "']");
|
|
|
|
if (input.attr("type") == "checkbox" && value == 1)
|
|
{
|
|
input.prop("checked", true);
|
|
}
|
|
else if (input.hasAttr("multiple"))
|
|
{
|
|
input.val(value.split(","));
|
|
$(".selectpicker").selectpicker("render");
|
|
}
|
|
if (input.attr('type') == "file")
|
|
{
|
|
if (value != null && !value.isEmpty())
|
|
{
|
|
var file_name = atob(value.split('_')[1]);
|
|
var file_src = value.split('_')[0];
|
|
input.hide();
|
|
var file_info = input.siblings('.userfield-file');
|
|
file_info.removeClass('d-none');
|
|
file_info.find('a.userfield-current-file')
|
|
.attr('href', U('/files/userfiles/' + value))
|
|
.text(file_name);
|
|
file_info.find('img.userfield-current-file')
|
|
.attr('src', U('/files/userfiles/' + value + '?force_serve_as=picture&best_fit_width=250&best_fit_height=250'))
|
|
file_info.find('button.userfield-file-delete').click(
|
|
function()
|
|
{
|
|
file_info.addClass('d-none');
|
|
input.data('old-file', file_src);
|
|
input.show();
|
|
}
|
|
);
|
|
}
|
|
}
|
|
else
|
|
{
|
|
input.val(value);
|
|
}
|
|
});
|
|
},
|
|
function(xhr)
|
|
{
|
|
console.error(xhr);
|
|
}
|
|
);
|
|
}
|