app/assets/javascript/c80_estate/backend/admin/areas.js in c80_estate-0.1.0.9 vs app/assets/javascript/c80_estate/backend/admin/areas.js in c80_estate-0.1.0.10

- old
+ new

@@ -415,35 +415,196 @@ }); fLoadingShow(); }; +//var $slider_square; +//var $slider_price; + var fAreasIndex = function () { - //var $input_square_min = $('<input type="text" class="min_text_input"/>') - // .appendTo($("#q_item_prop_square_val_in").parent()); - // - //var $input_square_max = $('<input type="text" class="max_text_input"/>') - // .appendTo($("#q_item_prop_square_val_in").parent()); + var csss_input_square = '#q_item_prop_square_val_in'; + var csss_input_price = '#q_item_prop_price_val_in'; - // переведём scope надписи + var $original_input_square; + var $original_input_price; - var $li, $a, $a_span; + var square_min; + var square_max; + var price_min; + var price_max; - $li = $('li.scope.all'); - $a = $li.find(".table_tools_button"); - $a_span = $a.find('span'); - $a.html('Все <span class="count">' + $a_span.text() + '</span>'); + var $slider_square; + var $slider_price; - $li = $('li.scope.free'); - $a = $li.find(".table_tools_button"); - $a_span = $a.find('span'); - $a.html('Свободные <span class="count">' + $a_span.text() + '</span>'); + var _fInit = function () { - $li = $('li.scope.busy'); - $a = $li.find(".table_tools_button"); - $a_span = $a.find('span'); - $a.html('Занятые <span class="count">' + $a_span.text() + '</span>'); + $original_input_square = $(csss_input_square); + $original_input_price = $(csss_input_price); + + _fTranslateScopes(); + _fInitSliders(); + + // считываем get параметры + var rex_square = /item_prop_square_val_in\]=(\d{1,5}),(\d{1,5})/; + var rex_price = /item_prop_square_val_in\]=(\d{1,5}),(\d{1,5})/; + var url = unescape(window.location.href); + + var match_square = url.match(rex_square); + var match_price = url.match(rex_price); + + var min, max, p; + + if (match_square != null) { + min = Number(match_square[1]); + max = Number(match_square[2]); + if (min > max) { + p = min; + min = max; + max = p; + } + $slider_square.setValue([min, max]); + } + + if (match_price != null) { + min = Number(match_price[1]); + max = Number(match_price[2]); + if (min > max) { + p = min; + min = max; + max = p; + } + $slider_price.setValue([min, max]); + } + + //console.log("<_fMakeMinMaxInputs> square = " + param_item_prop_square_val_in + "; price = " + param_item_prop_price_val_in); + + // подставляем начальные значения + }; + + var _fTranslateScopes = function () { + // переведём scope надписи + + var $li, $a, $a_span; + + $li = $('li.scope.all'); + $a = $li.find(".table_tools_button"); + $a_span = $a.find('span'); + $a.html('Все <span class="count">' + $a_span.text() + '</span>'); + + $li = $('li.scope.free'); + $a = $li.find(".table_tools_button"); + $a_span = $a.find('span'); + $a.html('Свободные <span class="count">' + $a_span.text() + '</span>'); + + $li = $('li.scope.busy'); + $a = $li.find(".table_tools_button"); + $a_span = $a.find('span'); + $a.html('Занятые <span class="count">' + $a_span.text() + '</span>'); + }; + + var _fInitSliders = function () { + + //$slider_square = $original_input_square.bootstrapSlider(); + //$slider_price = $original_input_price.bootstrapSlider(); + $slider_square = new Slider(csss_input_square); + $slider_price = new Slider(csss_input_price); + + //console.log($original_input_square); + //console.log($original_input_price); + square_min = $original_input_square.data('slider-min'); + square_max = $original_input_square.data('slider-max'); + price_min = $original_input_price.data('slider-min'); + price_max = $original_input_price.data('slider-max'); + + _fMakeMinMaxInputs($original_input_square, $slider_square, [square_min,square_max] ); + _fMakeMinMaxInputs($original_input_price, $slider_price, [price_min, price_max]); + + }; + + var _fMakeMinMaxInputs = function ($input, $slider, minmax) { + //console.log("<func_normalize_val> minmax = " + minmax); + + // перед этим элементом вставим наши инпуты + var $trg = $input.parent().find('div.slider'); + + // пофиксим отступ для красоты + $input.parent().find('.label').css('margin-bottom','-5px'); + + // вставляемые инпуты + var $input_min = $('<input type="number" class="min_text_input" placeholder="от"/>'); + var $input_max = $('<input type="number" class="max_text_input" placeholder="до"/>'); + $trg.before($input_min); + $trg.before($input_max); + + /*взаимодействуя со слайдером - будут меняться значения в текстовых полях*/ + + var func_on_change_slider = function () { + //console.log("<func_on_change_slider> " + this.value); // #=> 12,333 + var va = this.value.split(','); + var min = va[0]; + var max = va[1]; + $input_min.val(min); + $input_max.val(max); + //$input_min.data('normalized-value',min); + //$input_max.data('normalized-value',max); + }; + $input.on('change', func_on_change_slider); + $input.change(); + + /*взаимодействуя с текстовыми полями - будет меняться слайдер*/ + + var func_normalize_val = function (val) { + //console.log("<func_normalize_val> val = " + val); + //console.log("<func_normalize_val> minmax[0] = " + minmax[0]); + //console.log("<func_normalize_val> minmax[1] = " + minmax[1]); + + var v = val; + if (v < $input.data('slider-min')) { + v = $input.data('slider-min'); + } + if (v > $input.data('slider-max')) { + v = $input.data('slider-max'); + } + return Number(v); + }; + + var func_invalidate_slider = function () { + + //$trg.bootstrapSlider('setValue',[ + // $input_min.data('normalized-value'), + // $input_max.data('normalized-value') + //]); + + var arr = [ + func_normalize_val($input_min.val()), + func_normalize_val($input_max.val()) + ]; + //console.log("<func_invalidate_slider> " + arr); + $slider.setValue(arr); + + }; + + var func_onblur_min = function () { + //console.log(this.value); + var v = func_normalize_val(this.value); + //$input_min.data('normalized-value',v); + func_invalidate_slider(); + }; + + var func_onblur_max = function () { + //console.log(this.value); + var v = func_normalize_val(this.value); + //$input_max.data('normalized-value',v); + func_invalidate_slider(); + }; + + $input_min.on('blur', func_onblur_min); + $input_max.on('blur', func_onblur_max); + + }; + + _fInit(); }; YOUR_APP.areas = { edit: fEdit, \ No newline at end of file