Browse Source

refactored User Groups to use two separate callflows

4.3
Maxime Roux 11 years ago
parent
commit
1d85cdaa85
3 changed files with 235 additions and 300 deletions
  1. +234
    -279
      submodules/groups/groups.js
  2. +0
    -20
      views/groups-members.html
  3. +1
    -1
      views/groups-row.html

+ 234
- 279
submodules/groups/groups.js View File

@ -8,95 +8,6 @@ define(function(require){
var app = { var app = {
requests: { requests: {
/* Groups */
'voip.groups.listGroups': {
url: 'accounts/{accountId}/groups',
verb: 'GET'
},
'voip.groups.getGroup': {
url: 'accounts/{accountId}/groups/{groupId}',
verb: 'GET'
},
'voip.groups.createGroup': {
url: 'accounts/{accountId}/groups',
verb: 'PUT'
},
'voip.groups.updateGroup': {
url: 'accounts/{accountId}/groups/{groupId}',
verb: 'POST'
},
'voip.groups.deleteGroup': {
url: 'accounts/{accountId}/groups/{groupId}',
verb: 'DELETE'
},
/* Users */
'voip.groups.listUsers': {
url: 'accounts/{accountId}/users',
verb: 'GET'
},
/* Callflows */
'voip.groups.listRingGroups': {
url: 'accounts/{accountId}/callflows?has_key=group_id',
verb: 'GET'
},
'voip.groups.listUserCallflows': {
url: 'accounts/{accountId}/callflows?has_key=owner_id&key_missing=type',
verb: 'GET'
},
'voip.groups.listMainCallflows': {
url: 'accounts/{accountId}/callflows?filter_type=main',
verb: 'GET'
},
'voip.groups.getCallflows': {
url: 'accounts/{accountId}/callflows/',
verb: 'GET'
},
'voip.groups.createCallflow': {
url: 'accounts/{accountId}/callflows',
verb: 'PUT'
},
'voip.groups.listGroupCallflows': {
url: 'accounts/{accountId}/callflows?filter_group_id={groupId}',
verb: 'GET'
},
'voip.groups.getCallflow': {
url: 'accounts/{accountId}/callflows/{callflowId}',
verb: 'GET'
},
'voip.groups.updateCallflow': {
url: 'accounts/{accountId}/callflows/{callflowId}',
verb: 'POST'
},
'voip.groups.deleteCallflow': {
url: 'accounts/{accountId}/callflows/{callflowId}',
verb: 'DELETE'
},
/* Misc */
'voip.groups.getNumbers': {
url: 'accounts/{accountId}/phone_numbers/',
verb: 'GET'
},
'voip.groups.listMedia': {
url: 'accounts/{accountId}/media?key_missing=type',
verb: 'GET'
},
'voip.groups.createMedia': {
url: 'accounts/{accountId}/media',
verb: 'PUT'
},
'voip.groups.deleteMedia': {
url: 'accounts/{accountId}/media/{mediaId}',
verb: 'DELETE'
},
'voip.groups.uploadMedia': {
url: 'accounts/{accountId}/media/{mediaId}/raw',
verb: 'POST',
type: 'application/x-base64'
},
'voip.groups.listVMBoxes': {
url: 'accounts/{accountId}/vmboxes',
verb: 'GET'
}
}, },
subscribe: { subscribe: {
@ -163,33 +74,37 @@ define(function(require){
_.each(data.callflows, function(callflow) { _.each(data.callflows, function(callflow) {
if(callflow.group_id in mapGroups) { if(callflow.group_id in mapGroups) {
var listExtensions = [],
listNumbers = [];
if(callflow.type === 'userGroup') {
var listExtensions = [],
listNumbers = [];
_.each(callflow.numbers, function(number) {
number.length < 7 ? listExtensions.push(number) : listNumbers.push(number);
});
_.each(callflow.numbers, function(number) {
number.length < 7 ? listExtensions.push(number) : listNumbers.push(number);
});
mapGroups[callflow.group_id].extra.listCallerId = [];
mapGroups[callflow.group_id].extra.listCallerId = [];
if(listExtensions.length > 0) {
mapGroups[callflow.group_id].extra.extension = listExtensions[0];
if(listExtensions.length > 0) {
mapGroups[callflow.group_id].extra.extension = listExtensions[0];
_.each(listExtensions, function(number) {
mapGroups[callflow.group_id].extra.listCallerId.push(number);
});
}
mapGroups[callflow.group_id].extra.additionalExtensions = listExtensions.length > 1;
_.each(listExtensions, function(number) {
mapGroups[callflow.group_id].extra.listCallerId.push(number);
});
}
mapGroups[callflow.group_id].extra.additionalExtensions = listExtensions.length > 1;
if(listNumbers.length > 0) {
mapGroups[callflow.group_id].extra.mainNumber = listNumbers[0];
if(listNumbers.length > 0) {
mapGroups[callflow.group_id].extra.mainNumber = listNumbers[0];
_.each(listNumbers, function(number) {
mapGroups[callflow.group_id].extra.listCallerId.push(number);
});
_.each(listNumbers, function(number) {
mapGroups[callflow.group_id].extra.listCallerId.push(number);
});
}
mapGroups[callflow.group_id].extra.additionalNumbers = listNumbers.length > 1;
mapGroups[callflow.group_id].extra.callflowId = callflow.id;
} else if(callflow.type === 'baseGroup') {
mapGroups[callflow.group_id].extra.baseCallflowId = callflow.id;
} }
mapGroups[callflow.group_id].extra.additionalNumbers = listNumbers.length > 1;
mapGroups[callflow.group_id].extra.callflowId = callflow.id;
} }
}); });
@ -325,16 +240,13 @@ define(function(require){
groupTemplate.find('#create_group').on('click', function() { groupTemplate.find('#create_group').on('click', function() {
var formattedData = self.groupsCreationMergeData(data, groupTemplate); var formattedData = self.groupsCreationMergeData(data, groupTemplate);
// if(formattedData.group.name && formattedData.callflow.numbers[0]) {
if(monster.ui.valid(groupForm)) { if(monster.ui.valid(groupForm)) {
self.groupsCreate(formattedData, function(data) { self.groupsCreate(formattedData, function(data) {
popup.dialog('close').remove(); popup.dialog('close').remove();
self.groupsRender({ groupId: data.id }); self.groupsRender({ groupId: data.id });
}); });
}/* else {
monster.ui.alert('error', self.i18n.active().groups.dialogCreationGroup.missingDataAlert)
}*/
}
}); });
groupTemplate.find('#group_user_selector .selected-users, #group_user_selector .available-users').sortable({ groupTemplate.find('#group_user_selector .selected-users, #group_user_selector .available-users').sortable({
@ -394,19 +306,31 @@ define(function(require){
name: formData.name, name: formData.name,
endpoints: listUserGroup endpoints: listUserGroup
}, },
callflow: {
numbers: [ formData.extra.extension ],
name: formData.name + ' Ring Group',
baseCallflow: {
numbers: [ monster.util.randomString(25) ],
name: formData.name + ' Base Group',
flow: { flow: {
module: 'ring_group', module: 'ring_group',
children: {}, children: {},
data: { data: {
name: formData.name + ' Ring Group',
strategy: 'simultaneous', strategy: 'simultaneous',
timeout: parseInt(fixedTimeout) + parseInt(fixedDelay), timeout: parseInt(fixedTimeout) + parseInt(fixedDelay),
endpoints: listUserRingGroup endpoints: listUserRingGroup
} }
}
},
type: 'baseGroup'
},
callflow: {
numbers: [ formData.extra.extension ],
name: formData.name + ' Ring Group',
flow: {
module: 'callflow',
children: {},
data: {
id: ''
}
},
type: 'userGroup'
} }
}; };
@ -660,8 +584,8 @@ define(function(require){
fileReader = new FileReader(); fileReader = new FileReader();
fileReader.onloadend = function(evt) { fileReader.onloadend = function(evt) {
monster.request({
resource: 'voip.groups.createMedia',
self.callApi({
resource: 'media.create',
data: { data: {
accountId: self.accountId, accountId: self.accountId,
data: { data: {
@ -673,8 +597,8 @@ define(function(require){
}, },
success: function(data, status) { success: function(data, status) {
var media = data.data; var media = data.data;
monster.request({
resource: 'voip.groups.uploadMedia',
self.callApi({
resource: 'media.upload',
data: { data: {
accountId: self.accountId, accountId: self.accountId,
mediaId: media.id, mediaId: media.id,
@ -684,8 +608,8 @@ define(function(require){
closeUploadDiv(media); closeUploadDiv(media);
}, },
error: function(data, status) { error: function(data, status) {
monster.request({
resource: 'voip.groups.deleteMedia',
self.callApi({
resource: 'media.delete',
data: { data: {
accountId: self.accountId, accountId: self.accountId,
mediaId: media.id, mediaId: media.id,
@ -1090,11 +1014,11 @@ define(function(require){
template.find('.save-groups').on('click', function() { template.find('.save-groups').on('click', function() {
var endpoints = [], var endpoints = [],
groupId = data.id,
selectedEntity = template.find('.extra-node-select option:selected');
groupId = data.id/*,
selectedEntity = template.find('.extra-node-select option:selected')*/;
_.each(template.find('.group-row:not(.title)'), function(row) {
var $row = $(row),
$.each(template.find('.group-row:not(.title)'), function() {
var $row = $(this),
userId = $row.data('user_id'), userId = $row.data('user_id'),
values = $row.find('.slider-time').slider('values'), values = $row.find('.slider-time').slider('values'),
user = { user = {
@ -1104,16 +1028,15 @@ define(function(require){
endpoint_type: 'user' endpoint_type: 'user'
}; };
endpoints.push(user); endpoints.push(user);
}); });
endpoints.extraNode = {
id: selectedEntity.val(),
module: selectedEntity.data('module')
};
// endpoints.extraNode = {
// id: selectedEntity.val(),
// module: selectedEntity.data('module')
// };
self.groupsUpdateRingGroup(groupId, endpoints, function(data) {
self.groupsUpdateBaseRingGroup(groupId, endpoints, function(data) {
self.groupsRender({ groupId: groupId }); self.groupsRender({ groupId: groupId });
}); });
}); });
@ -1276,8 +1199,8 @@ define(function(require){
groupsListUsers: function(callback) { groupsListUsers: function(callback) {
var self = this; var self = this;
monster.request({
resource: 'voip.groups.listUsers',
self.callApi({
resource: 'user.list',
data: { data: {
accountId: self.accountId accountId: self.accountId
}, },
@ -1384,48 +1307,30 @@ define(function(require){
callflow: function(callbackParallel) { callflow: function(callbackParallel) {
var response = {}; var response = {};
monster.request({
resource: 'voip.groups.getCallflows',
self.callApi({
resource: 'callflow.list',
data: { data: {
accountId: self.accountId
accountId: self.accountId,
filters: {
'filter_group_id': groupId,
'filter_type': 'userGroup'
}
}, },
success: function(callflows) {
response.list = callflows.data;
var callflowId;
$.each(callflows.data, function(k, callflowLoop) {
/* Find Smart PBX Callflow of this group */
if(callflowLoop.group_id === groupId) {
callflowId = callflowLoop.id;
return false;
}
});
if(callflowId) {
monster.request({
resource: 'voip.groups.getCallflow',
data: {
accountId: self.accountId,
callflowId: callflowId
},
success: function(callflow) {
response.groupCallflow = callflow.data;
callbackParallel && callbackParallel(null, response);
}
success: function(data) {
if(data.data.length > 0) {
self.groupsGetCallflow(data.data[0].id, function(callflow) {
response.groupCallflow = callflow;
callbackParallel && callbackParallel(null, response);
}); });
}
else {
callbackParallel && callbackParallel(null, response);
} else {
callbackParallel && callbackParallel(null, null);
} }
} }
}); });
}, },
numbers: function(callbackParallel) { numbers: function(callbackParallel) {
monster.request({
resource: 'voip.groups.getNumbers',
self.callApi({
resource: 'numbers.list',
data: { data: {
accountId: self.accountId accountId: self.accountId
}, },
@ -1446,38 +1351,36 @@ define(function(require){
monster.parallel({ monster.parallel({
users: function(callback) { users: function(callback) {
monster.request({
resource: 'voip.groups.listUsers',
data: {
accountId: self.accountId
},
success: function(data) {
callback(null, data.data);
}
self.groupsListUsers(function(data) {
callback(null, data);
}); });
}, },
group: function(callback) { group: function(callback) {
self.groupsGetGroup(groupId, function(data) { self.groupsGetGroup(groupId, function(data) {
callback(null, data); callback(null, data);
}); });
}, },
callflow: function(callback) {
self.groupsGetRingGroup(groupId, function(data) {
// callflow: function(callback) {
// self.groupsGetRingGroup(groupId, function(data) {
// callback(null, data);
// });
// },
baseCallflow: function(callback) {
self.groupsGetBaseRingGroup(groupId, function(data) {
callback(null, data); callback(null, data);
}); });
},
}/*,
voicemails: function(callback) { voicemails: function(callback) {
self.groupsListVMBoxes(function(data) { self.groupsListVMBoxes(function(data) {
callback(null, data); callback(null, data);
}); });
}, },
mainMenu: function(callback) { mainMenu: function(callback) {
monster.request({
resource: 'voip.groups.listMainCallflows',
self.callApi({
resource: 'callflow.list',
data: { data: {
accountId: self.accountId
accountId: self.accountId,
filters: { 'filter_type':'main' }
}, },
success: function(data) { success: function(data) {
callback(null, data.data && data.data.length > 0 ? _.find(data.data, function(callflow) { return callflow.numbers[0] === "MainOpenHoursMenu" }) : null); callback(null, data.data && data.data.length > 0 ? _.find(data.data, function(callflow) { return callflow.numbers[0] === "MainOpenHoursMenu" }) : null);
@ -1485,16 +1388,20 @@ define(function(require){
}); });
}, },
userCallflows: function(callback) { userCallflows: function(callback) {
monster.request({
resource: 'voip.groups.listUserCallflows',
self.callApi({
resource: 'callflow.list',
data: { data: {
accountId: self.accountId
accountId: self.accountId,
filters: {
'has_key':'owner_id',
'key_missing':'type'
}
}, },
success: function(data) { success: function(data) {
callback(null, data.data); callback(null, data.data);
} }
}); });
}
}*/
}, },
function(err, results) { function(err, results) {
globalCallback && globalCallback(results); globalCallback && globalCallback(results);
@ -1506,39 +1413,33 @@ define(function(require){
groupsFormatMembersData: function(data) { groupsFormatMembersData: function(data) {
var self = this, var self = this,
mapUsers = {}, mapUsers = {},
flow = data.callflow.flow,
flow = data.baseCallflow.flow/*,
callEntities = { callEntities = {
mainMenu: data.mainMenu, mainMenu: data.mainMenu,
voicemails: data.voicemails.sort(function(a,b) { return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1; }), voicemails: data.voicemails.sort(function(a,b) { return a.name.toLowerCase() > b.name.toLowerCase() ? 1 : -1; }),
userCallflows : [] userCallflows : []
};
}*/;
_.each(data.users, function(user) { _.each(data.users, function(user) {
mapUsers[user.id] = user; mapUsers[user.id] = user;
var userCallflow = _.find(data.userCallflows, function(callflow) { return callflow.owner_id === user.id });
if(userCallflow) {
userCallflow.userName = user.first_name + ' ' + user.last_name;
callEntities.userCallflows.push(userCallflow);
}
// var userCallflow = _.find(data.userCallflows, function(callflow) { return callflow.owner_id === user.id });
// if(userCallflow) {
// userCallflow.userName = user.first_name + ' ' + user.last_name;
// callEntities.userCallflows.push(userCallflow);
// }
}); });
callEntities.userCallflows.sort(function(a,b) { return a.userName.toLowerCase() > b.userName.toLowerCase() ? 1 : -1; });
while(flow.module !== 'ring_group' && !_.isEmpty(flow.children)) {
flow = flow.children['_'];
}
// callEntities.userCallflows.sort(function(a,b) { return a.userName.toLowerCase() > b.userName.toLowerCase() ? 1 : -1; });
var endpoints = flow.data.endpoints; var endpoints = flow.data.endpoints;
_.each(endpoints, function(endpoint) { _.each(endpoints, function(endpoint) {
user = mapUsers[endpoint.id];
endpoint.delay = parseInt(endpoint.delay); endpoint.delay = parseInt(endpoint.delay);
endpoint.timeout = parseInt(endpoint.timeout); endpoint.timeout = parseInt(endpoint.timeout);
if(endpoint.id in mapUsers) { if(endpoint.id in mapUsers) {
endpoint.name = user.first_name + ' ' + user.last_name;
endpoint.name = mapUsers[endpoint.id].first_name + ' ' + mapUsers[endpoint.id].last_name;
mapUsers[endpoint.id].inUse = true; mapUsers[endpoint.id].inUse = true;
} else { } else {
endpoint.name = self.i18n.active().groups.userDeleted; endpoint.name = self.i18n.active().groups.userDeleted;
@ -1548,12 +1449,12 @@ define(function(require){
data.group.extra = { data.group.extra = {
ringGroup: endpoints, ringGroup: endpoints,
remainingUsers: mapUsers,
remainingUsers: mapUsers/*,
callEntities: callEntities, callEntities: callEntities,
selectedEntity: flow.children['_'] ? { selectedEntity: flow.children['_'] ? {
id: flow.children['_'].data.id, id: flow.children['_'].data.id,
module: flow.children['_'].module module: flow.children['_'].module
} : null
} : null*/
}; };
return data.group; return data.group;
@ -1631,8 +1532,8 @@ define(function(require){
groupsListCallflows: function(callback) { groupsListCallflows: function(callback) {
var self = this; var self = this;
monster.request({
resource: 'voip.groups.getCallflows',
self.callApi({
resource: 'callflow.list',
data: { data: {
accountId: self.accountId accountId: self.accountId
}, },
@ -1645,10 +1546,11 @@ define(function(require){
groupsListMedias: function(callback) { groupsListMedias: function(callback) {
var self = this; var self = this;
monster.request({
resource: 'voip.groups.listMedia',
self.callApi({
resource: 'media.list',
data: { data: {
accountId: self.accountId
accountId: self.accountId,
filters: { 'key_missing':'type' }
}, },
success: function(medias) { success: function(medias) {
callback && callback(medias.data); callback && callback(medias.data);
@ -1659,8 +1561,8 @@ define(function(require){
groupsListVMBoxes: function(callback) { groupsListVMBoxes: function(callback) {
var self = this; var self = this;
monster.request({
resource: 'voip.groups.listVMBoxes',
self.callApi({
resource: 'voicemail.list',
data: { data: {
accountId: self.accountId accountId: self.accountId
}, },
@ -1673,23 +1575,43 @@ define(function(require){
groupsCreate: function(data, callback) { groupsCreate: function(data, callback) {
var self = this; var self = this;
monster.request({
resource: 'voip.groups.createGroup',
self.callApi({
resource: 'group.create',
data: { data: {
accountId: self.accountId, accountId: self.accountId,
data: data.group data: data.group
}, },
success: function(dataGroup) { success: function(dataGroup) {
data.callflow.group_id = dataGroup.data.id; data.callflow.group_id = dataGroup.data.id;
data.baseCallflow.group_id = dataGroup.data.id;
monster.request({
resource: 'voip.groups.createCallflow',
self.callApi({
resource: 'callflow.create',
data: { data: {
accountId: self.accountId, accountId: self.accountId,
data: data.callflow
data: data.baseCallflow
}, },
success: function(data) {
callback && callback(dataGroup.data);
success: function(dataBaseCallflow) {
data.callflow.flow.data.id = dataBaseCallflow.data.id;
self.callApi({
resource: 'callflow.create',
data: {
accountId: self.accountId,
data: data.callflow
},
success: function(data) {
callback && callback(dataGroup.data);
}
});
},
error: function() {
self.callApi({
resource: 'group.delete',
data: {
accountId: self.accountId,
groupId: dataGroup.data.id
}
});
} }
}); });
} }
@ -1699,23 +1621,49 @@ define(function(require){
groupsGetRingGroup: function(groupId, callback, callbackError) { groupsGetRingGroup: function(groupId, callback, callbackError) {
var self = this; var self = this;
monster.request({
resource: 'voip.groups.listGroupCallflows',
self.callApi({
resource: 'callflow.list',
data: { data: {
groupId: groupId,
accountId: self.accountId
accountId: self.accountId,
filters: {
'filter_group_id': groupId,
'filter_type': 'userGroup'
}
}, },
success: function(data) { success: function(data) {
if(data.data.length > 0) { if(data.data.length > 0) {
monster.request({
resource: 'voip.groups.getCallflow',
data: {
accountId: self.accountId,
callflowId: data.data[0].id
},
success: function(data) {
callback && callback(data.data);
}
self.groupsGetCallflow(data.data[0].id, function(callflow) {
callback && callback(callflow);
});
}
else {
callbackError && callbackError(data);
toastr.error(self.i18n.active().groups.ringGroupMissing);
}
},
error: function(data) {
callbackError && callbackError(data);
}
});
},
groupsGetBaseRingGroup: function(groupId, callback, callbackError) {
var self = this;
self.callApi({
resource: 'callflow.list',
data: {
accountId: self.accountId,
filters: {
'filter_group_id': groupId,
'filter_type': 'baseGroup'
}
},
success: function(data) {
if(data.data.length > 0) {
self.groupsGetCallflow(data.data[0].id, function(callflow) {
callback && callback(callflow);
}); });
} }
else { else {
@ -1746,11 +1694,8 @@ define(function(require){
return globalTimeout; return globalTimeout;
}, },
groupsUpdateRingGroup: function(groupId, endpoints, callback) {
var self = this,
extraNode = endpoints.extraNode;
delete endpoints.extraNode;
groupsUpdateBaseRingGroup: function(groupId, endpoints, callback) {
var self = this;
monster.parallel({ monster.parallel({
group: function(callback) { group: function(callback) {
@ -1788,25 +1733,19 @@ define(function(require){
}); });
}, },
callflow: function(callback) { callflow: function(callback) {
self.groupsGetRingGroup(groupId, function(ringGroup) {
var flow = ringGroup.flow;
while(flow.module !== 'ring_group' && !_.isEmpty(flow.children)) {
flow = flow.children['_'];
}
flow.data.endpoints = endpoints;
flow.data.timeout = self.groupsComputeTimeout(endpoints);
if(extraNode) {
flow.children['_'] = {
data: {
id: extraNode.id
},
module: extraNode.module,
children: {}
}
}
self.groupsGetBaseRingGroup(groupId, function(ringGroup) {
ringGroup.flow.data.endpoints = endpoints;
ringGroup.flow.data.timeout = self.groupsComputeTimeout(endpoints);
// if(extraNode) {
// flow.children['_'] = {
// data: {
// id: extraNode.id
// },
// module: extraNode.module,
// children: {}
// }
// }
self.groupsUpdateCallflow(ringGroup, function(data) { self.groupsUpdateCallflow(ringGroup, function(data) {
callback && callback(null, data); callback && callback(null, data);
@ -1825,8 +1764,8 @@ define(function(require){
delete group.extra; delete group.extra;
monster.request({
resource: 'voip.groups.updateGroup',
self.callApi({
resource: 'group.update',
data: { data: {
accountId: self.accountId, accountId: self.accountId,
groupId: group.id, groupId: group.id,
@ -1843,8 +1782,8 @@ define(function(require){
delete callflow.metadata; delete callflow.metadata;
monster.request({
resource: 'voip.groups.updateCallflow',
self.callApi({
resource: 'callflow.update',
data: { data: {
accountId: self.accountId, accountId: self.accountId,
callflowId: callflow.id, callflowId: callflow.id,
@ -1859,8 +1798,8 @@ define(function(require){
groupsGetGroup: function(groupId, callback) { groupsGetGroup: function(groupId, callback) {
var self = this; var self = this;
monster.request({
resource: 'voip.groups.getGroup',
self.callApi({
resource: 'group.get',
data: { data: {
groupId: groupId, groupId: groupId,
accountId: self.accountId accountId: self.accountId
@ -1876,12 +1815,11 @@ define(function(require){
monster.parallel({ monster.parallel({
group: function(callback) { group: function(callback) {
monster.request({
resource: 'voip.groups.deleteGroup',
self.callApi({
resource: 'group.delete',
data: { data: {
accountId: self.accountId, accountId: self.accountId,
groupId: groupId,
data: {}
groupId: groupId
}, },
success: function(data) { success: function(data) {
callback && callback(null, data.data); callback && callback(null, data.data);
@ -1890,12 +1828,28 @@ define(function(require){
}, },
callflow: function(callback) { callflow: function(callback) {
self.groupsGetRingGroup(groupId, function(data) { self.groupsGetRingGroup(groupId, function(data) {
monster.request({
resource: 'voip.groups.deleteCallflow',
self.callApi({
resource: 'callflow.delete',
data: {
accountId: self.accountId,
callflowId: data.id
},
success: function(data) {
callback && callback(null, data);
}
});
},
function(data) {
callback && callback(null, data);
});
},
baseCallflow: function(callback) {
self.groupsGetBaseRingGroup(groupId, function(data) {
self.callApi({
resource: 'callflow.delete',
data: { data: {
accountId: self.accountId, accountId: self.accountId,
callflowId: data.id,
data: {}
callflowId: data.id
}, },
success: function(data) { success: function(data) {
callback && callback(null, data); callback && callback(null, data);
@ -1916,8 +1870,8 @@ define(function(require){
groupsGetCallflow: function(callflowId, callback) { groupsGetCallflow: function(callflowId, callback) {
var self = this; var self = this;
monster.request({
resource: 'voip.groups.getCallflow',
self.callApi({
resource: 'callflow.get',
data: { data: {
accountId: self.accountId, accountId: self.accountId,
callflowId: callflowId callflowId: callflowId
@ -1933,8 +1887,8 @@ define(function(require){
monster.parallel({ monster.parallel({
groups: function(callback) { groups: function(callback) {
monster.request({
resource: 'voip.groups.listGroups',
self.callApi({
resource: 'group.list',
data: { data: {
accountId: self.accountId accountId: self.accountId
}, },
@ -1944,10 +1898,11 @@ define(function(require){
}); });
}, },
callflows: function(callback) { callflows: function(callback) {
monster.request({
resource: 'voip.groups.listRingGroups',
self.callApi({
resource: 'callflow.list',
data: { data: {
accountId: self.accountId
accountId: self.accountId,
filters: {'has_key':'group_id'}
}, },
success: function(dataCallflows) { success: function(dataCallflows) {
callback(null, dataCallflows.data); callback(null, dataCallflows.data);


+ 0
- 20
views/groups-members.html View File

@ -27,26 +27,6 @@
</div> </div>
{{/each}} {{/each}}
</div> </div>
<div class="extra-node">
<span>{{ i18n.groups.extraNode.label }}</span>
<select class="extra-node-select">
<optgroup label="{{ i18n.groups.extraNode.menu }}">
{{#if extra.callEntities.mainMenu}}
<option value="{{extra.callEntities.mainMenu.id}}" data-module="callflow" {{#compare extra.selectedEntity.id '===' extra.callEntities.mainMenu.id}}selected{{/compare}}>{{ i18n.groups.extraNode.mainMenu }}</option>
{{/if}}
</optgroup>
<optgroup label="{{ i18n.groups.extraNode.voicemails }}">
{{#each extra.callEntities.voicemails}}
<option value="{{id}}" data-module="voicemail" {{#compare ../extra.selectedEntity.id '===' id}}selected{{/compare}}>{{name}}</option>
{{/each}}
</optgroup>
<optgroup label="{{ i18n.groups.extraNode.users }}">
{{#each extra.callEntities.userCallflows}}
<option value="{{id}}" data-module="callflow" {{#compare ../extra.selectedEntity.id '===' id}}selected{{/compare}}>{{userName}}</option>
{{/each}}
</optgroup>
</select>
</div>
<div class="actions"> <div class="actions">
<ul class="pull-left add-user-dropdown"> <ul class="pull-left add-user-dropdown">
<li class="dropdown"> <li class="dropdown">


+ 1
- 1
views/groups-row.html View File

@ -1,4 +1,4 @@
<div class="grid-row" data-id="{{id}}" data-search="{{name}} {{#each extra.listCallerId}}{{this}} {{formatPhoneNumber this}} {{/each}}" data-callflow_id="{{extra.callflowId}}" data-name="{{name}}">
<div class="grid-row" data-id="{{id}}" data-search="{{name}} {{#each extra.listCallerId}}{{this}} {{formatPhoneNumber this}} {{/each}}" data-callflow_id="{{extra.callflowId}}" data-base_callflow_id="{{extra.baseCallflowId}}" data-name="{{name}}">
<div class="groups-cells"> <div class="groups-cells">
<div class="name grid-cell" data-type="name">{{ name }}</div> <div class="name grid-cell" data-type="name">{{ name }}</div>
<div class="members grid-cell" data-type="members">{{ endpoints }}</div> <div class="members grid-cell" data-type="members">{{ endpoints }}</div>


Loading…
Cancel
Save