diff --git a/submodules/devices/devices.js b/submodules/devices/devices.js index cf2304a..81305cf 100644 --- a/submodules/devices/devices.js +++ b/submodules/devices/devices.js @@ -179,15 +179,30 @@ define(function(require) { return _.isEmpty(types) ? null : types; }, + /** + * @param {Object} args + * @param {Object} args.data + * @param {Boolean} [args.allowAssign] + * @param {Function} [args.callbackSave] + * @param {Function} [args.callbackDelete] + */ devicesRenderEdit: function(args) { var self = this, data = args.data, + allowAssign = _.get(args, 'allowAssign'), callbackSave = args.callbackSave, callbackDelete = args.callbackDelete || function(device) { self.devicesRender(); }; self.devicesGetEditData(data, function(dataDevice) { + var renderDeviceArgs = { + data: dataDevice, + allowAssign: allowAssign, + callbackSave: callbackSave, + callbackDelete: callbackDelete + }; + if (dataDevice.hasOwnProperty('provision')) { self.devicesGetIterator(dataDevice.provision, function(template) { var keyTypes = self.getKeyTypes(template); @@ -263,23 +278,32 @@ define(function(require) { dataDevice.extra = _.has(dataDevice, 'extra') ? _.merge({}, dataDevice.extra, extra) : extra; - self.devicesRenderDevice(dataDevice, callbackSave, callbackDelete); + self.devicesRenderDevice(_.merge({}, renderDeviceArgs, { + data: dataDevice + })); } }); } else { - self.devicesRenderDevice(dataDevice, callbackSave, callbackDelete); + self.devicesRenderDevice(renderDeviceArgs); } }, function() { - self.devicesRenderDevice(dataDevice, callbackSave, callbackDelete); + self.devicesRenderDevice(renderDeviceArgs); }); } else { - self.devicesRenderDevice(dataDevice, callbackSave, callbackDelete); + self.devicesRenderDevice(renderDeviceArgs); } }); }, + /** + * @param {Object} args + * @param {Boolean} [args.allowAssign] + * @param {String} args.type + * @param {Function} args.callback + */ devicesRenderAdd: function(args) { var self = this, + allowAssign = _.get(args, 'allowAssign'), type = args.type, callback = args.callback, data = { @@ -304,6 +328,7 @@ define(function(require) { }, callbackMissingBrand: function() { self.devicesRenderEdit({ + allowAssign: allowAssign, data: data, callbackSave: function(dataDevice) { callback && callback(dataDevice); @@ -313,6 +338,7 @@ define(function(require) { }); } else { self.devicesRenderEdit({ + allowAssign: allowAssign, data: data, callbackSave: function(dataDevice) { callback && callback(dataDevice); @@ -321,8 +347,18 @@ define(function(require) { } }, - devicesRenderDevice: function(data, callbackSave, callbackDelete) { + /** + * @param {Object} args.data + * @param {Boolean} [args.allowAssign=true] + * @param {Function} [args.callbackSave] + * @param {Function} [args.callbackDelete] + */ + devicesRenderDevice: function(args) { var self = this, + data = _.get(args, 'data'), + isAssignAllowed = !!_.get(args, 'allowAssign', true), + callbackSave = _.get(args, 'callbackSave'), + callbackDelete = _.get(args, 'callbackDelete'), mode = data.id ? 'edit' : 'add', type = data.device_type, popupTitle = mode === 'edit' @@ -348,7 +384,9 @@ define(function(require) { submodule: 'devices' })); - deviceForm.find('.tabs-section[data-section="basic"]').append(assignTemplate); + if (isAssignAllowed) { + deviceForm.find('.tabs-section[data-section="basic"]').append(assignTemplate); + } if (data.extra.hasOwnProperty('provision') && data.extra.provision.hasOwnProperty('keys')) { _.each(data.extra.provision.keys, function(value) { diff --git a/submodules/users/users.js b/submodules/users/users.js index e4d4fda..6fd38fb 100644 --- a/submodules/users/users.js +++ b/submodules/users/users.js @@ -1160,6 +1160,7 @@ define(function(require) { type = $this.data('type'); monster.pub('voip.devices.renderAdd', { + allowAssign: false, type: type, callback: function(device) { var rowDevice = $(self.getTemplate({ @@ -1242,6 +1243,7 @@ define(function(require) { userId = $(this).parents('.grid-row').data('id'); monster.pub('voip.devices.editDevice', { + allowAssign: false, data: { id: id }, callbackSave: function(device) { row.find('.edit-device').html(device.name);