kaiwa/clientapp/views/main.js

55 lines
1.6 KiB
JavaScript
Raw Normal View History

2013-09-16 14:16:47 -04:00
/*global $, app, me, client*/
2013-08-29 23:38:28 -04:00
"use strict";
var HumanView = require('human-view');
2013-08-29 23:38:28 -04:00
var templates = require('../templates');
var ContactListItem = require('../views/contactListItem');
2013-09-16 19:12:00 -04:00
var MUCListItem = require('../views/mucListItem');
2013-08-29 23:38:28 -04:00
module.exports = HumanView.extend({
2013-08-29 23:38:28 -04:00
template: templates.body,
initialize: function () {
this.listenTo(app.state, 'change:title', this.handleTitle);
2013-09-27 15:10:30 -04:00
if (window.macgap) {
window.macgap.dock.badge = '';
}
},
2013-09-03 18:25:14 -04:00
events: {
2013-09-16 14:16:47 -04:00
'click a[href]': 'handleLinkClick',
'click .reconnect': 'handleReconnect'
2013-09-03 18:25:14 -04:00
},
classBindings: {
connected: '#connectionOverlay'
},
2013-08-29 23:38:28 -04:00
render: function () {
$('head').append(templates.head());
$('body').removeClass('aux');
2013-08-29 23:38:28 -04:00
this.renderAndBind();
2013-09-16 05:19:07 -04:00
this.renderCollection(me.contacts, ContactListItem, this.$('#roster nav'));
2013-09-16 19:12:00 -04:00
this.renderCollection(me.mucs, MUCListItem, this.$('#bookmarks nav'));
2013-08-29 23:38:28 -04:00
return this;
2013-09-03 18:25:14 -04:00
},
2013-09-16 14:16:47 -04:00
handleReconnect: function (e) {
client.connect();
},
2013-09-03 18:25:14 -04:00
handleLinkClick: function (e) {
var t = $(e.target);
var aEl = t.is('a') ? t[0] : t.closest('a')[0];
var local = window.location.host === aEl.host;
var path = aEl.pathname.slice(1);
if (local) {
e.preventDefault();
app.navigate(path);
return false;
}
},
handleTitle: function (e) {
document.title = app.state.title;
if (window.macgap) {
window.macgap.dock.badge = app.state.badge;
}
2013-08-29 23:38:28 -04:00
}
});