learndash-admin-binary-selector.min.js 14.2 KB
function learndash_binary_selector(e){var a=this;a.selector_div=e,a.selector_id=jQuery(a.selector_div).prop("id"),a.nonce=jQuery(a.selector_div).data("nonce"),a.selected_items={},a.selector_data_loaded=!1,a.selector_data=[],this.init=function(){a.get_selector_data(!0),a.get_selector_form_element(),a.update_legend(),a.init_actions(),a.init_pager(),a.init_search()},this.init_actions=function(){jQuery(".learndash-binary-selector-section-middle",a.selector_div).on("click","a.learndash-binary-selector-button-add",a.add_selected_items),jQuery(".learndash-binary-selector-section-middle",a.selector_div).on("click","a.learndash-binary-selector-button-remove",a.remove_selected_items)},this.init_pager=function(){jQuery("ul.learndash-binary-selector-pager",a.selector_div).length&&(jQuery("ul.learndash-binary-selector-pager",a.selector_div).each((function(e){var r=this;if(jQuery(r).hasClass("learndash-binary-selector-pager-left"))var t="left";else if(jQuery(r).hasClass("learndash-binary-selector-pager-right"))t="right";void 0!==t&&void 0!==a.selector_data[t]&&void 0!==a.selector_data[t].pager&&a.update_pager(r,a.selector_data[t].pager)})),jQuery(".learndash-binary-selector-section ul.learndash-binary-selector-pager a",a.selector_div).on("click",(function(e){e.preventDefault(),a.handle_pager(this)})))},this.init_search=function(){if(jQuery(".learndash-binary-selector-search",a.selector_div).length){var e,r={};jQuery(".learndash-binary-selector-search",a.selector_div).on("focus",(function(){var t=this,s=a.get_section_el(t);if(void 0!==s){var l=jQuery(a.selector_div).attr("id");if(void 0!==l){if(jQuery(t).hasClass("learndash-binary-selector-search-left"))var i="left";else{if(!jQuery(t).hasClass("learndash-binary-selector-search-right"))return;i="right"}r[i]={},r[i].query_data={},void 0!==a.selector_data[i]&&void 0!==a.selector_data.selector_class&&void 0!==a.selector_data.selector_nonce&&void 0!==a.selector_data.query_vars&&(r[i].query_data.query_vars=a.selector_data.query_vars,r[i].query_data.position=i,r[i].query_data.selector_class=a.selector_data.selector_class,r[i].query_data.selector_nonce=a.selector_data.selector_nonce,r[i].selector_html_id=l,r[i].query_data.selected_ids=a.get_selector_form_element(!0),r[i].current_value=jQuery(t).val(),""!=e&&clearInterval(e),e=setInterval((function(){if(r[i].current_value=jQuery(t).val(),""==r[i].current_value){if(r[i].query_data.query_vars.search!=r[i].current_value){r[i].query_data.query_vars.search=r[i].current_value,r[i].query_data.query_vars=a.selector_data.query_vars,r[i].query_data.query_vars.search="";var l={action:"learndash_binary_selector_pager",nonce:a.nonce,query_data:r[i].query_data};jQuery.ajax({type:"POST",url:ajaxurl,dataType:"json",cache:!1,data:l,error:function(e,a,r){},success:function(e){void 0!==e.html_options&&jQuery(".learndash-binary-selector-items",s).empty().append(e.html_options);var r=jQuery("ul.learndash-binary-selector-pager",s);void 0!==r&&(jQuery(r).show(),void 0!==e.pager&&(a.selector_data[i].pager=e.pager,a.update_pager(r,a.selector_data[i].pager),a.update_legend()))}})}}else{if(r[i].current_value.length>=3&&r[i].query_data.query_vars.search!=r[i].current_value){r[i].query_data.query_vars.search=r[i].current_value,r[i].query_data.query_vars.paged=1;l={action:"learndash_binary_selector_pager",nonce:a.nonce,query_data:r[i].query_data};jQuery.ajax({type:"POST",url:ajaxurl,dataType:"json",cache:!1,data:l,error:function(e,a,r){},success:function(e){if(void 0!==e.html_options?jQuery(".learndash-binary-selector-items",s).empty().append(e.html_options):jQuery(".learndash-binary-selector-items",s).empty().append(""),void 0!==e.pager){void 0!==(r=jQuery(".learndash-binary-selector-pager",s))&&(jQuery(r).show(),a.selector_data[i].pager=e.pager,a.update_pager(r,e.pager),a.update_legend())}else{var r=jQuery(".learndash-binary-selector-pager",s);jQuery(r).hide()}}})}jQuery(".learndash-binary-selector-search",a.section_el).is(":focus")||clearInterval(e)}}),200))}}}))}},this.update_legend=function(){var e=jQuery("select.learndash-binary-selector-items-left option",a.selector_div).length;jQuery(".learndash-binary-selector-legend-left span.items-total-count",a.selector_div).html(e);e=jQuery("select.learndash-binary-selector-items-right option",a.selector_div).length;jQuery(".learndash-binary-selector-legend-right span.items-total-count",a.selector_div).html(e)},this.handle_pager=function(e){var r=a.get_section_el(e);if(void 0!==r){var t=jQuery(a.selector_div).attr("id");if(void 0!==t){var s=jQuery(e).parents("ul.learndash-binary-selector-pager");if(void 0!==s){var l={};if(void 0!==a.selector_data.query_vars&&(l.query_vars=a.selector_data.query_vars,void 0!==a.selector_data.selector_class)){if(l.selector_class=a.selector_data.selector_class,l.selector_nonce=a.selector_data.selector_nonce,l.selector_html_id=t,jQuery(s).hasClass("learndash-binary-selector-pager-left"))var i="left";else if(jQuery(s).hasClass("learndash-binary-selector-pager-right"))i="right";if(void 0!==i&&(l.position=i,void 0!==a.selector_data[i]&&void 0!==a.selector_data[i].pager)){var n=a.selector_data[i].pager;if(jQuery(e).hasClass("learndash-binary-selector-pager-prev")){if(1==n.current_page)return;l.query_vars.paged=parseInt(n.current_page)-1}else if(jQuery(e).hasClass("learndash-binary-selector-pager-next")){if(parseInt(n.current_page)==parseInt(n.total_pages))return;l.query_vars.paged=parseInt(n.current_page)+1}l.selected_ids=a.get_selector_form_element(!0);var o={action:"learndash_binary_selector_pager",nonce:a.nonce,query_data:l};jQuery.ajax({type:"POST",url:ajaxurl,dataType:"json",cache:!1,data:o,error:function(e,a,r){},success:function(e){void 0!==e.html_options&&jQuery(".learndash-binary-selector-items",r).empty().append(e.html_options),void 0!==e["query-vars"]&&(a.selector_data[i]["query-vars"]=e["query-vars"]),void 0!==e.pager&&(a.selector_data[i].pager=e.pager,a.update_pager(s,a.selector_data[i].pager),a.update_legend())}})}}}}}},this.update_pager=function(e,a){if(void 0!==e){if(void 0!==a.current_page)var r=parseInt(a.current_page);else r=0;if(void 0!==a.total_pages)var t=parseInt(a.total_pages);else t=0;if(void 0!==a.total_items)var s=parseInt(a.total_items);else s=0;r>=1&&t>=1?(jQuery(".learndash-binary-selector-pager-info span.current_page",e).html(r),jQuery(".learndash-binary-selector-pager-info span.current_page",e).show(),jQuery(".learndash-binary-selector-pager-info span.total_pages",e).html(t),jQuery(".learndash-binary-selector-pager-info span.total_pages",e).show(),jQuery(".learndash-binary-selector-pager-info span.total_items span.total_items_count",e).html(s),jQuery(".learndash-binary-selector-pager-info span.total_items",e).show(),jQuery(".learndash-binary-selector-pager-info",e).show(),1==r?jQuery(".learndash-binary-selector-pager-prev a",e).hide():jQuery(".learndash-binary-selector-pager-prev a",e).show(),r==t?jQuery(".learndash-binary-selector-pager-next a",e).hide():jQuery(".learndash-binary-selector-pager-next a",e).show()):(jQuery(".learndash-binary-selector-pager-info span.current_page",e).hide(),jQuery(".learndash-binary-selector-pager-info span.total_pages",e).hide(),jQuery(".learndash-binary-selector-pager-prev a",e).hide(),jQuery(".learndash-binary-selector-pager-next a",e).hide())}},this.init_lazy_load=function(){},this.get_left_items_changed=function(){const e=[];return jQuery(".learndash-binary-selector-items-left",a.selector_div).length&&jQuery(".learndash-binary-selector-items-right",a.selector_div).length&&jQuery(".learndash-binary-selector-items-left option:selected",a.selector_div).each((function(){const a=jQuery(this);if(!a.hasClass("learndash-binary-selector-item-disabled")){const r=jQuery(a).attr("data-value");""!==r&&e.push(r)}})),e},this.update_selected_items_ui=function(){jQuery(".learndash-binary-selector-items-left",a.selector_div).length&&jQuery(".learndash-binary-selector-items-right",a.selector_div).length&&jQuery(".learndash-binary-selector-items-left option:selected",a.selector_div).each((function(){const e=jQuery(this);e.hasClass("learndash-binary-selector-item-disabled")||(jQuery(e,a.selector_div).removeClass("learndash-binary-selector-item-selected"),jQuery(e,a.selector_div).clone().appendTo(jQuery(".learndash-binary-selector-items-right",a.selector_div)),jQuery(e,a.selector_div).addClass("learndash-binary-selector-item-disabled"),jQuery(e,a.selector_div).prop("selected",!1),jQuery(e,a.selector_div).prop("disabled",!0))}))},this.add_selected_items=function(e){e.preventDefault();const r=a.get_left_items_changed();a.get_selector_data().server_side_validation_enabled&&r.length>0?jQuery.ajax({type:"POST",url:ajaxurl,dataType:"json",cache:!1,data:{action:"learndash_binary_selector_validator",nonce:a.nonce,selector_data:a.get_selector_data(),items_added:r,selected_ids:a.get_selector_form_element(!0)},error(e,a,r){console.log("learndash-binary-selector-validation -> error HTTP Status["+e.status+"] "+r),console.log("learndash-binary-selector-validation -> error detail: %o",a)},success(e){e.success?e.data.is_valid?(wp.data&&wp.data.dispatch&&wp.data.dispatch("core/notices")&&wp.data.dispatch("core/notices").removeNotice(a.get_selector_data().server_side_validation_field_id),a.update_selected_items_ui(),a.update_selected_form_element("add",r)):wp.data&&wp.data.dispatch&&wp.data.dispatch("core/notices")?wp.data.dispatch("core/notices").createNotice("error",e.data.error.message,{isDismissible:!0,id:a.get_selector_data().server_side_validation_field_id,actions:e.data.error.actions}):alert(e.data.error.message):console.log("learndash-binary-selector-validation -> error detail: %o",e)}}):(a.update_selected_items_ui(),a.update_selected_form_element("add",r))},this.remove_selected_items=function(e){e.preventDefault();var r=[];jQuery(".learndash-binary-selector-items-left",a.selector_div).length&&jQuery(".learndash-binary-selector-items-right",a.selector_div).length&&jQuery(".learndash-binary-selector-items-right option:selected",a.selector_div).each((function(){var e=jQuery(this),t=jQuery(e).attr("data-value");""!=t&&r.push(t),jQuery('.learndash-binary-selector-items-left option[data-value="'+t+'"]',a.selector_div).length&&(jQuery('.learndash-binary-selector-items-left option[data-value="'+t+'"]',a.selector_div).removeClass("learndash-binary-selector-item-disabled"),jQuery('.learndash-binary-selector-items-left option[data-value="'+t+'"]',a.selector_div).removeClass("learndash-binary-selector-item-selected"),jQuery('.learndash-binary-selector-items-left option[data-value="'+t+'"]',a.selector_div).prop("disabled",!1)),jQuery(e).remove()})),wp.data&&wp.data.dispatch&&wp.data.dispatch("core/notices")&&wp.data.dispatch("core/notices").removeNotice(a.get_selector_data().server_side_validation_field_id),a.update_selected_form_element("remove",r)},this.get_section_el=function(e){if(void 0!==e)return jQuery(e).parents(".learndash-binary-selector-section")},this.update_selected_form_element=function(e,r){r.length&&("add"==e?(jQuery.each(r,(function(e,r){var t=parseInt(r);-1==jQuery.inArray(t,a.selected_items)&&a.selected_items.push(t)})),a.save_selector_form_element()):"remove"==e&&(jQuery.each(r,(function(e,r){var t=parseInt(r),s=jQuery.inArray(t,a.selected_items);-1!==s&&a.selected_items.splice(s,1)})),a.save_selector_form_element()))},this.get_selector_form_element=function(e){void 0===e&&(e=!1);var r=jQuery("input.learndash-binary-selector-form-element",a.selector_div).val();return 0==e?(a.selected_items=JSON.parse(r),a.selected_items=jQuery.map(a.selected_items,(function(e){return parseInt(e)})),a.selected_items):r},this.save_selector_form_element=function(){jQuery("input.learndash-binary-selector-form-element",a.selector_div).val(JSON.stringify(a.selected_items)),jQuery("input.learndash-binary-selector-form-changed",a.selector_div).val("1")},this.sort_right_options=function(){},this.get_selector_data=function(e){if(void 0===e&&(e=!1),1!=a.selector_data_loaded||!0===e){if(a.selector_data_loaded=!0,element_data=jQuery(a.selector_div).attr("data"),"undefined"==typeof element_data)return;a.selector_data=JSON.parse(element_data)}return a.selector_data},this.get_selector_data_element=function(e){var r=a.get_selector_data();if(void 0!==r&&void 0!==e&&void 0!==r[e])return r[e]},this.set_selector_data_element=function(e,r){a.get_selector_data(),this.selector_data[e]=r},this.update_selector_data=function(e){jQuery(a.selector_div).attr("data",JSON.stringify(e)),this.selector_data=e},this.lazy_load_items=function(e){void 0===e&&(e=a.get_selector_data()),void 0===e.query_vars.paged&&(e.query_vars.paged=0),e.query_vars.paged=parseInt(e.query_vars.paged)+1;var r={action:"learndash_binary_selector_lazy_loader",nonce:a.nonce,"query-data":e};jQuery.ajax({type:"POST",url:ajaxurl,dataType:"json",cache:!1,data:r,error:function(e,a,r){},success:function(e){void 0!==e&&void 0!==e.html_options&&(""!=e.html_options?(jQuery("select.learndash-binary-selector-items-left",a.selector_div).append(e.html_options),delete e.html_options,a.update_selector_data(e),a.update_legend(),a.lazy_load_items(e)):(a.update_selector_data(e),a.set_selected_items()))}})},this.set_selected_items=function(){a.get_selector_form_element(),jQuery("select.learndash-binary-selector-items-right",a.selector_div).empty(),jQuery("select.learndash-binary-selector-items-left > option.learndash-binary-selector-item ",a.selector_div).removeClass("learndash-binary-selector-item-disabled"),jQuery("select.learndash-binary-selector-items-left > option.learndash-binary-selector-item ",a.selector_div).prop("selected",!1),jQuery("select.learndash-binary-selector-items-left > option.learndash-binary-selector-item ",a.selector_div).prop("disabled",!1),jQuery.each(a.selected_items,(function(e,r){jQuery('.learndash-binary-selector-items-left option.learndash-binary-selector-item[value="'+r+'"]',a.selector_div).each((function(){var e=jQuery(this);jQuery(e,a.selector_div).clone().appendTo(jQuery(".learndash-binary-selector-items-right",a.selector_div)),jQuery(e,a.selector_div).addClass("learndash-binary-selector-item-disabled"),jQuery(e,a.selector_div).prop("selected",!1),jQuery(e,a.selector_div).prop("disabled",!0)}))})),a.update_legend()}}jQuery((function(){var e=[];jQuery(".learndash-binary-selector").each((function(){var a=jQuery(this).prop("id");void 0!==a&&(e[a]=new learndash_binary_selector(this),e[a].init())}))})),jQuery.expr[":"].Contains=jQuery.expr.createPseudo((function(e){return function(a){return jQuery(a).text().toUpperCase().indexOf(e.toUpperCase())>=0}}));