Washington State
Coastal Atlas
Help
FAQ
Help
Site Map
How to Get Data
More
About the Atlas
Atlas overview
Contacts
Credits
Disclaimer
More Resources
Coastal Management
Additional Data Sources
Neighboring Atlases
Other Information
Learn
Puget Sound
Exploring
Tour
Beaches
Bluffs & Spits
Species
Living
Buying Property
Building
Homeowner Tips
Laws & Permits
Outer Coast
Sights
Beaches
Animals
Plants
Hazards
Erosion
Waves
Storms
Tools
Public Beach Access
Beach Closures
Shoreline Photos
Flood Hazard Maps
Coastal Atlas Map
Home
<-- Back To Map
Filter Data
Select a Location:
--OR--
Select Bacteria Type:
Select Data Type:
Raw Data
Geometric Means
Weekly Averages
< 10
No fecal bacteria could be detected
10-104
Some fecal bacteria were detected, but the beach is still within EPA's water quality limits
> 104
Fecal bacteria levels have exceeded EPA's water quality limits
Important!
When using Excel, set the precision of the Results column to one decimal place.
Directions to set precision...
var beachServiceUrl = 'https://fortress.wa.gov/ecy/beachdataservice/BeachService.svc'; function Init() { $(".collapsibleContainer").each($(this).collapsiblePanel()); // get all the drop down lists, then set up the table $.when(GetCountyList(), GetBeachList(), GetBacteriaList()).done(function (counties, beaches, bacteria) { //$('#TypeSelect').val(localStorage.getItem('type')); GetTitle(); SetDataTable('Raw'); }); } function GetCountyList() { var $countySelect = $('#CountySelect'); return $.ajax({ url: beachServiceUrl + '/CountyList/', dataType: 'jsonp', success: function (countyData) { var countyList = $countySelect.clone(); countyList.append($('
').attr('value', 'All').text('---COUNTY---')); $.each(countyData, function (key, value) { countyList.append($('
').attr('value', value).text(value)); }); $countySelect.replaceWith(countyList); //$('#CountySelect').val(localStorage.getItem('county')); } }); } function GetBeachList() { var $beachSelect = $('#BeachSelect'); return $.ajax({ url: beachServiceUrl + '/BeachList/', dataType: 'jsonp', success: function (beachData) { var beachList = $beachSelect.clone(); beachList.append($('
').attr('value', 'All').text('---BEACH---')); $.each(beachData, function (key, value) { beachList.append($('
').attr('value', value).text(key)); }); $beachSelect.replaceWith(beachList); beachVal = getUrlParameter('beach_id'); if (typeof (beachVal) !== 'undefined') { $beachSelect.val(beachVal); } //$('#BeachSelect').val(localStorage.getItem('beach')); } }); } function GetBacteriaList() { var $bacteriaSelect = $('#BacteriaSelect'); return $.ajax({ url: beachServiceUrl + '/BacteriaList/', dataType: 'jsonp', success: function (bacteriaData) { var bacteriaList = $bacteriaSelect.clone(); bacteriaList.append($('
').attr('value', 'All').text('---BACTERIA---')); $.each(bacteriaData, function (key, value) { bacteriaList.append($('
').attr('value', value).text(value)); }); $bacteriaSelect.replaceWith(bacteriaList); //$('#BacteriaSelect').val(localStorage.getItem('bacteria')); } }); } dojo.addOnLoad(Init); // Sets data tables up function SetDataTable(type, isFirstLoad) { var table, url, columns, columnDefs, order; var beachId = getUrlParameter('beach_id'); var beach = getSelect('#BeachSelect'); if (beachId != '') { beach = beachId; } // Have to destroy it and re-add it to get hte columns right. if ($.fn.DataTable.fnIsDataTable(document.getElementById('GridViewRaw'))) { $('#GridViewRaw').dataTable().fnDestroy(true); $('.gvRaw').append($('
').attr('id', 'GridViewRaw').addClass('display compact cell-border').append($('
').addClass('captionStyle'))); } table = $('#GridViewRaw'); switch (type) { case 'Raw': url = beachServiceUrl + '/Results?county=' + getSelect('#CountySelect') + '&beach=' + beach + '&bacteria=' + getSelect('#BacteriaSelect'); columns = [ { 'title': 'Beach ID', 'data': 'BeachID', 'width': '100px', 'className': 'centerAlignColumn' }, { 'title': 'Beach Name', 'data': 'BeachName' }, { 'title': 'Station ID', 'data': 'StationID', 'width': '110px', 'className': 'centerAlignColumn' }, { 'title': 'Date', 'data': 'SampleDate', 'width': '110px' }, { 'title': 'Result', 'data': 'ResultQuantity', 'width': '100px', 'className': 'rightAlignColumn' }, { 'title': 'Bacteria', 'data': 'BacteriaType', 'width': '100px', 'className': 'centerAlignColumn' }, ]; columnDefs = [ { 'targets': 4, // ResultQuantity 'render': function (data, type, row, meta) { if (type == 'display') { if (data < 10) { return '< 10'; } } return (data == null ? '' : data.toFixed(1)); } } ]; order = [3, 'desc']; break; case 'BeachGeoMean': url = beachServiceUrl + '/BeachGeoMeans?county=' + getSelect('#CountySelect') + '&bacteria=' + getSelect('#BacteriaSelect'); columns = [ { 'title': 'Beach ID', 'data': 'BeachID', 'width': '100px', 'className': 'centerAlignColumn' }, { 'title': 'Beach Name', 'data': 'BeachName' }, { 'title': 'Year', 'data': 'SampleYear', 'width': '110px' }, { 'title': 'Result', 'data': 'ResultQuantity', 'width': '100px', 'className': 'rightAlignColumn' }, { 'title': 'Bacteria', 'data': 'BacteriaType', 'width': '100px', 'className': 'centerAlignColumn' }, ]; columnDefs = [ { 'targets': 3, // ResultQuantity 'render': function (data, type, row, meta) { if (type == 'display') { if (data < 10) { return '< 10'; } } return (data == null ? '' : data.toFixed(1)); } } ]; order = [2, 'desc']; break; case 'StationGeoMean': url = beachServiceUrl + '/StationGeoMeans?beach=' + beach + '&bacteria=' + getSelect('#BacteriaSelect'); columns = [ { 'title': 'Beach ID', 'data': 'BeachID', 'width': '100px', 'className': 'centerAlignColumn' }, { 'title': 'Beach Name', 'data': 'BeachName' }, { 'title': 'Station ID', 'data': 'StationID', 'width': '110px', 'className': 'centerAlignColumn' }, { 'title': 'Year', 'data': 'SampleYear', 'width': '110px' }, { 'title': 'Result', 'data': 'ResultQuantity', 'width': '100px', 'className': 'rightAlignColumn' }, { 'title': 'Bacteria', 'data': 'BacteriaType', 'width': '100px', 'className': 'centerAlignColumn' }, ]; columnDefs = [ { 'targets': 4, // ResultQuantity 'render': function (data, type, row, meta) { if (type == 'display') { if (data < 10) { return '< 10'; } } return (data == null ? '' : data.toFixed(1)); } } ]; order = [3, 'desc']; break; case 'WkAvg': url = beachServiceUrl + '/WeeklyAvgs?county=' + getSelect('#CountySelect') + 'beach=' + beach + '&bacteria=' + getSelect('#BacteriaSelect'); columns = [ { 'title': 'Beach ID', 'data': 'BeachID', 'width': '100px', 'className': 'centerAlignColumn' }, { 'title': 'Beach Name', 'data': 'BeachName' }, { 'title': 'Date', 'data': 'SampleDate', 'width': '110px' }, { 'title': 'Result', 'data': 'ResultQuantity', 'width': '100px', 'className': 'rightAlignColumn' }, { 'title': 'Bacteria', 'data': 'BacteriaType', 'width': '100px', 'className': 'centerAlignColumn' }, ]; columnDefs = [ { 'targets': 3, // ResultQuantity 'render': function (data, type, row, meta) { if (type == 'display') { if (data < 10) { return '< 10'; } } return (data == null ? '' : data.toFixed(1)); } } ]; order = [2, 'desc']; break; } table.DataTable( { 'processing': true, 'serverSide': false, 'deferRender': false, 'destroy': true, 'ajax': { 'url': url, 'dataType': 'jsonp', 'dataSrc': function (json) { PopulateHiddenField(json); return json; } }, 'columns': columns, 'columnDefs': columnDefs, 'dom': 'rtlip', 'lengthMenu': [[10, 20, 50, -1], [10, 20, 50, "All"]], 'pageLength': 10, 'pagingType': 'full_numbers', 'order': order, }); } function GetTitle() { var county = getSelect('#CountySelect'); var beachVal = getSelect('#BeachSelect'); var beach = getSelect('#BeachSelect', true) var bacteria = getSelect('#BacteriaSelect'); var type = getSelect('#TypeSelect', true); var title = type; if (county != 'All') { title += ' For ' + county + ' COUNTY' } else if (beachVal != 'All') { title += ' For ' + beach + ' (' + beachVal + ')'; } if (bacteria != 'All') { title += ' - ' + bacteria; } $('.captionStyle').text(title); $('#hfTitle').attr('Value', title.replace(/\s+/g, '')); return title; } function countyListChange() { $('#BeachSelect').val('All'); //localStorage.setItem('county', $('#CountySelect').val()); GetTitle(); ReloadData(); } function beachListChange() { $('#CountySelect').val('All'); //localStorage.setItem('beach', $('#BeachSelect').val()); GetTitle(); ReloadData(); } function bacteriaListChange() { //localStorage.setItem('bacteria', $('#BacteriaSelect').val()); GetTitle(); ReloadData(); } function typeListChange() { //localStorage.setItem('type', $('#TypeSelect').val()); var type = getSelect('#TypeSelect'); switch (type) { case 'Raw': SetDataTable('Raw'); break; case 'GeoMean': var beach = getSelect('#BeachSelect'); if (beach != 'All') { SetDataTable('StationGeoMean'); } else { SetDataTable('BeachGeoMean'); } break; case 'WkAvg': SetDataTable('WkAvg'); break; } GetTitle(); ReloadData(); } function ReloadData() { var type = getSelect('#TypeSelect'); var beach = getSelect('#BeachSelect'); switch (type) { case 'Raw': $('#GridViewRaw').DataTable().ajax.url(beachServiceUrl + '/Results?county=' + getSelect('#CountySelect') + '&beach=' + beach + '&bacteria=' + getSelect('#BacteriaSelect')).load(); break; case 'GeoMean': if (beach != 'All') { $('#GridViewRaw').DataTable().ajax.url(beachServiceUrl + '/StationGeoMeans?beach=' + beach + '&bacteria=' + getSelect('#BacteriaSelect')).load(); } else $('#GridViewRaw').DataTable().ajax.url(beachServiceUrl + '/BeachGeoMeans?county=' + getSelect('#CountySelect') + '&bacteria=' + getSelect('#BacteriaSelect')).load(); break; case 'WkAvg': $('#GridViewRaw').DataTable().ajax.url(beachServiceUrl + '/WeeklyAvgs?county=' + getSelect('#CountySelect') + '&beach=' + beach + '&bacteria=' + getSelect('#BacteriaSelect')).load(); break; } } function PopulateHiddenField(json) { var columnLine = ''; var mainText = ''; if (json.length > 0) { $.each(json, function (index, obj) { $.each(obj, function (key, value) { if (index === 0) { columnLine += key + ','; } if (key === 'ResultQuantity') { if (value < 10) mainText += '"< 10",'; else mainText += '"' + value.toFixed(1) + '",'; } else { mainText += '"' + value + '",'; } }); if (index === 0) { columnLine += '\r\n'; } mainText += '\r\n'; }); } mainText = columnLine + mainText; $('#hfData').attr('Value', mainText); } function getSelect(identifier, getText) { if (getText) { return $(identifier + ' option:selected').text(); } var value = $(identifier).val(); if (value === null) { value = 'All'; } return value; } function getUrlParameter(sParam) { var sPageURL = window.location.search.substring(1); var sURLVariables = sPageURL.split('&'); for (var i = 0; i < sURLVariables.length; i++) { var sParameterName = sURLVariables[i].split('='); if (sParameterName[0] == sParam) { return sParameterName[1]; } } } function alertPrecision() { alert( 'In Excel...\n' + '- Right-click the letter above the Result column (usually D or E), and click "Format Cells"\n' + '- On the "Number" tab, select "Number" in the side list\n' + '- Set "Decimal Precision" to 1, and click OK'); }