Skip to content

Commit

Permalink
Initial fare calculator
Browse files Browse the repository at this point in the history
  • Loading branch information
arbyn-argabioso committed Nov 17, 2023
1 parent a1e26ca commit 0a54eb6
Show file tree
Hide file tree
Showing 2 changed files with 387 additions and 0 deletions.
274 changes: 274 additions & 0 deletions public/ebike/fare/css/normalize.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,274 @@
/*! modern-normalize v2.0.0 | MIT License | https://github.com/sindresorhus/modern-normalize */

/*
Document
========
*/

/**
Use a better box model (opinionated).
*/

*,
::before,
::after {
box-sizing: border-box;
}

html {
/* Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3) */
font-family:
system-ui,
'Segoe UI',
Roboto,
Helvetica,
Arial,
sans-serif,
'Apple Color Emoji',
'Segoe UI Emoji';
line-height: 1.15; /* 1. Correct the line height in all browsers. */
-webkit-text-size-adjust: 100%; /* 2. Prevent adjustments of font size after orientation changes in iOS. */
-moz-tab-size: 4; /* 3. Use a more readable tab size (opinionated). */
tab-size: 4; /* 3 */
}

/*
Sections
========
*/

body {
margin: 0; /* Remove the margin in all browsers. */
}

/*
Grouping content
================
*/

/**
1. Add the correct height in Firefox.
2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655)
*/

hr {
height: 0; /* 1 */
color: inherit; /* 2 */
}

/*
Text-level semantics
====================
*/

/**
Add the correct text decoration in Chrome, Edge, and Safari.
*/

abbr[title] {
text-decoration: underline dotted;
}

/**
Add the correct font weight in Edge and Safari.
*/

b,
strong {
font-weight: bolder;
}

/**
1. Improve consistency of default fonts in all browsers. (https://github.com/sindresorhus/modern-normalize/issues/3)
2. Correct the odd 'em' font sizing in all browsers.
*/

code,
kbd,
samp,
pre {
font-family:
ui-monospace,
SFMono-Regular,
Consolas,
'Liberation Mono',
Menlo,
monospace; /* 1 */
font-size: 1em; /* 2 */
}

/**
Add the correct font size in all browsers.
*/

small {
font-size: 80%;
}

/**
Prevent 'sub' and 'sup' elements from affecting the line height in all browsers.
*/

sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}

sub {
bottom: -0.25em;
}

sup {
top: -0.5em;
}

/*
Tabular data
============
*/

/**
1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297)
2. Correct table border color inheritance in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016)
*/

table {
text-indent: 0; /* 1 */
border-color: inherit; /* 2 */
}

/*
Forms
=====
*/

/**
1. Change the font styles in all browsers.
2. Remove the margin in Firefox and Safari.
*/

button,
input,
optgroup,
select,
textarea {
font-family: inherit; /* 1 */
font-size: 100%; /* 1 */
line-height: 1.15; /* 1 */
margin: 0; /* 2 */
}

/**
Remove the inheritance of text transform in Edge and Firefox.
*/

button,
select {
text-transform: none;
}

/**
Correct the inability to style clickable types in iOS and Safari.
*/

button,
[type='button'],
[type='reset'],
[type='submit'] {
-webkit-appearance: button;
}

/**
Remove the inner border and padding in Firefox.
*/

::-moz-focus-inner {
border-style: none;
padding: 0;
}

/**
Restore the focus styles unset by the previous rule.
*/

:-moz-focusring {
outline: 1px dotted ButtonText;
}

/**
Remove the additional ':invalid' styles in Firefox.
See: https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737
*/

:-moz-ui-invalid {
box-shadow: none;
}

/**
Remove the padding so developers are not caught out when they zero out 'fieldset' elements in all browsers.
*/

legend {
padding: 0;
}

/**
Add the correct vertical alignment in Chrome and Firefox.
*/

progress {
vertical-align: baseline;
}

/**
Correct the cursor style of increment and decrement buttons in Safari.
*/

