0.0.05 form poster
This commit is contained in:
77
static/v2/js/forms.js
Normal file
77
static/v2/js/forms.js
Normal file
@@ -0,0 +1,77 @@
|
||||
function chooseCheckbox(el) {
|
||||
if (!el) return;
|
||||
|
||||
let $parent = el.closest('.field_container');
|
||||
let $checkbox = $parent.querySelector('.checkbox')
|
||||
|
||||
$checkbox.classList.toggle("checked");
|
||||
}
|
||||
|
||||
function getFormData(form) {
|
||||
if (!form) return;
|
||||
let formData = new FormData();
|
||||
let default_element_types = ['input', 'textarea', 'date'];
|
||||
|
||||
let form_elements = getFormElements(form);
|
||||
if (!form_elements) return;
|
||||
|
||||
for (let el of form_elements) {
|
||||
let $parent = el.closest('.field_container');
|
||||
let field_type = ''
|
||||
if ($parent) field_type = $parent.dataset.type;
|
||||
let name = $parent ? $parent.dataset.name : '';
|
||||
if (!name) name = el.name
|
||||
if (!name) name = el.dataset.name;
|
||||
let value = el.value || ''
|
||||
|
||||
if (field_type) {
|
||||
if (default_element_types.indexOf(field_type) > -1) {
|
||||
formData.append(name, value);
|
||||
} else if ($parent && !($parent.dataset.type in default_element_types)) {
|
||||
formData = addCustomDataToFormData($parent, formData)
|
||||
}
|
||||
} else {
|
||||
formData.append(name, value);
|
||||
}
|
||||
}
|
||||
|
||||
return formData;
|
||||
}
|
||||
|
||||
function getFormElements(form) {
|
||||
let form_elements = form.querySelectorAll('.field_container');
|
||||
|
||||
return form_elements;
|
||||
}
|
||||
|
||||
function addCustomDataToFormData(el, formData) {
|
||||
let name = el.dataset.name;
|
||||
switch (el.dataset.type) {
|
||||
case 'checkbox':
|
||||
let $checkbox = el.querySelector('.checkbox');
|
||||
let c_value = $checkbox.classList.contains('checked');
|
||||
|
||||
formData.append(name, c_value);
|
||||
break;
|
||||
|
||||
case 'radio':
|
||||
let $radio = el.querySelector('.radio.checked');
|
||||
if (!$radio){
|
||||
formData.append(name, '');
|
||||
break;
|
||||
}
|
||||
|
||||
let r_value = $radio.closest(".cw_w_radio_inputs_radio_input").dataset.name;
|
||||
|
||||
formData.append(name, r_value);
|
||||
break;
|
||||
|
||||
case 'location':
|
||||
let $location = el.querySelector('input');
|
||||
let l_value = $location.dataset.id;
|
||||
|
||||
formData.append(name, l_value);
|
||||
break;
|
||||
}
|
||||
return formData;
|
||||
}
|
||||
19
static/v2/js/forms/f_make_poster_order.js
Normal file
19
static/v2/js/forms/f_make_poster_order.js
Normal file
@@ -0,0 +1,19 @@
|
||||
function makePosterOrder(form) {
|
||||
event.preventDefault()
|
||||
|
||||
let formData = getFormData(form);
|
||||
formData.append('owner_type', 'customer');
|
||||
|
||||
let request = new api({
|
||||
url: '/routes/create_or_change_route/',
|
||||
data: formData,
|
||||
data_type: 'formData',
|
||||
success: function (res) {
|
||||
|
||||
}, error: function (res) {
|
||||
|
||||
}
|
||||
})
|
||||
|
||||
request.ajaxRequest()
|
||||
}
|
||||
@@ -7,8 +7,11 @@ function chooseRadioInput(el, callback){
|
||||
$radios.forEach(radio => {
|
||||
radio.classList.remove('checked')
|
||||
})
|
||||
el.classList.toggle("checked");
|
||||
|
||||
let checked_state = el.classList.contains("checked");
|
||||
$parent = el.closest('.cw_w_radio_inputs_radio_input');
|
||||
let $radio = $parent.querySelector('.radio');
|
||||
$radio.classList.toggle("checked");
|
||||
|
||||
let checked_state = $radio.classList.contains("checked");
|
||||
if (callback) callback(checked_state)
|
||||
}
|
||||
Reference in New Issue
Block a user