Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
127 lines
3.7 KiB
JavaScript
127 lines
3.7 KiB
JavaScript
/* global CostControl, ConfigManager, debug,
|
|
Formatting, SimManager, Common */
|
|
/*
|
|
* The telephony tab is in charge of show telephony and billing cycle
|
|
* information.
|
|
*
|
|
* It has two areas of drawing: one for the counters and another for
|
|
*/
|
|
'use strict';
|
|
|
|
var TelephonyTab = (function() {
|
|
var costcontrol, initialized = false;
|
|
var view, smscount, calltime, time, resetDate;
|
|
var telephonyPeriod = { begin: null, end: null };
|
|
|
|
function setupTab() {
|
|
if (initialized) {
|
|
return;
|
|
}
|
|
|
|
CostControl.getInstance(function _onCostControl(instance) {
|
|
costcontrol = instance;
|
|
|
|
// HTML entities
|
|
view = document.getElementById('telephony-tab');
|
|
smscount = document.getElementById('telephony-smscount');
|
|
calltime = document.getElementById('telephony-calltime');
|
|
time = document.getElementById('telephony-time');
|
|
resetDate = document.getElementById('reset-date');
|
|
|
|
window.addEventListener('localized', localize);
|
|
|
|
// Configure updates
|
|
document.addEventListener('visibilitychange', updateWhenVisible, true);
|
|
ConfigManager.observe('lastTelephonyActivity', updateCounters, true);
|
|
ConfigManager.observe('lastTelephonyReset', updateUI, true);
|
|
ConfigManager.observe('nextReset', updateNextReset, true);
|
|
|
|
// Timeformat
|
|
window.addEventListener('timeformatchange', function () {
|
|
updateTimePeriod(
|
|
telephonyPeriod.begin, null, null, telephonyPeriod.end);
|
|
});
|
|
|
|
updateUI();
|
|
initialized = true;
|
|
});
|
|
}
|
|
|
|
function localize() {
|
|
if (initialized) {
|
|
updateUI();
|
|
}
|
|
}
|
|
|
|
function finalize() {
|
|
if (!initialized) {
|
|
return;
|
|
}
|
|
|
|
document.removeEventListener('visibilitychange', updateWhenVisible);
|
|
ConfigManager.removeObserver('lastTelephonyActivity', updateCounters);
|
|
ConfigManager.removeObserver('lastTelephonyReset', updateUI);
|
|
ConfigManager.removeObserver('nextReset', updateNextReset);
|
|
|
|
initialized = false;
|
|
}
|
|
|
|
function updateWhenVisible() {
|
|
if (!document.hidden && initialized) {
|
|
updateUI();
|
|
}
|
|
}
|
|
|
|
function updateUI() {
|
|
var requestObj = { type: 'telephony' };
|
|
SimManager.requestDataSimIcc(function(dataSimIcc) {
|
|
ConfigManager.requestSettings(dataSimIcc.iccId,
|
|
function _onSettings(settings) {
|
|
costcontrol.request(requestObj, function _afterRequest(result) {
|
|
var telephonyActivity = result.data;
|
|
debug('Last telephony activity:', telephonyActivity);
|
|
updateTimePeriod(settings.lastTelephonyReset, null, null, settings);
|
|
updateCounters(telephonyActivity);
|
|
updateNextReset(settings.nextReset, null, null, settings);
|
|
});
|
|
});
|
|
});
|
|
}
|
|
|
|
function updateTimePeriod(lastReset, old, key, settings) {
|
|
telephonyPeriod.begin = lastReset;
|
|
telephonyPeriod.end = settings.lastTelephonyActivity.timestamp;
|
|
time.innerHTML = '';
|
|
time.appendChild(Formatting.formatTimeHTML(lastReset, telephonyPeriod.end));
|
|
}
|
|
|
|
function updateCounters(activity) {
|
|
Common.localize(smscount, 'magnitude', {
|
|
value: activity.smscount,
|
|
unit: 'SMS'
|
|
});
|
|
Common.localize(calltime, 'magnitude', {
|
|
value: Formatting.computeTelephonyMinutes(activity),
|
|
unit: 'min.'
|
|
});
|
|
}
|
|
|
|
function updateNextReset(reset, old, key, settings) {
|
|
var billingCycle = document.getElementById('billing-cycle');
|
|
if (settings.trackingPeriod === 'never') {
|
|
billingCycle.hidden = true;
|
|
} else {
|
|
billingCycle.hidden = false;
|
|
var content = Formatting.getFormattedDate(settings.nextReset,
|
|
Formatting.formatters.shortDate);
|
|
resetDate.textContent = content;
|
|
}
|
|
}
|
|
|
|
return {
|
|
initialize: setupTab,
|
|
finalize: finalize
|
|
};
|
|
}());
|
|
|
|
TelephonyTab.initialize();
|