fix styling for mobile

- remove overlays on small screens
- minimise control on small screens
- add popup on zooming to area (since touchscreen devices have no 'hover')
- fix navigation menu for small screens
- add footer with licensing info
- fix table display on small screens

fixes #4
fixes #11
This commit is contained in:
Hugh Rundle 2021-01-24 12:40:17 +11:00
parent 259a29be22
commit bd664dd17d
6 changed files with 452 additions and 350 deletions

View file

@ -15,51 +15,56 @@
<h2>About Library Map</h2> <h2>About Library Map</h2>
<p id="beta">Beta!</p> <p id="beta">Beta!</p>
</section> </section>
<nav>
<ul>
<li><a href="/">Home</a></li>
<li class="active-tab">About</li>
<li><a href="/sources">Acknowledgements</a></li>
<li><a href="/contributing">How you can help</a></li>
<li><a href="https://github.com/hughrun/public_library_map">Code</a></li>
</ul>
</nav>
</header> </header>
<nav> <main>
<ul> <section class="info-page">
<li><a href="/">Home</a></li> <h2 id="about-library-map">About Library Map</h2>
<li class="active-tab">About</li> <p>This project collects and maps data from public libraries across the Australia and the external Australian Territories of Christmas Island and the Cocos (Keeling) Islands. In the long term I hope to include more data that can be combined and cross-referenced, e.g. library funding from local and state governments, HILDA data etc.</p>
<li><a href="/sources">Acknowledgements</a></li> <p>You should be able to find the location of every public library in Australia territory, plus the standard loan period for each libary service, and whether they charge overdue fines (if known, in both cases).</p>
<li><a href="/contributing">How you can help</a></li> <p>Soon you will be able to see which integrated library system (ILS/LMS) each library service uses.</p>
<li><a href="https://github.com/hughrun/public_library_map">Code</a></li> <h3 id="why-this-data">Why this data?</h3>
</ul> <p>When I worked as a systems librarian in public libraries I often wondered how the social networks of decision makers - most obviously reflected by geography and state borders - affected decision making on things like library sofware procurement. I thought mapping systems visually might reveal things that are less obvious on a simple table or list.</p>
</nav> <p>Rules about <strong>loan periods</strong> are arbitrary. I thought it might be interesting to see whether there are any regional trends. Im surprised by some of the results — do some libraries really have a standard loan period of six weeks? Seems kind of long. Why do so many rural libraries only lend items for two weeks? Is it because country people read faster, or something to do with limited book stock? 🤔</p>
<section class="info-page"> <p><strong>Fines for overdue library books</strong> are inefficient, ineffective, perverse, and regressive. “Punishable by fine” simply means “legal for rich people”. Mapping library fine regimes provides a view of any regional patterns, helps library managers to identify nearby colleagues who have already made their library fine-free and may be able to provide advice, and also allows activists to identify which libraries and local councils would benefit from some encouragement.</p>
<h2 id="about-library-map">About Library Map</h2> <h3 id="definitions">Definitions</h3>
<p>This project collects and maps data from public libraries across the Australia and the external Australian Territories of Christmas Island and the Cocos (Keeling) Islands. In the long term I hope to include more data that can be combined and cross-referenced, e.g. library funding from local and state governments, HILDA data etc.</p> <h4 id="overdue-fines">Overdue fines</h4>
<p>You should be able to find the location of every public library in Australia territory, plus the standard loan period for each libary service, and whether they charge overdue fines (if known, in both cases).</p> <p>A library service is classified as charging fines for overdue items if any kind of non-refundable fee is charged prior to <strong>28 days overdue</strong>. This period has been chosen because some libraries declare an item “lost” around that time, and invoice the borrower for a <em>replacement fee</em>. Designating these libraries as “not charging overdue fines” and others that charge e.g. a “notice fee” at the same cutoff time as “charging overdue fines” starts to get a bit weird.</p>
<p>Soon you will be able to see which integrated library system (ILS/LMS) each library service uses.</p> <h4 id="fines-for-children">Fines for children</h4>
<h3 id="why-this-data">Why this data?</h3> <p>Some libraries charge fines or fees for late-returned items, but exempt members who are under the age of (variously) 12, 16, 17, or 18; and/or for items designated as “for children”. Rather than creating my own specific definition I classify all libraries with a fine regime like this as “no fines for children”. Wouldnt it be better if they just didnt charge overdue fines at all?</p>
<p>When I worked as a systems librarian in public libraries I often wondered how the social networks of decision makers - most obviously reflected by geography and state borders - affected decision making on things like library sofware procurement. I thought mapping systems visually might reveal things that are less obvious on a simple table or list.</p> <h4 id="standard-loan-period">Standard loan period</h4>
<p>Rules about <strong>loan periods</strong> are arbitrary. I thought it might be interesting to see whether there are any regional trends. Im surprised by some of the results — do some libraries really have a standard loan period of six weeks? Seems kind of long. Why do so many rural libraries only lend items for two weeks? Is it because country people read faster, or something to do with limited book stock? 🤔</p> <p>The “standard loan period” is the loan period applied to an ordinary book, and may apply to other items or indeed all items held in a library. Data for Western Australia is provisional and in some cases has been rounded to the nearest “week” (e.g. a 19 day loan period is recorded as 3 weeks).</p>
<p><strong>Fines for overdue library books</strong> are inefficient, ineffective, perverse, and regressive. “Punishable by fine” simply means “legal for rich people”. Mapping library fine regimes provides a view of any regional patterns, helps library managers to identify nearby colleagues who have already made their library fine-free and may be able to provide advice, and also allows activists to identify which libraries and local councils would benefit from some encouragement.</p> <h4 id="indigenous-knowledge-centre">Indigenous Knowledge Centre</h4>
<h3 id="definitions">Definitions</h3> <p>Currently, only libraries classified as <em>Indigenous Knowledge Centres</em> by the State Library of Queensland are classified as such on this map. In future there may be other centres so identified.</p>
<h4 id="overdue-fines">Overdue fines</h4> <h3 id="caveats">Caveats</h3>
<p>A library service is classified as charging fines for overdue items if any kind of non-refundable fee is charged prior to <strong>28 days overdue</strong>. This period has been chosen because some libraries declare an item “lost” around that time, and invoice the borrower for a <em>replacement fee</em>. Designating these libraries as “not charging overdue fines” and others that charge e.g. a “notice fee” at the same cutoff time as “charging overdue fines” starts to get a bit weird.</p> <p>Most of the data for the map comes from government open data sources. As such it is subject to government bias, and may be out of date or over/under sampled. I make no claim or warranty that the data being complete, accurate, or up to date — though I aim for it to be all of those things. If in doubt, always check with the library directly.</p>
<h4 id="fines-for-children">Fines for children</h4> <h3 id="nomenclature">Nomenclature</h3>
<p>Some libraries charge fines or fees for late-returned items, but exempt members who are under the age of (variously) 12, 16, 17, or 18; and/or for items designated as “for children”. Rather than creating my own specific definition I classify all libraries with a fine regime like this as “no fines for children”. Wouldnt it be better if they just didnt charge overdue fines at all?</p> <p>Library locations are classified into four types. In general mode these are:</p>
<h4 id="standard-loan-period">Standard loan period</h4> <ul>
<p>The “standard loan period” is the loan period applied to an ordinary book, and may apply to other items or indeed all items held in a library. Data for Western Australia is provisional and in some cases has been rounded to the nearest “week” (e.g. a 19 day loan period is recorded as 3 weeks).</p> <li>Settler Knowledge Centres</li>
<h4 id="indigenous-knowledge-centre">Indigenous Knowledge Centre</h4> <li>Indigenous Knowledge Centres</li>
<p>Currently, only libraries classified as <em>Indigenous Knowledge Centres</em> by the State Library of Queensland are classified as such on this map. In future there may be other centres so identified.</p> <li>Worker Pacification Centres</li>
<h3 id="caveats">Caveats</h3> <li>Imperial Knowledge Centres</li>
<p>Most of the data for the map comes from government open data sources. As such it is subject to government bias, and may be out of date or over/under sampled. I make no claim or warranty that the data being complete, accurate, or up to date — though I aim for it to be all of those things. If in doubt, always check with the library directly.</p> </ul>
<h3 id="nomenclature">Nomenclature</h3> <p>If this naming convention makes you uncomfortable, you may view the map in <em>White fragility mode</em>, in which case the names are:</p>
<p>Library locations are classified into four types. In general mode these are:</p> <ul>
<ul> <li>Public Libraries</li>
<li>Settler Knowledge Centres</li> <li>Indigenous Knowledge Centres</li>
<li>Indigenous Knowledge Centres</li> <li>Mechanics Institutes</li>
<li>Worker Pacification Centres</li> <li>National &amp; State Libraries</li>
<li>Imperial Knowledge Centres</li> </ul>
</ul> </section>
<p>If this naming convention makes you uncomfortable, you may view the map in <em>White fragility mode</em>, in which case the names are:</p> </main>
<ul> <footer>
<li>Public Libraries</li> <p>This website and the data it uses licensed <a href="https://creativecommons.org/licenses/by/4.0/">CC-BY-4.0</a></p>
<li>Indigenous Knowledge Centres</li> </footer>
<li>Mechanics Institutes</li>
<li>National &amp; State Libraries</li>
</ul>
</section>
</body> </body>
</html> </html>

View file

@ -15,53 +15,58 @@
<h2>Contributing to Library Map</h2> <h2>Contributing to Library Map</h2>
<p id="beta">Beta!</p> <p id="beta">Beta!</p>
</section> </section>
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
<li><a href="/sources">Acknowledgements</a></li>
<li class="active-tab">How you can help</li>
<li><a href="https://github.com/hughrun/public_library_map">Code</a></li>
</ul>
</nav>
</header> </header>
<nav> <main>
<ul> <section class="info-page">
<li><a href="/">Home</a></li> <h2 id="contributing">Contributing</h2>
<li><a href="/about">About</a></li> <p>Id love your help to make <em>Library Map</em> as accurate and useful as possible.</p>
<li><a href="/sources">Acknowledgements</a></li> <h3 id="how-to-contribute-your-idea-bug-report-or-improvement">How to contribute your idea, bug report or improvement</h3>
<li class="active-tab">How you can help</li> <ol type="1">
<li><a href="https://github.com/hughrun/public_library_map">Code</a></li> <li>You can <a href="https://github.com/hughrun/public_library_map/issues">create an issue</a> on GitHub.</li>
</ul> <li>You can <a href="https://docs.github.com/en/github/.collaborating-with-issues-and-pull-requests/about-pull-requests">send a pull request</a> — though it is <em>strongly preferred</em> that you either ask to be assigned to an existing issue, or create a new issue, first.</li>
</nav> <li>You can just send an email to <code>librarymap</code>@<code>hugh</code>.<code>run</code>.</li>
<section class="info-page"> </ol>
<h2 id="contributing">Contributing</h2> <h3 id="which-files-to-update">Which files to update</h3>
<p>Id love your help to make <em>Library Map</em> as accurate and useful as possible.</p> <p>To update information about library <em>services</em> (e.g. fines info, loan period etc) you should edit <code>website/data/library_services_information.csv</code></p>
<h3 id="how-to-contribute-your-idea-bug-report-or-improvement">How to contribute your idea, bug report or improvement</h3> <p>To update information about library <em>locations</em> (e.g. street address, phone number, coordinates) you shoudl edit the relevant csv location file:</p>
<ol type="1"> <ul>
<li>You can <a href="https://github.com/hughrun/public_library_map/issues">create an issue</a> on GitHub.</li> <li><code>website/data/indigenous_knowledge_centre_locations.csv</code></li>
<li>You can <a href="https://docs.github.com/en/github/.collaborating-with-issues-and-pull-requests/about-pull-requests">send a pull request</a> — though it is <em>strongly preferred</em> that you either ask to be assigned to an existing issue, or create a new issue, first.</li> <li><code>website/data/mechanics_institute_locations.csv</code></li>
<li>You can just send an email to <code>librarymap</code>@<code>hugh</code>.<code>run</code>.</li> <li><code>website/data/nsla_library_locations.csv</code></li>
</ol> <li><code>website/data/public_library_locations.csv</code></li>
<h3 id="which-files-to-update">Which files to update</h3> </ul>
<p>To update information about library <em>services</em> (e.g. fines info, loan period etc) you should edit <code>website/data/library_services_information.csv</code></p> <p>Do not directly edit JSON files - these are <a href="https://github.com/hughrun/public_library_map/blob/master/about.md#important-files-that-are-not-in-this-repository">updated programatically</a>.</p>
<p>To update information about library <em>locations</em> (e.g. street address, phone number, coordinates) you shoudl edit the relevant csv location file:</p> <h3 id="citing-and-crediting-data-sources">Citing and crediting data sources</h3>
<ul> <p>If you are adding a lot of data and have a new source for it, make sure it is cited. You should update the list of sources at both <code>sources.md</code> <em>and</em> <code>website/sources/index.html</code>. If your source is “I just know because its my local library” or “I looked it up on their website” you dont need to add that to the list of sources. If your source is “I found a PDF listing every public library on the State Library website”, you do.</p>
<li><code>website/data/indigenous_knowledge_centre_locations.csv</code></li> <h3 id="missing-or-inaccurate-data">Missing or inaccurate data</h3>
<li><code>website/data/mechanics_institute_locations.csv</code></li> <p>Currently were missing data for some library services in relation to <strong>standard loan periods</strong> and <strong>fines for overdue items</strong>.</p>
<li><code>website/data/nsla_library_locations.csv</code></li> <p>Its likely that some <strong>library location data</strong> is inaccurate — especially for New South Wales. Its also possible that the address data is wrong (even though the location shown may be correct), and in some cases it is missing.</p>
<li><code>website/data/public_library_locations.csv</code></li> <p>Its possible that some of the <strong>fines data for Queensland</strong> is a little off. This came from the State Library of Queensland but I know for a fact that some of the data was wrong (e.g. Gold Coast Libraries does not charge overdue fines, but the SLQ reports says it does).</p>
</ul> <p>I am particularly interested if you know of data sources for entire regions, states, or Australia — especially if theyre reliably kept up to date.</p>
<p>Do not directly edit JSON files - these are <a href="https://github.com/hughrun/public_library_map/blob/master/about.md#important-files-that-are-not-in-this-repository">updated programatically</a>.</p> <p>If you can fill in any of these blanks, please update the relevant CSV file and send a pull request. If your data is coming from somewhere in particular, you should also add that to <code>sources.md</code> in the relevant table.</p>
<h3 id="citing-and-crediting-data-sources">Citing and crediting data sources</h3> <h3 id="ideas-for-additional-data">Ideas for additional data</h3>
<p>If you are adding a lot of data and have a new source for it, make sure it is cited. You should update the list of sources at both <code>sources.md</code> <em>and</em> <code>website/sources/index.html</code>. If your source is “I just know because its my local library” or “I looked it up on their website” you dont need to add that to the list of sources. If your source is “I found a PDF listing every public library on the State Library website”, you do.</p> <p>You might have an idea for library data that would be useful to map. Im really happy to hear about these ideas! Its possible that the information you want to map is unavailable, or just really hard to get, or maybe I will disagree that its useful. Thats ok - please ask anyway, expecially if you know where to find the data.</p>
<h3 id="missing-or-inaccurate-data">Missing or inaccurate data</h3> <h3 id="improvements-to-documentation">Improvements to documentation</h3>
<p>Currently were missing data for some library services in relation to <strong>standard loan periods</strong> and <strong>fines for overdue items</strong>.</p> <p>Im always — <em>always</em> — happy to hear how I can improve documentation. Even better if you make the edit and then send a pull request.</p>
<p>Its likely that some <strong>library location data</strong> is inaccurate — especially for New South Wales. Its also possible that the address data is wrong (even though the location shown may be correct), and in some cases it is missing.</p> <h3 id="improvements-to-the-website-design-layout-or-information">Improvements to the website design, layout, or information</h3>
<p>Its possible that some of the <strong>fines data for Queensland</strong> is a little off. This came from the State Library of Queensland but I know for a fact that some of the data was wrong (e.g. Gold Coast Libraries does not charge overdue fines, but the SLQ reports says it does).</p> <p>You might have an idea for an improvement thats not about the data per se, but rather about the website. Maybe theres some accessibilty improvements I can make. Let me know!</p>
<p>I am particularly interested if you know of data sources for entire regions, states, or Australia — especially if theyre reliably kept up to date.</p> <h3 id="licensing-and-copyright">Licensing and copyright</h3>
<p>If you can fill in any of these blanks, please update the relevant CSV file and send a pull request. If your data is coming from somewhere in particular, you should also add that to <code>sources.md</code> in the relevant table.</p> <p>By contributing to this project you agree to license your work under the following licenses:</p>
<h3 id="ideas-for-additional-data">Ideas for additional data</h3> <p><strong>/website/data/*</strong>: <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a></p>
<p>You might have an idea for library data that would be useful to map. Im really happy to hear about these ideas! Its possible that the information you want to map is unavailable, or just really hard to get, or maybe I will disagree that its useful. Thats ok - please ask anyway, expecially if you know where to find the data.</p> <p><strong>everything else</strong>: <a href="https://www.gnu.org/licenses/gpl-3.0.txt">GPL-3.0-or-later</a></p>
<h3 id="improvements-to-documentation">Improvements to documentation</h3> </section>
<p>Im always — <em>always</em> — happy to hear how I can improve documentation. Even better if you make the edit and then send a pull request.</p> </main>
<h3 id="improvements-to-the-website-design-layout-or-information">Improvements to the website design, layout, or information</h3> <footer>
<p>You might have an idea for an improvement thats not about the data per se, but rather about the website. Maybe theres some accessibilty improvements I can make. Let me know!</p> <p>This website and the data it uses licensed <a href="https://creativecommons.org/licenses/by/4.0/">CC-BY-4.0</a></p>
<h3 id="licensing-and-copyright">Licensing and copyright</h3> </footer>
<p>By contributing to this project you agree to license your work under the following licenses:</p>
<p><strong>/website/data/*</strong>: <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC-BY-SA</a></p>
<p><strong>everything else</strong>: <a href="https://www.gnu.org/licenses/gpl-3.0.txt">GPL-3.0-or-later</a></p>
</section>
</body> </body>
</html> </html>

View file

@ -19,44 +19,48 @@
<h2>Library Map</h2> <h2>Library Map</h2>
<p id="beta">Beta!</p> <p id="beta">Beta!</p>
</section> </section>
<nav>
<ul>
<li class="active-tab">Home</li>
<li><a href="/about">About</a></li>
<li><a href="/sources">Acknowledgements</a></li>
<li><a href="/contributing">How you can help</a></li>
<li><a href="https://github.com/hughrun/public_library_map">Code</a></li>
</ul>
</nav>
</header> </header>
<nav> <main>
<ul> <div id="loading">Loading, please be patient...</div>
<li class="active-tab">Home</li>
<li><a href="/about">About</a></li>
<li><a href="/sources">Acknowledgements</a></li>
<li><a href="/contributing">How you can help</a></li>
<li><a href="https://github.com/hughrun/public_library_map">Code</a></li>
</ul>
</nav>
<div id="loading">Loading, please be patient...</div> <!-- leaflet script -->
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script>
<!-- leaflet script --> <!-- TopoJSON -->
<script src="https://unpkg.com/leaflet@1.7.1/dist/leaflet.js" integrity="sha512-XQoYMqMTK8LvdxXYG3nZ448hOEQiglfqkJs1NOQV44cWnUrBc8PkAOcXy20w0vlaXaVUearIOBhiXZ5V3ynxwA==" crossorigin=""></script> <script src="https://unpkg.com/topojson@3"></script>
<!-- TopoJSON --> <!-- geocsv -->
<script src="https://unpkg.com/topojson@3"></script> <script src="leaflet.geocsv.js" type="text/javascript"></script>
<!-- geocsv --> <!-- leaflet fill patterns -->
<script src="leaflet.geocsv.js" type="text/javascript"></script> <script src="leaflet.pattern.js" type="text/javascript"></script>
<!-- leaflet fill patterns -->
<script src="leaflet.pattern.js" type="text/javascript"></script> <section class="intro">
<p>Made by <a href="https://www.hughrundle.net">Hugh Rundle</a> using open data. Play with the layers by using the layer control at the top right of the map.</p>
<section class="intro"> <p>Email <strong>librarymap@hugh.run</strong> if you have any tips or suggestions.</p>
<p>Made by <a href="https://www.hughrundle.net">Hugh Rundle</a> using open data. Play with the layers by using the layer control at the top right of the map.</p> <p>You need a <a href="https://caniuse.com/?search=fetch">modern browser</a> with JavaScript enabled to use Library Map. This site does not work in Internet Explorer.</p>
<p>Email <strong>librarymap@hugh.run</strong> if you have any tips or suggestions.</p> </section>
<p>You need a <a href="https://caniuse.com/?search=fetch">modern browser</a> with JavaScript enabled to use Library Map. This site does not work in Internet Explorer.</p>
</section> <div id="mode-switch">
<div></div>
<div id="mode-switch"> <button id="mode-button" name="mode-button">View in White Fragility Mode</button>
<div></div> </div>
<button id="mode-button" name="mode-button">View in White Fragility Mode</button> <!-- div to attach everything to -->
</div> <div id="mapid"></div>
<!-- div to attach everything to --> <!-- declares mapBoxToken constant -->
<div id="mapid"></div> <script src="./secrets.js" type="text/javascript"></script>
<!-- declares mapBoxToken constant --> <!-- this is the guts of it -->
<script src="./secrets.js" type="text/javascript"></script> <script src="./load-map.js" type="text/javascript"></script>
<!-- this is the guts of it --> </main>
<script src="./load-map.js" type="text/javascript"></script> <footer>
<p>This website and the data it uses licensed <a href="https://creativecommons.org/licenses/by/4.0/">CC-BY-4.0</a></p>
</footer>
</body> </body>
</html> </html>

View file

@ -74,7 +74,7 @@ Promise.all([boundaries, branchesCsv, ikcCsv, mechanics, nslaBranches])
layer.on({ layer.on({
mouseover: e => highlightFeature(e), mouseover: e => highlightFeature(e),
mouseout: e => resetHighlight(e, fines), mouseout: e => resetHighlight(e, fines),
click: zoomToFeature click: e => zoomToFeature(e, feature.properties),
}) })
} }
}); });
@ -320,10 +320,11 @@ Promise.all([boundaries, branchesCsv, ikcCsv, mechanics, nslaBranches])
} }
// add control layers // add control layers
var isSmallScreen = window.screen.availWidth < 800;
var mapControl = L.control.layers( var mapControl = L.control.layers(
baseMaps, baseMaps,
overlayMaps, overlayMaps,
{ "collapsed" : false } { "collapsed" : isSmallScreen }
).addTo(map); ).addTo(map);
// scale // scale
@ -344,15 +345,19 @@ Promise.all([boundaries, branchesCsv, ikcCsv, mechanics, nslaBranches])
setGeneral() setGeneral()
mapControl.remove(); mapControl.remove();
infoBoxes.branches.remove() infoBoxes.branches.remove()
mapControl = L.control.layers(baseMaps, overlayMaps, {"collapsed": false}).addTo(map); mapControl = L.control.layers(baseMaps, overlayMaps, {"collapsed": isSmallScreen}).addTo(map);
infoBoxes.branches.addTo(map) if (!isSmallScreen) {
infoBoxes.branches.addTo(map)
}
} else { } else {
sessionStorage.setItem('mapMode', 'fragile'); sessionStorage.setItem('mapMode', 'fragile');
setFragile() setFragile()
mapControl.remove(); mapControl.remove();
infoBoxes.branches.remove() infoBoxes.branches.remove()
mapControl = L.control.layers(baseMaps, overlayMaps, {"collapsed": false}).addTo(map); mapControl = L.control.layers(baseMaps, overlayMaps, {"collapsed": isSmallScreen}).addTo(map);
infoBoxes.branches.addTo(map) if (!isSmallScreen) {
infoBoxes.branches.addTo(map)
}
} }
} }
@ -379,15 +384,32 @@ Promise.all([boundaries, branchesCsv, ikcCsv, mechanics, nslaBranches])
if (!L.Browser.ie && !L.Browser.opera && !L.Browser.edge) { if (!L.Browser.ie && !L.Browser.opera && !L.Browser.edge) {
layer.bringToFront(); layer.bringToFront();
} }
infoBoxes.serviceInfo.addTo(map) if (!isSmallScreen) {
infoBoxes.serviceInfo.update(layer.feature.properties); infoBoxes.serviceInfo.addTo(map)
infoBoxes.serviceInfo.update(layer.feature.properties)
}
}
function zoomToFeature(e, props) {
map.fitBounds(e.target.getBounds());
e.target.bindPopup(`
<strong>${props.name}</strong>` +
`<p>Fines: ` +
(
props.fines === "no" ? "No" :
props.fines == "no_unconfirmed" ? "Probably no" :
props.fines === "yes" ? "Yes" :
props.fines == "adults" ? "No for children" :
props.fines == "by_lga" ? "Varies by LGA" : "Unknown"
) +
`<br/>Loans : ` +
(!props.standard_loan_weeks || props.standard_loan_weeks == "?" ? `Unknown` : `${props.standard_loan_weeks} weeks`) +
`</p>`
).openPopup()
} }
// clear on mouseout // clear on mouseout
function zoomToFeature(e) {
map.fitBounds(e.target.getBounds());
}
function resetHighlight(e, layer) { function resetHighlight(e, layer) {
layer.resetStyle(e.target); layer.resetStyle(e.target);
infoBoxes.serviceInfo.remove() infoBoxes.serviceInfo.remove()
@ -423,7 +445,9 @@ Promise.all([boundaries, branchesCsv, ikcCsv, mechanics, nslaBranches])
<h4>Library Branches</h4> <h4>Library Branches</h4>
<p>Circles represent an 800 metre radius from the library location. This is the distance generally used by urban planners to represent "conceptually within walking distance" for most people.</p> <p>Circles represent an 800 metre radius from the library location. This is the distance generally used by urban planners to represent "conceptually within walking distance" for most people.</p>
`}; `};
infoBoxes.branches.addTo(map) // add by default if (!isSmallScreen) {
infoBoxes.branches.addTo(map) // add by default it larger screen
}
// STANDARD LOAN PERIOD LEGEND // STANDARD LOAN PERIOD LEGEND
infoBoxes.loanPeriod.onAdd = addLegend; infoBoxes.loanPeriod.onAdd = addLegend;
@ -498,10 +522,14 @@ Promise.all([boundaries, branchesCsv, ikcCsv, mechanics, nslaBranches])
// add info boxes & markers when relevant layer is added // add info boxes & markers when relevant layer is added
map.on('overlayadd', l => { map.on('overlayadd', l => {
if (l.name == "Fines") { if (l.name == "Fines") {
infoBoxes.fines.addTo(map) if (!isSmallScreen) {
infoBoxes.fines.addTo(map)
}
} }
if (l.name == "Loan Period") { if (l.name == "Loan Period") {
infoBoxes.loanPeriod.addTo(map) if (!isSmallScreen) {
infoBoxes.loanPeriod.addTo(map)
}
loanPeriod.bringToBack() loanPeriod.bringToBack()
} }
}) })
@ -533,7 +561,9 @@ Promise.all([boundaries, branchesCsv, ikcCsv, mechanics, nslaBranches])
for (let k in overlayMaps ) { for (let k in overlayMaps ) {
mapControl.addOverlay(overlayMaps[k], k) mapControl.addOverlay(overlayMaps[k], k)
} }
infoBoxes.branches.addTo(map); if (!isSmallScreen) {
infoBoxes.branches.addTo(map)
}
modeButton.setAttribute('class', 'visible'); modeButton.setAttribute('class', 'visible');
} }
}) })

View file

@ -15,171 +15,176 @@
<h2>Sources &amp; Attributions</h2> <h2>Sources &amp; Attributions</h2>
<p id="beta">Beta!</p> <p id="beta">Beta!</p>
</section> </section>
<nav>
<ul>
<li><a href="/">Home</a></li>
<li><a href="/about">About</a></li>
<li class="active-tab">Acknowledgements</li>
<li><a href="/contributing">How you can help</a></li>
<li><a href="https://github.com/hughrun/public_library_map">Code</a></li>
</ul>
</nav>
</header> </header>
<nav> <main>
<ul> <section class="sources">
<li><a href="/">Home</a></li> <h2 id="sources-attributions">Sources &amp; Attributions</h2>
<li><a href="/about">About</a></li> <p><em>Library Map</em> was written and conceived on unceded Wurundjeri Woi Wurrung land.</p>
<li class="active-tab">Acknowledgements</li> <p>If you believe I have breached a license in using your data, or attributed it incorrectly, please get in touch at <code>librarymap</code>@<code>hugh</code>.<code>run</code></p>
<li><a href="/contributing">How you can help</a></li> <h3 id="visualisation">Visualisation</h3>
<li><a href="https://github.com/hughrun/public_library_map">Code</a></li> <table>
</ul> <thead>
</nav> <tr class="header">
<section class="sources"> <th>Source</th>
<h2 id="sources-attributions">Sources &amp; Attributions</h2> <th>Link</th>
<p><em>Library Map</em> was written and conceived on unceded Wurundjeri Woi Wurrung land.</p> <th>License</th>
<p>If you believe I have breached a license in using your data, or attributed it incorrectly, please get in touch at <code>librarymap</code>@<code>hugh</code>.<code>run</code></p> </tr>
<h3 id="visualisation">Visualisation</h3> </thead>
<table> <tbody>
<thead> <tr class="odd">
<tr class="header"> <td>leaflet.js</td>
<th>Source</th> <td><a href="https://leafletjs.com">leafletjs.com</a></td>
<th>Link</th> <td>BSD-2-Clause</td>
<th>License</th> </tr>
</tr> <tr class="even">
</thead> <td>leaflet.geoCSV</td>
<tbody> <td><a href="https://github.com/joker-x/Leaflet.geoCSV">GitHub</a></td>
<tr class="odd"> <td>GPL-3.0-or-later</td>
<td>leaflet.js</td> </tr>
<td><a href="https://leafletjs.com">leafletjs.com</a></td> <tr class="odd">
<td>BSD-2-Clause</td> <td>leaflet.pattern</td>
</tr> <td><a href="https://github.com/teastman/Leaflet.pattern">GitHub</a></td>
<tr class="even"> <td>BSD-2-Clause</td>
<td>leaflet.geoCSV</td> </tr>
<td><a href="https://github.com/joker-x/Leaflet.geoCSV">GitHub</a></td> <tr class="even">
<td>GPL-3.0-or-later</td> <td>MapBox</td>
</tr> <td><a href="https://www.mapbox.com">mapbox.com</a></td>
<tr class="odd"> <td><a href="https://www.mapbox.com/legal/tos/">custom ToS</a></td>
<td>leaflet.pattern</td> </tr>
<td><a href="https://github.com/teastman/Leaflet.pattern">GitHub</a></td> <tr class="odd">
<td>BSD-2-Clause</td> <td>OpenStreetMap</td>
</tr> <td><a href="https://www.openstreetmap.org">openstreetmap.org</a></td>
<tr class="even"> <td>CC-BY-SA</td>
<td>MapBox</td> </tr>
<td><a href="https://www.mapbox.com">mapbox.com</a></td> </tbody>
<td><a href="https://www.mapbox.com/legal/tos/">custom ToS</a></td> </table>
</tr> <h3 id="library-services">Library services</h3>
<tr class="odd"> <p>The library service boundaries are derived from local government boundary data care of PSMA and accessed from <a href="https://data.gov.au">data.gov.au</a>.</p>
<td>OpenStreetMap</td> <p>Data about fines and lending periods is a mix of original research, plus data provided by State Libraries and Public Libraries Victoria.</p>
<td><a href="https://www.openstreetmap.org">openstreetmap.org</a></td> <p>Data about language holdings (TODO) provided by various sources.</p>
<td>CC-BY-SA</td> <p>Data about Integrated Library Systems (ILS) (TODO - almost done) is mostly original research, with some data from State Library of Queensland, and some checked at Marshall Breedings <a href="http://librarytechnology.org">librarytechnology.org</a> site.</p>
</tr> <table>
</tbody> <colgroup>
</table> <col style="width: 33%" />
<h3 id="library-services">Library services</h3> <col style="width: 33%" />
<p>The library service boundaries are derived from local government boundary data care of PSMA and accessed from <a href="https://data.gov.au">data.gov.au</a>.</p> <col style="width: 33%" />
<p>Data about fines and lending periods is a mix of original research, plus data provided by State Libraries and Public Libraries Victoria.</p> </colgroup>
<p>Data about language holdings (TODO) provided by various sources.</p> <thead>
<p>Data about Integrated Library Systems (ILS) (TODO - almost done) is mostly original research, with some data from State Library of Queensland, and some checked at Marshall Breedings <a href="http://librarytechnology.org">librarytechnology.org</a> site.</p> <tr class="header">
<table> <th>Source</th>
<colgroup> <th>Link</th>
<col style="width: 33%" /> <th>License</th>
<col style="width: 33%" /> </tr>
<col style="width: 33%" /> </thead>
</colgroup> <tbody>
<thead> <tr class="odd">
<tr class="header"> <td>PSMA</td>
<th>Source</th> <td><a href="https://data.gov.au">data.gov.au</a></td>
<th>Link</th> <td>CC-BY 4.0</td>
<th>License</th> </tr>
</tr> <tr class="even">
</thead> <td>Victorian Government</td>
<tbody> <td><a href="https://www.localgovernment.vic.gov.au/__data/assets/pdf_file/0032/393809/2019-Directory-of-Public-Library-Services-Victoria.pdf">Directory of Public Libraries in Victoria</a></td>
<tr class="odd"> <td>© (fair dealing)</td>
<td>PSMA</td> </tr>
<td><a href="https://data.gov.au">data.gov.au</a></td> <tr class="odd">
<td>CC-BY 4.0</td> <td>NSW Government</td>
</tr> <td><a href="https://portal.spatial.nsw.gov.au/portal/apps/sites/#/home/items/a5f3bc7668be403aa88cdf6d1f7668b9/data?geometry=113.107%2C-39.164%2C186.935%2C-26.273&amp;page=48&amp;where=buildingcomplextype%20%3E%3D%2011%20AND%20buildingcomplextype%20%3C%3D%2011">Spatial NSW</a></td>
<tr class="even"> <td>CC-BY</td>
<td>Victorian Government</td> </tr>
<td><a href="https://www.localgovernment.vic.gov.au/__data/assets/pdf_file/0032/393809/2019-Directory-of-Public-Library-Services-Victoria.pdf">Directory of Public Libraries in Victoria</a></td> <tr class="even">
<td>© (fair dealing)</td> <td>Queensland Government (Library Service data)</td>
</tr> <td><a href="https://www.data.qld.gov.au/dataset/slq-qld-public-libraries-annual-statistics/resource/f10df735-4a8a-45d6-8db9-b2a1a4a4289d">Public Libraries Annual Statistics</a></td>
<tr class="odd"> <td>CC-BY-4.0</td>
<td>NSW Government</td> </tr>
<td><a href="https://portal.spatial.nsw.gov.au/portal/apps/sites/#/home/items/a5f3bc7668be403aa88cdf6d1f7668b9/data?geometry=113.107%2C-39.164%2C186.935%2C-26.273&amp;page=48&amp;where=buildingcomplextype%20%3E%3D%2011%20AND%20buildingcomplextype%20%3C%3D%2011">Spatial NSW</a></td> <tr class="odd">
<td>CC-BY</td> <td>Stat Library Queensland</td>
</tr> <td><a href="https://plconnect.slq.qld.gov.au/managing-my-library/statistics/queensland-public-libraries-statistical-bulletin">Public Libraries Statistical Bulletin</a></td>
<tr class="even"> <td>CC-BY-SA</td>
<td>Queensland Government (Library Service data)</td> </tr>
<td><a href="https://www.data.qld.gov.au/dataset/slq-qld-public-libraries-annual-statistics/resource/f10df735-4a8a-45d6-8db9-b2a1a4a4289d">Public Libraries Annual Statistics</a></td> <tr class="even">
<td>CC-BY-4.0</td> <td>WA NSLA statistics</td>
</tr> <td>personal communication</td>
<tr class="odd"> <td>© (fair dealing)</td>
<td>Stat Library Queensland</td> </tr>
<td><a href="https://plconnect.slq.qld.gov.au/managing-my-library/statistics/queensland-public-libraries-statistical-bulletin">Public Libraries Statistical Bulletin</a></td> <tr class="odd">
<td>CC-BY-SA</td> <td>Public Library Services (DoPC South Australia)</td>
</tr> <td><a href="https://www.libraries.sa.gov.au/client/en_AU/sapubliclibraries/?rm=LOCATE+A+LIBRA0%7C%7C%7C1%7C%7C%7C0%7C%7C%7Ctrue">Find a Library</a></td>
<tr class="even"> <td>© (fair dealing)</td>
<td>WA NSLA statistics</td> </tr>
<td>personal communication</td> </tbody>
<td>© (fair dealing)</td> </table>
</tr> <h3 id="library-locations">Library locations</h3>
<tr class="odd"> <p>Library locations are generally provided by state government departments.</p>
<td>Public Library Services (DoPC South Australia)</td> <table>
<td><a href="https://www.libraries.sa.gov.au/client/en_AU/sapubliclibraries/?rm=LOCATE+A+LIBRA0%7C%7C%7C1%7C%7C%7C0%7C%7C%7Ctrue">Find a Library</a></td> <colgroup>
<td>© (fair dealing)</td> <col style="width: 33%" />
</tr> <col style="width: 33%" />
</tbody> <col style="width: 33%" />
</table> </colgroup>
<h3 id="library-locations">Library locations</h3> <thead>
<p>Library locations are generally provided by state government departments.</p> <tr class="header">
<table> <th>Source</th>
<colgroup> <th>Link</th>
<col style="width: 33%" /> <th>License</th>
<col style="width: 33%" /> </tr>
<col style="width: 33%" /> </thead>
</colgroup> <tbody>
<thead> <tr class="odd">
<tr class="header"> <td>Libraries Tasmania / data.gov.au</td>
<th>Source</th> <td><a href="https://data.gov.au/dataset/ds-dga-409f7f64-35ef-4a70-8db1-dd737a6fabec/details?q=libraries">Libraries Tasmania locations</a></td>
<th>Link</th> <td>CC-BY 4.0</td>
<th>License</th> </tr>
</tr> <tr class="even">
</thead> <td>Vicmap Features of Interest</td>
<tbody> <td><a href="https://discover.data.vic.gov.au/dataset/vicmap-features-of-interest">data.vic.gov.au FoI</a></td>
<tr class="odd"> <td>CC-BY 4.0</td>
<td>Libraries Tasmania / data.gov.au</td> </tr>
<td><a href="https://data.gov.au/dataset/ds-dga-409f7f64-35ef-4a70-8db1-dd737a6fabec/details?q=libraries">Libraries Tasmania locations</a></td> <tr class="odd">
<td>CC-BY 4.0</td> <td>ACT Open Data Portal</td>
</tr> <td><a href="https://www.data.act.gov.au/dataset/Library-Locations-Map/3nit-7kex">ACT Libraries locations</a></td>
<tr class="even"> <td>CC-BY 4.0</td>
<td>Vicmap Features of Interest</td> </tr>
<td><a href="https://discover.data.vic.gov.au/dataset/vicmap-features-of-interest">data.vic.gov.au FoI</a></td> <tr class="even">
<td>CC-BY 4.0</td> <td>NSW State Library (NSW library locations and contacts)</td>
</tr> <td><a href="https://www.sl.nsw.gov.au/public-library-services/about-public-library-services/find-public-library-nsw">Public library services</a></td>
<tr class="odd"> <td>© (fair dealing)</td>
<td>ACT Open Data Portal</td> </tr>
<td><a href="https://www.data.act.gov.au/dataset/Library-Locations-Map/3nit-7kex">ACT Libraries locations</a></td> <tr class="odd">
<td>CC-BY 4.0</td> <td>State Library of Queensland</td>
</tr> <td><a href="https://www.data.qld.gov.au/dataset/public-libraries">Queensland public libraries directory</a></td>
<tr class="even"> <td>CC-BY 4.0</td>
<td>NSW State Library (NSW library locations and contacts)</td> </tr>
<td><a href="https://www.sl.nsw.gov.au/public-library-services/about-public-library-services/find-public-library-nsw">Public library services</a></td> <tr class="even">
<td>© (fair dealing)</td> <td>Find a library in the NT</td>
</tr> <td><a href="https://nt.gov.au/leisure/arts-culture-heritage/libraries-and-records/find-a-library-in-the-nt">NT government website</a></td>
<tr class="odd"> <td>© (fair dealing)</td>
<td>State Library of Queensland</td> </tr>
<td><a href="https://www.data.qld.gov.au/dataset/public-libraries">Queensland public libraries directory</a></td> <tr class="odd">
<td>CC-BY 4.0</td> <td>WA NSLA statistics</td>
</tr> <td>personal communication</td>
<tr class="even"> <td>© (fair dealing)</td>
<td>Find a library in the NT</td> </tr>
<td><a href="https://nt.gov.au/leisure/arts-culture-heritage/libraries-and-records/find-a-library-in-the-nt">NT government website</a></td> <tr class="even">
<td>© (fair dealing)</td> <td>Public Library Services (DoPC South Australia)</td>
</tr> <td><a href="https://www.libraries.sa.gov.au/client/en_AU/sapubliclibraries/?rm=LOCATE+A+LIBRA0%7C%7C%7C1%7C%7C%7C0%7C%7C%7Ctrue">Find a Library</a></td>
<tr class="odd"> <td>© (fair dealing)</td>
<td>WA NSLA statistics</td> </tr>
<td>personal communication</td> </tbody>
<td>© (fair dealing)</td> </table>
</tr> </section>
<tr class="even"> </main>
<td>Public Library Services (DoPC South Australia)</td> <footer>
<td><a href="https://www.libraries.sa.gov.au/client/en_AU/sapubliclibraries/?rm=LOCATE+A+LIBRA0%7C%7C%7C1%7C%7C%7C0%7C%7C%7Ctrue">Find a Library</a></td> <p>This website and the data it uses licensed <a href="https://creativecommons.org/licenses/by/4.0/">CC-BY-4.0</a></p>
<td>© (fair dealing)</td> </footer>
</tr>
</tbody>
</table>
</section>
</body> </body>
</html> </html>

View file

@ -1,3 +1,13 @@
html {
height: 100%;
}
body {
min-height: 100%;
display: grid;
grid-template-rows: auto 1fr auto;
}
html, html,
body { body {
font-family: "Calibri", Arial, Tahoma, sans-serif; font-family: "Calibri", Arial, Tahoma, sans-serif;
@ -5,6 +15,13 @@ body {
padding: 0; padding: 0;
} }
code,
pre {
font-family: "Jetbrains Mono", "Consolas", "Courier New", monospace;
background-color: #eee;
padding: 0 0.5em;
}
a, a,
a:active { a:active {
color: #FF3961; color: #FF3961;
@ -25,13 +42,27 @@ a:hover {
header { header {
margin: 0; margin: 0;
padding: 0;
display: grid;
grid-template-columns: auto 1fr auto;
font-family: "Calibri", Arial, Tahoma, sans-serif;
background-color: #000;
color: #fff;
}
/* NAVIGATION */
/* ========== */
nav {
margin: 0;
padding: 0;
grid-row: 3;
} }
nav,
nav ul { nav ul {
font-family: "Calibri", Arial, Tahoma, sans-serif; font-family: "Calibri", Arial, Tahoma, sans-serif;
background-color: #000; background-color: #000;
margin: 0; margin: 0;
padding-left: 2em;
} }
nav li { nav li {
@ -56,8 +87,52 @@ nav li a:hover {
.active-tab { .active-tab {
color: #000; color: #000;
background-color: #fff; background-color: #fff;
border-top-right-radius: 10px;
} }
@media only screen and (max-width: 800px) {
nav ul {
margin-left: 0;
padding-left: 0;
}
nav li {
display: block;
margin: 0;
padding: 0.5em 0 0.5em 1em;
border-color: #777;
border-left: none;
border-right: none;
}
}
#title {
display: flex;
align-items: center;
margin: 0;
padding: 0.5em 1em;
}
#logo {
height: 4em;
margin: 0 1em;
}
#beta {
font-family: "Comic Sans", Helvetica, Arial, sans-serif;
font-weight: bold;
font-size: 1.4em;
margin-left: 1em;
transform: rotate(-35deg);
background-color: #fff;
color: #FF3961;
padding: 0.25em 0.5em;
border-radius: 5px;
}
/* loading */
/* ======= */
#loading { #loading {
font-family: "Calibri", Arial, Tahoma, sans-serif; font-family: "Calibri", Arial, Tahoma, sans-serif;
font-size: 20px; font-size: 20px;
@ -107,36 +182,10 @@ nav li a:hover {
font-family: "Calibri", Arial, Tahoma, sans-serif; font-family: "Calibri", Arial, Tahoma, sans-serif;
} }
header { footer {
margin: auto; border-top: 1px solid #eee;
display: grid; width: 100%;
grid-template-columns: auto 1fr auto; text-align: center;
padding: 0.5em 1em;
font-family: "Calibri", Arial, Tahoma, sans-serif;
background-color: #000;
color: #fff;
}
#title {
display: flex;
align-items: center;
}
#logo {
height: 4em;
margin-right: 1em;
}
#beta {
font-family: "Comic Sans", Helvetica, Arial, sans-serif;
font-weight: bold;
font-size: 1.4em;
margin-left: 1em;
transform: rotate(-35deg);
background-color: #fff;
color: #FF3961;
padding: 0.25em 0.5em;
border-radius: 5px;
} }
#mode-switch { #mode-switch {
@ -169,10 +218,12 @@ header {
} }
table { table {
margin: auto;
border-collapse: collapse; border-collapse: collapse;
table-layout: fixed;
border: 1px solid #000; border: 1px solid #000;
width: 80%; margin: 0 auto 0 -25%;
width: 150%;
max-width: 54em;
} }
thead { thead {
@ -190,21 +241,23 @@ tbody td {
padding: 0.5em 1em; padding: 0.5em 1em;
} }
.sources table { /* when below max width of para */
margin: 0 auto 0 -25%;
width: 150%;
max-width: 54em;
}
@media only screen and (max-width: 54em) { @media only screen and (max-width: 54em) {
.info-page,
.sources { .sources {
width: 95vw; width: 95vw;
padding: 0 2.5vw;
} }
.sources table { table {
margin: 0 auto; margin: 0 auto;
width: 100%; width: 100%;
max-width: 100%; max-width: 100vw;
font-size: smaller;
}
td {
line-break: anywhere;
} }
} }