diff --git a/.eslintrc.js b/.eslintrc.js index b02df9a0d..a9273a4f9 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -50,6 +50,12 @@ module.exports = { 'semi': [ 'error', 'always' + ], + 'no-unused-vars': [ + 'error', + { + 'vars': 'local' + } ] }, 'globals': { @@ -58,7 +64,103 @@ module.exports = { '_': false, 'd3': false, 'humanize': false, - // Rockstor internal globals + // Rockstor internal Globals - Backbone models.jslibs + 'Setup': true, + 'Disk': true, + 'DiskCollection': true, + 'Pool': true, + 'SmartInfo': true, + 'PoolCollection': true, + 'SupportCase': true, + 'SupportCaseCollection': true, + 'Share': true, + 'PoolShare': true, + 'PoolShareCollection': true, + 'ShareCollection': true, + 'Image': true, + 'ImageCollection': true, + 'Container': true, + 'ContainerCollection': true, + 'Snapshot': true, + 'SnapshotCollection': true, + 'Snapshots': true, + 'SnapshotsCollection': true, + 'Poolscrub': true, + 'PoolscrubCollection': true, + 'PoolRebalance': true, + 'PoolRebalanceCollection': true, + 'SysInfo': true, + 'NFSExport': true, + 'NFSExportCollection': true, + 'NFSExportGroup': true, + 'NFSExportGroupCollection': true, + 'SMBShare': true, + 'SMBShareCollection': true, + 'SambaCollection': true, + 'Service': true, + 'ServiceCollection': true, + 'Appliance': true, + 'ApplianceCollection': true, + 'User': true, + 'UserCollection': true, + 'Group': true, + 'GroupCollection': true, + 'ISCSITarget': true, + 'DashboardConfig': true, + 'Probe': true, + 'ProbeCollection': true, + 'NetworkDevice': true, + 'NetworkDeviceCollection': true, + 'NetworkConnection': true, + 'NetworkConnectionCollection': true, + 'ProbeRun': true, + 'ProbeRunCollection': true, + 'ProbeTemplate': true, + 'ProbeTemplateCollection': true, + 'Replica': true, + 'ReplicaCollection': true, + 'ReplicaTrail': true, + 'ReplicaTrailCollection': true, + 'ReplicaShare': true, + 'ReplicaShareCollection': true, + 'ReceiveTrail': true, + 'ReceiveTrailCollection': true, + 'TaskDef': true, + 'TaskDefCollection': true, + 'Task': true, + 'TaskCollection': true, + 'SFTP': true, + 'SFTPCollection': true, + 'AFP': true, + 'AFPCollection': true, + 'ReplicaReceive': true, + 'ReplicaReceiveCollection': true, + 'ReplicaReceiveTrail': true, + 'ReplicaReceiveTrailCollection': true, + 'AdvancedNFSExport': true, + 'AdvancedNFSExportCollection': true, + 'AccessKey': true, + 'AccessKeyCollection': true, + 'Certificate': true, + 'ConfigBackup': true, + 'ConfigBackupCollection': true, + 'RockOn': true, + 'RockOnCollection': true, + 'RockOnVolume': true, + 'RockOnVolumeCollection': true, + 'RockOnPort': true, + 'RockOnPortCollection': true, + 'RockOnCustomConfig': true, + 'RockOnCustomConfigCollection': true, + 'RockOnEnvironment': true, + 'RockOnEnvironmentCollection': true, + 'EmailAccount': true, + 'EmailAccountCollection': true, + 'UpdateSubscription': true, + 'UpdateSubscriptionCollection': true, + 'RockStorPaginatedCollection': true, + 'RockStorWidgets': true, + // Rockstor internal Globals 'displayUsagePieChart': true } -}; +}; \ No newline at end of file diff --git a/src/rockstor/storageadmin/static/storageadmin/js/models/models.js b/src/rockstor/storageadmin/static/storageadmin/js/models/models.js index fe239cc9e..56fe83874 100644 --- a/src/rockstor/storageadmin/static/storageadmin/js/models/models.js +++ b/src/rockstor/storageadmin/static/storageadmin/js/models/models.js @@ -28,13 +28,13 @@ var Setup = Backbone.Model.extend({}); var Disk = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/disks/' + this.get('diskName'); }, - available: function () { + available: function() { return _.isNull(this.get('pool')) && !this.get('parted') && !this.get('offline') && _.isNull(this.get('btrfs_uuid')); }, - isSerialUsable: function () { + isSerialUsable: function() { // Simple disk serial validator to return true unless the given disk // serial number looks fake or untrustworthy. // In the case of a repeat or missing serial scan_disks() will use a @@ -58,22 +58,22 @@ var DiskCollection = RockStorPaginatedCollection.extend({ }); var Pool = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/pools/' + this.get('poolName') + '/'; }, - sizeGB: function () { + sizeGB: function() { return this.get('size') / (1024 * 1024); }, - freeGB: function () { + freeGB: function() { return this.get('free') / (1024 * 1024); }, - usedGB: function () { + usedGB: function() { return (this.get('size') - this.get('free')) / (1024 * 1024); } }); var SmartInfo = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/disks/smart/info/' + this.get('diskName'); } }); @@ -84,7 +84,7 @@ var PoolCollection = RockStorPaginatedCollection.extend({ }); var SupportCase = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/support/' + this.get('supportCaseId') + '/'; } }); @@ -95,14 +95,14 @@ var SupportCaseCollection = Backbone.Collection.extend({ }); var Share = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/shares/' + this.get('shareName'); } }); var PoolShare = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/pools/' + this.get('poolName'); } }); @@ -112,7 +112,7 @@ var PoolShareCollection = Backbone.Collection.extend({ initialize: function(model, options) { this.options = options; }, - url: function () { + url: function() { return '/api/pools/' + this.options.poolName + '/shares'; } }); @@ -120,7 +120,7 @@ var PoolShareCollection = Backbone.Collection.extend({ var ShareCollection = RockStorPaginatedCollection.extend({ model: Share, baseUrl: '/api/shares', - extraParams: function () { + extraParams: function() { var p = this.constructor.__super__.extraParams.apply(this, arguments); p['sortby'] = 'name'; return p; @@ -128,7 +128,7 @@ var ShareCollection = RockStorPaginatedCollection.extend({ }); var Image = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/rockons/'; } }); @@ -139,7 +139,7 @@ var ImageCollection = RockStorPaginatedCollection.extend({ }); var Container = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/rockons/'; } }); @@ -150,23 +150,23 @@ var ContainerCollection = RockStorPaginatedCollection.extend({ }); var Snapshot = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/shares/' + this.get('shareName') + '/' + this.get('snapName'); } }); var SnapshotCollection = RockStorPaginatedCollection.extend({ model: Snapshot, - initialize: function (models, options) { + initialize: function(models, options) { this.constructor.__super__.initialize.apply(this, arguments); if (options) { this.snapType = options.snapType; } }, - setUrl: function (shareName) { + setUrl: function(shareName) { this.baseUrl = '/api/shares/' + shareName + '/snapshots'; }, - extraParams: function () { + extraParams: function() { var p = this.constructor.__super__.extraParams.apply(this, arguments); p['snap_type'] = this.snapType; return p; @@ -184,23 +184,23 @@ var SnapshotsCollection = RockStorPaginatedCollection.extend({ var Poolscrub = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/pools/' + this.get('poolName') + '/scrub'; } }); var PoolscrubCollection = RockStorPaginatedCollection.extend({ model: Poolscrub, - initialize: function (models, options) { + initialize: function(models, options) { this.constructor.__super__.initialize.apply(this, arguments); if (options) { this.snapType = options.snapType; } }, - setUrl: function (poolName) { + setUrl: function(poolName) { this.baseUrl = '/api/pools/' + poolName + '/scrub'; }, - extraParams: function () { + extraParams: function() { var p = this.constructor.__super__.extraParams.apply(this, arguments); p['snap_type'] = this.snapType; return p; @@ -208,23 +208,23 @@ var PoolscrubCollection = RockStorPaginatedCollection.extend({ }); var PoolRebalance = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/pools/' + this.get('poolName') + '/balance'; } }); var PoolRebalanceCollection = RockStorPaginatedCollection.extend({ model: PoolRebalance, - initialize: function (models, options) { + initialize: function(models, options) { this.constructor.__super__.initialize.apply(this, arguments); if (options) { this.snapType = options.snapType; } }, - setUrl: function (poolName) { + setUrl: function(poolName) { this.baseUrl = '/api/pools/' + poolName + '/balance'; }, - extraParams: function () { + extraParams: function() { var p = this.constructor.__super__.extraParams.apply(this, arguments); p['snap_type'] = this.snapType; return p; @@ -232,14 +232,14 @@ var PoolRebalanceCollection = RockStorPaginatedCollection.extend({ }); var SysInfo = Backbone.Model.extend({ - url: "/api/tools/sysinfo" + url: '/api/tools/sysinfo' }); var NFSExport = Backbone.Model.extend(); var NFSExportCollection = RockStorPaginatedCollection.extend({ model: NFSExport, - setUrl: function (shareName) { + setUrl: function(shareName) { this.baseUrl = '/api/shares/' + shareName + '/nfs'; } }); @@ -254,7 +254,7 @@ var NFSExportGroupCollection = RockStorPaginatedCollection.extend({ }); var SMBShare = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/shares/' + this.get('shareName') + '/samba'; } }); @@ -270,16 +270,18 @@ var SambaCollection = RockStorPaginatedCollection.extend({ }); var Service = Backbone.Model.extend({ - idAttribute: "name", - urlRoot: "/api/sm/services" + idAttribute: 'name', + urlRoot: '/api/sm/services' }); var ServiceCollection = RockStorPaginatedCollection.extend({ model: Service, - baseUrl: "/api/sm/services/" + baseUrl: '/api/sm/services/' }); -var Appliance = Backbone.Model.extend({urlRoot: '/api/appliances'}); +var Appliance = Backbone.Model.extend({ + urlRoot: '/api/appliances' +}); var ApplianceCollection = RockStorPaginatedCollection.extend({ model: Appliance, baseUrl: '/api/appliances' @@ -306,43 +308,45 @@ var GroupCollection = RockStorPaginatedCollection.extend({ }); var ISCSITarget = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/shares/' + this.get('shareName') + '/iscsi/'; } }); var DashboardConfig = Backbone.Model.extend({ url: '/api/dashboardconfig', - setConfig: function (wConfigs) { + setConfig: function(wConfigs) { var tmp = []; - _.each(wConfigs, function (wConfig) { + _.each(wConfigs, function(wConfig) { tmp.push({ name: wConfig.name, position: wConfig.position, maximized: wConfig.maximized }); }); - this.set({widgets: JSON.stringify(tmp)}); + this.set({ + widgets: JSON.stringify(tmp) + }); }, - getConfig: function () { + getConfig: function() { if (!_.isUndefined(this.get('widgets')) && !_.isNull(this.get('widgets'))) { return JSON.parse(this.get('widgets')); } this.setConfig(RockStorWidgets.defaultWidgets()); - return JSON.parse(this.get("widgets")); + return JSON.parse(this.get('widgets')); } }); var Probe = Backbone.Model.extend({ - urlRoot: function () { + urlRoot: function() { return '/api/sm/sprobes/' + this.get('name') + '/'; }, - dataUrl: function () { + dataUrl: function() { return '/api/sm/sprobes/' + this.get('name') + '/' + this.id + '/data'; }, - parse: function (response) { + parse: function(response) { if (response.results && response.results.length > 0) { return response.results[0]; } @@ -352,15 +356,15 @@ var Probe = Backbone.Model.extend({ var ProbeCollection = Backbone.Collection.extend({ model: Probe, - initialize: function (models, options) { + initialize: function(models, options) { if (!_.isUndefined(options) && !_.isNull(options)) { this.name = options.name; } }, - url: function () { + url: function() { return '/api/sm/sprobes/' + this.name + '/'; }, - parse: function (response) { + parse: function(response) { return response.results; } }); @@ -385,34 +389,36 @@ var NetworkConnectionCollection = RockStorPaginatedCollection.extend({ }); var ProbeRun = Backbone.Model.extend({ - dataUrl: function () { + dataUrl: function() { return '/api/sm/sprobes/' + this.get('name') + '/' + this.id + '/data?format=json'; }, - downloadUrl: function () { - return "/api/sm/sprobes/" + this.get("name") + "/" + this.id - + "/data" + "?" - + "t1=" + this.get("start") + "&t2=" + this.get("end") - + "&download=true"; + downloadUrl: function() { + return '/api/sm/sprobes/' + this.get('name') + '/' + this.id + + '/data' + '?' + + 't1=' + this.get('start') + '&t2=' + this.get('end') + + '&download=true'; } }); var ProbeRunCollection = RockStorPaginatedCollection.extend({ model: ProbeRun, - baseUrl: "/api/sm/sprobes/metadata" + baseUrl: '/api/sm/sprobes/metadata' }); -var ProbeTemplate = Backbone.Model.extend({idAttribute: "uuid"}); +var ProbeTemplate = Backbone.Model.extend({ + idAttribute: 'uuid' +}); var ProbeTemplateCollection = Backbone.Collection.extend({ model: ProbeTemplate, - url: "/api/sm/sprobes/?format=json" + url: '/api/sm/sprobes/?format=json' }); var Replica = Backbone.Model.extend({ - urlRoot: "/api/sm/replicas" + urlRoot: '/api/sm/replicas' }); var ReplicaCollection = RockStorPaginatedCollection.extend({ model: Replica, - baseUrl: "/api/sm/replicas/" + baseUrl: '/api/sm/replicas/' }); var ReplicaTrail = Backbone.Model.extend({ @@ -421,13 +427,13 @@ var ReplicaTrail = Backbone.Model.extend({ var ReplicaTrailCollection = RockStorPaginatedCollection.extend({ model: ReplicaTrail, - initialize: function (models, options) { + initialize: function(models, options) { this.constructor.__super__.initialize.apply(this, arguments); if (options) { this.replicaId = options.replicaId; } }, - baseUrl: function () { + baseUrl: function() { if (this.replicaId) { return '/api/sm/replicas/trail/replica/' + this.replicaId; } @@ -450,13 +456,13 @@ var ReceiveTrail = Backbone.Model.extend({ var ReceiveTrailCollection = RockStorPaginatedCollection.extend({ model: ReceiveTrail, - initialize: function (models, options) { + initialize: function(models, options) { this.constructor.__super__.initialize.apply(this, arguments); if (options) { this.replicaShareId = options.replicaShareId; } }, - baseUrl: function () { + baseUrl: function() { if (this.replicaShareId) { return '/api/sm/replicas/rtrail/rshare/' + this.replicaShareId; } @@ -465,38 +471,38 @@ var ReceiveTrailCollection = RockStorPaginatedCollection.extend({ }); var TaskDef = Backbone.Model.extend({ - urlRoot: "/api/sm/tasks/", - max_count: function () { + urlRoot: '/api/sm/tasks/', + max_count: function() { if (this.get('json_meta') != null) { return JSON.parse(this.get('json_meta')).max_count; } return 0; }, - share: function () { + share: function() { if (this.get('json_meta') != null) { return JSON.parse(this.get('json_meta')).share; } return ''; }, - prefix: function () { + prefix: function() { if (this.get('json_meta') != null) { return JSON.parse(this.get('json_meta')).prefix; } return ''; }, - pool: function () { + pool: function() { if (this.get('json_meta') != null) { return JSON.parse(this.get('json_meta')).pool; } return ''; }, - visible: function () { + visible: function() { if (this.get('json_meta') != null) { return JSON.parse(this.get('json_meta')).visible; } return false; }, - writable: function () { + writable: function() { if (this.get('json_meta') != null) { return JSON.parse(this.get('json_meta')).writable; } @@ -507,22 +513,22 @@ var TaskDef = Backbone.Model.extend({ var TaskDefCollection = RockStorPaginatedCollection.extend({ model: TaskDef, - baseUrl: "/api/sm/tasks/" + baseUrl: '/api/sm/tasks/' }); var Task = Backbone.Model.extend({ - urlRoot: "/api/sm/tasks/log" + urlRoot: '/api/sm/tasks/log' }); var TaskCollection = RockStorPaginatedCollection.extend({ model: Task, - initialize: function (models, options) { + initialize: function(models, options) { this.constructor.__super__.initialize.apply(this, arguments); if (options) { this.taskDefId = options.taskDefId; } }, - baseUrl: function () { + baseUrl: function() { if (this.taskDefId) { return '/api/sm/tasks/log/taskdef/' + this.taskDefId; } @@ -551,33 +557,33 @@ var AFPCollection = RockStorPaginatedCollection.extend({ var ReplicaReceive = Backbone.Model.extend({ - urlRoot: "/api/sm/replicareceives" + urlRoot: '/api/sm/replicareceives' }); var ReplicaReceiveCollection = RockStorPaginatedCollection.extend({ model: ReplicaReceive, - baseUrl: "/api/sm/replicareceives" + baseUrl: '/api/sm/replicareceives' }); var ReplicaReceiveTrail = Backbone.Model.extend({ - urlRoot: "/api/sm/replicareceivetrail" + urlRoot: '/api/sm/replicareceivetrail' }); var ReplicaReceiveTrailCollection = RockStorPaginatedCollection.extend({ model: ReplicaReceiveTrail, - baseUrl: "/api/sm/replicareceivetrai" + baseUrl: '/api/sm/replicareceivetrai' }); var AdvancedNFSExport = Backbone.Model.extend(); var AdvancedNFSExportCollection = RockStorPaginatedCollection.extend({ model: AdvancedNFSExport, - baseUrl: "/api/adv-nfs-exports" + baseUrl: '/api/adv-nfs-exports' }); var AccessKey = Backbone.Model.extend({ - url: function () { + url: function() { return '/api/oauth_app'; } }); @@ -615,13 +621,13 @@ var RockOnVolume = Backbone.Model.extend({ var RockOnVolumeCollection = RockStorPaginatedCollection.extend({ model: RockOnVolume, - initialize: function (models, options) { + initialize: function(models, options) { this.constructor.__super__.initialize.apply(this, arguments); if (options) { this.rid = options.rid; } }, - baseUrl: function () { + baseUrl: function() { if (this.rid) { return '/api/rockons/volumes/' + this.rid; } @@ -635,13 +641,13 @@ var RockOnPort = Backbone.Model.extend({ var RockOnPortCollection = RockStorPaginatedCollection.extend({ model: RockOnPort, - initialize: function (models, options) { + initialize: function(models, options) { this.constructor.__super__.initialize.apply(this, arguments); if (options) { this.rid = options.rid; } }, - baseUrl: function () { + baseUrl: function() { if (this.rid) { return '/api/rockons/ports/' + this.rid; } @@ -655,13 +661,13 @@ var RockOnCustomConfig = Backbone.Model.extend({ var RockOnCustomConfigCollection = RockStorPaginatedCollection.extend({ model: RockOnCustomConfig, - initialize: function (models, options) { + initialize: function(models, options) { this.constructor.__super__.initialize.apply(this, arguments); if (options) { this.rid = options.rid; } }, - baseUrl: function () { + baseUrl: function() { if (this.rid) { return '/api/rockons/customconfig/' + this.rid; } @@ -675,13 +681,13 @@ var RockOnEnvironment = Backbone.Model.extend({ var RockOnEnvironmentCollection = RockStorPaginatedCollection.extend({ model: RockOnEnvironment, - initialize: function (models, options) { + initialize: function(models, options) { this.constructor.__super__.initialize.apply(this, arguments); if (options) { this.rid = options.rid; } }, - baseUrl: function () { + baseUrl: function() { if (this.rid) { return '/api/rockons/environment/' + this.rid; }