Autocomplete Address Information
by BaronGrivet
HTML
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.css">
<script src="https://spreadsheets.google.com/feeds/cells/1DnK7kz9r3W2Jit0lU8TE7H8-4jOesD9_SHsEgEOrs4k/1/public/values?alt=json-in-script&callback=doData"></script>
<form>
<input id="autocompleteAddress" type="text"/>
</form>
<table id="addressDays">
</table>
JavaScript
var spData = null;
var addressData = {};
var addressRowNumber = 0;
$(document).ready(function () {
readData();
$('#autocompleteAddress').on('input',function(e){
var inputText = $(this).val().toLowerCase();
if(inputText.length > 2){
$('#addressDays').empty();
$.each(addressData, function( index, value ) {
indexOf = index.toLowerCase().indexOf(inputText);
if (indexOf >= 0){
$('#addressDays').append('<tr data-order="'+indexOf+'"><td>'+index+'</td><td>'+value+'</td></tr>');
}
});
$('#addressDays tr').sort(function(a,b) {
return $(a).data('order') > $(b).data('order');
}).appendTo('#addressDays')
}
});
});
function doData(json) {
spData = json.feed.entry;
}
function saveToArray(rowData) {
if (rowData == null) return null;
if (rowData.length == 0) return null;
if (rowData[0].match(/^\d/)) {
var addressName = rowData[0]+', '+rowData[2];
} else {
var addressName = rowData[0]+', '+rowData[2]+' '+rowData[1];
}
addressData[addressName] = rowData[3];
}
function readData() {
var data = spData;
var rowData = [];
var row = 0;
for (var r = 0; r < data.length; r++) {
var cell = data[r]["gs$cell"];
var val = cell["$t"];
if (cell.col == 1) {
saveToArray(rowData);
rowData = [];
row++;
}
rowData.push(val);
}
saveToArray(rowData);
}