Skip to content

Instantly share code, notes, and snippets.

@claudiohilario
Created October 23, 2017 16:24
Show Gist options
  • Save claudiohilario/9423a087f05550bd3bf6ca4581191ec9 to your computer and use it in GitHub Desktop.
Save claudiohilario/9423a087f05550bd3bf6ca4581191ec9 to your computer and use it in GitHub Desktop.
/* globals console,document,window,cordova */
document.addEventListener('deviceready', onDeviceReady, false);
/**
* Objeto de compatibilidade
* window.logToFile.info('Olá, entrou!');
*/
var logToFile = {
info: function (text, tipo = 'INFO') {
window.writeLog(text, tipo);
}
}
//Objeto log
var logOb;
function fail(e) {
console.log("FileSystem Error");
console.dir(e);
}
function onDeviceReady() {
//localStorage.removeItem("log_file");
alert(window.localStorage.getItem("log_file"));
if (window.localStorage.getItem("log_file") === null) {
//Ficheiro de Log não existe
//Define um nome com timestamp
var logFileName = 'log_' + Math.floor(Date.now() / 1000) + '_.txt';
//Cria ficheiro de log
createLogFile(logFileName);
//Atualiza o storage
window.localStorage.setItem("log_file", logFileName);
} else {
//Ficheiro de Log existe
//Vai buscar o nome do ficheiro da storage
var logFileName = window.localStorage.getItem("log_file");
alert('Teste');
alert(logFileValidate(logFileName, 10));
//Verifica a validade do ficheiro de log (10 dias)
if (logFileValidate(logFileName, 10)) {
//Válido
//Grava log no ficheiro
createLogFile(logFileName)
} else {
//Apaga o ficheiro
removeLogFile(logFileName);
//Criar um novo ficheiro atualizado
//Cria um novo nome de ficheiro atualizado
logFileName = 'log_' + Math.floor(Date.now() / 1000) + '_.txt';
//Cria novo ficheiro atualizado
createLogFile(logFileName);
window.localStorage.setItem("log_file", logFileName);
}
}
document.querySelector("#actionOne").addEventListener("touchend", function (e) {
window.logToFile.info('Entrou na 1ª Opção');
}, false);
document.querySelector("#actionTwo").addEventListener("touchend", function (e) {
window.logToFile.info('Entrou na 2ª Opção!');
}, false);
}
function createLogFile(logFileName) {
window.resolveLocalFileSystemURL(cordova.file.documentsDirectory, function (dir) {
console.log("Entrou no diretorio:", dir);
dir.getFile(logFileName, { create: true }, function (file) {
console.log("Obteve ficheiro", file);
logOb = file;
});
});
}
function removeLogFile(logFileName) {
window.resolveLocalFileSystemURL(cordova.file.documentsDirectory, function (dir) {
console.log("Entrou no diretorio:", dir);
dir.getFile(logFileName, { create: false }, function (file) {
console.log("Obteve ficheiro", file);
//logOb = file;
file.remove(function () {
//Removido com sucesso
}, function (error) {
//Erro ao remover ficheiro
}, function () {
//Ficheiro nao existe!
});
});
});
}
function writeLog(str, tipo = 'INFO') {
if (!logOb) return;
var data = new Date();
var log = data.getFullYear() + '-' + (data.getMonth() + 1) + '-' + data.getDate() + ' ' + data.getHours() + ':' + data.getMinutes() + ':' + data.getSeconds() + '.' + data.getMilliseconds() + ' : ' + tipo + ' : ' + str + '\n';
logOb.createWriter(function (fileWriter) {
fileWriter.seek(fileWriter.length);
var blob = new Blob([log], { type: 'text/plain' });
fileWriter.write(blob);
console.log("Adicionou ao ficheiro log!");
}, fail);
}
/**
* Permite verificar se o ficheiro de logs é limpo ou não
* @param {any} nome_ficheiro
* @param {any} dias_validade
*/
function logFileValidate(nome_ficheiro, dias_validade) {
//Timestamp atual em segundos
var timestamp = Math.floor(Date.now() / 1000);
//Timestamp guardado no ficheiro
var timestamp_log = nome_ficheiro.split("_");
//Timestamp da criação do ficheiro + tempo de validade em dias
//timestamp_log_lim_sup = parseInt(timestamp_log[1]) + (86400 * dias_validade);
var timestamp_log_lim_sup = parseInt(timestamp_log[1]) + (20);
//Se estiver válido
if (timestamp_log_lim_sup - timestamp > 0) {
//Grava log no ficheiro
return true;
} else {
//Limpa ficheiro e grava
return false;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment