diff --git a/static/v2/js/blocks/b_search_routes.js b/static/v2/js/blocks/b_search_routes.js index 8c59787..f2e2ab5 100644 --- a/static/v2/js/blocks/b_search_routes.js +++ b/static/v2/js/blocks/b_search_routes.js @@ -7,6 +7,9 @@ function searchRoutes (form=undefined) { formData = getFormData($filter_form, formData); formData.append('owner_type', 'mover'); + let query = formDataToQueryString(formData, [$filter_form, $search_form]); + query+='owner_type=mover' + window.history.pushState(null, null, `?${query}`); let request = new api({ url: '/routes/find_routes/', data: formData, diff --git a/static/v2/js/forms.js b/static/v2/js/forms.js index d167bea..9b37583 100644 --- a/static/v2/js/forms.js +++ b/static/v2/js/forms.js @@ -206,7 +206,81 @@ function checkFieldEmpty($field) { let $date = $field.querySelector('input'); if ($date.value) empty = false; + break; + + case 'select': + let $select = el.querySelector('select'); + if (!$select) return; + if ($select.value) empty = false; + break; } return empty; -} \ No newline at end of file +} + +function getFormDataElValue($field) { + if (!$field) return; + + switch ($field.dataset.type) { + case 'checkbox': + let $checkbox = $field.querySelector('.checkbox'); + let c_value = $checkbox.classList.contains('checked'); + return c_value; + + case 'radio': + let $radio = $field.querySelector('.radio.checked'); + if ($radio){ + $radio = $radio.closest('.cw_w_radio_inputs_radio_input').dataset.name; + return $radio + } else { + return `` + } + + + case 'location': + let $location = $field.querySelector('input'); + let l_value = $location.dataset.id; + + return l_value; + + case 'input': + let $input = $field.querySelector('input'); + + return $input.value; + + case 'textarea': + let $textarea = $field.querySelector('textarea'); + return $textarea.value; + + case 'date': + let $date = $field.querySelector('input'); + return $date.value; + + case 'select': + let $select = $field.querySelector('select'); + if (!$select) return; + + return $select.value; + } +} + +function formDataToQueryString (formData, forms) { + let str = `` + formData.forEach((index, name) => { + let el = null; + for (let i = 0; i < forms.length; i++) { + let _el = forms[i].querySelector(`[data-name="${name}"]`) + if (_el){ + el = _el; + i = forms.length; + } + } + + if (!el) return; + let value = getFormDataElValue(el); + str+=`${name}=${value}&`; + }) + + return str; +} +