/* global mozIntl */ define(function(require, exports, module) { 'use strict'; var create = require('template').create; var MINUTE = 60; var HOUR = 3600; var DAY = 86400; var WEEK = 604800; var MORNING = HOUR * 9; var layouts = { standard: [ 'none', 0, 0 - MINUTE * 5, 0 - MINUTE * 15, 0 - MINUTE * 30, 0 - HOUR, 0 - HOUR * 2, 0 - DAY ], allday: [ 'none', 0 + MORNING, 0 - DAY + MORNING, 0 - DAY * 2 + MORNING, 0 - WEEK + MORNING, 0 - WEEK * 2 + MORNING ] }; var Alarm = create({ reminder: function() { var alarmContent = ''; var alarms = this.arg('alarms'); var isAllDay = this.arg('isAllDay'); var i = 0; var alarm; while ((alarm = alarms[i])) { i++; alarmContent += Alarm.description.render({ trigger: alarm.trigger, layout: isAllDay ? 'allday' : 'standard' }); } return alarmContent; }, description: function() { var {id, data} = getL10n(this.arg('trigger'), this.arg('layout')); var args = JSON.stringify(data); var description = navigator.mozL10n.get(id, data); return `
${description}
`; }, // builds a list of ' ].join(' '); return content; }, picker: function() { return '' + '' + ''; } }); function getL10n(trigger, layout) { if (trigger === 'none') { return { id: trigger, data: {} }; } // Format the display text based on a zero-offset trigger if (layout === 'allday') { var options = layouts.allday; if (options.indexOf(trigger) !== -1) { trigger -= MORNING; } } if (trigger === 0) { return { id: 'alarm-at-event-' + layout, data: {} }; } var affix = trigger > 0 ? 'after' : 'before'; var part = mozIntl._gaia.relativePart(trigger * 1000); return { id: part.unit + '-' + affix, data: { value: part.value } }; } module.exports = Alarm; });