_initUI: function() { // re-localize dates on screen dateL10n.init(); timeObserver.init(); core.timeController.move(new Date()); viewFactory.get('TimeHeader', header => header.render()); viewFactory.get('ViewSelector', tabs => tabs.render()); document.body.classList.remove('loading'); // at this point we remove the .loading class and user will see the main // app frame performance.domLoaded(); this._routes(); nextTick(() => viewFactory.get('Errors')); // Restart the calendar when the timezone changes. // We do this on a timer because this event may fire // many times. Refreshing the url of the calendar frequently // can result in crashes so we attempt to do this only after // the user has completed their selection. window.addEventListener('moztimechange', () => { debug('Noticed timezone change!'); // for info on why we need to restart the app when the time changes see: // https://bugzilla.mozilla.org/show_bug.cgi?id=1093016#c9 nextTick(this.forceRestart); }); },
_init: function() { // quick hack for today button var tablist = document.querySelector('#view-selector'); var today = tablist.querySelector('.today a'); var tabs = tablist.querySelectorAll('[role="tab"]'); this._showTodayDate(); this._syncTodayDate(); today.addEventListener('click', (e) => { var date = new Date(); this.timeController.move(date); this.timeController.selectedDay = date; e.preventDefault(); }); // Handle aria-selected attribute for tabs. tablist.addEventListener('click', (event) => { if (event.target !== today) { AccessibilityHelper.setAriaSelected(event.target, tabs); } }); this.setCurrentTimeFormat(); // re-localize dates on screen this.observeDateLocalization(); this.timeController.observe(); notificationsController.observe(); periodicSyncController.observe(); // turn on the auto queue this means that when // alarms are added to the database we manage them // transparently. Defaults to off for tests. this.store('Alarm').autoQueue = true; this.timeController.move(new Date()); this.view('TimeHeader', (header) => header.render()); this.view('CalendarColors', (colors) => colors.render()); document.body.classList.remove('loading'); // at this point we remove the .loading class and user will see the main // app frame performance.domLoaded(); this._routes(); var recurringEventsController = new RecurringEventsController(this); this.observePendingObject(recurringEventsController); recurringEventsController.observe(); this.recurringEventsController = recurringEventsController; // go ahead and show the first time use view if necessary this.view('FirstTimeUse', (ftu) => ftu.doFirstTime()); nextTick(() => this.view('Errors')); },