::-webkit-inner-spin-button,
::-webkit-outer-spin-button {
height: auto;
}

/**
1. Correct the odd appearance in Chrome and Safari.
2. Correct the outline style in Safari.
*/

[type='search'] {
-webkit-appearance: textfield; /* 1 */
outline-offset: -2px; /* 2 */
}

/**
Remove the inner padding in Chrome and Safari on macOS.
*/

::-webkit-search-decoration {
-webkit-appearance: none;
}

/**
1. Correct the inability to style clickable types in iOS and Safari.
2. Change font properties to 'inherit' in Safari.
*/

::-webkit-file-upload-button {
-webkit-appearance: button; /* 1 */
font: inherit; /* 2 */
}

/*
Interactive
===========
*/

/*
Add the correct display in Chrome and Safari.
*/

summary {
display: list-item;
}
113 changes: 113 additions & 0 deletions public/ebike/fare/index.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,113 @@
<!DOCTYPE html>
<html>

<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>eBike Fare Calculator</title>

<link rel="stylesheet" href="css/normalize.css">

<link rel="stylesheet" href="https://unpkg.com/leaflet@1.9.4/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin="" />
<script src="https://unpkg.com/leaflet@1.9.4/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>

</head>

<body>
<h1>TEST</h1>
<button id="startStopButton">Start/Stop Tracking</button>

<div id="map" style="width: 600px; height: 400px;"></div>
<script>

document.addEventListener("DOMContentLoaded", (event) => {
const map = L.map('map').setView([14.599732043846203, 120.98514882838623], 13);

const tiles = L.tileLayer('http://{s}.google.com/vt/lyrs=m&x={x}&y={y}&z={z}', {
maxZoom: 19,
subdomains:['mt0','mt1','mt2','mt3'],
attribution: '&copy; <a href="http://www.openstreetmap.org/copyright">OpenStreetMap</a>'
}).addTo(map);
let watchID;
let positionOptions = {
enableHighAccuracy: true, // Uses GPS if available
timeout: 5000, // Milliseconds to wait before timeout if no position is received
maximumAge: 0 // Set to 0 to ensure the device doesn't return a cached position
};

let allPositions = [];

let currentLatitude = null;
let currentLongitude = null;

let isTracking = false;
let startPosition = null;
let endPosition = null;

let startMarker = null;
let stopMarker = null;

document.getElementById('startStopButton').addEventListener('click', function() {
if (!isTracking) {
startTracking();
} else {
stopTracking();
calculateFare();
}
});

function startTracking() {
if (navigator.geolocation) {
watchID = navigator.geolocation.watchPosition(positionUpdate, positionError, positionOptions);
isTracking = true;
} else {
console.log("Geolocation is not supported by this browser.");
}
}

function positionUpdate(position) {
currentLatitude = position.coords.latitude;
currentLongitude = position.coords.longitude;

let coords = [currentLatitude, currentLongitude];

if (startPosition === null) {
startPosition = coords;
startMarker = L.marker(startPosition).addTo(map);
}

allPositions.push(coords);
map.setView(coords);

// Update the position on your map or perform your calculations here

console.log("Latitude: " + currentLatitude + ", Longitude: " + currentLongitude);
}

function positionError(error) {
console.warn('ERROR(' + error.code + '): ' + error.message);
}

function stopTracking() {
isTracking = false;
if (navigator.geolocation) {
navigator.geolocation.clearWatch(watchID);
stopPosition = [currentLatitude, currentLongitude];

startMarker = L.marker(stopPosition).addTo(map);
map.setView(stopPosition);
console.log("Latitude: " + currentLatitude + ", Longitude: " + currentLongitude);
}
}

function calculateFare() {
// Calculate distance between startPosition and endPosition
// Apply fare calculation logic
// Display fare in an alert or on the page
alert(allPositions);
}
});
</script>
</body>

</html>

0 comments on commit 0a54eb6

Please sign in to comment.