Skip to content

Instantly share code, notes, and snippets.

@anil826
Created June 19, 2019 04:23
Show Gist options
  • Save anil826/494d0f9685820a6d1f15e64a1ff68812 to your computer and use it in GitHub Desktop.
Save anil826/494d0f9685820a6d1f15e64a1ff68812 to your computer and use it in GitHub Desktop.
OnAddRepeat validation
//On add item event
formyoula.form_fields[reward_repeat_element].on("element:create:success",function(e) {
//Validation for Total Earned Points >= Reward quantity.
if ( formyoula.form_fields[gold_member_component].get("value") ) {
if ( parseFloat(formyoula.form_fields[total_reward_quantity].get("value")) >= parseFloat(formyoula.form_fields[total_points_with_doublication].get("value")) ) {
//If validation failed remove last added item
var repeat_v = formyoula.form_fields[reward_repeat_element].get("repeat_value");
repeat_v.pop();
formyoula.form_fields[reward_repeat_element].set("repeat_value",repeat_v ).trigger("change")
alert("you can not have more reward quantity then total earned points with doublication");
return;
}
} else {
if ( parseFloat(formyoula.form_fields[total_reward_quantity].get("value")) >= parseFloat(formyoula.form_fields[total_erned_point_element].get("value")) ) {
//If validation failed remove last added item
var repeat_v = formyoula.form_fields[reward_repeat_element].get("repeat_value");
repeat_v.pop();
formyoula.form_fields[reward_repeat_element].set("repeat_value",repeat_v ).trigger("change")
alert("you can not have more reward quantity then total earned points");
return;
}
}
var extra_reward_quantity = [];
var all_reward = [];
var duplicate_reward = [];
formyoula.form_fields[reward_repeat_element].get("repeat_value").forEach(function(repeat_group, index) {
var present_reward_point = _.find(repeat_group,function(e){ return e.component_id == reward_point_element }).value
_.filter(repeat_group, function(element) {
//check for reward list
if ( element.component_id == reward_list_element && element.value ) {
if ( all_reward.indexOf(element.value) > -1 ) {
duplicate_reward.push(element.value);
}
all_reward.push(element.value);
}
//Create total of all the quantity points from reward repeat group
if ( element.component_id == reward_quantity && element.value ) {
if ( parseFloat(element.value) >= parseFloat(present_reward_point) ) {
extra_reward_quantity.push(index);
}
}
})
})
if ( duplicate_reward.length ) {
//If validation failed remove last added item
var repeat_v = formyoula.form_fields[reward_repeat_element].get("repeat_value");
repeat_v.pop();
formyoula.form_fields[reward_repeat_element].set("repeat_value",repeat_v ).trigger("change")
alert("you have duplicate rewards : "+ _.uniq(duplicate_reward).toString() );
return;
}
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment