add reset button

This commit is contained in:
Robert Resch 2020-12-16 16:11:57 +00:00
parent 876052da37
commit 1e2ac7dac9
No known key found for this signature in database
GPG Key ID: 5E3DFB30DC2833B6
5 changed files with 96 additions and 6 deletions

View File

@ -219,6 +219,19 @@ class UsersApiController extends BaseApiController
}
}
public function DeleteUserSetting(\Psr\Http\Message\ServerRequestInterface $request, \Psr\Http\Message\ResponseInterface $response, array $args)
{
try
{
$value = $this->getUsersService()->DeleteUserSetting(GROCY_USER_ID, $args['settingKey']);
return $this->EmptyApiResponse($response);
}
catch (\Exception $ex)
{
return $this->GenericErrorResponse($response, $ex->getMessage());
}
}
public function __construct(\DI\Container $container)
{
parent::__construct($container);

View File

@ -2017,3 +2017,9 @@ msgstr ""
msgid "Ingredient group"
msgstr ""
msgid "Reset"
msgstr ""
msgid "Are you sure, you want reset the table?"
msgstr ""

View File

@ -433,7 +433,7 @@ Grocy.FrontendHelpers.ShowGenericError = function(message, exception)
console.error(exception);
}
Grocy.FrontendHelpers.SaveUserSettings = function(settingsKey, value)
Grocy.FrontendHelpers.SaveUserSetting = function(settingsKey, value)
{
Grocy.UserSettings[settingsKey] = value;
@ -454,6 +454,25 @@ Grocy.FrontendHelpers.SaveUserSettings = function(settingsKey, value)
);
}
Grocy.FrontendHelpers.DeleteUserSetting = function(settingsKey)
{
delete Grocy.UserSettings[settingsKey];
Grocy.Api.Delete('user/settings/' + settingsKey, {},
function(result)
{
// Nothing to do...
},
function(xhr)
{
if (!xhr.statusText.isEmpty())
{
Grocy.FrontendHelpers.ShowGenericError('Error while deleting, please retry', xhr.response)
}
}
);
}
$(document).on("keyup paste change", "input, textarea", function()
{
$(this).closest("form").addClass("is-dirty");
@ -489,7 +508,7 @@ $(document).on("change", ".user-setting-control", function()
var value = element.val();
}
Grocy.FrontendHelpers.SaveUserSettings(settingKey, value);
Grocy.FrontendHelpers.SaveUserSetting(settingKey, value);
});
// Show file name Bootstrap custom file input
@ -718,8 +737,14 @@ $.extend(true, $.fn.dataTable.defaults, {
'stateSaveCallback': function(settings, data)
{
var settingKey = 'datatables_state_' + settings.sTableId;
var stateData = JSON.stringify(data);
Grocy.FrontendHelpers.SaveUserSettings(settingKey, stateData);
if ($.isEmptyObject(data))
{
Grocy.FrontendHelpers.DeleteUserSetting(settingKey);
} else
{
var stateData = JSON.stringify(data);
Grocy.FrontendHelpers.SaveUserSetting(settingKey, stateData);
}
},
'stateLoadCallback': function(settings, data)
{
@ -960,8 +985,48 @@ $(".change-table-columns-visibility-button").on("click", function(e)
size: 'small',
backdrop: true,
closeButton: false,
onEscape: true,
buttons: {
cancel: {
reset: {
label: __t('Reset'),
className: 'btn-danger responsive-button',
callback: function()
{
bootbox.confirm({
swapButtonOrder: true,
message: __t("Are you sure, you want reset the table?"),
buttons: {
confirm: {
label: 'Yes',
className: 'btn-danger'
},
cancel: {
label: 'No',
className: 'btn-primary'
}
},
callback: function(result)
{
if (result)
{
var dataTable = $(dataTableSelector).DataTable();
var tableId = dataTable.settings()[0].sTableId;
//Delete rowgroup settings
Grocy.FrontendHelpers.DeleteUserSetting('datatables_rowGroup_' + tableId);
//Delete state settings
dataTable.state.clear();
//Reload page as datatable is not reseting itself
location.reload();
}
bootbox.hideAll();
}
});
}
},
ok: {
label: __t('OK'),
className: 'btn-primary responsive-button',
callback: function()
@ -1019,7 +1084,7 @@ $(document).on("click", ".change-table-columns-rowgroup-toggle", function()
}
var settingKey = 'datatables_rowGroup_' + dataTable.settings()[0].sTableId;
Grocy.FrontendHelpers.SaveUserSettings(settingKey, JSON.stringify(rowGroup));
Grocy.FrontendHelpers.SaveUserSetting(settingKey, JSON.stringify(rowGroup));
dataTable.draw();
});

View File

@ -175,6 +175,7 @@ $app->group('/api', function (RouteCollectorProxy $group) {
$group->get('/user/settings', '\Grocy\Controllers\UsersApiController:GetUserSettings');
$group->get('/user/settings/{settingKey}', '\Grocy\Controllers\UsersApiController:GetUserSetting');
$group->put('/user/settings/{settingKey}', '\Grocy\Controllers\UsersApiController:SetUserSetting');
$group->delete('/user/settings/{settingKey}', '\Grocy\Controllers\UsersApiController:DeleteUserSetting');
// Stock
if (GROCY_FEATURE_FLAG_STOCK)

View File

@ -114,6 +114,11 @@ class UsersService extends BaseService
}
}
public function DeleteUserSetting($userId, $settingKey)
{
$this->getDatabase()->user_settings()->where('user_id = :1 AND key = :2', $userId, $settingKey)->delete();
}
private function UserExists($userId)
{
$userRow = $this->getDatabase()->users()->where('id = :1', $userId)->fetch();