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.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
289
gaia/apps/costcontrol/js/fte.js
Executable file
289
gaia/apps/costcontrol/js/fte.js
Executable file
|
|
@ -0,0 +1,289 @@
|
|||
/* global AutoSettings, BalanceLowLimitView, Common, ConfigManager, SimManager,
|
||||
dataLimitConfigurer, LazyLoader, debug, ViewManager */
|
||||
|
||||
/*
|
||||
* First time experience is in charge of set up the application.
|
||||
*/
|
||||
|
||||
(function() {
|
||||
|
||||
'use strict';
|
||||
|
||||
// Fallback from some values, just in case they are missed from configuration
|
||||
var DEFAULT_LOW_LIMIT_THRESHOLD = 3;
|
||||
var defaultLowLimitThreshold = DEFAULT_LOW_LIMIT_THRESHOLD;
|
||||
window.addEventListener('DOMContentLoaded', function _onDomReady() {
|
||||
initLazyFTE();
|
||||
});
|
||||
|
||||
function initLazyFTE() {
|
||||
var SCRIPTS_NEEDED = [
|
||||
'js/utils/debug.js',
|
||||
'js/utils/toolkit.js',
|
||||
'js/sim_manager.js',
|
||||
'js/common.js',
|
||||
'js/config/config_manager.js',
|
||||
'js/views/BalanceLowLimitView.js',
|
||||
'js/view_manager.js',
|
||||
'js/settings/autosettings.js'
|
||||
];
|
||||
LazyLoader.load(SCRIPTS_NEEDED, function onScriptsLoaded() {
|
||||
setupFTE();
|
||||
parent.postMessage({
|
||||
type: 'fte_ready',
|
||||
data: ''
|
||||
}, Common.COST_CONTROL_APP);
|
||||
|
||||
window.addEventListener('localized', _onLocalize);
|
||||
});
|
||||
}
|
||||
|
||||
var wizard, vmanager;
|
||||
var toStep2, step = 0;
|
||||
function setupFTE() {
|
||||
if (SimManager.isMultiSim()) {
|
||||
window.addEventListener('dataSlotChange', function _onDataSimChange() {
|
||||
window.removeEventListener('dataSlotChange', _onDataSimChange);
|
||||
// Close FTE if change the SimCard for data connections
|
||||
Common.closeFTE();
|
||||
});
|
||||
}
|
||||
ConfigManager.requestAll(function _onSettings(configuration, settings) {
|
||||
wizard = document.getElementById('firsttime-view');
|
||||
vmanager = new ViewManager();
|
||||
|
||||
// Getting some values from config
|
||||
if (configuration && configuration.default_low_limit_threshold) {
|
||||
defaultLowLimitThreshold = configuration.default_low_limit_threshold;
|
||||
}
|
||||
|
||||
// Initialize resetTime and trackingPeriod to default values
|
||||
ConfigManager.setOption({resetTime: 1, trackingPeriod: 'monthly' });
|
||||
|
||||
var mode = ConfigManager.getApplicationMode();
|
||||
|
||||
var SCRIPTS_NEEDED = [
|
||||
'js/settings/limitdialog.js',
|
||||
'js/utils/formatting.js'
|
||||
];
|
||||
LazyLoader.load(SCRIPTS_NEEDED, function onScriptsLoaded() {
|
||||
Common.loadNetworkInterfaces(function() {
|
||||
AutoSettings.addType('data-limit', dataLimitConfigurer);
|
||||
if (mode === 'DATA_USAGE_ONLY') {
|
||||
AutoSettings.initialize(ConfigManager, vmanager,
|
||||
'#non-vivo-step-2');
|
||||
}
|
||||
});
|
||||
});
|
||||
// Currency is set by config as well
|
||||
if (configuration && configuration.credit &&
|
||||
configuration.credit.currency) {
|
||||
|
||||
document.getElementById('currency').textContent =
|
||||
configuration.credit.currency;
|
||||
}
|
||||
|
||||
if (mode === 'DATA_USAGE_ONLY') {
|
||||
debug('FTE for non supported SIM');
|
||||
wizard.dataset.steps = '3';
|
||||
reset(['step-1', 'non-vivo-step-1', 'non-vivo-step-2']);
|
||||
AutoSettings.initialize(ConfigManager, vmanager, '#non-vivo-step-1');
|
||||
|
||||
} else {
|
||||
wizard.dataset.steps = '4';
|
||||
reset(['step-1', 'step-2']);
|
||||
AutoSettings.initialize(ConfigManager, vmanager, '#step-1');
|
||||
|
||||
// Plantype selection
|
||||
toStep2 = document.getElementById('to-step-2');
|
||||
toStep2.disabled = true;
|
||||
|
||||
document.getElementById('prepaid-plan')
|
||||
.addEventListener('click', selectTrack);
|
||||
document.getElementById('postpaid-plan')
|
||||
.addEventListener('click', selectTrack);
|
||||
|
||||
addLowLimitStepConstrains();
|
||||
}
|
||||
|
||||
// Navigation
|
||||
var next = document.querySelectorAll('[data-navigation=next]');
|
||||
[].forEach.call(next, function cc_eachNext(nextButton) {
|
||||
nextButton.addEventListener('click', onNext);
|
||||
});
|
||||
|
||||
var prev = document.querySelectorAll('[data-navigation=back]');
|
||||
[].forEach.call(prev, function cc_eachPrev(prevButton) {
|
||||
prevButton.addEventListener('click', onBack);
|
||||
});
|
||||
|
||||
var finish = document.querySelectorAll('[data-navigation=finish]');
|
||||
[].forEach.call(finish, function cc_eachFinish(finishButton) {
|
||||
finishButton.addEventListener('click', onFinish);
|
||||
});
|
||||
|
||||
// Needed to put the alarms for balance and networkUsage
|
||||
LazyLoader.load(['js/costcontrol.js'], function() {
|
||||
var messageHandlerFrame = document.getElementById('message-handler');
|
||||
messageHandlerFrame.src = 'message_handler.html';
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
function _onLocalize() {
|
||||
Common.localizeWeekdaySelector(
|
||||
document.getElementById('pre3-select-weekday'));
|
||||
Common.localizeWeekdaySelector(
|
||||
document.getElementById('post2-select-weekday'));
|
||||
Common.localizeWeekdaySelector(
|
||||
document.getElementById('non2-select-weekday'));
|
||||
|
||||
function _setResetTimeToDefault(evt) {
|
||||
var today = new Date();
|
||||
var defaultResetTime = (evt.target.value === 'weekly') ?
|
||||
today.getDay() : today.getDate();
|
||||
ConfigManager.setOption({ resetTime: defaultResetTime });
|
||||
}
|
||||
|
||||
// Localized resetTime on trackingPeriod change
|
||||
var trackingPeriodSelector = document
|
||||
.querySelectorAll('[data-option="trackingPeriod"]');
|
||||
[].forEach.call(trackingPeriodSelector, function _reset(tPeriodSel) {
|
||||
tPeriodSel.addEventListener('change', _setResetTimeToDefault);
|
||||
});
|
||||
}
|
||||
|
||||
if (window.location.hash) {
|
||||
wizard = document.getElementById('firsttime-view');
|
||||
|
||||
if (window.location.hash === '#PREPAID' ||
|
||||
window.location.hash === '#POSTPAID') {
|
||||
wizard.querySelector('.authed-sim').hidden = false;
|
||||
} else {
|
||||
wizard.querySelector('.nonauthed-sim').hidden = false;
|
||||
}
|
||||
}
|
||||
|
||||
// TRACK SETUP
|
||||
|
||||
var currentTrack = ['step-1', 'step-2'];
|
||||
function selectTrack(evt) {
|
||||
if (evt.target.value === 'prepaid') {
|
||||
currentTrack = ['step-1', 'step-2', 'prepaid-step-2', 'prepaid-step-3'];
|
||||
AutoSettings.initialize(ConfigManager, vmanager, '#prepaid-step-2');
|
||||
AutoSettings.initialize(ConfigManager, vmanager, '#prepaid-step-3');
|
||||
balanceLowLimitView.disabled = false;
|
||||
ConfigManager.setOption({
|
||||
dataLimitValue: 40,
|
||||
dataLimitUnit: 'MB',
|
||||
lowLimit: true,
|
||||
lowLimitThreshold: defaultLowLimitThreshold
|
||||
});
|
||||
} else if (evt.target.value === 'postpaid') {
|
||||
currentTrack = ['step-1', 'step-2', 'postpaid-step-2', 'postpaid-step-3'];
|
||||
AutoSettings.initialize(ConfigManager, vmanager, '#postpaid-step-2');
|
||||
AutoSettings.initialize(ConfigManager, vmanager, '#postpaid-step-3');
|
||||
balanceLowLimitView.disabled = true;
|
||||
ConfigManager.setOption({ dataLimitValue: 2, dataLimitUnit: 'GB' });
|
||||
}
|
||||
|
||||
ConfigManager.setOption({ plantype: evt.target.value }, function _onSet() {
|
||||
toStep2.disabled = false;
|
||||
});
|
||||
}
|
||||
|
||||
// NAVIGATION
|
||||
|
||||
function reset(track) {
|
||||
// Reposition screens
|
||||
var currentScreen = document.getElementById(currentTrack[step]);
|
||||
var newStartScreen = document.getElementById(track[0]);
|
||||
|
||||
currentScreen.dataset.viewport = 'left';
|
||||
newStartScreen.dataset.viewport = 'right';
|
||||
delete newStartScreen.dataset.viewport;
|
||||
|
||||
for (var i = 1; i < track.length; i += 1) {
|
||||
var id = track[i];
|
||||
if (id) {
|
||||
var screen = document.getElementById(id);
|
||||
screen.dataset.viewport = 'right';
|
||||
}
|
||||
}
|
||||
|
||||
// Reset state
|
||||
step = 0;
|
||||
currentTrack = track;
|
||||
}
|
||||
|
||||
function onNext() {
|
||||
if (step === currentTrack.length - 1) {
|
||||
return;
|
||||
}
|
||||
|
||||
var currentId = currentTrack[step];
|
||||
var currentScreen = document.getElementById(currentId);
|
||||
|
||||
var nextScreenId = currentTrack[step + 1];
|
||||
var nextScreen = document.getElementById(nextScreenId);
|
||||
|
||||
// Enter the next screen
|
||||
delete nextScreen.dataset.viewport;
|
||||
currentScreen.dataset.viewport = 'left';
|
||||
|
||||
step += 1;
|
||||
|
||||
// Validate when in step 2 in order to restore buttons and errors
|
||||
if (step === 2) {
|
||||
balanceLowLimitView && balanceLowLimitView.validate();
|
||||
}
|
||||
}
|
||||
|
||||
function onBack() {
|
||||
if (step === 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
var currentId = currentTrack[step];
|
||||
var currentScreen = document.getElementById(currentId);
|
||||
|
||||
var prevScreenId = currentTrack[step - 1];
|
||||
var prevScreen = document.getElementById(prevScreenId);
|
||||
|
||||
// Enter the previous screen
|
||||
delete prevScreen.dataset.viewport;
|
||||
currentScreen.dataset.viewport = 'right';
|
||||
|
||||
step -= 1;
|
||||
}
|
||||
|
||||
function onFinish(evt) {
|
||||
evt.target.disabled = true;
|
||||
SimManager.requestDataSimIcc(function(dataSim) {
|
||||
ConfigManager.requestSettings(dataSim.iccId,
|
||||
function _onSettings(settings) {
|
||||
ConfigManager.setOption({ fte: false }, function _returnToApp() {
|
||||
Common.updateNextReset(settings.trackingPeriod, settings.resetTime,
|
||||
function _returnToTheApplication() {
|
||||
Common.startApp();
|
||||
}
|
||||
);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// Add particular constrains to the page where setting low limit button
|
||||
var balanceLowLimitView;
|
||||
function addLowLimitStepConstrains() {
|
||||
var nextButton = document.getElementById('low-limit-next-button');
|
||||
balanceLowLimitView = new BalanceLowLimitView(
|
||||
document.getElementById('low-limit'),
|
||||
document.getElementById('low-limit-input')
|
||||
);
|
||||
balanceLowLimitView.onvalidation = function(evt) {
|
||||
nextButton.disabled = !evt.isValid;
|
||||
};
|
||||
}
|
||||
|
||||
}());
|
||||
Loading…
Reference in a new issue