// vim: et:ts=4:sw=4:sts=4:ft=javascript 'use strict'; pandora.ui.eventsDialog = function(options) { // options can be {id: '...'} or {name: '...'} var height = Math.round((window.innerHeight - 48) * 0.9), width = Math.round(window.innerWidth * 0.9), that = Ox.Dialog({ buttons: [ Ox.Button({ id: 'managePlaces', title: Ox._('Manage Places...') }).bindEvent({ click: function() { that.close(); (pandora.$ui.placesDialog || ( pandora.$ui.placesDialog = pandora.ui.placesDialog() )).open(); } }), {}, Ox.Button({ id: 'done', title: Ox._('Done'), width: 48 }).bindEvent({ click: function() { that.close(); } }) ], closeButton: true, content: Ox.LoadingScreen(), height: height, maximizeButton: true, minHeight: 256, minWidth: 512, padding: 0, title: Ox._('Manage Events'), width: width }) .bindEvent({ resize: function(data) { // setting width would cause an expensive calendar redraw $content && $content.options({ height: data.height }); }, resizeend: function(data) { $content && $content.options({ height: data.height, width: data.width }); } }), $content; pandora.api.findEvents({ query: {conditions: [], operator: '&'} }, function(result) { pandora.api.findEvents({ query: {conditions: [], operator: '&'}, keys: [], range: [0, result.data.items], sort: [{key: 'name', operator: '+'}] }, function(result) { that.options({ content: $content = Ox.CalendarEditor({ addEvent: function(event, callback) { pandora.api.addEvent(event, function(result) { Ox.Request.clearCache(); // fixme: remove callback(result); }); }, editEvent: function(event, callback) { pandora.api.editEvent(event, function(result) { Ox.Request.clearCache(); // fixme: remove callback(result); }); }, events: result.data.items, hasMatches: true, height: height, mode: pandora.site.calendar == 'auto' ? 'add' : 'define', removeEvent: function(event, callback) { pandora.api.removeEvent(event, function(result) { Ox.Request.clearCache(); // fixme: remove callback(result); }); }, selected: options ? options.id : '', showControls: pandora.user.ui.showCalendarControls, width: width }) }); }) }) return that; };