You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

310 lines
7.1 KiB

define(function(require){
var $ = require('jquery'),
_ = require('underscore'),
monster = require('monster');
var app = {
requests: {},
subscribe: {
'callflows.blacklist.edit': 'blacklistEdit',
'callflows.fetchActions': 'blacklistDefineActions',
},
blacklistDefineActions: function(args) {
var self = this,
callflow_nodes = args.actions;
$.extend(callflow_nodes, {
'blacklist': {
name: self.i18n.active().callflows.blacklist.title,
module: 'blacklist',
listEntities: function(callback) {
self.callApi({
resource: 'blacklist.list',
data: {
accountId: self.accountId,
filters: { paginate:false }
},
success: function(data, status) {
callback && callback(data.data);
}
});
},
editEntity: 'callflows.blacklist.edit'
}
});
},
// Added for the subscribed event to avoid refactoring conferenceEdit
blacklistEdit: function(args) {
var self = this,
afterGetData = function(data) {
var template = $(monster.template(self, 'blacklist-edit', {data: data})),
blacklistForm = template.find('#blacklist-form'),
$listNumbers = template.find('.saved-numbers');
monster.ui.validate(blacklistForm, {
rules: {
'name': { required: true },
}
});
_.each(data.numbers, function(v, number) {
$listNumbers.append(monster.template(self, 'blacklist-addNumber', {number: number}));
});
self.blacklistBindEvents(data, template, args.callbacks);
(args.target)
.empty()
.append(template);
};
if(args.data.id) {
self.blacklistGet(args.data.id, function(data) {
afterGetData(data);
});
}
else {
afterGetData({});
}
},
/* blacklistBindEvents: function(data, template, callbacks) {
var self = this,
addNumber = function(e) {
var number = template.find('#number_value').val();
if (number) {
$('.list-numbers .saved-numbers', template).prepend(monster.template(self, 'blacklist-addNumber', { number: number }));
$('#number_value', template).val('');
}
};
$('.number-wrapper.placeholder:not(.active)', template).on('click', function() {
var $this = $(this);
$this.addClass('active');
$('#number_value', template).focus();
});
$('#add_number', template).on('click', function(e) {
e.preventDefault();
addNumber(e);
});
$('.add-number', template).bind('keypress', function(e) {
var code = e.keyCode || e.which;
if (code === 13) {
addNumber(e);
}
});
$(template).delegate('.delete-number', 'click', function(e) {
$(this).parents('.number-wrapper').remove();
});
$('#cancel_number', template).on('click', function(e) {
e.stopPropagation();
$('.number-wrapper.placeholder.active', template).removeClass('active');
$('#number_value', template).val('');
});
$('.blacklist-save', template).on('click', function() {
var formData = form2object('blacklist-form'),
cleanData = self.blacklistCleanFormData(formData),
mapNumbers = {};
$('.saved-numbers .number-wrapper', template).each(function(k, wrapper) {
var number = $(wrapper).attr('data-number');
mapNumbers[number] = {};
});
cleanData.numbers = mapNumbers;
if (data.id) {
cleanData.id = data.id;
}
self.blacklistSave(cleanData, callbacks.save_success);
});
$('.blacklist-delete', template).on('click', function() {
monster.ui.confirm(self.i18n.active().callflows.blacklist.are_you_sure_you_want_to_delete, function() {
self.blacklistDelete(data.id, callbacks.delete_success);
});
});
},*/
blacklistBindEvents: function(data, template, callbacks) {
var self = this,
addNumber = function(e) {
var number = template.find('#number_value').val();
if(number) {
$('.list-numbers .saved-numbers', template).prepend(monster.template(self,'blacklist-addNumber', { number: number }));
$('#number_value', template).val('');
}
};
$('.number-wrapper.placeholder:not(.active)', template).click(function() {
var $this = $(this);
$this.addClass('active');
$('#number_value', template).focus();
});
$('#add_number', template).click(function(e) {
e.preventDefault();
addNumber();
});
$('.add-number', template).bind('keypress', function(e) {
var code = e.keyCode || e.which;
if(code === 13) {;
addNumber(e);
}
});
$(template).delegate('.delete-number', 'click', function(e) {
$(this).parents('.number-wrapper').remove();
});
$('#cancel_number', template).click(function(e) {
e.stopPropagation();
$('.number-wrapper.placeholder.active', template).removeClass('active');
$('#number_value', template).val('');
});
$('.blacklist-save', template).click(function() {
var formData = form2object('blacklist-form'),
cleanData = self.blacklistCleanFormData(formData),
mapNumbers = {};
$('.saved-numbers .number-wrapper', template).each(function(k, wrapper) {
var number = $(wrapper).attr('data-number');
mapNumbers[number] = {};
});
cleanData.numbers = mapNumbers;
if(data.id) {
cleanData.id = data.id;
}
self.blacklistSave(cleanData, callbacks.save_success);
});
$('.blacklist-delete', template).click(function() {
monster.ui.confirm(self.i18n.active().callflows.blacklist.are_you_sure_you_want_to_delete, function() {
self.blacklistDelete(data.id, callbacks.delete_success);
});
});
},
blacklistCleanFormData: function(data) {
delete data.extra;
return data;
},
blacklistSave: function(data, callback) {
var self = this;
if(data.id) {
self.blacklistUpdate(data, callback);
}
else {
self.blacklistCreate(data, callback);
}
},
blacklistList: function(callback) {
var self = this;
self.callApi({
resource: 'blacklist.list',
data: {
accountId: self.accountId,
filters: { paginate:false }
},
success: function(data) {
callback && callback(data.data);
}
});
},
blacklistGet: function(id, callback) {
var self = this;
self.callApi({
resource: 'blacklist.get',
data: {
accountId: self.accountId,
blacklistId: id
},
success: function(data) {
callback && callback(data.data);
}
});
},
blacklistCreate: function(data, callback) {
var self = this;
self.callApi({
resource: 'blacklist.create',
data: {
accountId: self.accountId,
data: data
},
success: function(data) {
callback && callback(data.data);
}
});
},
blacklistUpdate: function(data, callback) {
var self = this;
self.callApi({
resource: 'blacklist.update',
data: {
accountId: self.accountId,
blacklistId: data.id,
data: data
},
success: function(data) {
callback && callback(data.data);
}
});
},
blacklistDelete: function(id, callback) {
var self = this;
self.callApi({
resource: 'blacklist.delete',
data: {
accountId: self.accountId,
blacklistId: id
},
success: function(data) {
callback && callback(data.data);
}
});
}
};
return app;
});