| 
          <!-- v3 updated to parse CSV output from gviz url --> | 
        
        
           | 
          <style type="text/css">/* table styling */ | 
        
        
           | 
          #data-table { | 
        
        
           | 
            font-size: .85em; | 
        
        
           | 
            table-layout: fixed; | 
        
        
           | 
            width: 100%; | 
        
        
           | 
          } | 
        
        
           | 
          
 | 
        
        
           | 
          #data-table th { | 
        
        
           | 
            background-color: transparent; | 
        
        
           | 
            cursor: pointer; | 
        
        
           | 
          } | 
        
        
           | 
          #data-table .sorting_asc, | 
        
        
           | 
          #data-table .sorting_desc { | 
        
        
           | 
            background-color: #8a1700; | 
        
        
           | 
            color: #ffffff; | 
        
        
           | 
          } | 
        
        
           | 
          
 | 
        
        
           | 
          #data-table .sorting::after, | 
        
        
           | 
          #data-table .sorting_asc::after, | 
        
        
           | 
          #data-table .sorting_desc::after { margin-left: .125em; } | 
        
        
           | 
          
 | 
        
        
           | 
          #data-table .sorting::after { content: "\2195"; } | 
        
        
           | 
          #data-table .sorting_asc::after { content: "\2191"; } | 
        
        
           | 
          #data-table .sorting_desc::after { content: "\2193"; } | 
        
        
           | 
          
 | 
        
        
           | 
          .dt-utils { | 
        
        
           | 
            display: flex; | 
        
        
           | 
            justify-content: space-between; | 
        
        
           | 
          } | 
        
        
           | 
          
 | 
        
        
           | 
          .paginate_button { | 
        
        
           | 
            border: 1px solid #ccc; | 
        
        
           | 
            cursor: pointer; | 
        
        
           | 
            display: inline-block; | 
        
        
           | 
            padding: .25em .5em; | 
        
        
           | 
          } | 
        
        
           | 
          
 | 
        
        
           | 
          .paginate_button.current { | 
        
        
           | 
            background-color: #eee; | 
        
        
           | 
          } | 
        
        
           | 
          
 | 
        
        
           | 
          .paginate_button:not(.previous,.next) { | 
        
        
           | 
            margin: .5em; | 
        
        
           | 
          } | 
        
        
           | 
          </style> | 
        
        
           | 
          
 | 
        
        
           | 
          <table class="compact order-column" id="data-table"> | 
        
        
           | 
            <thead> | 
        
        
           | 
              <tr> | 
        
        
           | 
                <th style="width:40%;">Map</th> | 
        
        
           | 
                <th style="width:10%;">Date</th> | 
        
        
           | 
                <th style="width:10%;">Time Period</th> | 
        
        
           | 
                <th style="width:10%;">Region</th> | 
        
        
           | 
                <th style="width:10%;">Institution</th> | 
        
        
           | 
                <th style="width:10%;">Map ID</th> | 
        
        
           | 
              </tr> | 
        
        
           | 
            </thead> | 
        
        
           | 
            <tfoot> | 
        
        
           | 
              <tr> | 
        
        
           | 
                <th>Map</th> | 
        
        
           | 
                <th>Date</th> | 
        
        
           | 
                <th>Time Period</th> | 
        
        
           | 
                <th>Region</th> | 
        
        
           | 
                <th>Institution</th> | 
        
        
           | 
                <th>Map ID</th> | 
        
        
           | 
              </tr> | 
        
        
           | 
            </tfoot> | 
        
        
           | 
          </table> | 
        
        
           | 
          <script src="https://cdn.datatables.net/1.10.23/js/jquery.dataTables.js"></script> | 
        
        
           | 
          <script> | 
        
        
           | 
          var googleSheetId = ''; | 
        
        
           | 
             | 
        
        
           | 
          // adapted from https://gist.github.com/Jezternz/c8e9fafc2c114e079829974e3764db75 | 
        
        
           | 
          function csvRowToArray(data) { | 
        
        
           | 
            var re = /(,|\r?\n|\r|^)(?:"([^"]*(?:""[^"]*)*)"|([^,\r\n]*))/gi | 
        
        
           | 
            var result = [] | 
        
        
           | 
            let matches | 
        
        
           | 
          
 | 
        
        
           | 
            while ((matches = re.exec(data))) { | 
        
        
           | 
              if (matches[1].length && matches[1] !== ',') result.push([]) | 
        
        
           | 
              result.push( | 
        
        
           | 
                matches[2] !== undefined ? matches[2].replace(/""/g, '"') : matches[3] | 
        
        
           | 
              ) | 
        
        
           | 
            } | 
        
        
           | 
            return result | 
        
        
           | 
          } | 
        
        
           | 
          
 | 
        
        
           | 
          function parseCSVdata(text) { | 
        
        
           | 
            var rows = text.split('\n').map(function (row) { return csvRowToArray(row); }); | 
        
        
           | 
            var headers = rows.shift() | 
        
        
           | 
                              .filter(function (n) { return n; }) // remove blanks | 
        
        
           | 
                              .map(function (h) { return h.toLowerCase().replace(' ', '_')}) // downcase + remove spaces | 
        
        
           | 
                              ; | 
        
        
           | 
            var headerCount = headers.length; | 
        
        
           | 
            // google will send us a csv with a ton of empty cells, this reduces the row to match the # of headers | 
        
        
           | 
            var fixedRows = rows.map(function (row) { | 
        
        
           | 
              return row.filter(function (_n, idx) { return (idx + 1) <= headerCount; }); | 
        
        
           | 
            }); | 
        
        
           | 
          
 | 
        
        
           | 
            // then convert the rows into objects so it's easer to specify which columns to use | 
        
        
           | 
            return fixedRows.map(function (row) { | 
        
        
           | 
              return row.reduce(function (obj, value, idx) { | 
        
        
           | 
                obj[headers[idx]] = value; | 
        
        
           | 
                return obj | 
        
        
           | 
              }, {}); | 
        
        
           | 
            }); | 
        
        
           | 
          } | 
        
        
           | 
          
 | 
        
        
           | 
          $(document).ready(function () { | 
        
        
           | 
            $('#data-table').DataTable({ | 
        
        
           | 
              dom: '<<"dt-utils"if><t>lp>', | 
        
        
           | 
              ajax: function (_data, callback, _settings) { | 
        
        
           | 
                $.ajax('https://docs.google.com/spreadsheets/d/' + googleSheetId + '/gviz/tq?tqx=out:csv') | 
        
        
           | 
                  .done(function (data) { | 
        
        
           | 
                    var parsed = parseCSVdata(data); | 
        
        
           | 
                    console.log(parsed) | 
        
        
           | 
                    return callback({data: parsed}); | 
        
        
           | 
                  }) | 
        
        
           | 
              }, | 
        
        
           | 
              columns: [ | 
        
        
           | 
                { data: 'map' }, | 
        
        
           | 
                { data: 'date' }, | 
        
        
           | 
                { data: 'time_period' }, | 
        
        
           | 
                { data: 'region' }, | 
        
        
           | 
                { data: 'institution' }, | 
        
        
           | 
                { data: 'map_id' } | 
        
        
           | 
              ] | 
        
        
           | 
            }); | 
        
        
           | 
          }); | 
        
        
           | 
          </script> | 
        
        
           | 
          
 | 
        
        
           | 
          <p> </p> |