57 lines
1.9 KiB
JavaScript
57 lines
1.9 KiB
JavaScript
/*
|
|
* This file is part of the Kimai time-tracking app.
|
|
*
|
|
* For the full copyright and license information, please view the LICENSE
|
|
* file that was distributed with this source code.
|
|
*/
|
|
|
|
/*!
|
|
* [KIMAI] KimaiForm: basic functions for all forms
|
|
*/
|
|
|
|
import KimaiPlugin from "../KimaiPlugin";
|
|
|
|
export default class KimaiForm extends KimaiPlugin {
|
|
|
|
getId() {
|
|
return 'form';
|
|
}
|
|
|
|
activateForm(formSelector, container) {
|
|
this.getContainer().getPlugin('date-range-picker').activateDateRangePicker(formSelector);
|
|
this.getContainer().getPlugin('date-time-picker').activateDateTimePicker(formSelector);
|
|
this.getContainer().getPlugin('date-picker').activateDatePicker(formSelector);
|
|
this.getContainer().getPlugin('autocomplete').activateAutocomplete(formSelector);
|
|
this.getContainer().getPlugin('form-select').activateSelectPicker(formSelector, container);
|
|
}
|
|
|
|
destroyForm(formSelector) {
|
|
this.getContainer().getPlugin('form-select').destroySelectPicker(formSelector);
|
|
this.getContainer().getPlugin('autocomplete').destroyAutocomplete(formSelector);
|
|
this.getContainer().getPlugin('date-picker').destroyDatePicker(formSelector);
|
|
this.getContainer().getPlugin('date-time-picker').destroyDateTimePicker(formSelector);
|
|
this.getContainer().getPlugin('date-range-picker').destroyDateRangePicker(formSelector);
|
|
}
|
|
|
|
/**
|
|
* @param {HTMLFormElement} form
|
|
* @param {Object} overwrites
|
|
* @returns {string}
|
|
*/
|
|
convertFormDataToQueryString(form, overwrites = {})
|
|
{
|
|
let serialized = [];
|
|
let data = new FormData(form);
|
|
|
|
for (const key in overwrites) {
|
|
data.set(key, overwrites[key]);
|
|
}
|
|
|
|
for (let row of data) {
|
|
serialized.push(encodeURIComponent(row[0]) + "=" + encodeURIComponent(row[1]));
|
|
}
|
|
|
|
return serialized.join('&');
|
|
}
|
|
}
|