'use strict'; define( [ 'underscore', 'marionette', 'Health/HealthCollection' ], function (_, Marionette, HealthCollection) { return Marionette.ItemView.extend({ tagName: 'span', initialize: function () { this.listenTo(HealthCollection, 'sync', this._healthSync); HealthCollection.fetch(); }, render: function () { this.$el.empty(); if (HealthCollection.length === 0) { return this; } var count = HealthCollection.length; var label = 'label-warning'; var errors = HealthCollection.some(function (model) { return model.get('type') === 'error'; }); if (errors) { label = 'label-danger'; } this.$el.html('{1}'.format(label, count)); return this; }, _healthSync: function () { this.render(); } }); });