Loading apps/clock/index.html +2 −1 Changes for apps/clock/index.html: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -32,7 +32,8 @@ <script defer src="js/active_alarm.js"></script> <script defer src="js/alarmsdb.js"></script> <script defer src="js/clock.js"></script> <script defer src="js/alarm.js"></script> <script defer src="js/clock_view.js"></script> <script defer src="js/alarm_list.js"></script> <script defer src="js/alarm_manager.js"></script> </head> Loading apps/clock/js/alarm_list.js 0 → 100644 +177 −0 Changes for apps/clock/js/alarm_list.js: 177 added lines, 0 removed lines. Original line number Diff line number Diff line 'use strict'; var _ = navigator.mozL10n.get; var AlarmList = { alarmList: [], refreshingAlarms: [], _previousAlarmCount: 0, get alarms() { delete this.alarms; return this.alarms = document.getElementById('alarms'); }, get title() { delete this.title; return this.title = document.getElementById('alarms-title'); }, get newAlarmButton() { delete this.newAlarmButton; return this.newAlarmButton = document.getElementById('alarm-new'); }, handleEvent: function al_handleEvent(evt) { var link = evt.target; if (!link) return; if (link === this.newAlarmButton) { ClockView.hide(); this.alarmEditView(); } else if (link.classList.contains('input-enable')) { this.toggleAlarmEnableState(link.checked, this.getAlarmFromList(parseInt(link.dataset.id, 10))); } else if (link.classList.contains('alarm-item')) { ClockView.hide(); this.alarmEditView(this.getAlarmFromList( parseInt(link.dataset.id, 10))); } }, alarmEditView: function(alarm) { LazyLoader.load( [ document.getElementById('alarm'), 'js/alarm_edit.js', 'shared/style/input_areas.css', 'shared/style/buttons.css', 'shared/style/edit_mode.css' ], function() { AlarmEdit.load(alarm); }); }, init: function al_init() { this.newAlarmButton.addEventListener('click', this); this.alarms.addEventListener('click', this); this.refresh(); AlarmManager.regUpdateAlarmEnableState(this.refreshItem.bind(this)); }, refresh: function al_refresh() { var self = this; AlarmManager.getAlarmList(function al_gotAlarmList(list) { self.fillList(list); }); }, buildAlarmContent: function al_buildAlarmContent(alarm) { var summaryRepeat = (alarm.repeat === '0000000') ? '' : summarizeDaysOfWeek(alarm.repeat); var isChecked = alarm.enabled ? ' checked="true"' : ''; var d = new Date(); d.setHours(alarm.hour); d.setMinutes(alarm.minute); var time = getLocaleTime(d); var label = (alarm.label === '') ? _('alarm') : escapeHTML(alarm.label); return '<label class="alarmList alarmEnable">' + ' <input class="input-enable"' + '" data-id="' + alarm.id + '" type="checkbox"' + isChecked + '>' + ' <span></span>' + '</label>' + '<a href="#alarm" class="alarm-item" data-id="' + alarm.id + '">' + ' <span class="time">' + time.t + '<span class="period">' + time.p + '</span>' + ' </span>' + ' <span class="label">' + label + '</span>' + ' <span class="repeat">' + summaryRepeat + '</span>' + '</a>'; }, refreshItem: function al_refreshItem(alarm) { this.setAlarmFromList(alarm.id, alarm); var id = 'a[data-id="' + alarm.id + '"]'; var alarmItem = this.alarms.querySelector(id); alarmItem.parentNode.innerHTML = this.buildAlarmContent(alarm); // clear the refreshing alarm's flag var index = this.refreshingAlarms.indexOf(alarm.id); this.refreshingAlarms.splice(index, 1); }, fillList: function al_fillList(alarmDataList) { this.alarmList = alarmDataList; var content = ''; this.alarms.innerHTML = ''; alarmDataList.forEach(function al_fillEachList(alarm) { var li = document.createElement('li'); li.className = 'alarm-cell'; li.innerHTML = this.buildAlarmContent(alarm); this.alarms.appendChild(li); }.bind(this)); if (this._previousAlarmCount !== this.getAlarmCount()) { this._previousAlarmCount = this.getAlarmCount(); ClockView.resizeAnalogClock(); } }, getAlarmFromList: function al_getAlarmFromList(id) { for (var i = 0; i < this.alarmList.length; i++) { if (this.alarmList[i].id === id) return this.alarmList[i]; } return null; }, setAlarmFromList: function al_setAlarmFromList(id, alarm) { for (var i = 0; i < this.alarmList.length; i++) { if (this.alarmList[i].id === id) { this.alarmList[i] = alarm; return; } } }, getAlarmCount: function al_getAlarmCount() { return this.alarmList.length; }, toggleAlarmEnableState: function al_toggleAlarmEnableState(enabled, alarm) { if (this.refreshingAlarms.indexOf(alarm.id) !== -1) { return; } if (alarm.enabled === enabled) return; alarm.enabled = enabled; this.refreshingAlarms.push(alarm.id); var self = this; AlarmManager.putAlarm(alarm, function al_putAlarm(alarm) { if (!alarm.enabled && !alarm.normalAlarmId && !alarm.snoozeAlarmId) { self.refreshItem(alarm); } else { AlarmManager.toggleAlarm(alarm, alarm.enabled); } }); }, deleteCurrent: function al_deleteCurrent(id) { var alarm = this.getAlarmFromList(id); var self = this; AlarmManager.delete(alarm, function al_deleted() { self.refresh(); }); } }; apps/clock/js/alarm.js→apps/clock/js/clock_view.js +0 −174 Changes for apps/clock/js/clock_view.js: 0 added lines, 174 removed lines. Original line number Diff line number Diff line 'use strict'; var _ = navigator.mozL10n.get; var SETTINGS_CLOCKMODE = 'settings_clockoptions_mode'; var ClockView = { Loading Loading @@ -269,176 +268,3 @@ var ClockView = { }; var AlarmList = { alarmList: [], refreshingAlarms: [], _previousAlarmCount: 0, get alarms() { delete this.alarms; return this.alarms = document.getElementById('alarms'); }, get title() { delete this.title; return this.title = document.getElementById('alarms-title'); }, get newAlarmButton() { delete this.newAlarmButton; return this.newAlarmButton = document.getElementById('alarm-new'); }, handleEvent: function al_handleEvent(evt) { var link = evt.target; if (!link) return; if (link === this.newAlarmButton) { ClockView.hide(); this.alarmEditView(); } else if (link.classList.contains('input-enable')) { this.toggleAlarmEnableState(link.checked, this.getAlarmFromList(parseInt(link.dataset.id, 10))); } else if (link.classList.contains('alarm-item')) { ClockView.hide(); this.alarmEditView(this.getAlarmFromList( parseInt(link.dataset.id, 10))); } }, alarmEditView: function(alarm) { LazyLoader.load( [ document.getElementById('alarm'), 'js/alarm_edit.js', 'shared/style/input_areas.css', 'shared/style/buttons.css', 'shared/style/edit_mode.css' ], function() { AlarmEdit.load(alarm); }); }, init: function al_init() { this.newAlarmButton.addEventListener('click', this); this.alarms.addEventListener('click', this); this.refresh(); AlarmManager.regUpdateAlarmEnableState(this.refreshItem.bind(this)); }, refresh: function al_refresh() { var self = this; AlarmManager.getAlarmList(function al_gotAlarmList(list) { self.fillList(list); }); }, buildAlarmContent: function al_buildAlarmContent(alarm) { var summaryRepeat = (alarm.repeat === '0000000') ? '' : summarizeDaysOfWeek(alarm.repeat); var isChecked = alarm.enabled ? ' checked="true"' : ''; var d = new Date(); d.setHours(alarm.hour); d.setMinutes(alarm.minute); var time = getLocaleTime(d); var label = (alarm.label === '') ? _('alarm') : escapeHTML(alarm.label); return '<label class="alarmList alarmEnable">' + ' <input class="input-enable"' + '" data-id="' + alarm.id + '" type="checkbox"' + isChecked + '>' + ' <span></span>' + '</label>' + '<a href="#alarm" class="alarm-item" data-id="' + alarm.id + '">' + ' <span class="time">' + time.t + '<span class="period">' + time.p + '</span>' + ' </span>' + ' <span class="label">' + label + '</span>' + ' <span class="repeat">' + summaryRepeat + '</span>' + '</a>'; }, refreshItem: function al_refreshItem(alarm) { this.setAlarmFromList(alarm.id, alarm); var id = 'a[data-id="' + alarm.id + '"]'; var alarmItem = this.alarms.querySelector(id); alarmItem.parentNode.innerHTML = this.buildAlarmContent(alarm); // clear the refreshing alarm's flag var index = this.refreshingAlarms.indexOf(alarm.id); this.refreshingAlarms.splice(index, 1); }, fillList: function al_fillList(alarmDataList) { this.alarmList = alarmDataList; var content = ''; this.alarms.innerHTML = ''; alarmDataList.forEach(function al_fillEachList(alarm) { var li = document.createElement('li'); li.className = 'alarm-cell'; li.innerHTML = this.buildAlarmContent(alarm); this.alarms.appendChild(li); }.bind(this)); if (this._previousAlarmCount !== this.getAlarmCount()) { this._previousAlarmCount = this.getAlarmCount(); ClockView.resizeAnalogClock(); } }, getAlarmFromList: function al_getAlarmFromList(id) { for (var i = 0; i < this.alarmList.length; i++) { if (this.alarmList[i].id === id) return this.alarmList[i]; } return null; }, setAlarmFromList: function al_setAlarmFromList(id, alarm) { for (var i = 0; i < this.alarmList.length; i++) { if (this.alarmList[i].id === id) { this.alarmList[i] = alarm; return; } } }, getAlarmCount: function al_getAlarmCount() { return this.alarmList.length; }, toggleAlarmEnableState: function al_toggleAlarmEnableState(enabled, alarm) { if (this.refreshingAlarms.indexOf(alarm.id) !== -1) { return; } if (alarm.enabled === enabled) return; alarm.enabled = enabled; this.refreshingAlarms.push(alarm.id); var self = this; AlarmManager.putAlarm(alarm, function al_putAlarm(alarm) { if (!alarm.enabled && !alarm.normalAlarmId && !alarm.snoozeAlarmId) { self.refreshItem(alarm); } else { AlarmManager.toggleAlarm(alarm, alarm.enabled); } }); }, deleteCurrent: function al_deleteCurrent(id) { var alarm = this.getAlarmFromList(id); var self = this; AlarmManager.delete(alarm, function al_deleted() { self.refresh(); }); } }; apps/clock/test/unit/alarm_test.js +1 −1 Changes for apps/clock/test/unit/alarm_test.js: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ requireApp('clock/js/utils.js'); requireApp('clock/js/alarmsdb.js'); requireApp('clock/js/alarm_edit.js'); requireApp('clock/js/alarm_manager.js'); requireApp('clock/js/alarm.js'); requireApp('clock/js/alarm_list.js'); suite('AlarmEditView', function() { var subject; Loading Loading
apps/clock/index.html +2 −1 Changes for apps/clock/index.html: 2 added lines, 1 removed line. Original line number Diff line number Diff line Loading @@ -32,7 +32,8 @@ <script defer src="js/active_alarm.js"></script> <script defer src="js/alarmsdb.js"></script> <script defer src="js/clock.js"></script> <script defer src="js/alarm.js"></script> <script defer src="js/clock_view.js"></script> <script defer src="js/alarm_list.js"></script> <script defer src="js/alarm_manager.js"></script> </head> Loading
apps/clock/js/alarm_list.js 0 → 100644 +177 −0 Changes for apps/clock/js/alarm_list.js: 177 added lines, 0 removed lines. Original line number Diff line number Diff line 'use strict'; var _ = navigator.mozL10n.get; var AlarmList = { alarmList: [], refreshingAlarms: [], _previousAlarmCount: 0, get alarms() { delete this.alarms; return this.alarms = document.getElementById('alarms'); }, get title() { delete this.title; return this.title = document.getElementById('alarms-title'); }, get newAlarmButton() { delete this.newAlarmButton; return this.newAlarmButton = document.getElementById('alarm-new'); }, handleEvent: function al_handleEvent(evt) { var link = evt.target; if (!link) return; if (link === this.newAlarmButton) { ClockView.hide(); this.alarmEditView(); } else if (link.classList.contains('input-enable')) { this.toggleAlarmEnableState(link.checked, this.getAlarmFromList(parseInt(link.dataset.id, 10))); } else if (link.classList.contains('alarm-item')) { ClockView.hide(); this.alarmEditView(this.getAlarmFromList( parseInt(link.dataset.id, 10))); } }, alarmEditView: function(alarm) { LazyLoader.load( [ document.getElementById('alarm'), 'js/alarm_edit.js', 'shared/style/input_areas.css', 'shared/style/buttons.css', 'shared/style/edit_mode.css' ], function() { AlarmEdit.load(alarm); }); }, init: function al_init() { this.newAlarmButton.addEventListener('click', this); this.alarms.addEventListener('click', this); this.refresh(); AlarmManager.regUpdateAlarmEnableState(this.refreshItem.bind(this)); }, refresh: function al_refresh() { var self = this; AlarmManager.getAlarmList(function al_gotAlarmList(list) { self.fillList(list); }); }, buildAlarmContent: function al_buildAlarmContent(alarm) { var summaryRepeat = (alarm.repeat === '0000000') ? '' : summarizeDaysOfWeek(alarm.repeat); var isChecked = alarm.enabled ? ' checked="true"' : ''; var d = new Date(); d.setHours(alarm.hour); d.setMinutes(alarm.minute); var time = getLocaleTime(d); var label = (alarm.label === '') ? _('alarm') : escapeHTML(alarm.label); return '<label class="alarmList alarmEnable">' + ' <input class="input-enable"' + '" data-id="' + alarm.id + '" type="checkbox"' + isChecked + '>' + ' <span></span>' + '</label>' + '<a href="#alarm" class="alarm-item" data-id="' + alarm.id + '">' + ' <span class="time">' + time.t + '<span class="period">' + time.p + '</span>' + ' </span>' + ' <span class="label">' + label + '</span>' + ' <span class="repeat">' + summaryRepeat + '</span>' + '</a>'; }, refreshItem: function al_refreshItem(alarm) { this.setAlarmFromList(alarm.id, alarm); var id = 'a[data-id="' + alarm.id + '"]'; var alarmItem = this.alarms.querySelector(id); alarmItem.parentNode.innerHTML = this.buildAlarmContent(alarm); // clear the refreshing alarm's flag var index = this.refreshingAlarms.indexOf(alarm.id); this.refreshingAlarms.splice(index, 1); }, fillList: function al_fillList(alarmDataList) { this.alarmList = alarmDataList; var content = ''; this.alarms.innerHTML = ''; alarmDataList.forEach(function al_fillEachList(alarm) { var li = document.createElement('li'); li.className = 'alarm-cell'; li.innerHTML = this.buildAlarmContent(alarm); this.alarms.appendChild(li); }.bind(this)); if (this._previousAlarmCount !== this.getAlarmCount()) { this._previousAlarmCount = this.getAlarmCount(); ClockView.resizeAnalogClock(); } }, getAlarmFromList: function al_getAlarmFromList(id) { for (var i = 0; i < this.alarmList.length; i++) { if (this.alarmList[i].id === id) return this.alarmList[i]; } return null; }, setAlarmFromList: function al_setAlarmFromList(id, alarm) { for (var i = 0; i < this.alarmList.length; i++) { if (this.alarmList[i].id === id) { this.alarmList[i] = alarm; return; } } }, getAlarmCount: function al_getAlarmCount() { return this.alarmList.length; }, toggleAlarmEnableState: function al_toggleAlarmEnableState(enabled, alarm) { if (this.refreshingAlarms.indexOf(alarm.id) !== -1) { return; } if (alarm.enabled === enabled) return; alarm.enabled = enabled; this.refreshingAlarms.push(alarm.id); var self = this; AlarmManager.putAlarm(alarm, function al_putAlarm(alarm) { if (!alarm.enabled && !alarm.normalAlarmId && !alarm.snoozeAlarmId) { self.refreshItem(alarm); } else { AlarmManager.toggleAlarm(alarm, alarm.enabled); } }); }, deleteCurrent: function al_deleteCurrent(id) { var alarm = this.getAlarmFromList(id); var self = this; AlarmManager.delete(alarm, function al_deleted() { self.refresh(); }); } };
apps/clock/js/alarm.js→apps/clock/js/clock_view.js +0 −174 Changes for apps/clock/js/clock_view.js: 0 added lines, 174 removed lines. Original line number Diff line number Diff line 'use strict'; var _ = navigator.mozL10n.get; var SETTINGS_CLOCKMODE = 'settings_clockoptions_mode'; var ClockView = { Loading Loading @@ -269,176 +268,3 @@ var ClockView = { }; var AlarmList = { alarmList: [], refreshingAlarms: [], _previousAlarmCount: 0, get alarms() { delete this.alarms; return this.alarms = document.getElementById('alarms'); }, get title() { delete this.title; return this.title = document.getElementById('alarms-title'); }, get newAlarmButton() { delete this.newAlarmButton; return this.newAlarmButton = document.getElementById('alarm-new'); }, handleEvent: function al_handleEvent(evt) { var link = evt.target; if (!link) return; if (link === this.newAlarmButton) { ClockView.hide(); this.alarmEditView(); } else if (link.classList.contains('input-enable')) { this.toggleAlarmEnableState(link.checked, this.getAlarmFromList(parseInt(link.dataset.id, 10))); } else if (link.classList.contains('alarm-item')) { ClockView.hide(); this.alarmEditView(this.getAlarmFromList( parseInt(link.dataset.id, 10))); } }, alarmEditView: function(alarm) { LazyLoader.load( [ document.getElementById('alarm'), 'js/alarm_edit.js', 'shared/style/input_areas.css', 'shared/style/buttons.css', 'shared/style/edit_mode.css' ], function() { AlarmEdit.load(alarm); }); }, init: function al_init() { this.newAlarmButton.addEventListener('click', this); this.alarms.addEventListener('click', this); this.refresh(); AlarmManager.regUpdateAlarmEnableState(this.refreshItem.bind(this)); }, refresh: function al_refresh() { var self = this; AlarmManager.getAlarmList(function al_gotAlarmList(list) { self.fillList(list); }); }, buildAlarmContent: function al_buildAlarmContent(alarm) { var summaryRepeat = (alarm.repeat === '0000000') ? '' : summarizeDaysOfWeek(alarm.repeat); var isChecked = alarm.enabled ? ' checked="true"' : ''; var d = new Date(); d.setHours(alarm.hour); d.setMinutes(alarm.minute); var time = getLocaleTime(d); var label = (alarm.label === '') ? _('alarm') : escapeHTML(alarm.label); return '<label class="alarmList alarmEnable">' + ' <input class="input-enable"' + '" data-id="' + alarm.id + '" type="checkbox"' + isChecked + '>' + ' <span></span>' + '</label>' + '<a href="#alarm" class="alarm-item" data-id="' + alarm.id + '">' + ' <span class="time">' + time.t + '<span class="period">' + time.p + '</span>' + ' </span>' + ' <span class="label">' + label + '</span>' + ' <span class="repeat">' + summaryRepeat + '</span>' + '</a>'; }, refreshItem: function al_refreshItem(alarm) { this.setAlarmFromList(alarm.id, alarm); var id = 'a[data-id="' + alarm.id + '"]'; var alarmItem = this.alarms.querySelector(id); alarmItem.parentNode.innerHTML = this.buildAlarmContent(alarm); // clear the refreshing alarm's flag var index = this.refreshingAlarms.indexOf(alarm.id); this.refreshingAlarms.splice(index, 1); }, fillList: function al_fillList(alarmDataList) { this.alarmList = alarmDataList; var content = ''; this.alarms.innerHTML = ''; alarmDataList.forEach(function al_fillEachList(alarm) { var li = document.createElement('li'); li.className = 'alarm-cell'; li.innerHTML = this.buildAlarmContent(alarm); this.alarms.appendChild(li); }.bind(this)); if (this._previousAlarmCount !== this.getAlarmCount()) { this._previousAlarmCount = this.getAlarmCount(); ClockView.resizeAnalogClock(); } }, getAlarmFromList: function al_getAlarmFromList(id) { for (var i = 0; i < this.alarmList.length; i++) { if (this.alarmList[i].id === id) return this.alarmList[i]; } return null; }, setAlarmFromList: function al_setAlarmFromList(id, alarm) { for (var i = 0; i < this.alarmList.length; i++) { if (this.alarmList[i].id === id) { this.alarmList[i] = alarm; return; } } }, getAlarmCount: function al_getAlarmCount() { return this.alarmList.length; }, toggleAlarmEnableState: function al_toggleAlarmEnableState(enabled, alarm) { if (this.refreshingAlarms.indexOf(alarm.id) !== -1) { return; } if (alarm.enabled === enabled) return; alarm.enabled = enabled; this.refreshingAlarms.push(alarm.id); var self = this; AlarmManager.putAlarm(alarm, function al_putAlarm(alarm) { if (!alarm.enabled && !alarm.normalAlarmId && !alarm.snoozeAlarmId) { self.refreshItem(alarm); } else { AlarmManager.toggleAlarm(alarm, alarm.enabled); } }); }, deleteCurrent: function al_deleteCurrent(id) { var alarm = this.getAlarmFromList(id); var self = this; AlarmManager.delete(alarm, function al_deleted() { self.refresh(); }); } };
apps/clock/test/unit/alarm_test.js +1 −1 Changes for apps/clock/test/unit/alarm_test.js: 1 added line, 1 removed line. Original line number Diff line number Diff line Loading @@ -4,7 +4,7 @@ requireApp('clock/js/utils.js'); requireApp('clock/js/alarmsdb.js'); requireApp('clock/js/alarm_edit.js'); requireApp('clock/js/alarm_manager.js'); requireApp('clock/js/alarm.js'); requireApp('clock/js/alarm_list.js'); suite('AlarmEditView', function() { var subject; Loading