'use strict'; define( [ 'backgrid', 'moment', 'Shared/FormatHelpers' ], function (Backgrid, Moment, FormatHelpers) { return Backgrid.Cell.extend({ className: 'episode-status-cell', render: function () { this.$el.empty(); if (this.model) { var icon; var tooltip; var hasAired = Moment(this.model.get('airDateUtc')).isBefore(Moment()); var hasFile = this.model.get('hasFile'); if (hasFile) { var episodeFile = this.model.get('episodeFile'); var quality = episodeFile.quality; var size = FormatHelpers.bytes(episodeFile.size); var title = 'Episode downloaded'; if (quality.proper) { title += ' [PROPER] - {0}'.format(size); this.$el.html('{1}'.format(title, quality.quality.name)); } else { title += ' - {0}'.format(size); this.$el.html('{1}'.format(title, quality.quality.name)); } return this; } else { if (this.model.get('downloading')) { icon = 'icon-nd-downloading'; tooltip = 'Episode is downloading'; } else if (!this.model.get('airDateUtc')) { icon = 'icon-nd-tba'; tooltip = 'TBA'; } else if (hasAired) { icon = 'icon-nd-missing'; tooltip = 'Episode missing from disk'; } else { icon = 'icon-nd-not-aired'; tooltip = 'Episode has not aired'; } } this.$el.html(''.format(icon, tooltip)); } return this; } }); });