Skip to content

Instantly share code, notes, and snippets.

@knoopx
Forked from nandilugio/lacaixa.es.js
Created June 2, 2014 12:57
Show Gist options
  • Save knoopx/ca6b537a9e4aed333588 to your computer and use it in GitHub Desktop.
Save knoopx/ca6b537a9e4aed333588 to your computer and use it in GitHub Desktop.
$(document).ready(function () {
var TableParser = function () {
function isEmpty(line) {
var empty = true;
$.each(line, function(_, value) {
if (value.trim()) {
empty = false;
return false;
}
});
return empty;
}
return {
parse: function (cssTableSelector) {
var line, data = [];
$(cssTableSelector).find("tr").each(function () {
line = [];
$(this).find("th,td").each(function () {
line.push($(this).text());
});
if (!isEmpty(line)) data.push(line);
});
return data;
}
};
}();
var Csv = function () {
CSV_ROW_SEPARATOR = "\n";
CSV_COL_SEPARATOR = ",";
CSV_QUOTE = "\"";
function fromData(data) {
var csv = "";
$.each(data, function (_, row) {
csv += row.map(encodeValue).join(CSV_COL_SEPARATOR) + CSV_ROW_SEPARATOR;
});
return csv;
}
function encodeValue(value) {
return CSV_QUOTE + value.trim().replace(CSV_QUOTE, "\\" + CSV_QUOTE) + CSV_QUOTE;
}
return {
fromData: fromData,
offerDownload: function (data) {
location.href = "data:text/csv;charset=utf-8," + encodeURIComponent(data);
}
};
}();
var AccountPageDomHelper = function () {
UNFOLD_TIMES = 3; // Use an integer or Infinity
UNFOLD_WAIT_TIME_MS = 1234;
function unfoldExtractTable(onReady, unfoldsRemaining) {
if (typeof unfoldsRemaining === 'undefined') unfoldsRemaining = UNFOLD_TIMES;
setTimeout(function () {
var link = $(".next_acumulativo_on")[0];
if (link && unfoldsRemaining > 0) {
link.click();
unfoldExtractTable(onReady, --unfoldsRemaining);
} else {
onReady();
}
}, UNFOLD_WAIT_TIME_MS);
}
return {
unfoldExtractTable: unfoldExtractTable,
ifLoaded: function (handler) {
var accountTitleText = $("#titulo_cuenta").text();
var accountNumberRegEx = /Fecha impresi.n.+Cuenta.+\(CCC: (.+)\)Ver detalle/;
var accountNumberRegExResult = accountNumberRegEx.exec(accountTitleText);
if (accountNumberRegExResult) {
var accountNumber = accountNumberRegExResult[1];
handler(accountNumber);
}
}
};
}();
AccountPageDomHelper.ifLoaded(function(accountNumber) {
if (confirm("Download extract?")) {
AccountPageDomHelper.unfoldExtractTable(function () {
var movementsData = TableParser.parse("#asincronoExtractos table");
movementsData.splice(0, 1, ["Cuenta: ", accountNumber], []);
Csv.offerDownload(Csv.fromData(movementsData));
});
}
});
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment