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);
      
      
      
      
  }