You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
93 lines
2.1 KiB
JavaScript
93 lines
2.1 KiB
JavaScript
"use strict";
|
|
/* global define, app, ajaxify, socket, templates, bootbox */
|
|
|
|
define('admin/extend/rewards', function() {
|
|
var rewards = {};
|
|
|
|
|
|
var available,
|
|
active;
|
|
|
|
rewards.init = function() {
|
|
$(window).on('action:ajaxify.end', function() {
|
|
available = JSON.parse(ajaxify.variables.get('rewards'));
|
|
active = JSON.parse(ajaxify.variables.get('active'));
|
|
|
|
$('[data-selected]').each(function() {
|
|
select($(this));
|
|
}).on('change', function() {
|
|
update($(this));
|
|
});
|
|
});
|
|
};
|
|
|
|
function select(el) {
|
|
el.val(el.attr('data-selected'));
|
|
switch (el.attr('name')) {
|
|
case 'reward':
|
|
selectReward(el);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function update(el) {
|
|
el.attr('data-selected', el.val());
|
|
switch (el.attr('name')) {
|
|
case 'reward':
|
|
selectReward(el);
|
|
break;
|
|
}
|
|
}
|
|
|
|
function selectReward(el) {
|
|
var parent = el.parents('[data-rewardID]'),
|
|
div = parent.find('.inputs'),
|
|
inputs,
|
|
html = '';
|
|
|
|
for (var reward in available) {
|
|
if (available.hasOwnProperty(reward)) {
|
|
if (parseInt(available[reward].rewardID, 10) === parseInt(el.attr('data-selected'), 10)) {
|
|
inputs = available[reward].inputs;
|
|
parent.attr('data-rewardID', available[reward].rewardID);
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (!inputs) {
|
|
app.alertError('Illegal reward - no inputs found! ' + el.attr('data-selected'));
|
|
}
|
|
|
|
inputs.forEach(function(input) {
|
|
html += '<label for="' + input.name + '">' + input.label + '<br />';
|
|
switch (input.type) {
|
|
case 'select':
|
|
html += '<select name="' + input.name + '">';
|
|
input.values.forEach(function(value) {
|
|
html += '<option value="' + value.value + '">' + value.name + '</option>';
|
|
});
|
|
break;
|
|
case 'text':
|
|
html += '<input type="text" name="' + input.name +'" />';
|
|
break;
|
|
}
|
|
html += '</label><br />';
|
|
});
|
|
|
|
div.html(html);
|
|
|
|
$('[data-rewardID]').each(function(i) {
|
|
var div = $(this).find('.inputs'),
|
|
rewards = active[i].rewards;
|
|
|
|
for (var reward in rewards) {
|
|
if (rewards.hasOwnProperty(reward)) {
|
|
div.find('[name="' + reward + '"]').val(rewards[reward]);
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
return rewards;
|
|
}); |