VulpesOS/assets/webapps/costcontrol.gaiamobile.org/js/settings/settings.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

19 lines
No EOL
8.7 KiB
JavaScript

;'use strict';var ConfigManager=window.parent.ConfigManager;var CostControl=window.parent.CostControl;var SimManager=window.parent.SimManager;var Common=window.parent.Common;var NetworkUsageAlarm=window.parent.NetworkUsageAlarm;var addNetworkUsageAlarm=window.parent.addNetworkUsageAlarm;var resetTelephony=window.parent.resetTelephony;navigator.mozL10n=window.parent.navigator.mozL10n;var DEBUGGING=window.parent.DEBUGGING;var debug=window.parent.debug;var Settings=(function(){var costcontrol,vmanager,initialized,endLoadSettingsNotified;var plantypeSelector,phoneActivityTitle,phoneActivitySettings;var balanceTitle,balanceSettings,reportsTitle;var balanceView,resetMenuDialog,confirmDialog;function configureUI(){CostControl.getInstance(function _onCostControl(instance){costcontrol=instance;if(DEBUGGING){loadDeveloperAids();}
vmanager=new ViewManager();plantypeSelector=document.getElementById('plantype-settings');phoneActivityTitle=document.getElementById('phone-activity-settings');phoneActivitySettings=document.querySelector('#phone-activity-settings + .settings');balanceTitle=document.getElementById('balance-settings');balanceSettings=document.querySelector('#balance-settings + .settings');reportsTitle=document.getElementById('phone-internet-settings');var balanceConfig=ConfigManager.configuration.balance;balanceView=new BalanceView(document.getElementById('balance'),document.querySelector('#balance + .meta'),balanceConfig?balanceConfig.minimum_delay:undefined);var resetDialog=document.getElementById('reset-dialog');var resetDataDialog=document.getElementById('reset-data-dialog');resetMenuDialog=new ResetMenuDialog(resetDataDialog,vmanager);confirmDialog=new ConfirmDialog(resetDialog,vmanager);resetMenuDialog.initializeResetModes(confirmDialog);AutoSettings.addType('data-limit',dataLimitConfigurer);AutoSettings.initialize(ConfigManager,vmanager,'#settings-view');configureTelephonyReset();configureDataResets();addDoneConstrains();ConfigManager.observe('dataLimit',function _onDataLimitChange(value,old,key,settings){SimManager.requestDataSimIcc(function(dataSim){var iccId=dataSim.iccId;var currentDataInterface=Common.getDataSIMInterface(iccId);if(!value){NetworkUsageAlarm.clearAlarms(currentDataInterface);}else{addNetworkUsageAlarm(currentDataInterface,Common.getDataLimit(settings));}});},true);ConfigManager.observe('plantype',updateUI,true);ConfigManager.observe('lastTelephonyActivity',function _updateTelephony(activity,old,key,settings){updateTelephony(activity,settings.lastTelephonyReset);},true);ConfigManager.observe('lastDataUsage',function _updateDataUsage(stats,old,key,settings){updateDataUsage(stats,settings.lastCompleteDataReset);},true);ConfigManager.observe('lastBalance',function _updateBalance(balance){updateBalance(balance,balance.currency);},true);var close=document.getElementById('close-settings');close.addEventListener('click',function(){closeSettings();});function _setResetTimeToDefault(value,old,key,settings){var today=new Date();var defaultResetTime=(settings.trackingPeriod==='weekly')?today.getDay():today.getDate();if(settings.resetTime!==defaultResetTime){ConfigManager.setOption({resetTime:defaultResetTime});}else{Common.updateNextReset(settings.trackingPeriod,settings.resetTime);}}
function _updateNextReset(value,old,key,settings){Common.updateNextReset(settings.trackingPeriod,settings.resetTime);}
ConfigManager.observe('resetTime',_updateNextReset,true);ConfigManager.observe('trackingPeriod',_setResetTimeToDefault,true);initialized=true;Settings.updateUI();});}
function closeSettings(){window.parent.location.hash='#';}
function loadDeveloperAids(){var xhr=new XMLHttpRequest();xhr.overrideMimeType('text/plain');xhr.open('GET','/debug.html',false);xhr.send();if(xhr.status===200){var src=document.createElement('DIV');src.innerHTML=xhr.responseText;var reference=document.getElementById('plantype-settings');var parent=reference.parentNode;[].forEach.call(src.childNodes,function(node){reference=parent.insertBefore(node,reference.nextSibling);});}}
function configureTelephonyReset(){var resetTelephonyButton=document.getElementById('reset-telephony');resetTelephonyButton.addEventListener('click',function(){confirmDialog.setMessage('reset-telephony-confirmation-warning',{});function resetAction(){resetTelephony();updateUI();confirmDialog.closeConfirmDialog();}
confirmDialog.updateAcceptAction(resetAction);confirmDialog.showConfirmDialog();});}
function configureDataResets(){var resetDataUsage=document.getElementById('reset-data-usage');resetDataUsage.addEventListener('click',function _onDataReset(){var currentTotals={mobile:costcontrol.lastDataResults.mobile.total,wifi:costcontrol.lastDataResults.wifi.total};resetMenuDialog.showResetMenuDialog(currentTotals);});}
var balanceLowLimitView;function addDoneConstrains(){var closeButton=document.getElementById('close-settings');balanceLowLimitView=new BalanceLowLimitView(document.getElementById('low-limit'),document.getElementById('low-limit-input'));balanceLowLimitView.onvalidation=function(evt){closeButton.disabled=!evt.isValid;};}
window.addEventListener('localized',function _onLocalize(){if(initialized){updateUI();}});var currentMode;function updateUI(){ConfigManager.requestAll(function _onInfo(configuration,settings){Common.localizeWeekdaySelector(document.getElementById('select-weekday'));var mode=ConfigManager.getApplicationMode();if(currentMode!==mode){currentMode=mode;var hidePlantypeSelector=(mode==='DATA_USAGE_ONLY');var hidePhoneActivity=(mode!=='POSTPAID');var hideBalance=(mode!=='PREPAID');var hideReportsTitle=(mode==='PREPAID');var textReportsTitle=(mode==='POSTPAID')?'phone-and-internet-data-report':'internet-data-report';reportsTitle.querySelector('span').setAttribute('data-l10n-id',textReportsTitle);balanceLowLimitView.disabled=(mode!=='PREPAID');plantypeSelector.hidden=hidePlantypeSelector;phoneActivityTitle.hidden=hidePhoneActivity;phoneActivitySettings.hidden=hidePhoneActivity;balanceTitle.hidden=hideBalance;balanceSettings.hidden=hideBalance;reportsTitle.hidden=hideReportsTitle;}
var requestObj={type:'datausage'};costcontrol.request(requestObj,function _onDataStats(result){var stats=result.data;updateDataUsage(stats,settings.lastCompleteDataReset);});switch(mode){case'PREPAID':updateBalance(settings.lastBalance,configuration.credit.currency);break;case'POSTPAID':updateTelephony(settings.lastTelephonyActivity,settings.lastTelephonyReset);break;}
if(endLoadSettingsNotified){window.performance.measure('loadSettings','loadSettingsStart');endLoadSettingsNotified=true;}});}
function updateDataUsage(datausage,lastCompleteDataReset){var mobileUsage=document.querySelector('#mobile-data-usage > span');var data=Formatting.roundData(datausage.mobile.total);mobileUsage.textContent=Formatting.formatData(data);var wifiUsage=document.querySelector('#wifi-data-usage > span');data=Formatting.roundData(datausage.wifi.total);wifiUsage.textContent=Formatting.formatData(data);updateDataUsageTimestamp(lastCompleteDataReset,datausage.timestamp);}
var dataUsagePeriod={begin:null,end:null};function updateDataUsageTimestamp(begin,end){dataUsagePeriod.begin=begin;dataUsagePeriod.end=end;var timestamp=document.querySelector('#wifi-data-usage + .meta');timestamp.innerHTML='';timestamp.appendChild(Formatting.formatTimeHTML(begin,end));}
function updateBalance(lastBalance,currency){var limitCurrency=document.getElementById('settings-low-limit-currency');limitCurrency.textContent=currency;balanceView.update(lastBalance);}
function updateTelephony(activity,lastTelephonyReset){var calltimeSpan=document.getElementById('calltime');var smscountSpan=document.getElementById('smscount');Common.localize(calltimeSpan,'magnitude',{value:Formatting.computeTelephonyMinutes(activity),unit:'min.'});Common.localize(smscountSpan,'magnitude',{value:activity.smscount,unit:'SMS'});updateTelephonyTimestamp(lastTelephonyReset,activity.timestamp);}
var telephonyPeriod={begin:null,end:null};function updateTelephonyTimestamp(begin,end){telephonyPeriod.begin=begin;telephonyPeriod.end=end;var timestamp=document.getElementById('telephony-timestamp');timestamp.innerHTML='';timestamp.appendChild(Formatting.formatTimeHTML(begin,end));}
window.addEventListener('timeformatchange',function(){updateTelephonyTimestamp(telephonyPeriod.begin,telephonyPeriod.end);updateDataUsageTimestamp(dataUsagePeriod.begin,dataUsagePeriod.end);});return{initialize:function(){var SCRIPTS_NEEDED=['js/utils/toolkit.js','shared/js/date_time_helper.js','js/utils/formatting.js','js/views/BalanceLowLimitView.js','js/settings/limitdialog.js','js/settings/autosettings.js','js/view_manager.js','js/views/BalanceView.js','js/views/ResetMenuDialog.js','js/views/ConfirmDialog.js'];LazyLoader.load(SCRIPTS_NEEDED,function(){if(!Common.allNetworkInterfaceLoaded){Common.loadNetworkInterfaces(configureUI);}else{configureUI();}});},updateUI:updateUI};}());Settings.initialize();