/** * Licensed Materials - Property of IBM * * IBM Cognos Products: SHARE * * Copyright IBM Corp. 2015, 2017 * * US Government Users Restricted Rights - Use, duplication or disclosure restricted by GSA ADP Schedule Contract with IBM Corp. */ define([ 'jquery', 'moment-timezone', 'bi/sharecommon/utils/translator'], function($, moment, t) { var cadenceLabelGenerator = {}; var __12H_TIME_FORMAT = "LT"; //(Local Time) h:mm |en-us -> 8:30 PM| |fr-fr -> 20:30| var _getSelectedDays = function(scheduleInfo, timezone) { var scheduleTZ = scheduleInfo.timezone; if(!scheduleTZ) { console.error("Schedule was created with no timezone. Defaulting to 'America/New_York'."); scheduleTZ = "America/New_York"; } var parameters = {}; var days = []; var localizedNames = [ t.translate("schedule_weekday_sunday_t"), t.translate("schedule_weekday_monday_t"), t.translate("schedule_weekday_tuesday_t"), t.translate("schedule_weekday_wednesday_t"), t.translate("schedule_weekday_thursday_t"), t.translate("schedule_weekday_friday_t"), t.translate("schedule_weekday_saturday_t") ]; var dayNumberMap = { 'weeklySunday': 0, 'weeklyMonday': 1, 'weeklyTuesday': 2, 'weeklyWednesday': 3, 'weeklyThursday': 4, 'weeklyFriday': 5, 'weeklySaturday': 6 }; /* * re order the weeklyObj because the order weeklyObj is un-determined */ var weeklyObj = scheduleInfo.weekly; for (var key in weeklyObj) { if(weeklyObj[key]) { days.push(dayNumberMap[key]); } } days.sort(); // 1 3 5 // calculate the difference in days between source and target timezones var sourceDay = moment(scheduleInfo.startDate).tz(scheduleTZ).day(); var targetDay = moment(scheduleInfo.startDate).tz(timezone).day(); var diffDays = targetDay - sourceDay; /* * Give new key names according to the order * eg. input: days = [1, 3, 5] * output: parameters = {param1: "Mon", param2: "Wed", param3: "Fri"} */ for (var i = 0; i < days.length; i++) { var newDay = days[i] + diffDays; if(newDay < 0) { newDay = newDay+7; } else if(newDay > 6) { newDay = newDay -7; } parameters['param' + (i+1)] = localizedNames[newDay]; } return parameters; }; /** Retrieve localized string representing the cadence of scheduleDetails's schedule * Times are local to the timezone passed in. */ cadenceLabelGenerator.getLabelFor = function(scheduleInfo, timezone, locale) { if (!scheduleInfo) { return ""; } var label_key = ""; var parameters = {}; var hasIntraday = (typeof scheduleInfo.intradayRecurrence !== 'undefined')?true:false; if (scheduleInfo.type === "daily" || scheduleInfo.type === "dailyWithIntradayRecurrence") { // Daily intradayRecurrence only applies to 'day' dailyPeriod if (typeof scheduleInfo.daily !== 'undefined') { var repeat = parseInt(scheduleInfo.everyNPeriods, 10); if (repeat == 1) { if ( hasIntraday && scheduleInfo.daily.dailyPeriod == 'day' ) { label_key = "cadence_daily_day_repeat_label"; }else { label_key = "cadence_daily_" + scheduleInfo.daily.dailyPeriod + "_label"; if ( scheduleInfo.daily.dailyPeriod == 'day' ) { parameters["param"] = moment(scheduleInfo.startDate).locale(locale).tz(timezone).format(__12H_TIME_FORMAT); } } }else { if ( hasIntraday && scheduleInfo.daily.dailyPeriod == 'day' ) { label_key = "cadence_daily_every_day_repeat_label"; parameters["param"] = repeat; }else { label_key = "cadence_daily_every_" + scheduleInfo.daily.dailyPeriod + "_label"; parameters["param"] = repeat; } } } else { label_key = "cadence_daily_label"; parameters["param"] = moment(scheduleInfo.startDate).locale(locale).tz(timezone).format(__12H_TIME_FORMAT); } } else if (scheduleInfo.type === "weekly" || scheduleInfo.type === "weeklyWithIntradayRecurrence") { if (typeof scheduleInfo.weekly !== 'undefined') { parameters = _getSelectedDays(scheduleInfo, timezone); var repeat = parseInt(scheduleInfo.everyNPeriods, 10); if (repeat == 1) { if ( hasIntraday ) { label_key = "cadence_weekly_" + Object.keys(parameters).length + "_repeat_label"; }else { label_key = "cadence_weekly_" + Object.keys(parameters).length + "_label"; } // reset parameter parameters["param"] = moment(scheduleInfo.startDate).locale(locale).tz(timezone).format(__12H_TIME_FORMAT); } else { if ( hasIntraday ) { label_key = "cadence_week_" + Object.keys(parameters).length + "_repeat_label"; // reset parameter parameters["param"] = repeat; }else { label_key = "cadence_week_" + Object.keys(parameters).length + "_label"; parameters["param"] = repeat; } } } else { label_key = "cadence_weekly_label"; parameters["param"] = moment(scheduleInfo.startDate).locale(locale).tz(timezone).format(__12H_TIME_FORMAT); } } else if (scheduleInfo.type === "monthlyRelative" || scheduleInfo.type === "monthlyRelativeWithIntradayRecurrence") { if (typeof scheduleInfo.monthlyRelative !== 'undefined') { parameters['param1'] = t.translate("schedule_weekday_" + scheduleInfo.monthlyRelative.monthlyRelativeDay +"_t"); var repeat = parseInt(scheduleInfo.everyNPeriods, 10); if (repeat == 1) { if ( hasIntraday ) { label_key = "cadence_monthly_relative_" + scheduleInfo.monthlyRelative.monthlyRelativeWeek + "_repeat"; }else { label_key = "cadence_monthly_relative_" + scheduleInfo.monthlyRelative.monthlyRelativeWeek; } } else { if ( hasIntraday ) { label_key = "cadence_monthly_relative_repeat_" + scheduleInfo.monthlyRelative.monthlyRelativeWeek + "_repeat"; parameters["param"] = repeat; }else { label_key = "cadence_monthly_relative_repeat_" + scheduleInfo.monthlyRelative.monthlyRelativeWeek; parameters["param"] = repeat; } } } else { label_key = "cadence_monthly_label"; } } else if (scheduleInfo.type === "monthlyAbsolute" || scheduleInfo.type === "monthlyAbsoluteWithIntradayRecurrence") { if (typeof scheduleInfo.monthlyAbsolute !== 'undefined') { parameters['param1'] = scheduleInfo.monthlyAbsolute.monthlyAbsoluteDay; var repeat = parseInt(scheduleInfo.everyNPeriods, 10); if (repeat == 1) { if ( hasIntraday ) { label_key = "cadence_monthly_absolute_daily_repeat"; }else { label_key = "cadence_monthly_absolute"; } } else { if ( hasIntraday ) { label_key = "cadence_monthly_absolute_repeat_daily_repeat"; parameters["param"] = repeat; }else { label_key = "cadence_monthly_absolute_repeat"; parameters["param"] = repeat; } } } else { label_key = "cadence_monthly_label"; } } else if (scheduleInfo.type === "yearlyRelative" || scheduleInfo.type === "yearlyRelativeWithIntradayRecurrence") { if (typeof scheduleInfo.yearlyRelative !== 'undefined') { parameters['weekDay'] = t.translate("schedule_weekday_" + scheduleInfo.yearlyRelative.yearlyRelativeDay +"_t"); parameters['month'] = t.translate("schedule_month_short_" + scheduleInfo.yearlyRelative.yearlyRelativeMonth +"_label"); var repeat = parseInt(scheduleInfo.everyNPeriods, 10); if (repeat == 1) { if ( hasIntraday ) { label_key = "cadence_yearly_relative_" + scheduleInfo.yearlyRelative.yearlyRelativeWeek + "_repeat"; }else { label_key = "cadence_yearly_relative_" + scheduleInfo.yearlyRelative.yearlyRelativeWeek; } } else { if ( hasIntraday ) { label_key = "cadence_yearly_relative_repeat_" + scheduleInfo.yearlyRelative.yearlyRelativeWeek + "_repeat"; parameters["param"] = repeat; }else { label_key = "cadence_yearly_relative_repeat_" + scheduleInfo.yearlyRelative.yearlyRelativeWeek; parameters["param"] = repeat; } } } else { label_key = "cadence_yearly_label"; } } else if (scheduleInfo.type === "yearlyAbsolute" || scheduleInfo.type === "yearlyAbsoluteWithIntradayRecurrence") { if (typeof scheduleInfo.yearlyAbsolute !== 'undefined') { parameters['day'] = scheduleInfo.yearlyAbsolute.yearlyAbsoluteDay; parameters['month'] = t.translate("schedule_month_short_" + scheduleInfo.yearlyAbsolute.yearlyAbsoluteMonth +"_label"); var repeat = parseInt(scheduleInfo.everyNPeriods, 10); if (repeat == 1) { if ( hasIntraday ) { label_key = "cadence_yearly_absolute_daily_repeat"; }else { label_key = "cadence_yearly_absolute"; } } else { if ( hasIntraday ) { label_key = "cadence_yearly_absolute_repeat_daily_repeat"; parameters["param"] = repeat; }else { label_key = "cadence_yearly_absolute_repeat"; parameters["param"] = repeat; } } } else { label_key = "cadence_yearly_label"; } } else if (scheduleInfo.type === "trigger") { if (typeof scheduleInfo.trigger !== 'undefined') { parameters['triggerName'] = scheduleInfo.trigger.triggerName; label_key = "cadence_trigger_name_label"; } else { label_key = ""; } } var cadence = ""; if(label_key != "") { cadence = t.translate(label_key, parameters); } return cadence; }; return cadenceLabelGenerator; });