/
home
/
infinitibizsol
/
ridecashout.com
/
wp-content
/
themes
/
cardealer
/
js
/
frontend
/
File Upload :
llllll
Current File: /home/infinitibizsol/ridecashout.com/wp-content/themes/cardealer/js/frontend/compare.js
/*================================================ [ Table of contents ] ================================================ :: Document ready functions :: Compare :: Code To Add Car in Compare ====================================== [ End table content ] ======================================*/ ( function( $ ) { "use strict"; // Check element exists. $.fn.exists = function () { return this.length > 0; }; // Parent jQuery. var parentjQuery = window.parent.jQuery.noConflict(); function is_iframe() { return window.self !== window.top; } function cardealer_trigger( event, data ) { if ( data === undefined || data === null ) { $( document ).trigger( event ); } else { $( document ).trigger( event, data ); } if ( is_iframe() ) { if ( data === undefined || data === null ) { parentjQuery( 'body' ).trigger( event ); $( document ).trigger( event ); } else { parentjQuery( 'body' ).trigger( event, data ); } } } $(document).ready(function($) { // Trigger add to cart on Buy Online btn. $( document ).on( 'click', '.vehicle-button-link.car-buy-online-btn.car-buy-online-btn-iframe', function (e) { e.preventDefault(e); var el = $(this); if ( is_iframe() ) { parentjQuery( 'body' ).trigger( 'cardealer-vehicle-button-buy-online', el ); } else { $( document ).trigger( 'cardealer-vehicle-button-buy-online', el ); } }); // Open Request price link from popup. $( document ).on( 'click', '.cardealer-lead-form-req-price-btn.cardealer-lead-form-req-price-btn-iframe', function (e) { e.preventDefault(e); top.location.href = $(this).attr('href'); }); $( document ).on( 'click', '.cd-vehicle-compare-wrapper .cd-vehicle-compare table td .compare-image-link, .cd-vehicle-compare-wrapper .cd-vehicle-compare table th .compare-title-link', function (e) { e.preventDefault(e); top.location.href = $(this).attr('href'); }); // Compare variables. var compare_menu_item = $('.menu-item.menu-item-compare'), compare_wrapper = $('.cd-vehicle-compare-wrapper'), compare_div = compare_wrapper.find('.cd-vehicle-compare'), compare_table = compare_wrapper.find('.cd-vehicle-compare-table'), compare_vehicle_ids = new Array(), compare_vehicle_ids_count = 0, compare_modal_el = $( '#cd-vehicle-compare-modal' ), compare_modal_body = compare_modal_el.find('.modal-body'), compare_content = compare_modal_el.find('.cd-vehicle-compare-content'), compare_loader = compare_modal_el.find('.cd-vehicle-compare-loader'), compare_modal_iframe; // Initially actions. compare_menu_item.hide(); // Hide compare menu item if visble. update_vehicle_compare_data(); // Update vehicle compare data. update_compare_menu(); // Update compare menu when update_compare_menu event is triggerred. $( document ).on( 'update_compare_menu', function() { update_compare_menu(); }); // Update vehicle data update_vehicle_compare_data event is triggerred. $( document ).on( 'update_vehicle_compare_data', function() { update_vehicle_compare_data(); }); function update_vehicle_compare_data() { compare_vehicle_ids = get_compare_vehicle_ids(); compare_vehicle_ids_count = get_compare_vehicle_ids_count; compare_table.attr( 'data-vehicle_count', compare_vehicle_ids_count ); generate_compare_url( compare_vehicle_ids ); } // Update compare based on number of vehicle IDs in the cookie. function update_compare_menu() { if ( null !== cardealer_compare_obj.compare_url ) { compare_vehicle_ids_count = get_compare_vehicle_ids_count(); if ( compare_vehicle_ids_count > 0 ) { compare_menu_item.show(); $( '.menu-item .compare-details.count' ).html( compare_vehicle_ids.length ); } else { compare_menu_item.hide(); } } else { compare_menu_item.hide(); } } function get_compare_vehicle_ids() { var compare_vehicle_ids_cookie = cookies.get( 'compare_ids' ); return ( compare_vehicle_ids_cookie === null || compare_vehicle_ids_cookie === '' ) ? new Array() : compare_vehicle_ids_cookie; } function get_compare_vehicle_ids_count() { return ( compare_vehicle_ids === null || compare_vehicle_ids === '' ) ? 0 : compare_vehicle_ids.length; } // Action when compare menu or compare icon on vehicles is clicked. $( document ).on( 'click', '.compare_pgs, .menu-item-compare', function() { // $( document ).trigger( 'update_vehicle_compare_data' ); // Update Car IDs. cardealer_trigger( 'update_vehicle_compare_data' ); // Update Car IDs. var car_list_click = 0; if ( $( this ).hasClass( 'compare_pgs' ) ) { var car_id = parseInt( $( this ).data('id') ); car_list_click = 1; $( this ).find('i').removeClass('fa-exchange-alt'); $( this ).find('i').addClass('fa-check'); compare_vehicle_ids_count = get_compare_vehicle_ids_count(); if ( compare_vehicle_ids_count === 0 // No IDs found. || ( compare_vehicle_ids_count > 0 && $.inArray( car_id, compare_vehicle_ids ) === -1 ) // IDs found, ut selected ID not found. ) { compare_vehicle_ids.push( car_id ); } cookies.del( 'compare_ids' ); cookies.set( 'compare_ids', JSON.stringify( compare_vehicle_ids ) ); // $( document ).trigger( 'update_vehicle_compare_data' ); // $( document ).trigger( 'update_compare_menu' ); cardealer_trigger( 'update_vehicle_compare_data' ) cardealer_trigger( 'update_compare_menu' ) } generate_compare_url( compare_vehicle_ids ); // Generate URL. // Set iframe. compare_modal_iframe = $( '<iframe>' ); compare_modal_iframe.css( 'opacity', '0' ); compare_modal_iframe.css( 'width', '100%' ); compare_modal_iframe.css( 'height', '100%' ); compare_modal_iframe.attr( 'class', 'cd-vehicle-compare-iframe' ); compare_modal_iframe.attr( 'frameborder', '0' ); compare_modal_iframe.attr( 'src', cardealer_compare_obj.compare_url ); compare_modal_iframe.on('load', function () { compare_loader.css( 'display', 'none' ); // Hide the loader. compare_modal_iframe.css( 'opacity', '1' ); // Show the iframe. }); compare_content.html( compare_modal_iframe ); compare_modal_iframe.on( 'reload', function(){ alert('loading iframe'); this.contentWindow.location.reload(); } ); if ( cardealer_compare_obj.compare_type == 'template' ) { window.location.href = cardealer_compare_obj.compare_url; } else { compare_modal_el.modal('show'); } }); compare_modal_el.on( 'shown.bs.modal', function(e){ compare_loader.css( 'display', 'block' ); }); compare_modal_el.on( 'hide.bs.modal', function(e){ }); compare_modal_el.on( 'hidden.bs.modal', function(e){ compare_modal_el.find('.cd-vehicle-compare-iframe').remove(); compare_loader.css( 'display', 'block' ); }); jQuery(document).on('hidden.bs.modal', '#cd-vehicle-compare-modal',function(e){ $('.compare_pgs i.fa-spinner').parent().addClass('compared_pgs'); }); /********************************* :: Compare Vehicle - Legacy **********************************/ // Remove item from Compare $( document ).on('click', '.vehicle-column .compare-remove-column', function() { var car_id = $(this).data('car_id'), column_class = $(this).data('column_class'), column = $(column_class); // $( document ).trigger( 'update_vehicle_compare_data' ); cardealer_trigger( 'update_vehicle_compare_data' ); // Remove item from cookie. column.remove(); // remove_from_array( compare_vehicle_ids, car_id ); cardealer_trigger( 'remove_compare_vehicle_ids', car_id ); cookies.del( 'compare_ids' ); cookies.set( 'compare_ids', JSON.stringify( compare_vehicle_ids ) ); // $( document ).trigger( 'update_vehicle_compare_data' ); cardealer_trigger( 'update_vehicle_compare_data' ); // $( document ).trigger( 'update_compare_menu' ); cardealer_trigger( 'update_compare_menu' ); generate_compare_url( compare_vehicle_ids ); window.history.replaceState( {}, "Page", cardealer_compare_obj.compare_url ); }); if ( $( '.cd-compare-select-wrapper' ).exists() ) { $('.cd-compare-select-wrapper').each(function() { var compare_select_wrapper = $(this ), compare_select_attr = compare_select_wrapper.find('.cd-compare-select.cd-compare-select-attr'), compare_select_cntr_attr = compare_select_wrapper.find('.cd-compare-select-field-container-attr'), compare_select_vehicle = compare_select_wrapper.find('.cd-compare-select.cd-compare-select-vehicle'), compare_select_cntr_vehicle = compare_select_wrapper.find('.cd-compare-select-field-container-vehicle'); var compare_select_attr_select2 = compare_select_attr.select2({ id: '-1', // the value of the option allowClear: true, dropdownCssClass: 'cd-compare-select-attr-dropdown', dropdownParent: compare_select_cntr_attr, }); var compare_select_vehicle_select2 = compare_select_vehicle.select2({ id: '-1', // the value of the option allowClear: true, dropdownCssClass: 'cd-compare-select-vehicle-dropdown', dropdownParent: compare_select_cntr_vehicle, }); $( compare_select_attr ).on('change', function() { var el = this, $el = $( this ), field_attr = $( this ).data('field_attr'), field_attr_val = $el.val(); $.ajax({ url: cardealer_compare_obj.ajaxurl, type: 'post', data:{ action : 'cardealer_get_compare_cars', compare_nonce : cardealer_compare_obj.compare_nonce, field_attr : field_attr, field_attr_val : $(this).val(), ppp : cardealer_compare_obj.select_vehicles_ppp, }, beforeSend: function(){ compare_select_vehicle_select2.data('select2').$container.addClass('cd-loading'); }, complete(xhr,status) { compare_select_vehicle_select2.data('select2').$container.removeClass('cd-loading'); }, success: function(response){ // Clear existing options. compare_select_vehicle.empty(); if ( response.hasOwnProperty('items') && response.items.length > 0 ) { var option = new Option( '', '' ); compare_select_vehicle.append(option); // Using forEach to iterate over the array of objects response.items.forEach(function(obj) { var option = new Option( obj.title, obj.id ); compare_select_vehicle.append(option); }); } // Trigger change event to update Select2. // compare_select_vehicle.trigger('change'); }, error: function(error){ alert( cardealer_compare_obj.compare_load_error_msg ); }, }); }); $( compare_select_vehicle ).on('change', function() { var car_id = parseInt( $(this).val() ); // $( document ).trigger( 'update_vehicle_compare_data' ); cardealer_trigger( 'update_vehicle_compare_data' ); // add_compare_vehicle_ids( compare_vehicle_ids, car_id ); // $(document).trigger( 'add_compare_vehicle_ids', car_id ); // if ( is_iframe() ) { // parentjQuery('body').trigger( 'add_compare_vehicle_ids', car_id ); // } cardealer_trigger( 'add_compare_vehicle_ids', car_id ); cookies.del( 'compare_ids' ); cookies.set( 'compare_ids', JSON.stringify( compare_vehicle_ids ) ); // $( document ).trigger( 'update_vehicle_compare_data' ); cardealer_trigger( 'update_vehicle_compare_data' ); // $( document ).trigger( 'update_compare_menu' ); // if ( is_iframe() ) { // parentjQuery('body').trigger('update_compare_menu'); // } cardealer_trigger( 'update_compare_menu' ); generate_compare_url( compare_vehicle_ids ); // window.history.replaceState( {}, "Page", cardealer_compare_obj.compare_url ); $('body').addClass('cd-vehicle-compare-loading'); window.location.href = cardealer_compare_obj.compare_url; }); }); } function searchNumberInArray( value ) { for ( var i = 0; i < compare_vehicle_ids.length; i++ ) { // Check if the element is a number. if ( typeof compare_vehicle_ids[i] === 'number' && compare_vehicle_ids[i] === value ) { return i; } // If the element is a string, try parsing it to a number if (typeof compare_vehicle_ids[i] === 'string') { var parsedNumber = parseInt(compare_vehicle_ids[i]); if (!isNaN(parsedNumber) && parsedNumber === value) { return i; } } } return false; } $( document ).on( 'remove_compare_vehicle_ids', function(event, data) { const index = searchNumberInArray( data ); if ( false !== index ) { compare_vehicle_ids.splice( index, 1 ); } } ); $( document ).on( 'add_compare_vehicle_ids', function(event, data) { var index = searchNumberInArray( data ); if ( ! index ) { compare_vehicle_ids.push( data ); $( document ).trigger( 'update_compare_menu' ); } } ); function generate_compare_url( car_ids ) { var compare_url = ''; if ( null !== cardealer_compare_obj.compare_url ) { var current_url = new URL( cardealer_compare_obj.compare_url ), new_current_url = cardealer_compare_obj.compare_url; // If your expected result is "http://example.com/?x=42&y=2" current_url.searchParams.set( 'car_ids', 'car_ids_placeholder' ); new_current_url = current_url.toString().replace( 'car_ids_placeholder', car_ids.join(',') ); cardealer_compare_obj.compare_url = new_current_url; compare_url = cardealer_compare_obj.compare_url; } return compare_url; } }); }( jQuery ) );
Copyright ©2k19 -
Hexid
|
Tex7ure