From 8f3bba620cb63eb2a1ce877d49ec90c68d4558cd Mon Sep 17 00:00:00 2001 From: SBD Date: Wed, 15 Jan 2025 20:51:50 +0300 Subject: [PATCH] 0.0.34 forms --- .../templatetags/reference_data_tags.py | 2 +- static/v2/css/widgets/w_route_card.css | 64 ++++++++++++------- .../v2/icons/widgets/w_route_card/phone.svg | 3 + static/v2/js/forms/f_make_poster_order.js | 7 +- static/v2/js/widgets/w_daterangepicker.js | 8 ++- static/v2/js/widgets/w_radio_inputs.js | 4 +- static/v2/js/widgets/w_select_country.js | 12 ++++ .../cw_w_select_w_for_select.html | 2 +- templates/v2/forms/f_create_mover_route.html | 4 +- .../v2/widgets/w_customer_route_card.html | 5 +- 10 files changed, 76 insertions(+), 35 deletions(-) create mode 100644 static/v2/icons/widgets/w_route_card/phone.svg diff --git a/ReferenceDataApp/templatetags/reference_data_tags.py b/ReferenceDataApp/templatetags/reference_data_tags.py index 91f8722..73531f5 100644 --- a/ReferenceDataApp/templatetags/reference_data_tags.py +++ b/ReferenceDataApp/templatetags/reference_data_tags.py @@ -12,6 +12,6 @@ register = template.Library() @register.filter @stringfilter def get_cur_DT_by_tz(timezone, DT=None): - return get_cur_DT_by_timezone(timezone, DT) + return get_cur_DT_by_timezone(timezone, DT).strftime('%Y-%m-%d %H:%M:%S') diff --git a/static/v2/css/widgets/w_route_card.css b/static/v2/css/widgets/w_route_card.css index 09ddf8d..3510865 100644 --- a/static/v2/css/widgets/w_route_card.css +++ b/static/v2/css/widgets/w_route_card.css @@ -26,6 +26,7 @@ --route-btn-border-radius: 10px; --route-btn-padding: 7.5px 0; --route-btn-width: 171px; + --route-btn-height: 100%; --route-btn-bg: #FFFFFF; --route-btn-hover-bg: #FF613A; --route-btn-hover-text-color: #FFFFFF; @@ -213,36 +214,53 @@ align-items: center; gap: 20px; } - .route_btn{ - cursor: pointer; - &.solid{ - --route-btn-width: 222px; - --route-btn-padding: 12px 0; - --route-btn-bg: #FF613A; - --route-btn-title-color: #ffffff; - } - width: var(--route-btn-width); - border: var(--route-btn-border); - border-radius: var(--route-btn-border-radius); - padding: var(--route-btn-padding); - background: var(--route-btn-bg); - height: 100%; - text-align: center; - transition: 200ms all; + } + .route_btn{ + cursor: pointer; + &.solid{ + --route-btn-width: 222px; + --route-btn-padding: 12px 0; + --route-btn-bg: #FF613A; + --route-btn-title-color: #ffffff; + } + &.inactive{ + cursor: default; + --route-btn-title-color: #27242499; + --route-btn-border: 1.5px solid #FF613A99; + } + width: var(--route-btn-width); + border: var(--route-btn-border); + border-radius: var(--route-btn-border-radius); + padding: var(--route-btn-padding); + background: var(--route-btn-bg); + height: var(--route-btn-height); + text-align: center; + transition: 200ms all; + &:has(img){ + display: flex; + gap: 5px; + align-items: center; + justify-content: center; + text-align: unset; + } + &:not(&.inactive){ &:hover{ background: var(--route-btn-hover-bg); .route_btn_title{color: var(--route-btn-hover-text-color);} .route_btn_data{color: var(--route-btn-hover-text-color);} box-shadow: 0 4px 4px rgba(189, 104, 104, 0.25); } - .route_btn_title{ - color: var(--route-btn-title-color); - font-size: var(--medium-font-size); - } - .route_btn_data{ - font-size: var(--small-font-size); - color: var(--route-btn-text-data-color); + } + .route_btn_title{ + color: var(--route-btn-title-color); + font-size: var(--medium-font-size); + &.big{ + font-size: var(--big-font-size); } } + .route_btn_data{ + font-size: var(--small-font-size); + color: var(--route-btn-text-data-color); + } } } \ No newline at end of file diff --git a/static/v2/icons/widgets/w_route_card/phone.svg b/static/v2/icons/widgets/w_route_card/phone.svg new file mode 100644 index 0000000..e2e3735 --- /dev/null +++ b/static/v2/icons/widgets/w_route_card/phone.svg @@ -0,0 +1,3 @@ + + + diff --git a/static/v2/js/forms/f_make_poster_order.js b/static/v2/js/forms/f_make_poster_order.js index e0718d5..f0f2622 100644 --- a/static/v2/js/forms/f_make_poster_order.js +++ b/static/v2/js/forms/f_make_poster_order.js @@ -61,15 +61,18 @@ function updateCargoTypeInForm(el, type_transport='') { let cargo_types = res.cargo_types if (!cargo_types) return; - resetWRadioInputs('cargo_type'); let $widget = getWRadioInputsWidget('cargo_type'); + let $selected_value = $widget.querySelector(".radio.checked") + resetWRadioInputs('cargo_type'); for (let cargo_type of cargo_types) { let obj = { name: cargo_type[0], title: cargo_type[1], } + let selected = false; + if ($selected_value && $selected_value.closest(".cw_w_radio_inputs_radio_input").dataset.name === obj.name) selected = true; - let html = generateRadioInput(obj) + let html = generateRadioInput(obj, selected) if ($widget.lastElementChild){ $(html).insertAfter($($widget.lastElementChild)) diff --git a/static/v2/js/widgets/w_daterangepicker.js b/static/v2/js/widgets/w_daterangepicker.js index b3972a0..a657a80 100644 --- a/static/v2/js/widgets/w_daterangepicker.js +++ b/static/v2/js/widgets/w_daterangepicker.js @@ -35,15 +35,19 @@ function datarangepickerinitAll(){ }) } -function daterangepickerInit(el, callback) { +function daterangepickerInit(el, callback, date) { let $datarangepicker = el.querySelector('input') + let min_date = moment() + if (date){ + min_date = moment(date); + } $($datarangepicker).daterangepicker({ "autoapply": true, "linkedCalendars": false, "singleDatePicker": true, "timePicker": false, "timePicker24Hour": false, - "minDate": moment(), + "minDate": moment(date), "locale": setLocalSets(), }, function (start, end, label) { let $parent = el.closest('.w_daterangepicker') diff --git a/static/v2/js/widgets/w_radio_inputs.js b/static/v2/js/widgets/w_radio_inputs.js index 1e5e4f6..4adc449 100644 --- a/static/v2/js/widgets/w_radio_inputs.js +++ b/static/v2/js/widgets/w_radio_inputs.js @@ -19,10 +19,10 @@ function chooseRadioInput(el, callback){ if (callback) callback(el, el_name) } -function generateRadioInput(data){ +function generateRadioInput(data, selected){ let html = `
-
+
${data.title}
` diff --git a/static/v2/js/widgets/w_select_country.js b/static/v2/js/widgets/w_select_country.js index 1e86bd5..5861b9f 100644 --- a/static/v2/js/widgets/w_select_country.js +++ b/static/v2/js/widgets/w_select_country.js @@ -87,6 +87,7 @@ function selectCountry(el, callback) { id: el.dataset.id, country_code: el.dataset.country_code, flag: el.dataset.flag, + now: el.dataset.now } $flag.src = country_data.flag; @@ -96,10 +97,21 @@ function selectCountry(el, callback) { $input.dataset.name = country_data.full_name; $input.dataset.id = country_data.id; + connectCountryWDateRangePicker(el, country_data) closeSelectCountry(el); resetFieldError(el); } +function connectCountryWDateRangePicker (el, data) { + let $parent = el.closest(".field_container") + if (!$parent || !data || typeof daterangepickerInit === 'undefined') return; + + let datepicker_name = $parent.dataset.datepicker; + + let $datepicker = $(`.field_container[data-name="${datepicker_name}"]`)[0] + daterangepickerInit($datepicker, false, data.now) +} + function resetCountrySelect(el, callback) { let $parent = el.closest('.w_select_country'); if (!$parent) return; diff --git a/templates/v2/content_widgets/cw_w_select_w_for_select.html b/templates/v2/content_widgets/cw_w_select_w_for_select.html index 09c630e..eee1577 100644 --- a/templates/v2/content_widgets/cw_w_select_w_for_select.html +++ b/templates/v2/content_widgets/cw_w_select_w_for_select.html @@ -2,7 +2,7 @@ {% load i18n %} {% load reference_data_tags %} -
+
{{ country__short_code }}
diff --git a/templates/v2/forms/f_create_mover_route.html b/templates/v2/forms/f_create_mover_route.html index d29abca..57f54f1 100644 --- a/templates/v2/forms/f_create_mover_route.html +++ b/templates/v2/forms/f_create_mover_route.html @@ -14,12 +14,12 @@ {% trans "Укажите город" as placeholder_for_city %}
-
+
{% include 'v2/widgets/w_select_country.html' with name='from_city' placeholder=placeholder_for_city initial=form.initial.from_city %} {% if form.errors.from_city %}
{{ form.errors.from_city.0 }}
{% endif %}
-
+
{% include 'v2/widgets/w_select_country.html' with name='to_city' placeholder=placeholder_for_city initial=form.initial.to_city %} {% if form.errors.to_city %}
{{ form.errors.to_city.0 }}
{% endif %} diff --git a/templates/v2/widgets/w_customer_route_card.html b/templates/v2/widgets/w_customer_route_card.html index 047085e..a2274cf 100644 --- a/templates/v2/widgets/w_customer_route_card.html +++ b/templates/v2/widgets/w_customer_route_card.html @@ -12,8 +12,9 @@
Нужен перевозчик
Тип посылки:
Документы
-
- +
+ +
+ 6 (666) 666-66-66