148 lines
4.8 KiB
JavaScript
148 lines
4.8 KiB
JavaScript
$(function($){
|
|
|
|
// Clean array from deleteValue (undefined) keys
|
|
Array.prototype.clean = function(deleteValue) {
|
|
for (var i = 0; i < this.length; i++) {
|
|
if (this[i] == deleteValue) {
|
|
this.splice(i, 1);
|
|
i--;
|
|
}
|
|
}
|
|
return this;
|
|
};
|
|
|
|
// Remove 1 Rule then Save Rules AJAX
|
|
couponManager.removeRuleAjax = function(id) {
|
|
// Delete rule in temporary array
|
|
delete couponManager.rulesToSave[id];
|
|
couponManager.rulesToSave.clean(undefined);
|
|
|
|
// Save
|
|
couponManager.saveRuleAjax();
|
|
};
|
|
|
|
// Add 1 Rule / or update the temporary Rules array then Save Rules via AJAX
|
|
couponManager.addRuleAjax = function(id) {
|
|
console.log('addRuleAjax '+ id);
|
|
// If create
|
|
if(!id) {
|
|
console.log('pushing');
|
|
couponManager.rulesToSave.push(couponManager.ruleToSave);
|
|
} else { // else update
|
|
console.log('editing ' + id);
|
|
couponManager.rulesToSave[id] = couponManager.ruleToSave;
|
|
// reset edit mode to off
|
|
couponManager.ruleIdToUpdate = false;
|
|
}
|
|
|
|
// Save
|
|
couponManager.saveRuleAjax();
|
|
};
|
|
|
|
// Set rule inputs to allow editing
|
|
couponManager.updateRuleAjax = function(id) {
|
|
couponManager.ruleToUpdate = couponManager.rulesToSave[id];
|
|
console.log('Set id to edit to ' + id);
|
|
couponManager.ruleIdToUpdate = id;
|
|
|
|
// Deleting this rule, we will reset it
|
|
delete couponManager.rulesToSave[id];
|
|
|
|
// Set the rule selector
|
|
$("#category-rule option").filter(function() {
|
|
return $(this).val() == couponManager.ruleToUpdate.serviceId;
|
|
}).prop('selected', true);
|
|
|
|
// Force rule input refresh
|
|
couponManager.loadRuleInputs(couponManager.ruleToUpdate.serviceId, function() {
|
|
couponManager.fillInRuleInputs();
|
|
});
|
|
};
|
|
|
|
// Fill in rule inputs
|
|
couponManager.fillInRuleInputs = function() {
|
|
console.log('fillInRuleInputs with');
|
|
console.log(couponManager.ruleToUpdate);
|
|
var operatorId = null;
|
|
var valueId = null;
|
|
var idName = null;
|
|
|
|
for (idName in couponManager.ruleToUpdate.operators) {
|
|
// Setting idName operator select
|
|
operatorId = idName + '-operator';
|
|
$('#' + operatorId).val(couponManager.ruleToUpdate.operators[idName]);
|
|
|
|
valueId = idName + '-value';
|
|
// Setting idName value input
|
|
$('#' + valueId).val(couponManager.ruleToUpdate.values[idName]);
|
|
}
|
|
couponManager.ruleToSave = couponManager.ruleToUpdate;
|
|
|
|
var id = couponManager.ruleIdToUpdate;
|
|
console.log('id to edit = ' + id);
|
|
if(id) {
|
|
console.log('setint rulesToSave[' + id + ']');
|
|
console.log(couponManager.ruleToSave);
|
|
couponManager.rulesToSave[id] = couponManager.ruleToSave;
|
|
}
|
|
};
|
|
|
|
// Save rules on click
|
|
couponManager.onClickSaveRule = function() {
|
|
$('#constraint-save-btn').on('click', function () {
|
|
couponManager.addRuleAjax(couponManager.ruleIdToUpdate);
|
|
});
|
|
};
|
|
couponManager.onClickSaveRule();
|
|
|
|
// Remove rule on click
|
|
couponManager.onClickDeleteRule = function() {
|
|
$('.constraint-delete-btn').on('click', function (e) {
|
|
e.preventDefault();
|
|
var $this = $(this);
|
|
couponManager.removeRuleAjax($this.attr('data-int'));
|
|
});
|
|
};
|
|
couponManager.onClickDeleteRule();
|
|
|
|
// Update rule on click
|
|
couponManager.onClickUpdateRule = function() {
|
|
$('.constraint-update-btn').on('click', function (e) {
|
|
e.preventDefault();
|
|
var $this = $(this);
|
|
couponManager.updateRuleAjax($this.attr('data-int'));
|
|
|
|
// Hide row being updated
|
|
$this.parent().parent().remove();
|
|
});
|
|
};
|
|
couponManager.onClickUpdateRule();
|
|
|
|
// Reload effect inputs when changing effect
|
|
couponManager.onEffectChange = function() {
|
|
$('#effect').on('change', function () {
|
|
var optionSelected = $("option:selected", this);
|
|
$('#effectToolTip').html(optionSelected.attr("data-description"));
|
|
});
|
|
};
|
|
couponManager.onEffectChange();
|
|
|
|
// Reload rule inputs when changing effect
|
|
couponManager.onRuleChange = function() {
|
|
$('#category-rule').on('change', function () {
|
|
couponManager.loadRuleInputs($(this).val(), function(ruleToSave) {});
|
|
});
|
|
};
|
|
couponManager.onRuleChange();
|
|
|
|
// Fill in ready to be saved rule array
|
|
// var onInputsChange = function()
|
|
// In AJAX response
|
|
|
|
});
|
|
|
|
// Rule to save
|
|
|
|
var couponManager = {};
|
|
couponManager.ruleToSave = {};
|
|
couponManager.ruleIdToUpdate = false; |