trAvis - MANAGER
Edit File: toolbar_ui.js
"use strict"; /** * Encode HTML text to safe HTML entities * * Replace all characters in the given range (unicode 00A0 - 9999, as well as ampersand, greater & less than) * with their html entity equivalents, which is simply &#nnn; where nnn is the unicode value we get from charCodeAt * * @param rawStr * @returns {*} */ function wpbc_get_safe_html_text( rawStr ){ var encodedStr = rawStr.replace( /[\u00A0-\u9999<>\&]/g, function ( i ){ return '&#' + i.charCodeAt( 0 ) + ';'; } ); return encodedStr; } /** * Change Value and Title of dropdown after clicking on Apply button * * @param params Example: { 'dropdown_id': 'wh_booking_date', 'dropdown_radio_name': 'ui_wh_booking_date_radio' } */ function wpbc_ui_dropdown_apply_click( params ){ // Get input values of all elements in LI section, where RADIO was selected var filter_ui_dates_arr = jQuery( 'input[name="' + params[ 'dropdown_radio_name' ] + '"]:checked' ) .parents( 'li' ).find( ':input' ) .map( function (){ return wpbc_get_safe_html_text( jQuery( this ).val() ); } ).get(); if ( 0 !== filter_ui_dates_arr.length ){ // Continue only if radio button was selected, and we are having value // Get titles of all elements in LI section, where RADIO was selected var filter_ui_titles_arr = jQuery( 'input[name="' + params[ 'dropdown_radio_name' ] + '"]:checked' ) .parents( 'li' ).find( ':input' ) .map( function (){ if ( 'text' == jQuery( this ).prop( 'type' ) ){ return jQuery( this ).val(); } if ( ( 'selectbox-one' == jQuery( this ).prop( 'type' ) ) || ( 'select-one' == jQuery( this ).prop( 'type' ) ) ){ return jQuery( this ).find( ':selected' ).text(); } if ( ( 'radio' == jQuery( this ).prop( 'type' ) ) || ( 'checkbox' == jQuery( this ).prop( 'type' ) ) ){ var input_selected = jQuery( this ).filter(':checked').next( '.wpbc_ui_control_label' ).html(); if ( undefined == input_selected ) { input_selected = jQuery( this ).filter(':checked').prev( '.wpbc_ui_control_label' ).html(); } return ( undefined !== input_selected ) ? input_selected : ''; } return jQuery( this ).val(); } ).get(); // Update Value to dropdown input hidden elements. Such value stringify. jQuery( '#' + params[ 'dropdown_id' ] ).val( JSON.stringify( filter_ui_dates_arr ) ); // Generate change action, for ability to send Ajax request jQuery( '#' + params[ 'dropdown_id' ] ).trigger( 'change' ); // Get Label of selected Radio button var filter_ui_dates_title = jQuery( 'input[name="' + params[ 'dropdown_radio_name' ] + '"]:checked' ).next( '.wpbc_ui_control_label' ).html() + ': '; // Remove selected value of radio button from beginning, we will use Label title instead filter_ui_titles_arr.shift(); // Update Title in dropdown var encoded_html_text = wpbc_get_safe_html_text( filter_ui_dates_title + filter_ui_titles_arr.join( ' - ' ) ); jQuery( '#' + params[ 'dropdown_id' ] + '_selector .wpbc_selected_in_dropdown' ).html( encoded_html_text ); } jQuery( '#' + params[ 'dropdown_id' ] + '_container' ).hide(); } /** * Close dropdown after clicking on Close button * * @param dropdown_id ID of dropdown */ function wpbc_ui_dropdown_close_click( dropdown_id ){ jQuery( '#' + dropdown_id + '_container' ).hide(); } /** * Simple option click on dropdown * * @param params Example: { 'dropdown_id': 'wh_booking_date', 'is_this_simple_list': true, 'value': '5', '_this': this } */ function wpbc_ui_dropdown_simple_click( params ){ jQuery( '#' + params[ 'dropdown_id' ] + '_selector .wpbc_selected_in_dropdown' ).html( jQuery( params[ '_this' ] ).html() ); jQuery( '#' + params[ 'dropdown_id' ] ).val( JSON.stringify( [params[ 'value' ]] ) ); jQuery( '#' + params[ 'dropdown_id' ] + '_container li input[type=checkbox],' + '#' + params[ 'dropdown_id' ] + '_container li input[type=radio]' ).prop( 'checked', false ); jQuery( '#' + params[ 'dropdown_id' ] ).trigger( 'change' ); if ( ! params[ 'is_this_simple_list' ] ){ jQuery( '#' + params[ 'dropdown_id' ] + '_container' ).hide(); } }