mailiverse/web/client/mMain.js

328 lines
6.5 KiB
JavaScript
Raw Permalink Normal View History

2013-07-21 13:40:17 -04:00
/***** mMain.js *****/
$(document).ready(function() {
$('input.deletable').wrap('<span class="deleteicon" />').after($('<span/>').click(function() {
$(this).prev('input').val('').change();
}));
});
//------------------------------------------------------------------------------------------//
mMain =
{
client: null,
isUploading: false,
isDownloading: false,
isCacheDirty: false,
isCaching: false,
isCheckingMail: false,
checkMailIsReady: false,
CHECK_MAIL_INTERVAL: 30,
ATTEMPT_FLUSH_INTERVAL: 1,
GARBAGE_COLLECT_INTERVAL: 5,
checkMailCountdown: 5,
signOut: function()
{
window.location.reload();
},
authenticate: function(name, password)
{
log("authenticating with ", name, " password ", password);
MService.authenticate(name, password);
},
checkMail: function()
{
log("checkMail: ", mMain.client);
mMain.checkMailIsReady = true;
mMain.attemptCheckMail();
},
flushStore: function()
{
mMain.client.flushStore();
},
onSettingsFinished: function (shouldSave)
{
if (shouldSave)
mMain.client.getSettings().set("name", $('#_mMain_settings_name').val());
$("#_mMain_settings").hide();
},
showSettings: function()
{
$('#_mMain_settings_name').val(mMain.client.getSettings().get("name", ""));
$("#_mMain_settings").show();
},
compose: function()
{
mCompose.open();
mReader.close();
mThreads.close();
mOriginal.close();
},
composeMail: function(conversation, mail)
{
mReader.close();
mThreads.close();
mOriginal.close();
mCompose.openMail(conversation, mail);
},
showOriginal: function(mail)
{
mCompose.close();
mReader.close();
mThreads.close();
mOriginal.open(mail);
},
//--------------------------------------------------
onSend: function()
{
mFolders.render();
mThreads.onDirty();
},
onSendSucceeded: function()
{
mMain.checkMail();
mFolders.render();
mThreads.onDirty();
},
onSendFailed: function()
{
mFolders.render();
mThreads.onDirty();
},
//--------------------------------------------------
onNetworkError: function(reason)
{
$('#_mHeader_network_error').text(reason);
},
updateStatusButton: function(v, b)
{
if (v)
{
$(b+"_on").show();
$(b+"_off").hide();
}
else
{
$(b+"_on").hide();
$(b+"_off").show();
}
},
onCheckBegin: function()
{
mMain.isCheckingMail = true;
$('#_mHeader_network_error').text('');
mMain.updateStatusButton(mMain.isCheckingMail, '#_mHeader_check_image');
$('#_mHeader_checkMail_button').prop('disabled', true);
},
onCheckStep: function(numbers)
{
var split = numbers.split(":");
$('#_mMain_checkMail_message').text(split[0] + " / " + split[1] + " of "+ split[2]);
},
onCheckEnd: function()
{
mMain.isCheckingMail = false;
mMain.updateStatusButton(mMain.isCheckingMail, '#_mHeader_check_image');
$('#_mHeader_checkMail_button').prop('disabled', false);
$('#_mMain_checkMail_message').text('');
},
onUploadBegin: function()
{
mMain.isUploading = true;
mMain.updateStatusButton(mMain.isUploading, '#_mHeader_uploading');
},
onUploadEnd: function()
{
mMain.isUploading = false;
mMain.updateStatusButton(mMain.isUploading, '#_mHeader_uploading');
},
onDownloadBegin: function()
{
mMain.isDownloading = true;
mMain.updateStatusButton(mMain.isDownloading, '#_mHeader_downloading');
},
onDownloadEnd: function()
{
mMain.isDownloading = false;
mMain.updateStatusButton(mMain.isDownloading, '#_mHeader_downloading');
},
//----------------------------------------
onCalculateBegin: function()
{
mMain.updateStatusButton(true, '#_mHeader_calculating');
},
onCalculateEnd: function()
{
mMain.updateStatusButton(false, '#_mHeader_calculating');
},
onCacheDirty: function()
{
mMain.isCacheDirty = true;
mMain.updateStatusButton(mMain.isCacheDirty, '#_mHeader_cacheDirty');
},
onCacheClean: function()
{
mMain.isCacheDirty = false;
mMain.updateStatusButton(mMain.isCacheDirty, '#_mHeader_cacheDirty');
},
onCacheBegin: function()
{
mMain.isCaching = true;
mMain.updateStatusButton(mMain.isCaching, '#_mHeader_caching');
},
onCacheSuccess: function()
{
$('#_mHeader_network_error').text('');
},
onCacheEnd: function()
{
mMain.isCaching = false;
mMain.updateStatusButton(mMain.isCaching, '#_mHeader_caching');
},
//-----------------------------------------
attemptFlush: function()
{
mMain.flushStore();
},
attemptCheckMail: function()
{
if (!mMain.isCheckingMail)
{
mMain.client.checkMail();
mMain.checkMailCountdown = mMain.CHECK_MAIL_INTERVAL;
}
},
attemptCheckMailCountdown: function()
{
if (mMain.checkMailIsReady)
mMain.checkMailCountdown--;
var countDown = mMain.checkMailCountdown;
if (mMain.checkMailCountdown<=0)
{
countDown = '...';
mMain.attemptCheckMail();
}
$('#_mHeader_checkMail_button').html('Check Mail (' + countDown + ')');
},
//-------------------------------------------------------
garbageCollect: function()
{
MService.garbageCollect();
},
onDaysLeft: function(r)
{
if (r.hasException())
{
$('#_mHeader_service_time_value').text(r.getException());
$('#_mHeader_service_time').removeClass("error warning");
$('#_mHeader_service_time').addClass("error");
}
else
{
$('#_mHeader_service_time_value').text(r.getObject());
var daysLeft = parseInt("" + r.getObject());
$('#_mHeader_service_time').removeClass("error warning");
if (daysLeft <= 0)
$('#_mHeader_service_time').addClass("error");
if (daysLeft < 30)
$('#_mHeader_service_time').addClass("warning");
}
},
refreshDaysLeft : function()
{
$('#_mHeader_service_time_value').text('?');
mMain.client.getDaysLeft({
invoke : function(r){ mMain.onDaysLeft(r); }
});
},
onCheckMailIsReady: function()
{
mMain.checkMailIsReady = true;
},
onInitialized: function()
{
mFolders.openWithName("system", "All");
setInterval( function(){ mMain.attemptFlush(); }, mMain.ATTEMPT_FLUSH_INTERVAL * 1000);
setInterval( function(){ mMain.attemptCheckMailCountdown(); }, 1 * 1000);
setInterval( function(){ mMain.garbageCollect(); }, mMain.GARBAGE_COLLECT_INTERVAL * 1000);
// onNextTick( function() { mMain.refreshDaysLeft(); });
},
initialize: function()
{
mReader.close();
mCompose.close();
// looks better when it is open on startup
// mThreads.close();
mOriginal.close();
}
} ;
/***** mMain.js *****/
function onCalculateEventEnd(num)
{
if (num == 0)
mMain.onCalculateEnd();
}
function onCalculateEventBegin(num)
{
if (num == 1)
mMain.onCalculateBegin();
}