mirror of
https://github.com/10h30/ultimatemember.git
synced 2026-07-16 13:13:33 +09:00
1 line
8.8 KiB
JavaScript
1 line
8.8 KiB
JavaScript
var arr_all_conditions=[],um_field_conditions={},um_field_default_values={};function um_get_field_default_value(e){var i,a="",t=um_get_field_type(e);switch(t){case"text":case"number":case"date":case"textarea":case"select":a=e.find("input:text,input[type=number],textarea,select").val();break;case"multiselect":case"user_tags":a=e.find("select").val();break;case"radio":1<=e.find("input[type=radio]:checked").length&&(a=e.find("input[type=radio]:checked").val());break;case"checkbox":1<=e.find("input[type=checkbox]:checked").length&&(a=1<e.find("input[type=checkbox]:checked").length?((i=[]).push(a),e.find("input[type=checkbox]:checked").each(function(){i.push(jQuery(this).val())}),i):e.find("input[type=checkbox]:checked").val())}return{type:t,value:a}}function um_get_field_element(e){switch(um_get_field_type(e)){case"text":case"number":case"date":case"textarea":case"select":case"multiselect":case"user_tags":case"radio":case"checkbox":return e.find("input,textarea,select")}return""}function um_get_field_type(e){var a="",i=e.attr("class").split(" ");return jQuery.each(i,function(e,i){/um-field-type_/.test(i)&&(a=i.replace("um-field-type_","").trim())}),a}function um_get_field_children(a){var t=[];return jQuery.each(arr_all_conditions,function(e,i){i.field.parent===a&&t.push(i.field.condition)}),t}function um_splitup_array(e,i){for(var a=e.length%i,t=a,n=Math.floor(e.length/i),u=[],r=0;r<e.length;r+=n){var c=n+r,d=!1;0!=a&&t&&(c++,t--,d=!0),u.push(e.slice(r,c)),d&&r++}var o=[];return jQuery.each(u,function(e,i){o.push({action:i[0],if_field:i[1],operator:i[2],value:i[3]})}),o}function um_get_field_data(e){return um_live_field=e.parents(".um-field").data("key"),um_live_value=e.val(),e.is(":checkbox")&&(um_live_value="",1<e.parents(".um-field").find("input:checked").length?e.parents(".um-field").find("input:checked").each(function(){um_live_value=um_live_value+jQuery(this).val()+" "}):1<=e.parents(".um-field").find("input:checked").length&&(um_live_value=e.parents(".um-field").find("input:checked").val())),e.is(":radio")&&(um_live_value=e.parents(".um-field").find("input[type=radio]:checked").val()),um_live_value}function um_in_array(e,i,a){var t,n=!1;for(t in a=!!a,i)if(a&&i[t]===e||!a&&i[t]==e){n=!0;break}return n}function um_apply_conditions(a,e){var i,t,n,u,r,c,d;a.parents(".um-field[data-key]").length&&(i=a.parents(".um-field[data-key]").data("key"),void 0!==(t=um_field_conditions[i])&&(n=um_get_field_type(a.parents(".um-field[data-key]")),u=um_get_field_data(a),r={},c={},d={},jQuery.each(t,function(e,i){void 0===c[i.owner]&&(c[i.owner]=[],d[i.owner]={}),c[i.owner].push(i.value),d[i.owner]=i}),jQuery.each(t,function(e,i){var a;if(void 0===r[i.owner]&&(r[i.owner]={}),"empty"===i.operator&&(a=jQuery.isArray(u)?u.join(""):u,r[i.owner][e]=!a||""===a),"not empty"===i.operator&&(a=jQuery.isArray(u)?u.join(""):u,r[i.owner][e]=!(!a||""===a)),"equals to"===i.operator&&(a=jQuery.isArray(u)&&1===u.length?u[0]:u,i.value===a&&um_in_array(a,c[i.owner])?r[i.owner][e]=!0:r[i.owner][e]=!1),"not equals"===i.operator&&(a=jQuery.isArray(u)&&1===u.length?u[0]:u,(!jQuery.isNumeric(i.value)||parseInt(a)===parseInt(i.value)||!a||um_in_array(a,c[i.owner]))&&(i.value==a||um_in_array(a,c[i.owner]))?r[i.owner][e]=!1:r[i.owner][e]=!0),"greater than"===i.operator&&(a=jQuery.isArray(u)&&1===u.length?u[0]:u,jQuery.isNumeric(i.value)&&parseInt(a)>parseInt(i.value)?r[i.owner][e]=!0:r[i.owner][e]=!1),"less than"===i.operator&&(a=jQuery.isArray(u)&&1===u.length?u[0]:u,jQuery.isNumeric(i.value)&&parseInt(a)<parseInt(i.value)?r[i.owner][e]=!0:r[i.owner][e]=!1),"contains"===i.operator)switch(n){case"multiselect":case"user_tags":u&&0<=u.indexOf(i.value)&&um_in_array(i.value,u)?r[i.owner][e]=!0:r[i.owner][e]=!1;break;case"checkbox":u&&0<=u.indexOf(i.value)?r[i.owner][e]=!0:r[i.owner][e]=!1;break;default:u&&0<=u.indexOf(i.value)&&um_in_array(u,c[i.owner])?r[i.owner][e]=!0:r[i.owner][e]=!1}}),jQuery.each(r,function(e,i){um_in_array(!0,i)?um_field_apply_action(a,d[e],!0):um_field_apply_action(a,d[e],!1)}),a.trigger("um_fields_change")))}function um_field_apply_action(e,i,a){var t=jQuery('div.um-field[data-key="'+i.owner+'"]');return"show"===i.action&&a&&(t.show(),_show_in_ie(t),um_field_restore_default_value(t)),"show"!==i.action||a||(t.hide(),_hide_in_ie(t)),"hide"===i.action&&a&&(t.hide(),_hide_in_ie(t)),"hide"!==i.action||a||(t.show(),_show_in_ie(t),um_field_restore_default_value(t)),e.removeClass("um-field-has-changed")}function um_field_restore_default_value(t){var e,i,a=um_get_field_type(t),n=t.data("key"),u=um_field_default_values[n];switch(a){case"text":case"number":case"date":case"textarea":t.find("input:text,input[type=number],textareas").val(u.value);break;case"select":t.find("select").find("option").prop("selected",!1),t.find("select").val(u.value),t.find("select").trigger("change");break;case"multiselect":case"user_tags":t.find("select").find("option").prop("selected",!1),jQuery.each(u.value,function(e,i){t.find("select").find('option[value="'+i+'"]').attr("selected",!0)}),t.find("select").trigger("change");break;case"checkbox":1<=t.find("input[type=checkbox]:checked").length&&(t.find("input[type=checkbox]:checked").removeAttr("checked"),t.find("span.um-field-checkbox-state i").removeClass("um-icon-android-checkbox-outline"),t.find("span.um-field-checkbox-state i").addClass("um-icon-android-checkbox-outline-blank"),t.find(".um-field-checkbox.active").removeClass("active"),jQuery.isArray(u.value)?jQuery.each(u.value,function(e,i){var a=t.find('input[type=checkbox][value="'+i+'"]');a.attr("checked",!0),a.closest(".um-field-checkbox").find("i").removeClass("um-icon-android-checkbox-outline-blank"),a.closest(".um-field-checkbox").find("i").addClass("um-icon-android-checkbox-outline"),a.closest(".um-field-checkbox").addClass("active")}):((e=t.find('input[type=checkbox][value="'+u.value+'"]')).attr("checked",!0),e.closest(".um-field-checkbox").find("i").removeClass("um-icon-android-checkbox-outline-blank"),e.closest(".um-field-checkbox").find("i").addClass("um-icon-android-checkbox-outline"),e.closest(".um-field-checkbox").addClass("active")));break;case"radio":1<=t.find("input[type=radio]:checked").length&&setTimeout(function(){t.find("input[type=radio]:checked").removeAttr("checked"),t.find("span.um-field-radio-state i").removeClass("um-icon-android-radio-button-on"),t.find("span.um-field-radio-state i").addClass("um-icon-android-radio-button-off"),t.find(".um-field-radio.active").removeClass("active");var e=t.find("input[type=radio][value='"+u.value+"']");e.attr("checked",!0),e.closest(".um-field-radio").find("i").removeClass("um-icon-android-radio-button-off"),e.closest(".um-field-radio").find("i").addClass("um-icon-android-radio-button-on"),e.closest(".um-field-radio").addClass("active")},100)}t.hasClass("um-field-has-changed")||(i=um_get_field_element(t),"radio"!==a&&"checkbox"!==a||(i=i.find(":checked")),i&&(i.trigger("change"),t.addClass("um-field-has-changed")))}function um_field_hide_siblings(){jQuery.each(um_field_conditions,function(e,i){(1<=jQuery('.um-field[data-key="'+e+'"]:hidden').length||"none"===jQuery('.um-field[data-key="'+e+'"]').css("display"))&&jQuery.each(i,function(e,i){jQuery('.um-field[data-key="'+i.owner+'"]').hide()})})}function _hide_in_ie(e){void 0!==jQuery.browser&&jQuery.browser.msie&&e.css({visibility:"hidden"})}function _show_in_ie(e){void 0!==jQuery.browser&&jQuery.browser.msie&&e.css({visibility:"visible"})}function um_init_field_conditions(){var e=[];jQuery(".um-field[data-key]").each(function(){var t=jQuery(this).data("key");e.push(t);var u={};jQuery.each(jQuery(this)[0].attributes,function(e,i){var a,t,n;-1!==i.name.indexOf("data-cond")&&(t=(a=i.name.slice(10)).substring(1,0),n=a.slice(2),void 0===u[t]&&(u[t]={}),u[t][n]=i.value)}),jQuery.each(u,function(e,i){var a={field:{owner:t,action:i.action,parent:i.field,operator:i.operator,value:i.value,condition:{owner:t,action:i.action,operator:i.operator,value:i.value}}};arr_all_conditions.push(a)}),um_field_default_values[jQuery(this).data("key")]=um_get_field_default_value(jQuery(this))}),jQuery.each(e,function(e,i){um_field_conditions[i]=um_get_field_children(i)}),jQuery(".um-field[data-key]:visible").each(function(){var e=um_get_field_element(jQuery(this));void 0!==e.trigger&&e.trigger("change")})}jQuery(document).ready(function(){jQuery(document).on("change",'.um-field select, .um-field input[type="radio"], .um-field input[type="checkbox"]',function(){um_apply_conditions(jQuery(this),!1)}),jQuery(document).on("input change",'.um-field input[type="text"]',function(){um_apply_conditions(jQuery(this),!1)}),jQuery(document).on("input change",'.um-field input[type="number"]',function(){um_apply_conditions(jQuery(this),!1)}),jQuery(document).on("input change",'.um-field input[type="password"]',function(){um_apply_conditions(jQuery(this),!1)}),jQuery(document).on("um_fields_change",function(){um_field_hide_siblings(),um_field_hide_siblings()}),um_init_field_conditions()}); |