define(function(require){
|
|
var $ = require('jquery'),
|
|
_ = require('lodash'),
|
|
monster = require('monster');
|
|
|
|
var app = {
|
|
requests: {},
|
|
|
|
subscribe: {
|
|
'callflows.fetchActions': 'groupsDefineActions',
|
|
'callflows.groups.edit': '_groupsEdit',
|
|
},
|
|
|
|
groupsRender: function(data, target, callbacks){
|
|
var self = this,
|
|
groups_html = $(monster.template(self, 'groups-edit', data)),
|
|
groupForm = groups_html.find('#group-form');
|
|
|
|
monster.ui.validate(groupForm, {
|
|
rules: {
|
|
'name': {
|
|
required: true
|
|
}
|
|
}
|
|
});
|
|
|
|
self.winkstartTabs(groups_html);
|
|
|
|
$('#tab_users > .rows', groups_html).sortable({
|
|
handle: '.column.first'
|
|
});
|
|
|
|
self.groupsRenderEndpointList(data, groups_html);
|
|
|
|
$('.group-save', groups_html).click(function(ev) {
|
|
ev.preventDefault();
|
|
|
|
var $this = $(this);
|
|
|
|
if(!$this.hasClass('disabled')) {
|
|
$this.addClass('disabled');
|
|
|
|
if(monster.ui.valid(groupForm)) {
|
|
var form_data = monster.ui.getFormData('group-form');
|
|
self.groupsCleanFormData(form_data, data.field_data);
|
|
|
|
form_data.endpoints = {};
|
|
|
|
$('.rows .row:not(#row_no_data)', groups_html).each(function(k, v) {
|
|
form_data.endpoints[$(v).data('id')] = {
|
|
type: $(v).data('type'),
|
|
weight: k+1
|
|
};
|
|
});
|
|
|
|
delete data.data.resources;
|
|
delete data.data.endpoints;
|
|
|
|
self.groupsSave(form_data, data, callbacks.save_success);
|
|
}
|
|
else {
|
|
$this.removeClass('disabled');
|
|
monster.ui.alert(self.i18n.active().callflows.groups.there_were_errors_on_the_form);
|
|
}
|
|
}
|
|
});
|
|
|
|
$('.group-delete', groups_html).click(function(ev) {
|
|
ev.preventDefault();
|
|
|
|
monster.ui.confirm(self.i18n.active().callflows.groups.are_you_sure_you_want_to_delete, function() {
|
|
self.groupsDelete(data, callbacks.delete_success);
|
|
});
|
|
});
|
|
|
|
var add_user = function() {
|
|
var $user = $('#select_user_id', groups_html);
|
|
|
|
if($user.val() != 'empty_option_user') {
|
|
var user_id = $user.val();
|
|
|
|
$.each(data.field_data.users, function(k, v) {
|
|
if(user_id === v.id) {
|
|
var user_data = {
|
|
endpoint_id: user_id,
|
|
endpoint_type: 'user',
|
|
endpoint_name: v.first_name + ' ' + v.last_name,
|
|
};
|
|
|
|
data.data.endpoints.push(user_data);
|
|
|
|
data.data.endpoints.sort(function(a,b){
|
|
return a.endpoint_name.toLowerCase() > b.endpoint_name.toLowerCase();
|
|
});
|
|
|
|
self.groupsRenderEndpointList(data, groups_html);
|
|
$user.val('empty_option_user');
|
|
}
|
|
});
|
|
}
|
|
},
|
|
add_device = function() {
|
|
var $device = $('#select_device_id', groups_html);
|
|
|
|
if($device.val() != 'empty_option_device') {
|
|
var device_id = $device.val();
|
|
|
|
$.each(data.field_data.devices, function(k, v){
|
|
if(device_id === v.id) {
|
|
var device_data = {
|
|
endpoint_id: device_id,
|
|
endpoint_type: 'device',
|
|
endpoint_name: v.name,
|
|
};
|
|
|
|
data.data.endpoints.push(device_data);
|
|
|
|
data.data.endpoints.sort(function(a,b){
|
|
return a.endpoint_name.toLowerCase() > b.endpoint_name.toLowerCase();
|
|
});
|
|
|
|
self.groupsRenderEndpointList(data, groups_html);
|
|
|
|
$device.val('empty_option_device');
|
|
}
|
|
|
|
});
|
|
}
|
|
};
|
|
|
|
$('#select_user_id', groups_html).change(function() {
|
|
add_user();
|
|
});
|
|
$('#select_device_id', groups_html).change(function() {
|
|
add_device();
|
|
});
|
|
|
|
groups_html.find('#group-form').on('click', '.action_endpoint.delete', function() {
|
|
var endpoint_id = $(this).data('id');
|
|
//removes it from the grid
|
|
$('#row_endpoint_'+endpoint_id, groups_html).remove();
|
|
//re-add it to the dropdown
|
|
$('#option_endpoint_'+endpoint_id, groups_html).show();
|
|
//if grid empty, add no data line
|
|
if($('.rows .row', groups_html).size() === 0) {
|
|
$('.rows', groups_html).append(monster.template(self, 'groups-endpoint_row'));
|
|
}
|
|
|
|
/* TODO For some reason splice doesn't work and I don't have time to make it better for now */
|
|
var new_list = [];
|
|
|
|
$.each(data.data.endpoints, function(k, v) {
|
|
if(!(v.endpoint_id === endpoint_id)) {
|
|
new_list.push(v);
|
|
}
|
|
});
|
|
|
|
data.data.endpoints = new_list;
|
|
});
|
|
|
|
(target)
|
|
.empty()
|
|
.append(groups_html);
|
|
},
|
|
|
|
// Added for the subscribed event to avoid refactoring mediaEdit
|
|
_groupsEdit: function(args) {
|
|
var self = this;
|
|
self.groupsEdit(args.data, args.parent, args.target, args.callbacks, args.data_defaults);
|
|
},
|
|
|
|
groupsEdit: function(data, _parent, _target, _callbacks, data_defaults){
|
|
var self = this,
|
|
parent = _parent || $('#groups-content'),
|
|
target = _target || $('#groups-view', parent),
|
|
callbacks = {
|
|
save_success: _callbacks.save_success,
|
|
save_error: _callbacks.save_error,
|
|
delete_success: _callbacks.delete_success,
|
|
delete_error: _callbacks.delete_error,
|
|
after_render: _callbacks.after_render
|
|
},
|
|
defaults = {
|
|
data: $.extend(true, {
|
|
endpoints: {},
|
|
music_on_hold: {}
|
|
}, data_defaults || {}),
|
|
field_data: {}
|
|
};
|
|
|
|
monster.parallel({
|
|
'device_list': function(callback) {
|
|
self.getAll({
|
|
resource: 'device.list',
|
|
data: {
|
|
accountId: self.accountId
|
|
},
|
|
success: function(data) {
|
|
defaults.field_data.devices = data.data;
|
|
callback(null, data)
|
|
}
|
|
});
|
|
},
|
|
|
|
'user_list': function(callback) {
|
|
self.getAll({
|
|
resource: 'user.list',
|
|
data: {
|
|
accountId: self.accountId
|
|
},
|
|
success: function(data) {
|
|
defaults.field_data.users = data.data;
|
|
callback(null, data)
|
|
}
|
|
});
|
|
},
|
|
|
|
'groups_get': function(callback) {
|
|
if(typeof data === 'object' && data.id) {
|
|
self.callApi({
|
|
resource: 'group.get',
|
|
data: {
|
|
accountId: self.accountId,
|
|
groupId: data.id
|
|
},
|
|
success: function(data) {
|
|
callback(null, data)
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
callback(null, {});
|
|
}
|
|
},
|
|
},
|
|
function(err, results) {
|
|
var render_data = defaults;
|
|
|
|
if(typeof data === 'object' && data.id) {
|
|
render_data = $.extend(true, defaults, results.groups_get);
|
|
}
|
|
|
|
render_data = self.groupsFormatData(render_data);
|
|
|
|
self.groupsRender(render_data, target, callbacks);
|
|
}
|
|
);
|
|
},
|
|
|
|
groupsRenderEndpointList: function(data, parent) {
|
|
var self = this;
|
|
|
|
$('.rows', parent).empty();
|
|
|
|
if('endpoints' in data.data && data.data.endpoints.length > 0) {
|
|
$.each(data.data.endpoints, function(k, item){
|
|
$('.rows', parent).append(monster.template(self, 'groups-endpoint_row', item));
|
|
$('#option_endpoint_'+item.endpoint_id, parent).hide();
|
|
});
|
|
}
|
|
else {
|
|
$('.rows', parent).empty()
|
|
.append(monster.template(self, 'groups-endpoint_row'));
|
|
}
|
|
},
|
|
|
|
groupsCleanFormData: function(form_data, field_data) {
|
|
delete form_data.extra;
|
|
},
|
|
|
|
groupsFormatData: function(data) {
|
|
var user_item,
|
|
endpoint_item,
|
|
list_endpoint = [];
|
|
|
|
$.each(data.field_data.users, function(k, v) {
|
|
if(v.id in data.data.endpoints) {
|
|
endpoint_item = {
|
|
endpoint_type: 'user',
|
|
endpoint_id: v.id,
|
|
endpoint_name: v.first_name + ' ' + v.last_name,
|
|
endpoint_weight: data.data.endpoints[v.id].weight || 0
|
|
};
|
|
|
|
list_endpoint.push(endpoint_item);
|
|
}
|
|
});
|
|
|
|
$.each(data.field_data.devices, function(k, v) {
|
|
if(v.id in data.data.endpoints) {
|
|
endpoint_item = {
|
|
endpoint_type: 'device',
|
|
endpoint_id: v.id,
|
|
endpoint_name: v.name,
|
|
endpoint_weight: data.data.endpoints[v.id].weight || 0
|
|
};
|
|
|
|
list_endpoint.push(endpoint_item);
|
|
}
|
|
});
|
|
|
|
list_endpoint.sort(function(a,b){
|
|
return a.endpoint_weight - b.endpoint_weight;
|
|
});
|
|
|
|
data.data.endpoints = list_endpoint;
|
|
|
|
return data;
|
|
},
|
|
|
|
groupsDefineActions: function(args) {
|
|
var self = this,
|
|
callflow_nodes = args.actions;
|
|
|
|
$.extend(callflow_nodes, {
|
|
'ring_group[]': {
|
|
name: self.i18n.active().oldCallflows.ring_group,
|
|
icon: 'users',
|
|
category: self.i18n.active().oldCallflows.basic_cat,
|
|
module: 'ring_group',
|
|
tip: self.i18n.active().oldCallflows.ring_group_tip,
|
|
data: {
|
|
name: ''
|
|
},
|
|
rules: [
|
|
{
|
|
type: 'quantity',
|
|
maxSize: '1'
|
|
}
|
|
],
|
|
isUsable: 'true',
|
|
weight: 20,
|
|
caption: function(node, caption_map) {
|
|
return node.getMetadata('name') || '';
|
|
},
|
|
edit: function(node, callback) {
|
|
self.groupsEditRingGroup(node, callback);
|
|
}
|
|
},
|
|
'groups': {
|
|
name: self.i18n.active().callflows.groups.title,
|
|
module: 'groups',
|
|
listEntities: function(callback) {
|
|
self.callApi({
|
|
resource: 'group.list',
|
|
data: {
|
|
accountId: self.accountId,
|
|
filters: { paginate:false }
|
|
},
|
|
success: function(data, status) {
|
|
callback && callback(data.data);
|
|
}
|
|
});
|
|
},
|
|
editEntity: 'callflows.groups.edit'
|
|
},
|
|
'page_group[]': {
|
|
name: self.i18n.active().oldCallflows.page_group,
|
|
icon: 'users',
|
|
category: self.i18n.active().oldCallflows.advanced_cat,
|
|
module: 'page_group',
|
|
tip: self.i18n.active().oldCallflows.page_group_tip,
|
|
data: {
|
|
name: ''
|
|
},
|
|
rules: [
|
|
{
|
|
type: 'quantity',
|
|
maxSize: '1'
|
|
}
|
|
],
|
|
isUsable: 'true',
|
|
weight: 30,
|
|
caption: function(node, caption_map) {
|
|
return node.getMetadata('name') || '';
|
|
},
|
|
edit: function(node, callback) {
|
|
self.groupsEditPageGroup(node, callback);
|
|
}
|
|
},
|
|
|
|
/*'eavesdrop[]': {
|
|
name: self.i18n.active().callflows.eavesdrop.name,
|
|
icon: 'headset',
|
|
category: self.i18n.active().oldCallflows.advanced_cat,
|
|
module: 'eavesdrop',
|
|
tip: self.i18n.active().callflows.eavesdrop.tip,
|
|
data: {},
|
|
rules: [
|
|
{
|
|
type: 'quantity',
|
|
maxSize: '1'
|
|
}
|
|
],
|
|
isUsable: 'true',
|
|
weight: 48,
|
|
caption: function(node) {
|
|
return '';
|
|
},
|
|
edit: function(node, callback) {
|
|
self.groupsGetEndpoints(function(formattedData) {
|
|
var popup, popup_html;
|
|
|
|
popup_html = $(monster.template(self, 'misc-eavesdrop', {
|
|
fieldData: formattedData,
|
|
data: {
|
|
'selectedId': node.getMetadata('device_id') || node.getMetadata('user_id') || '',
|
|
'approvedId': node.getMetadata('approved_device_id') || node.getMetadata('approved_user_id') || node.getMetadata('approved_group_id') || ''
|
|
}
|
|
}));
|
|
|
|
monster.ui.tooltips(popup_html);
|
|
|
|
$('#add', popup_html).click(function() {
|
|
var setData = function(field, value) {
|
|
if (value === 'endpoint_empty') {
|
|
node.deleteMetadata('user_id');
|
|
node.deleteMetadata('device_id');
|
|
} else if (value === 'approved_empty') {
|
|
node.deleteMetadata('approved_user_id');
|
|
node.deleteMetadata('approved_group_id');
|
|
node.deleteMetadata('approved_device_id');
|
|
} else {
|
|
node.setMetadata(field, value);
|
|
}
|
|
};
|
|
|
|
var endpointField = $('#endpoint_selector option:selected').data('type') + '_id',
|
|
endpointVal = $('#endpoint_selector option:selected').val(),
|
|
approvedEndpointField = 'approved_' + $('#approved_endpoint_selector option:selected').data('type') + '_id',
|
|
approvedEndpointVal = $('#approved_endpoint_selector option:selected').val();
|
|
|
|
setData(endpointField, endpointVal);
|
|
setData(approvedEndpointField, approvedEndpointVal);
|
|
|
|
popup.dialog('close');
|
|
});
|
|
|
|
popup = monster.ui.dialog(popup_html, {
|
|
title: self.i18n.active().callflows.eavesdrop.title,
|
|
beforeClose: function() {
|
|
if (typeof callback === 'function') {
|
|
callback();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
},*/
|
|
|
|
/*'intercept[]': {
|
|
name: self.i18n.active().callflows.intercept.name,
|
|
icon: 'uturn_arrow',
|
|
category: self.i18n.active().oldCallflows.advanced_cat,
|
|
module: 'intercept',
|
|
tip: self.i18n.active().callflows.intercept.tip,
|
|
data: {},
|
|
rules: [
|
|
{
|
|
type: 'quantity',
|
|
maxSize: '1'
|
|
}
|
|
],
|
|
isUsable: 'true',
|
|
weight: 48,
|
|
caption: function(node) {
|
|
return '';
|
|
},
|
|
edit: function(node, callback) {
|
|
self.groupsGetEndpoints(function(formattedData) {
|
|
var popup, popup_html;
|
|
|
|
popup_html = $(monster.template(self, 'misc-intercept', {
|
|
fieldData: formattedData,
|
|
data: {
|
|
'selectedId': node.getMetadata('device_id') || node.getMetadata('user_id') || '',
|
|
'approvedId': node.getMetadata('approved_device_id') || node.getMetadata('approved_user_id') || node.getMetadata('approved_group_id') || ''
|
|
}
|
|
}));
|
|
|
|
monster.ui.tooltips(popup_html);
|
|
|
|
$('#add', popup_html).click(function() {
|
|
var setData = function(field, value) {
|
|
if (value === 'endpoint_empty') {
|
|
node.deleteMetadata('user_id');
|
|
node.deleteMetadata('device_id');
|
|
} else if (value === 'approved_empty') {
|
|
node.deleteMetadata('approved_user_id');
|
|
node.deleteMetadata('approved_group_id');
|
|
node.deleteMetadata('approved_device_id');
|
|
} else {
|
|
node.setMetadata(field, value);
|
|
}
|
|
};
|
|
|
|
var endpointField = $('#endpoint_selector option:selected').data('type') + '_id',
|
|
endpointVal = $('#endpoint_selector option:selected').val(),
|
|
approvedEndpointField = 'approved_' + $('#approved_endpoint_selector option:selected').data('type') + '_id',
|
|
approvedEndpointVal = $('#approved_endpoint_selector option:selected').val();
|
|
|
|
setData(endpointField, endpointVal);
|
|
setData(approvedEndpointField, approvedEndpointVal);
|
|
|
|
popup.dialog('close');
|
|
});
|
|
|
|
popup = monster.ui.dialog(popup_html, {
|
|
title: self.i18n.active().callflows.intercept.title,
|
|
beforeClose: function() {
|
|
if (typeof callback === 'function') {
|
|
callback();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
}
|
|
},*/
|
|
|
|
'ring_group_toggle[action=login]': {
|
|
name: self.i18n.active().callflows.ringGroupToggle.loginTitle,
|
|
icon: 'users',
|
|
category: self.i18n.active().callflows.ringGroupToggle.category,
|
|
module: 'ring_group_toggle',
|
|
tip: self.i18n.active().callflows.ringGroupToggle.loginTip,
|
|
data: {
|
|
action: 'login',
|
|
callflow_id: 'null'
|
|
},
|
|
rules: [
|
|
{
|
|
type: 'quantity',
|
|
maxSize: '1'
|
|
}
|
|
],
|
|
isUsable: 'true',
|
|
weight: 1,
|
|
caption: function(node, caption_map) {
|
|
var id = node.getMetadata('callflow_id'),
|
|
return_value = '';
|
|
|
|
if (id in caption_map) {
|
|
if (caption_map[id].hasOwnProperty('name')) {
|
|
return_value = caption_map[id].name;
|
|
} else if (caption_map[id].hasOwnProperty('numbers')) {
|
|
return_value = caption_map[id].numbers.toString();
|
|
}
|
|
}
|
|
|
|
return return_value;
|
|
},
|
|
edit: function(node, callback) {
|
|
self.callApi({
|
|
resource: 'callflow.list',
|
|
data: {
|
|
accountId: self.accountId,
|
|
filters: { paginate: false }
|
|
},
|
|
success: function(data, status) {
|
|
var popup, popup_html, _data = [];
|
|
|
|
$.each(data.data, function() {
|
|
if (!this.featurecode && this.id !== self.flow.id) {
|
|
this.name = this.name ? this.name : ((this.numbers) ? this.numbers.toString() : self.i18n.active().oldCallflows.no_numbers);
|
|
|
|
_data.push(this);
|
|
}
|
|
});
|
|
|
|
popup_html = $(monster.template(self, 'groups-ring_group_login_dialog', {
|
|
objects: {
|
|
type: 'callflow',
|
|
items: _.sortBy(_data, 'name'),
|
|
selected: node.getMetadata('callflow_id') || ''
|
|
}
|
|
}));
|
|
|
|
$('#add', popup_html).click(function() {
|
|
node.setMetadata('callflow_id', $('#object-selector', popup_html).val());
|
|
|
|
node.caption = $('#object-selector option:selected', popup_html).text();
|
|
|
|
popup.dialog('close');
|
|
});
|
|
|
|
popup = monster.ui.dialog(popup_html, {
|
|
title: self.i18n.active().oldCallflows.callflow_title,
|
|
beforeClose: function() {
|
|
if (typeof callback === 'function') {
|
|
callback();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
'ring_group_toggle[action=logout]': {
|
|
name: self.i18n.active().callflows.ringGroupToggle.logoutTitle,
|
|
icon: 'users',
|
|
category: self.i18n.active().callflows.ringGroupToggle.category,
|
|
module: 'ring_group_toggle',
|
|
tip: self.i18n.active().callflows.ringGroupToggle.logoutTip,
|
|
data: {
|
|
action: 'logout',
|
|
callflow_id: 'null'
|
|
},
|
|
rules: [
|
|
{
|
|
type: 'quantity',
|
|
maxSize: '1'
|
|
}
|
|
],
|
|
isUsable: 'true',
|
|
weight: 2,
|
|
caption: function(node, caption_map) {
|
|
var id = node.getMetadata('callflow_id'),
|
|
return_value = '';
|
|
|
|
if (id in caption_map) {
|
|
if (caption_map[id].hasOwnProperty('name')) {
|
|
return_value = caption_map[id].name;
|
|
} else if (caption_map[id].hasOwnProperty('numbers')) {
|
|
return_value = caption_map[id].numbers.toString();
|
|
}
|
|
}
|
|
|
|
return return_value;
|
|
},
|
|
edit: function(node, callback) {
|
|
self.callApi({
|
|
resource: 'callflow.list',
|
|
data: {
|
|
accountId: self.accountId,
|
|
filters: { paginate: false }
|
|
},
|
|
success: function(data, status) {
|
|
var popup, popup_html, _data = [];
|
|
|
|
$.each(data.data, function() {
|
|
if (!this.featurecode && this.id !== self.flow.id) {
|
|
this.name = this.name ? this.name : ((this.numbers) ? this.numbers.toString() : self.i18n.active().oldCallflows.no_numbers);
|
|
|
|
_data.push(this);
|
|
}
|
|
});
|
|
|
|
popup_html = $(monster.template(self, 'groups-ring_group_logout_dialog', {
|
|
objects: {
|
|
type: 'callflow',
|
|
items: _.sortBy(_data, 'name'),
|
|
selected: node.getMetadata('callflow_id') || ''
|
|
}
|
|
}));
|
|
|
|
$('#add', popup_html).click(function() {
|
|
node.setMetadata('callflow_id', $('#object-selector', popup_html).val());
|
|
|
|
node.caption = $('#object-selector option:selected', popup_html).text();
|
|
|
|
popup.dialog('close');
|
|
});
|
|
|
|
popup = monster.ui.dialog(popup_html, {
|
|
title: self.i18n.active().oldCallflows.callflow_title,
|
|
beforeClose: function() {
|
|
if (typeof callback === 'function') {
|
|
callback();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
}
|
|
}
|
|
});
|
|
},
|
|
|
|
groupsGetEndpoints: function(callback) {
|
|
var self = this;
|
|
|
|
monster.parallel({
|
|
'group': function(callback) {
|
|
self.groupsGroupList(function(data) {
|
|
callback(null, data);
|
|
});
|
|
},
|
|
'user': function(callback) {
|
|
self.groupsUserList(function(data) {
|
|
callback(null, data);
|
|
});
|
|
},
|
|
'device': function(callback) {
|
|
self.groupsDeviceList(function(data) {
|
|
callback(null, data);
|
|
});
|
|
}
|
|
}, function(err, results) {
|
|
var data = self.groupsFormatEndpoints(results);
|
|
|
|
callback(data);
|
|
});
|
|
},
|
|
|
|
groupsFormatEndpoints: function(data) {
|
|
_.each(data.user, function(user) {
|
|
user.name = user.first_name + ' ' + user.last_name;
|
|
});
|
|
|
|
return data;
|
|
},
|
|
|
|
groupsEditPageGroup: function(node, callback) {
|
|
var self = this;
|
|
|
|
self.groupsDeviceList(function(data) {
|
|
var popup, popup_html, index, endpoints,
|
|
selected_endpoints = {},
|
|
unselected_endpoints = [],
|
|
unselected_groups = [],
|
|
unselected_devices = [],
|
|
unselected_users = [];
|
|
|
|
if(endpoints = node.getMetadata('endpoints')) {
|
|
// We need to translate the endpoints to prevent nasty O(N^2) time complexities,
|
|
// we also need to clone to prevent managing of objects
|
|
$.each($.extend(true, {}, endpoints), function(i, obj) {
|
|
obj.name = 'Undefined Device';
|
|
selected_endpoints[obj.id] = obj;
|
|
});
|
|
}
|
|
|
|
$.each(data, function(i, obj) {
|
|
obj.endpoint_type = 'device';
|
|
if(obj.id in selected_endpoints) {
|
|
selected_endpoints[obj.id].endpoint_type = 'device';
|
|
selected_endpoints[obj.id].owner_id = obj.owner_id;
|
|
selected_endpoints[obj.id].name = obj.name;
|
|
}
|
|
else {
|
|
unselected_devices.push(obj);
|
|
}
|
|
});
|
|
|
|
unselected_devices = _.sortBy(unselected_devices, 'name');
|
|
|
|
self.groupsGroupList(function(_data) {
|
|
$.each(_data, function(i, obj) {
|
|
obj.endpoint_type = 'group';
|
|
if(obj.id in selected_endpoints) {
|
|
selected_endpoints[obj.id].endpoint_type = 'group',
|
|
selected_endpoints[obj.id].name = obj.name;
|
|
}
|
|
else {
|
|
unselected_groups.push(obj);
|
|
}
|
|
});
|
|
|
|
unselected_groups = _.sortBy(unselected_groups, 'name');
|
|
|
|
self.groupsUserList(function(_data) {
|
|
$.each(_data, function(i, obj) {
|
|
obj.name = obj.first_name + ' ' + obj.last_name;
|
|
obj.endpoint_type = 'user';
|
|
if(obj.id in selected_endpoints) {
|
|
selected_endpoints[obj.id].endpoint_type = 'user',
|
|
selected_endpoints[obj.id].name = obj.name;
|
|
}
|
|
else {
|
|
unselected_users.push(obj);
|
|
}
|
|
});
|
|
unselected_users = _.sortBy(unselected_users, 'name');
|
|
|
|
popup_html = $(monster.template(self, 'groups-page_group_dialog', {
|
|
form: {
|
|
name: node.getMetadata('name') || '',
|
|
audio: node.getMetadata('audio') || 'one-way'
|
|
}
|
|
}));
|
|
$.each(unselected_groups, function() {
|
|
$('#groups_pane .connect.left', popup_html).append($(monster.template(self, 'groups-page_group_element', this)));
|
|
});
|
|
|
|
$.each(unselected_devices, function() {
|
|
$('#devices_pane .connect.left', popup_html).append($(monster.template(self, 'groups-page_group_element', this)));
|
|
});
|
|
|
|
$.each(unselected_users, function() {
|
|
$('#users_pane .connect.left', popup_html).append($(monster.template(self, 'groups-page_group_element', this)));
|
|
});
|
|
|
|
$.each(selected_endpoints, function() {
|
|
//Check if user/device exists.
|
|
if(this.endpoint_type) {
|
|
$('.connect.right', popup_html).append($(monster.template(self, 'groups-page_group_element', this)));
|
|
}
|
|
});
|
|
|
|
$('#name', popup_html).bind('keyup blur change', function() {
|
|
$('.column.right .title', popup_html).html('Page Group - ' + $(this).val());
|
|
});
|
|
|
|
$('ul.settings1 > li > a', popup_html).click(function(item) {
|
|
$('.pane_content', popup_html).hide();
|
|
|
|
//Reset Search field
|
|
$('.searchfield', popup_html).val('');
|
|
$('.column.left li', popup_html).show();
|
|
|
|
$('ul.settings1 > li', popup_html).removeClass('current');
|
|
|
|
var tab_id = $(this).attr('id');
|
|
|
|
if(tab_id === 'users_tab_link') {
|
|
$('#users_pane', popup_html).show();
|
|
}
|
|
else if(tab_id === 'devices_tab_link') {
|
|
$('#devices_pane', popup_html).show();
|
|
}
|
|
else if(tab_id === 'groups_tab_link') {
|
|
$('#groups_pane', popup_html).show();
|
|
}
|
|
|
|
$(this).parent().addClass('current');
|
|
});
|
|
|
|
$('.searchsubmit2', popup_html).click(function() {
|
|
$('.searchfield', popup_html).val('');
|
|
$('.column li', popup_html).show();
|
|
});
|
|
|
|
$('#devices_pane .searchfield', popup_html).keyup(function() {
|
|
$('#devices_pane .column.left li').each(function() {
|
|
if($('.item_name', $(this)).html().toLowerCase().indexOf($('#devices_pane .searchfield', popup_html).val().toLowerCase()) == -1) {
|
|
$(this).hide();
|
|
}
|
|
else {
|
|
$(this).show();
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#users_pane .searchfield', popup_html).keyup(function() {
|
|
$('#users_pane .column.left li').each(function() {
|
|
if($('.item_name', $(this)).html().toLowerCase().indexOf($('#users_pane .searchfield', popup_html).val().toLowerCase()) == -1) {
|
|
$(this).hide();
|
|
}
|
|
else {
|
|
$(this).show();
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#groups_pane .searchfield', popup_html).keyup(function() {
|
|
$('#groups_pane .column.left li').each(function() {
|
|
if($('.item_name', $(this)).html().toLowerCase().indexOf($('#groups_pane .searchfield', popup_html).val().toLowerCase()) == -1) {
|
|
$(this).hide();
|
|
}
|
|
else {
|
|
$(this).show();
|
|
}
|
|
});
|
|
});
|
|
|
|
if($.isEmptyObject(selected_endpoints)) {
|
|
$('.column.right .connect', popup_html).addClass('no_element');
|
|
}
|
|
else {
|
|
$('.column.right .connect', popup_html).removeClass('no_element');
|
|
}
|
|
|
|
$('.column.left .options', popup_html).hide();
|
|
$('.column.left .actions', popup_html).hide();
|
|
|
|
$('.options .option.delay', popup_html).bind('keyup', function() {
|
|
$(this).parents('li').data('delay', $(this).val());
|
|
});
|
|
|
|
$('.options .option.timeout', popup_html).bind('keyup', function() {
|
|
$(this).parents('li').data('timeout', $(this).val());
|
|
});
|
|
|
|
$('#save_ring_group', popup_html).click(function() {
|
|
var name = $('#name', popup_html).val();
|
|
var audio = $('#audio', popup_html).val();
|
|
|
|
endpoints = [];
|
|
|
|
$('.right .connect li', popup_html).each(function() {
|
|
var item_data = $(this).data();
|
|
delete item_data.owner_id;
|
|
endpoints.push(item_data);
|
|
});
|
|
|
|
node.setMetadata('endpoints', endpoints);
|
|
node.setMetadata('name', name);
|
|
node.setMetadata('audio', audio);
|
|
|
|
node.caption = name;
|
|
|
|
popup.dialog('close');
|
|
});
|
|
|
|
popup = monster.ui.dialog(popup_html, {
|
|
title: self.i18n.active().oldCallflows.page_group_title,
|
|
beforeClose: function() {
|
|
if(typeof callback == 'function') {
|
|
callback();
|
|
}
|
|
}
|
|
});
|
|
|
|
// $('.scrollable', popup).jScrollPane({
|
|
// horizontalDragMinWidth: 0,
|
|
// horizontalDragMaxWidth: 0
|
|
// });
|
|
|
|
$('.connect', popup).sortable({
|
|
connectWith: $('.connect.right', popup),
|
|
zIndex: 2000,
|
|
helper: 'clone',
|
|
appendTo: $('.wrapper', popup),
|
|
scroll: false,
|
|
tolerance: 'pointer',
|
|
receive: function(ev, ui) {
|
|
var data = ui.item[0].dataset,
|
|
list_li = [],
|
|
confirm_text;
|
|
|
|
if(data.endpoint_type === 'device') {
|
|
confirm_text = self.i18n.active().oldCallflows.the_owner_of_this_device_is_already;
|
|
$('.connect.right li', popup_html).each(function() {
|
|
if($(this).data('id') === data.owner_id) {
|
|
list_li.push($(this));
|
|
}
|
|
});
|
|
}
|
|
else if(data.endpoint_type === 'user') {
|
|
confirm_text = self.i18n.active().oldCallflows.this_user_has_already_some_devices;
|
|
$('.connect.right li', popup_html).each(function() {
|
|
if($(this).data('owner_id') === data.id) {
|
|
list_li.push($(this));
|
|
}
|
|
});
|
|
}
|
|
|
|
if(list_li.length > 0) {
|
|
monster.ui.confirm(confirm_text,
|
|
function() {
|
|
$.each(list_li, function() {
|
|
remove_element(this);
|
|
});
|
|
},
|
|
function() {
|
|
remove_element(ui.item);
|
|
}
|
|
);
|
|
}
|
|
|
|
if($(this).hasClass('right')) {
|
|
$('.options', ui.item).show();
|
|
$('.actions', ui.item).show();
|
|
//$('.item_name', ui.item).addClass('right');
|
|
$('.column.right .connect', popup).removeClass('no_element');
|
|
}
|
|
}
|
|
});
|
|
|
|
$(popup_html).delegate('.trash', 'click', function() {
|
|
var $parent_li = $(this).parents('li').first();
|
|
remove_element($parent_li);
|
|
});
|
|
|
|
$('.pane_content', popup_html).hide();
|
|
$('#users_pane', popup_html).show();
|
|
|
|
var remove_element = function(li) {
|
|
var $parent_li = li;
|
|
var data = $parent_li.data();
|
|
data.name = jQuery.trim($('.item_name', $parent_li).html());
|
|
$('#'+data.endpoint_type+'s_pane .connect.left', popup_html).append($(monster.template(self, 'groups-page_group_element', data)));
|
|
$parent_li.remove();
|
|
|
|
if($('.connect.right li', popup_html).size() == 0) {
|
|
$('.column.right .connect', popup).addClass('no_element');
|
|
}
|
|
|
|
if(data.name.toLowerCase().indexOf($('#'+data.endpoint_type+'s_pane .searchfield', popup_html).val().toLowerCase()) == -1) {
|
|
$('#'+data.id, popup_html).hide();
|
|
}
|
|
};
|
|
});
|
|
});
|
|
});
|
|
},
|
|
|
|
groupsEditRingGroup: function(node, callback) {
|
|
var self = this,
|
|
default_timeout = '20',
|
|
default_delay = '0';
|
|
|
|
self.groupsDeviceList(function(data) {
|
|
var popup, popup_html, index, endpoints,
|
|
selected_endpoints = {},
|
|
unselected_endpoints = [],
|
|
unselected_groups = [],
|
|
unselected_devices = [],
|
|
unselected_users = [];
|
|
|
|
if(endpoints = node.getMetadata('endpoints')) {
|
|
// We need to translate the endpoints to prevent nasty O(N^2) time complexities,
|
|
// we also need to clone to prevent managing of objects
|
|
$.each($.extend(true, {}, endpoints), function(i, obj) {
|
|
obj.name = self.i18n.active().oldCallflows.undefined_device;
|
|
selected_endpoints[obj.id] = obj;
|
|
});
|
|
}
|
|
|
|
$.each(data, function(i, obj) {
|
|
obj.endpoint_type = 'device';
|
|
if(obj.id in selected_endpoints) {
|
|
selected_endpoints[obj.id].endpoint_type = 'device';
|
|
selected_endpoints[obj.id].owner_id = obj.owner_id;
|
|
selected_endpoints[obj.id].name = obj.name;
|
|
}
|
|
else {
|
|
obj.delay = default_delay;
|
|
obj.timeout = default_timeout;
|
|
unselected_devices.push(obj);
|
|
}
|
|
});
|
|
|
|
unselected_devices = _.sortBy(unselected_devices, 'name');
|
|
|
|
self.groupsGroupList(function(_data) {
|
|
$.each(_data, function(i, obj) {
|
|
obj.endpoint_type = 'group';
|
|
if(obj.id in selected_endpoints) {
|
|
selected_endpoints[obj.id].endpoint_type = 'group',
|
|
selected_endpoints[obj.id].name = obj.name;
|
|
}
|
|
else {
|
|
obj.delay = default_delay;
|
|
obj.timeout = default_timeout;
|
|
unselected_groups.push(obj);
|
|
}
|
|
});
|
|
|
|
unselected_groups = _.sortBy(unselected_groups, 'name');
|
|
|
|
self.groupsUserList(function(_data, status) {
|
|
$.each(_data, function(i, obj) {
|
|
obj.name = obj.first_name + ' ' + obj.last_name;
|
|
obj.endpoint_type = 'user';
|
|
if(obj.id in selected_endpoints) {
|
|
selected_endpoints[obj.id].endpoint_type = 'user',
|
|
selected_endpoints[obj.id].name = obj.name;
|
|
}
|
|
else {
|
|
obj.delay = default_delay;
|
|
obj.timeout = default_timeout;
|
|
unselected_users.push(obj);
|
|
}
|
|
});
|
|
|
|
unselected_users = _.sortBy(unselected_users, 'name');
|
|
|
|
self.groupsMediaList(function(_data) {
|
|
var media_array = _data.sort(function(a, b) {
|
|
return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1;
|
|
}),
|
|
mediaId = node.getMetadata('ringback') || 'default',
|
|
isShoutcast = mediaId.indexOf('://') >= 0 && mediaId !== 'silence_stream://300000';
|
|
|
|
popup_html = $(monster.template(self, 'groups-ring_group_dialog', {
|
|
form: {
|
|
name: node.getMetadata('name') || '',
|
|
strategy: {
|
|
items: [
|
|
{
|
|
id: 'simultaneous',
|
|
name: self.i18n.active().oldCallflows.at_the_same_time
|
|
},
|
|
{
|
|
id: 'single',
|
|
name: self.i18n.active().oldCallflows.in_order
|
|
}
|
|
],
|
|
selected: node.getMetadata('strategy') || 'simultaneous'
|
|
},
|
|
timeout: node.getMetadata('timeout') || '30',
|
|
repeats: node.getMetadata('repeats') || 1,
|
|
ringback: {
|
|
items: $.merge([
|
|
{
|
|
id: 'default',
|
|
name: self.i18n.active().oldCallflows.default,
|
|
class: 'uneditable'
|
|
},
|
|
{
|
|
id: 'silence_stream://300000',
|
|
name: self.i18n.active().oldCallflows.silence,
|
|
class: 'uneditable'
|
|
},
|
|
{
|
|
id: 'shoutcast_url',
|
|
name: self.i18n.active().callflows.media.shoutcastURL,
|
|
class: 'uneditable'
|
|
}
|
|
], media_array),
|
|
selected: isShoutcast ? 'shoutcast_url' : mediaId,
|
|
shoutcastValue: mediaId
|
|
}
|
|
}
|
|
}));
|
|
$.each(unselected_groups, function() {
|
|
$('#groups_pane .connect.left', popup_html).append($(monster.template(self, 'groups-ring_group_element', this)));
|
|
});
|
|
|
|
$.each(unselected_devices, function() {
|
|
$('#devices_pane .connect.left', popup_html).append($(monster.template(self, 'groups-ring_group_element', this)));
|
|
});
|
|
|
|
$.each(unselected_users, function() {
|
|
$('#users_pane .connect.left', popup_html).append($(monster.template(self, 'groups-ring_group_element', this)));
|
|
});
|
|
|
|
$.each(selected_endpoints, function() {
|
|
//Check if user/device exists.
|
|
if(this.endpoint_type) {
|
|
$('.connect.right', popup_html).append($(monster.template(self, 'groups-ring_group_element', this)));
|
|
}
|
|
});
|
|
|
|
$('#name', popup_html).bind('keyup blur change', function() {
|
|
$('.column.right .title', popup_html).html(self.i18n.active().oldCallflows.ring_group_val + $(this).val());
|
|
});
|
|
|
|
$('#ringback', popup_html).change(function(e) {
|
|
var val = $(this).val(),
|
|
isShoutcast = val === 'shoutcast_url';
|
|
|
|
popup_html.find('.shoutcast-div').toggleClass('hidden', !isShoutcast).find('input').val('');
|
|
|
|
if ($(this).find('option:selected').hasClass('uneditable')) {
|
|
|
|
$('.media_action[data-action="edit"]', popup_html).hide();
|
|
} else {
|
|
$('.media_action[data-action="edit"]', popup_html).show();
|
|
}
|
|
});
|
|
|
|
$('.media_action', popup_html).click(function(e) {
|
|
var isCreation = $(this).data('action') === 'create',
|
|
mediaData = isCreation ? {} : { id: $('#ringback', popup_html).val() };
|
|
|
|
monster.pub('callflows.media.editPopup', {
|
|
data: mediaData,
|
|
callback: function(_mediaData) {
|
|
if (_mediaData) {
|
|
if (isCreation) {
|
|
$('#ringback', popup_html).append('<option value="' + _mediaData.id + '">' + _mediaData.name + '</option>');
|
|
} else {
|
|
$('#ringback option[value="' + _mediaData.id + '"]', popup_html).text(_mediaData.name);
|
|
}
|
|
$('#ringback', popup_html).val(_mediaData.id);
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
$('ul.settings1 > li > a', popup_html).click(function(item) {
|
|
$('.pane_content', popup_html).hide();
|
|
|
|
//Reset Search field
|
|
$('.searchfield', popup_html).val('');
|
|
$('.column.left li', popup_html).show();
|
|
|
|
$('ul.settings1 > li', popup_html).removeClass('current');
|
|
|
|
var tab_id = $(this).attr('id');
|
|
|
|
if(tab_id === 'users_tab_link') {
|
|
$('#users_pane', popup_html).show();
|
|
}
|
|
else if(tab_id === 'devices_tab_link') {
|
|
$('#devices_pane', popup_html).show();
|
|
}
|
|
else if(tab_id === 'groups_tab_link') {
|
|
$('#groups_pane', popup_html).show();
|
|
}
|
|
|
|
$(this).parent().addClass('current');
|
|
});
|
|
|
|
$('.searchsubmit2', popup_html).click(function() {
|
|
$('.searchfield', popup_html).val('');
|
|
$('.column li', popup_html).show();
|
|
});
|
|
|
|
$('#devices_pane .searchfield', popup_html).keyup(function() {
|
|
$('#devices_pane .column.left li').each(function() {
|
|
if($('.item_name', $(this)).html().toLowerCase().indexOf($('#devices_pane .searchfield', popup_html).val().toLowerCase()) == -1) {
|
|
$(this).hide();
|
|
}
|
|
else {
|
|
$(this).show();
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#users_pane .searchfield', popup_html).keyup(function() {
|
|
$('#users_pane .column.left li').each(function() {
|
|
if($('.item_name', $(this)).html().toLowerCase().indexOf($('#users_pane .searchfield', popup_html).val().toLowerCase()) == -1) {
|
|
$(this).hide();
|
|
}
|
|
else {
|
|
$(this).show();
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#groups_pane .searchfield', popup_html).keyup(function() {
|
|
$('#groups_pane .column.left li').each(function() {
|
|
if($('.item_name', $(this)).html().toLowerCase().indexOf($('#groups_pane .searchfield', popup_html).val().toLowerCase()) == -1) {
|
|
$(this).hide();
|
|
}
|
|
else {
|
|
$(this).show();
|
|
}
|
|
});
|
|
});
|
|
|
|
if($.isEmptyObject(selected_endpoints)) {
|
|
$('.column.right .connect', popup_html).addClass('no_element');
|
|
}
|
|
else {
|
|
$('.column.right .connect', popup_html).removeClass('no_element');
|
|
}
|
|
|
|
$('.column.left .options', popup_html).hide();
|
|
$('.column.left .actions', popup_html).hide();
|
|
|
|
$('.options .option.delay', popup_html).bind('keyup', function() {
|
|
$(this).parents('li').data('delay', $(this).val());
|
|
});
|
|
|
|
$('.options .option.timeout', popup_html).bind('keyup', function() {
|
|
$(this).parents('li').data('timeout', $(this).val());
|
|
});
|
|
|
|
$('#save_ring_group', popup_html).click(function() {
|
|
var name = $('#name', popup_html).val(),
|
|
global_timeout = 0,
|
|
strategy = $('#strategy', popup_html).val(),
|
|
ringback = $('#ringback', popup_html).val(),
|
|
repeats = $('#repeats', popup_html).val(),
|
|
shoutcastValue = $('.shoutcast-url-input', popup_html).val();
|
|
|
|
if (ringback === 'shoutcast_url') {
|
|
ringback = shoutcastValue;
|
|
}
|
|
|
|
endpoints = [];
|
|
|
|
if(strategy === 'simultaneous') {
|
|
var computeTimeout = function(delay, local_timeout, global_timeout) {
|
|
var duration = delay + local_timeout;
|
|
|
|
if(duration > global_timeout) {
|
|
global_timeout = duration;
|
|
}
|
|
|
|
return global_timeout;
|
|
}
|
|
}
|
|
else {
|
|
var computeTimeout = function(delay, local_timeout, global_timeout) {
|
|
global_timeout += delay + local_timeout;
|
|
|
|
return global_timeout;
|
|
}
|
|
}
|
|
|
|
$('.right .connect li', popup_html).each(function() {
|
|
var item_data = $(this).data();
|
|
delete item_data.owner_id;
|
|
endpoints.push(item_data);
|
|
global_timeout = computeTimeout(parseFloat(item_data.delay), parseFloat(item_data.timeout), global_timeout);
|
|
});
|
|
|
|
if (repeats < 1) {
|
|
repeats = 1;
|
|
}
|
|
|
|
node.setMetadata('endpoints', endpoints);
|
|
node.setMetadata('name', name);
|
|
node.setMetadata('strategy', strategy);
|
|
node.setMetadata('timeout', global_timeout);
|
|
node.setMetadata('repeats', repeats);
|
|
if(ringback === 'default') {
|
|
node.deleteMetadata('ringback', ringback);
|
|
} else {
|
|
node.setMetadata('ringback', ringback);
|
|
}
|
|
|
|
node.caption = name;
|
|
|
|
popup.dialog('close');
|
|
});
|
|
|
|
monster.ui.tooltips(popup_html);
|
|
|
|
popup = monster.ui.dialog(popup_html, {
|
|
title: self.i18n.active().oldCallflows.ring_group,
|
|
beforeClose: function() {
|
|
if(typeof callback == 'function') {
|
|
callback();
|
|
}
|
|
}
|
|
});
|
|
|
|
// $('.scrollable', popup).jScrollPane({
|
|
// horizontalDragMinWidth: 0,
|
|
// horizontalDragMaxWidth: 0
|
|
// });
|
|
|
|
$('.connect', popup).sortable({
|
|
connectWith: $('.connect.right', popup),
|
|
zIndex: 2000,
|
|
helper: 'clone',
|
|
appendTo: $('.wrapper', popup),
|
|
scroll: false,
|
|
tolerance: 'pointer',
|
|
receive: function(ev, ui) {
|
|
var data = ui.item[0].dataset,
|
|
list_li = [],
|
|
confirm_text;
|
|
|
|
if(data.endpoint_type === 'device') {
|
|
confirm_text = self.i18n.active().oldCallflows.the_owner_of_this_device_is_already;
|
|
$('.connect.right li', popup_html).each(function() {
|
|
if($(this).data('id') === data.owner_id) {
|
|
list_li.push($(this));
|
|
}
|
|
});
|
|
}
|
|
else if(data.endpoint_type === 'user') {
|
|
confirm_text = self.i18n.active().oldCallflows.this_user_has_already_some_devices;
|
|
$('.connect.right li', popup_html).each(function() {
|
|
if($(this).data('owner_id') === data.id) {
|
|
list_li.push($(this));
|
|
}
|
|
});
|
|
}
|
|
|
|
if(list_li.length > 0) {
|
|
monster.ui.confirm(confirm_text,
|
|
function() {
|
|
$.each(list_li, function() {
|
|
remove_element(this);
|
|
});
|
|
},
|
|
function() {
|
|
remove_element(ui.item);
|
|
}
|
|
);
|
|
}
|
|
|
|
if($(this).hasClass('right')) {
|
|
$('.options', ui.item).show();
|
|
$('.actions', ui.item).show();
|
|
//$('.item_name', ui.item).addClass('right');
|
|
$('.column.right .connect', popup).removeClass('no_element');
|
|
}
|
|
}
|
|
});
|
|
|
|
$(popup_html).delegate('.trash', 'click', function() {
|
|
var $parent_li = $(this).parents('li').first();
|
|
remove_element($parent_li);
|
|
});
|
|
|
|
$('.pane_content', popup_html).hide();
|
|
$('#users_pane', popup_html).show();
|
|
if($('#ringback option:selected').hasClass('uneditable')) {
|
|
$('.media_action[data-action="edit"]', popup_html).hide();
|
|
} else {
|
|
$('.media_action[data-action="edit"]', popup_html).show();
|
|
}
|
|
|
|
var remove_element = function(li) {
|
|
var $parent_li = li;
|
|
var data = $parent_li.data();
|
|
data.name = jQuery.trim($('.item_name', $parent_li).html());
|
|
$('#'+data.endpoint_type+'s_pane .connect.left', popup_html).append($(monster.template(self, 'groups-ring_group_element', data)));
|
|
$parent_li.remove();
|
|
|
|
if($('.connect.right li', popup_html).size() == 0) {
|
|
$('.column.right .connect', popup).addClass('no_element');
|
|
}
|
|
|
|
if(data.name.toLowerCase().indexOf($('#'+data.endpoint_type+'s_pane .searchfield', popup_html).val().toLowerCase()) == -1) {
|
|
$('#'+data.id, popup_html).hide();
|
|
}
|
|
};
|
|
});
|
|
});
|
|
});
|
|
});
|
|
},
|
|
|
|
groupsDeviceList: function(callback) {
|
|
var self = this;
|
|
|
|
self.callApi({
|
|
resource: 'device.list',
|
|
data: {
|
|
accountId: self.accountId,
|
|
filters: { paginate:false }
|
|
},
|
|
success: function(data, status) {
|
|
callback && callback(data.data);
|
|
}
|
|
});
|
|
},
|
|
|
|
groupsGroupList: function(callback) {
|
|
var self = this;
|
|
|
|
self.callApi({
|
|
resource: 'group.list',
|
|
data: {
|
|
accountId: self.accountId,
|
|
filters: { paginate:false }
|
|
},
|
|
success: function(data, status) {
|
|
callback && callback(data.data);
|
|
}
|
|
});
|
|
},
|
|
|
|
groupsUserList: function(callback) {
|
|
var self = this;
|
|
|
|
self.callApi({
|
|
resource: 'user.list',
|
|
data: {
|
|
accountId: self.accountId,
|
|
filters: { paginate:false }
|
|
},
|
|
success: function(data, status) {
|
|
callback && callback(data.data);
|
|
}
|
|
});
|
|
},
|
|
|
|
groupsMediaList: function(callback) {
|
|
var self = this;
|
|
|
|
self.callApi({
|
|
resource: 'media.list',
|
|
data: {
|
|
accountId: self.accountId,
|
|
filters: { paginate:false }
|
|
},
|
|
success: function(data, status) {
|
|
callback && callback(data.data);
|
|
}
|
|
});
|
|
},
|
|
|
|
groupsNormalizeData: function(form_data) {
|
|
delete form_data.users;
|
|
return form_data;
|
|
},
|
|
|
|
groupsSave: function(form_data, data, success, error) {
|
|
var self = this,
|
|
normalized_data = self.groupsNormalizeData($.extend(true, {}, data.data, form_data));
|
|
|
|
if (typeof data.data === 'object' && data.data.id) {
|
|
self.callApi({
|
|
resource: 'group.update',
|
|
data: {
|
|
accountId: self.accountId,
|
|
groupId: data.data.id,
|
|
data: normalized_data
|
|
},
|
|
success: function(_data) {
|
|
success(_data.data, status, 'update');
|
|
}
|
|
});
|
|
}
|
|
else {
|
|
self.callApi({
|
|
resource: 'group.create',
|
|
data: {
|
|
accountId: self.accountId,
|
|
data: normalized_data
|
|
},
|
|
success: function(_data) {
|
|
success(_data.data, status, 'create');
|
|
}
|
|
});
|
|
}
|
|
},
|
|
|
|
groupsDelete: function(data, callback) {
|
|
var self = this;
|
|
|
|
if(typeof data.data == 'object' && data.data.id) {
|
|
self.callApi({
|
|
resource: 'group.delete',
|
|
data: {
|
|
accountId: self.accountId,
|
|
groupId: data.data.id
|
|
},
|
|
success: function(_data) {
|
|
callback && callback(_data, status);
|
|
}
|
|
});
|
|
}
|
|
}
|
|
};
|
|
|
|
return app;
|
|
});
|