working branch #1
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -1,5 +1,5 @@
|
|||||||
from flask import Flask, render_template, make_response, json
|
from flask import Flask, render_template, make_response, json
|
||||||
import app_obd, app_car, app_account, time
|
import app_obd, app_car, app_account, app_gps, time
|
||||||
from app_events import socketio
|
from app_events import socketio
|
||||||
from gevent.pywsgi import WSGIServer
|
from gevent.pywsgi import WSGIServer
|
||||||
|
|
||||||
@@ -9,15 +9,21 @@ socketio.init_app(app)
|
|||||||
account = app_account.Account()
|
account = app_account.Account()
|
||||||
obd = app_obd.OBD()
|
obd = app_obd.OBD()
|
||||||
car = app_car.Car()
|
car = app_car.Car()
|
||||||
|
gps = app_gps.get_gps()
|
||||||
|
|
||||||
@app.route('/')
|
@app.route('/')
|
||||||
def index():
|
def index():
|
||||||
print("hello "+ account.name)
|
print("hello "+ account.name)
|
||||||
return render_template('index.html', account = account)
|
print("you're car model is:" + car.model)
|
||||||
|
return render_template('index.html', account = account, car = car)
|
||||||
|
|
||||||
@app.route('/dtc')
|
@app.route('/dtc')
|
||||||
def dtc():
|
def dtc():
|
||||||
return render_template('dtc.html')
|
return render_template('dtc.html', account = account, car = car)
|
||||||
|
|
||||||
|
@app.route('/dash')
|
||||||
|
def dash():
|
||||||
|
return render_template('dash.html', account = account, car = car)
|
||||||
|
|
||||||
# not sure if im gonna use this
|
# not sure if im gonna use this
|
||||||
@app.route('/api/obd_speed/')
|
@app.route('/api/obd_speed/')
|
||||||
|
|||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
class Car:
|
class Car:
|
||||||
def __init__(self):
|
def __init__(self):
|
||||||
self.model = None
|
self.model = "Yaris 2013"
|
||||||
self.obd = None
|
self.obd = None
|
||||||
+22
@@ -0,0 +1,22 @@
|
|||||||
|
from app_events import socketio
|
||||||
|
from threading import Thread
|
||||||
|
|
||||||
|
class GPS:
|
||||||
|
def __init__(self):
|
||||||
|
self.LocationX = None
|
||||||
|
self.LocationY= None
|
||||||
|
|
||||||
|
@socketio.on('gps')
|
||||||
|
def get_gps():
|
||||||
|
global LocationX
|
||||||
|
global LocationY
|
||||||
|
|
||||||
|
LocationX = "45.5202844"
|
||||||
|
LocationY = "-73.5493208"
|
||||||
|
Location = [LocationX, LocationY]
|
||||||
|
|
||||||
|
socketio.emit('gps_location', Location)
|
||||||
|
|
||||||
|
print("websocket should be sent now")
|
||||||
|
|
||||||
|
return print("socket.io emitted")
|
||||||
+3
-2
@@ -1,4 +1,4 @@
|
|||||||
import obd, time, threading
|
import obd, time, threading, app_gps
|
||||||
from datetime import datetime
|
from datetime import datetime
|
||||||
from app_events import socketio
|
from app_events import socketio
|
||||||
from threading import Thread
|
from threading import Thread
|
||||||
@@ -15,7 +15,7 @@ class OBD:
|
|||||||
|
|
||||||
obd_status = ["Disconnected", "Connected", "Connection...", "wtf"]
|
obd_status = ["Disconnected", "Connected", "Connection...", "wtf"]
|
||||||
obd_speed_lock = threading.Lock()
|
obd_speed_lock = threading.Lock()
|
||||||
obd_speed_rpm = threading.Lock()
|
obd_rpm_lock = threading.Lock()
|
||||||
|
|
||||||
try:
|
try:
|
||||||
print(obd_status[2])
|
print(obd_status[2])
|
||||||
@@ -69,6 +69,7 @@ def obd_speed():
|
|||||||
time.sleep(1)
|
time.sleep(1)
|
||||||
if response.is_null():
|
if response.is_null():
|
||||||
print("No data received. #"+ str(get_speedtime()))
|
print("No data received. #"+ str(get_speedtime()))
|
||||||
|
print(app_gps.get_gps())
|
||||||
socketio.emit('obd_speed', get_speedtime())
|
socketio.emit('obd_speed', get_speedtime())
|
||||||
else:
|
else:
|
||||||
print("Original value:", response.value)
|
print("Original value:", response.value)
|
||||||
|
|||||||
+3
-57
@@ -1,57 +1,3 @@
|
|||||||
Babel==2.8.0
|
Flask
|
||||||
bidict==0.22.1
|
Flask-SocketIO
|
||||||
blinker==1.4
|
gevent
|
||||||
click==8.0.3
|
|
||||||
colorama==0.4.4
|
|
||||||
command-not-found==0.3
|
|
||||||
cryptography==3.4.8
|
|
||||||
dbus-python==1.2.18
|
|
||||||
distro==1.7.0
|
|
||||||
distro-info===1.1build1
|
|
||||||
Flask==2.0.1
|
|
||||||
Flask-SocketIO==5.3.6
|
|
||||||
h11==0.14.0
|
|
||||||
httplib2==0.20.2
|
|
||||||
importlib-metadata==4.6.4
|
|
||||||
itsdangerous==2.1.0
|
|
||||||
jeepney==0.7.1
|
|
||||||
Jinja2==3.0.3
|
|
||||||
keyring==23.5.0
|
|
||||||
launchpadlib==1.10.16
|
|
||||||
lazr.restfulclient==0.14.4
|
|
||||||
lazr.uri==1.0.6
|
|
||||||
lxml==4.9.3
|
|
||||||
MarkupSafe==2.0.1
|
|
||||||
more-itertools==8.10.0
|
|
||||||
netifaces==0.11.0
|
|
||||||
oauthlib==3.2.0
|
|
||||||
obd==0.7.2
|
|
||||||
Pint==0.20.1
|
|
||||||
pycairo==1.20.1
|
|
||||||
PyGObject==3.42.1
|
|
||||||
pyinotify==0.9.6
|
|
||||||
PyJWT==2.3.0
|
|
||||||
pyOpenSSL==21.0.0
|
|
||||||
pyparsing==2.4.7
|
|
||||||
pyserial==3.5
|
|
||||||
python-apt==2.4.0+ubuntu1
|
|
||||||
python-engineio==4.8.0
|
|
||||||
python-socketio==5.10.0
|
|
||||||
pytils==0.4.1
|
|
||||||
pytz==2022.1
|
|
||||||
PyYAML==5.4.1
|
|
||||||
SecretStorage==3.3.1
|
|
||||||
simple-websocket==1.0.0
|
|
||||||
simplejson==3.17.6
|
|
||||||
six==1.16.0
|
|
||||||
systemd-python==234
|
|
||||||
tools==0.1.9
|
|
||||||
tqdm==4.66.1
|
|
||||||
ubuntu-advantage-tools==8001
|
|
||||||
ufw==0.36.1
|
|
||||||
unattended-upgrades==0.1
|
|
||||||
wadllib==1.3.6
|
|
||||||
Werkzeug==2.0.2
|
|
||||||
wget==3.2
|
|
||||||
wsproto==1.2.0
|
|
||||||
zipp==1.0.0
|
|
||||||
@@ -1,4 +1,13 @@
|
|||||||
const socket = io();
|
const socket = io();
|
||||||
|
// map
|
||||||
|
|
||||||
|
var map = L.map('map').setView([48.505, -0.09], 13);
|
||||||
|
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
||||||
|
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
|
||||||
|
}).addTo(map);
|
||||||
|
L.marker([51.5, -0.09]).addTo(map)
|
||||||
|
.bindPopup('your car... soon(tm)')
|
||||||
|
.openPopup();
|
||||||
|
|
||||||
// charts
|
// charts
|
||||||
|
|
||||||
@@ -85,3 +94,12 @@ socket.on('rpi_uptime', function(data) {
|
|||||||
const status = document.getElementById('rpi-uptime');
|
const status = document.getElementById('rpi-uptime');
|
||||||
status.innerHTML = data;
|
status.innerHTML = data;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
socket.on('gps_location', function(data) {
|
||||||
|
console.log("location received")
|
||||||
|
const LocationX = document.getElementById('gpsLocationX');
|
||||||
|
const LocationY = document.getElementById('gpsLocationY');
|
||||||
|
LocationX.innerHTML = data[0];
|
||||||
|
LocationY.innerHTML = data[1];
|
||||||
|
|
||||||
|
});
|
||||||
@@ -0,0 +1,83 @@
|
|||||||
|
<!DOCTYPE html>
|
||||||
|
<html data-bs-theme="light" lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="utf-8">
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||||
|
<title>Dashboard - yaris vroom vroom de course</title>
|
||||||
|
<link rel="stylesheet" href="{{ url_for('static', filename='bootstrap/css/bootstrap.min.css') }}">
|
||||||
|
<link rel="stylesheet" href="{{ url_for('static', filename='yaris.css') }}">
|
||||||
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i&display=swap">
|
||||||
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.12.0/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/>
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body id="page-top">
|
||||||
|
<div id="wrapper">
|
||||||
|
<nav class="navbar align-items-start sidebar sidebar-dark accordion bg-gradient-primary p-0 navbar-dark" style="color: var(--bs-accordion-btn-focus-border-color);background: rgb(0,0,0);filter: blur(0px);backdrop-filter: blur(0px) hue-rotate(0deg);">
|
||||||
|
<div class="container-fluid d-flex flex-column p-0"><a class="navbar-brand d-flex justify-content-center align-items-center sidebar-brand m-0" href="#">
|
||||||
|
<div class="sidebar-brand-icon rotate-n-15"><i class="fas fa-car"></i></div>
|
||||||
|
<div id="index-car-model" class="sidebar-brand-text mx-3"><span>{{ car.model }}</span></div>
|
||||||
|
</a>
|
||||||
|
<hr class="sidebar-divider my-0">
|
||||||
|
<ul class="navbar-nav text-light" id="accordionSidebar">
|
||||||
|
<li class="nav-item"><a class="nav-link" href="/"><i class="fas fa-tachometer-alt"></i><span>Dashboard</span></a></li>
|
||||||
|
<li class="nav-item"></li>
|
||||||
|
<li class="nav-item"><a class="nav-link active" href="/dash"><i class="fas fa-table"></i><span>Dashcam </span></a></li>
|
||||||
|
<li class="nav-item"></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="/dtc"><i class="fas fa-table"></i><span>DTC </span></a></li>
|
||||||
|
</ul>
|
||||||
|
<div class="text-center d-none d-md-inline"><button class="btn rounded-circle border-0" id="sidebarToggle" type="button"></button></div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="d-flex flex-column" id="content-wrapper">
|
||||||
|
<div id="content">
|
||||||
|
<nav class="navbar navbar-expand bg-white shadow mb-4 topbar static-top navbar-light">
|
||||||
|
<div class="container-fluid"><button class="btn btn-link d-md-none rounded-circle me-3" id="sidebarToggleTop" type="button"><i class="fas fa-bars"></i></button>
|
||||||
|
<form class="d-none d-sm-inline-block me-auto ms-md-3 my-2 my-md-0 mw-100 navbar-search">
|
||||||
|
<div class="input-group"></div>
|
||||||
|
</form>
|
||||||
|
<ul class="navbar-nav flex-nowrap ms-auto">
|
||||||
|
<li class="nav-item dropdown d-sm-none no-arrow"><a class="dropdown-toggle nav-link" aria-expanded="false" data-bs-toggle="dropdown" href="#"><i class="fas fa-search"></i></a>
|
||||||
|
<div class="dropdown-menu dropdown-menu-end p-3 animated--grow-in" aria-labelledby="searchDropdown">
|
||||||
|
<form class="me-auto navbar-search w-100">
|
||||||
|
<div class="input-group"><input class="bg-light form-control border-0 small" type="text" placeholder="Search for ...">
|
||||||
|
<div class="input-group-append"><button class="btn btn-primary py-0" type="button"><i class="fas fa-search"></i></button></div>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
<div class="d-none d-sm-block topbar-divider"></div>
|
||||||
|
<li class="nav-item dropdown no-arrow">
|
||||||
|
<div class="nav-item dropdown no-arrow"><a class="dropdown-toggle nav-link" aria-expanded="false" data-bs-toggle="dropdown" href="#"><span id="index-pp" class="d-none d-lg-inline me-2 text-gray-600 small">{{ account.name }}</span><img class="border rounded-circle img-profile" src="{{ url_for('static', filename='img/yaris.png') }}"></a>
|
||||||
|
</div>
|
||||||
|
<div class="shadow dropdown-list dropdown-menu dropdown-menu-end" aria-labelledby="alertsDropdown"></div>
|
||||||
|
</li>
|
||||||
|
<div class="d-none d-sm-block topbar-divider"></div>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
<div class="container-fluid">
|
||||||
|
<h3 class="text-dark mb-4">DTC Codes</h3>
|
||||||
|
<div class="card shadow">
|
||||||
|
<div class="card-header py-3">
|
||||||
|
<p class="text-primary m-0 fw-bold">Output</p>
|
||||||
|
</div>
|
||||||
|
<div class="card-body"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<footer class="bg-white sticky-footer">
|
||||||
|
<div class="container my-auto">
|
||||||
|
<div class="text-center my-auto copyright"><span>Copyright © yaris vroom vroom de course 2023</span></div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
</div><a class="border rounded d-inline scroll-to-top" href="#page-top"><i class="fas fa-angle-up"></i></a>
|
||||||
|
</div>
|
||||||
|
<script src="{{ url_for('static', filename='js/yaris.js') }}"></script>
|
||||||
|
<script src="{{ url_for('static', filename='bootstrap/js/bootstrap.min.js') }}"></script>
|
||||||
|
<script src="{{ url_for('static', filename='js/bs-init.js') }}"></script>
|
||||||
|
<script src="{{ url_for('static', filename='js/theme.js') }}"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
+10
-5
@@ -4,10 +4,12 @@
|
|||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, shrink-to-fit=no">
|
||||||
<title>Table - yaris vroom vroom de course</title>
|
<title>Dashboard - yaris vroom vroom de course</title>
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='bootstrap/css/bootstrap.min.css') }}">
|
<link rel="stylesheet" href="{{ url_for('static', filename='bootstrap/css/bootstrap.min.css') }}">
|
||||||
|
<link rel="stylesheet" href="{{ url_for('static', filename='yaris.css') }}">
|
||||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i&display=swap">
|
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i&display=swap">
|
||||||
<link rel="stylesheet" href="{{ url_for('static', filename='fonts/fontawesome-all.min.css') }}">
|
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.12.0/css/all.css">
|
||||||
|
<link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/leaflet.css" integrity="sha256-p4NxAoJBhIIN+hmNHrzRCf9tD/miZyoHS5obTRR9BMY=" crossorigin=""/>
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body id="page-top">
|
<body id="page-top">
|
||||||
@@ -15,12 +17,14 @@
|
|||||||
<nav class="navbar align-items-start sidebar sidebar-dark accordion bg-gradient-primary p-0 navbar-dark" style="color: var(--bs-accordion-btn-focus-border-color);background: rgb(0,0,0);filter: blur(0px);backdrop-filter: blur(0px) hue-rotate(0deg);">
|
<nav class="navbar align-items-start sidebar sidebar-dark accordion bg-gradient-primary p-0 navbar-dark" style="color: var(--bs-accordion-btn-focus-border-color);background: rgb(0,0,0);filter: blur(0px);backdrop-filter: blur(0px) hue-rotate(0deg);">
|
||||||
<div class="container-fluid d-flex flex-column p-0"><a class="navbar-brand d-flex justify-content-center align-items-center sidebar-brand m-0" href="#">
|
<div class="container-fluid d-flex flex-column p-0"><a class="navbar-brand d-flex justify-content-center align-items-center sidebar-brand m-0" href="#">
|
||||||
<div class="sidebar-brand-icon rotate-n-15"><i class="fas fa-car"></i></div>
|
<div class="sidebar-brand-icon rotate-n-15"><i class="fas fa-car"></i></div>
|
||||||
<div class="sidebar-brand-text mx-3"><span>yaris </span></div>
|
<div id="index-car-model" class="sidebar-brand-text mx-3"><span>{{ car.model }}</span></div>
|
||||||
</a>
|
</a>
|
||||||
<hr class="sidebar-divider my-0">
|
<hr class="sidebar-divider my-0">
|
||||||
<ul class="navbar-nav text-light" id="accordionSidebar">
|
<ul class="navbar-nav text-light" id="accordionSidebar">
|
||||||
<li class="nav-item"><a class="nav-link" href="/"><i class="fas fa-tachometer-alt"></i><span>Dashboard</span></a></li>
|
<li class="nav-item"><a class="nav-link" href="/"><i class="fas fa-tachometer-alt"></i><span>Dashboard</span></a></li>
|
||||||
<li class="nav-item"></li>
|
<li class="nav-item"></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="/dash"><i class="fas fa-table"></i><span>Dashcam </span></a></li>
|
||||||
|
<li class="nav-item"></li>
|
||||||
<li class="nav-item"><a class="nav-link active" href="/dtc"><i class="fas fa-table"></i><span>DTC </span></a></li>
|
<li class="nav-item"><a class="nav-link active" href="/dtc"><i class="fas fa-table"></i><span>DTC </span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="text-center d-none d-md-inline"><button class="btn rounded-circle border-0" id="sidebarToggle" type="button"></button></div>
|
<div class="text-center d-none d-md-inline"><button class="btn rounded-circle border-0" id="sidebarToggle" type="button"></button></div>
|
||||||
@@ -43,8 +47,9 @@
|
|||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
<li class="nav-item dropdown no-arrow mx-1">
|
<div class="d-none d-sm-block topbar-divider"></div>
|
||||||
<div class="nav-item dropdown no-arrow"><a class="dropdown-toggle nav-link" aria-expanded="false" data-bs-toggle="dropdown" href="#"><span class="badge bg-danger badge-counter"></span></a>
|
<li class="nav-item dropdown no-arrow">
|
||||||
|
<div class="nav-item dropdown no-arrow"><a class="dropdown-toggle nav-link" aria-expanded="false" data-bs-toggle="dropdown" href="#"><span id="index-pp" class="d-none d-lg-inline me-2 text-gray-600 small">{{ account.name }}</span><img class="border rounded-circle img-profile" src="{{ url_for('static', filename='img/yaris.png') }}"></a>
|
||||||
</div>
|
</div>
|
||||||
<div class="shadow dropdown-list dropdown-menu dropdown-menu-end" aria-labelledby="alertsDropdown"></div>
|
<div class="shadow dropdown-list dropdown-menu dropdown-menu-end" aria-labelledby="alertsDropdown"></div>
|
||||||
</li>
|
</li>
|
||||||
|
|||||||
+7
-13
@@ -17,12 +17,14 @@
|
|||||||
<nav class="navbar align-items-start sidebar sidebar-dark accordion bg-gradient-primary p-0 navbar-dark" style="color: var(--bs-accordion-btn-focus-border-color);background: rgb(0,0,0);filter: blur(0px);backdrop-filter: blur(0px) hue-rotate(0deg);">
|
<nav class="navbar align-items-start sidebar sidebar-dark accordion bg-gradient-primary p-0 navbar-dark" style="color: var(--bs-accordion-btn-focus-border-color);background: rgb(0,0,0);filter: blur(0px);backdrop-filter: blur(0px) hue-rotate(0deg);">
|
||||||
<div class="container-fluid d-flex flex-column p-0"><a class="navbar-brand d-flex justify-content-center align-items-center sidebar-brand m-0" href="#">
|
<div class="container-fluid d-flex flex-column p-0"><a class="navbar-brand d-flex justify-content-center align-items-center sidebar-brand m-0" href="#">
|
||||||
<div class="sidebar-brand-icon rotate-n-15"><i class="fas fa-car"></i></div>
|
<div class="sidebar-brand-icon rotate-n-15"><i class="fas fa-car"></i></div>
|
||||||
<div id="index-car-model" class="sidebar-brand-text mx-3"><span>CAR MODEL</span></div>
|
<div id="index-car-model" class="sidebar-brand-text mx-3"><span>{{ car.model }}</span></div>
|
||||||
</a>
|
</a>
|
||||||
<hr class="sidebar-divider my-0">
|
<hr class="sidebar-divider my-0">
|
||||||
<ul class="navbar-nav text-light" id="accordionSidebar">
|
<ul class="navbar-nav text-light" id="accordionSidebar">
|
||||||
<li class="nav-item"><a class="nav-link active" href="/"><i class="fas fa-tachometer-alt"></i><span>Dashboard</span></a></li>
|
<li class="nav-item"><a class="nav-link active" href="/"><i class="fas fa-tachometer-alt"></i><span>Dashboard</span></a></li>
|
||||||
<li class="nav-item"></li>
|
<li class="nav-item"></li>
|
||||||
|
<li class="nav-item"><a class="nav-link" href="/dash"><i class="fas fa-table"></i><span>Dashcam </span></a></li>
|
||||||
|
<li class="nav-item"></li>
|
||||||
<li class="nav-item"><a class="nav-link" href="/dtc"><i class="fas fa-table"></i><span>DTC </span></a></li>
|
<li class="nav-item"><a class="nav-link" href="/dtc"><i class="fas fa-table"></i><span>DTC </span></a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div class="text-center d-none d-md-inline"><button class="btn rounded-circle border-0" id="sidebarToggle" type="button"></button></div>
|
<div class="text-center d-none d-md-inline"><button class="btn rounded-circle border-0" id="sidebarToggle" type="button"></button></div>
|
||||||
@@ -47,7 +49,7 @@
|
|||||||
</li>
|
</li>
|
||||||
<div class="d-none d-sm-block topbar-divider"></div>
|
<div class="d-none d-sm-block topbar-divider"></div>
|
||||||
<li class="nav-item dropdown no-arrow">
|
<li class="nav-item dropdown no-arrow">
|
||||||
<div class="nav-item dropdown no-arrow"><a class="dropdown-toggle nav-link" aria-expanded="false" data-bs-toggle="dropdown" href="#"><span class="d-none d-lg-inline me-2 text-gray-600 small">Profile name</span><img class="border rounded-circle img-profile" src="{{ url_for('static', filename='img/yaris.png') }}"></a>
|
<div class="nav-item dropdown no-arrow"><a class="dropdown-toggle nav-link" aria-expanded="false" data-bs-toggle="dropdown" href="#"><span id="index-pp" class="d-none d-lg-inline me-2 text-gray-600 small">{{ account.name }}</span><img class="border rounded-circle img-profile" src="{{ url_for('static', filename='img/yaris.png') }}"></a>
|
||||||
<div class="dropdown-menu shadow dropdown-menu-end animated--grow-in"><a class="dropdown-item" href="#"><i class="fas fa-user fa-sm fa-fw me-2 text-gray-400"></i> Profile</a><a class="dropdown-item" href="#"><i class="fas fa-cogs fa-sm fa-fw me-2 text-gray-400"></i> Settings</a><a class="dropdown-item" href="#"><i class="fas fa-list fa-sm fa-fw me-2 text-gray-400"></i> Activity log</a>
|
<div class="dropdown-menu shadow dropdown-menu-end animated--grow-in"><a class="dropdown-item" href="#"><i class="fas fa-user fa-sm fa-fw me-2 text-gray-400"></i> Profile</a><a class="dropdown-item" href="#"><i class="fas fa-cogs fa-sm fa-fw me-2 text-gray-400"></i> Settings</a><a class="dropdown-item" href="#"><i class="fas fa-list fa-sm fa-fw me-2 text-gray-400"></i> Activity log</a>
|
||||||
<div class="dropdown-divider"></div><a class="dropdown-item" href="#"><i class="fas fa-sign-out-alt fa-sm fa-fw me-2 text-gray-400"></i> Logout</a>
|
<div class="dropdown-divider"></div><a class="dropdown-item" href="#"><i class="fas fa-sign-out-alt fa-sm fa-fw me-2 text-gray-400"></i> Logout</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -163,8 +165,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="card-body">
|
<div class="card-body">
|
||||||
<p>GPS X:</p>
|
<p>GPS X: <span id="gpsLocationX"></span></p>
|
||||||
<p>GPS Y:</p>
|
<p>GPS Y: <span id="gpsLocationY"></span></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -180,18 +182,10 @@
|
|||||||
</div>
|
</div>
|
||||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.2.0/socket.io.js"></script>
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.2.0/socket.io.js"></script>
|
||||||
|
<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
|
||||||
<script src="{{ url_for('static', filename='js/yaris.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/yaris.js') }}"></script>
|
||||||
<script src="{{ url_for('static', filename='bootstrap/js/bootstrap.min.js') }}"></script>
|
<script src="{{ url_for('static', filename='bootstrap/js/bootstrap.min.js') }}"></script>
|
||||||
<script src="{{ url_for('static', filename='js/bs-init.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/bs-init.js') }}"></script>
|
||||||
<script src="{{ url_for('static', filename='js/theme.js') }}"></script>
|
<script src="{{ url_for('static', filename='js/theme.js') }}"></script>
|
||||||
<script src="https://unpkg.com/[email protected]/dist/leaflet.js" integrity="sha256-20nQCchB9co0qIjJZRGuk2/Z9VM+kNiyxNV1lvTlZBo=" crossorigin=""></script>
|
|
||||||
<script>var map = L.map('map').setView([48.505, -0.09], 13);
|
|
||||||
L.tileLayer('https://tile.openstreetmap.org/{z}/{x}/{y}.png', {
|
|
||||||
attribution: '© <a href="https://www.openstreetmap.org/copyright">OpenStreetMap</a> contributors'
|
|
||||||
}).addTo(map);
|
|
||||||
L.marker([51.5, -0.09]).addTo(map)
|
|
||||||
.bindPopup('your car... soon(tm)')
|
|
||||||
.openPopup();
|
|
||||||
</script>
|
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
Reference in New Issue
Block a user