first commit
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,131 @@
|
||||
###############################################################################
|
||||
# HBLink - Copyright (C) 2020 Cortney T. Buffington, N0MJS <n0mjs@me.com>
|
||||
# GPS/Data - Copyright (C) 2020 Eric Craw, KF7EEL <kf7eel@qsl.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
###############################################################################
|
||||
|
||||
'''
|
||||
This is a web dashboard for the GPS/Data application.
|
||||
'''
|
||||
|
||||
from flask import Flask, render_template
|
||||
import ast, os
|
||||
from dashboard_settings import *
|
||||
|
||||
app = Flask(__name__)
|
||||
|
||||
|
||||
tbl_hdr = '''
|
||||
<fieldset style="border-radius: 8px; background-color:#e0e0e0e0; text-algin: lef; margin-left:15px;margin-right:15px;font-size:14px;border-top-left-radius: 10px; border-top-right-radius: 10px;border-bottom-left-radius: 10px; border-bottom-right-radius: 10px;">
|
||||
<table style="width:100%; font: 10pt arial, sans-serif">
|
||||
'''
|
||||
|
||||
tbl_ftr = '''
|
||||
</table></fieldset>
|
||||
'''
|
||||
|
||||
def get_loc_data():
|
||||
try:
|
||||
dash_loc = ast.literal_eval(os.popen('cat /tmp/gps_data_user_loc.txt').read())
|
||||
tmp_loc = ''
|
||||
loc_hdr = '''
|
||||
<TR style=" height: 32px;font: 10pt arial, sans-serif; background-color:#CDCDCD; color:black">
|
||||
<TH>Indicatif</TH><TH>Latitude</TH><TH>Longitude</TH><TH>Date et heure</TH></TR>
|
||||
'''
|
||||
cpt=0
|
||||
for e in dash_loc:
|
||||
cpt = cpt + 1
|
||||
tmp_color="#f9f9f9f9"
|
||||
if cpt >= 2:
|
||||
tmp_color="#d9d9d9d9"
|
||||
cpt = 0
|
||||
tmp_loc = tmp_loc + '''
|
||||
<TR style="background-color:''' + str(tmp_color) + ''';">
|
||||
<TD><strong>''' + e['call'] + '''</strong></TD>
|
||||
<TD><strong> ''' + str(e['lat']) + ''' </strong></TD>
|
||||
<TD><strong> ''' + str(e['lon']) + ''' </strong></TD>
|
||||
<TD> ''' + e['time'] + ''' </TD>
|
||||
</TR>
|
||||
'''
|
||||
return str(str('<h1 style="text-align: center;">Positions Reçues</h1>') + tbl_hdr + loc_hdr + tmp_loc + tbl_ftr)
|
||||
except:
|
||||
return str('<h1 style="text-align: center;">Pas de données</h1>')
|
||||
|
||||
|
||||
def get_log_data():
|
||||
|
||||
#try:
|
||||
dash_log = (os.popen('cat /tmp/gps_data.log | nl | sort -n -r | cut -f2').read())
|
||||
dash_log = dash_log.replace('\n', '<br>')
|
||||
return str('<font color="#fff">'+dash_log+'</font>')
|
||||
#except:
|
||||
# return str('<font color="#fff">Pas de données</font>')
|
||||
|
||||
def get_bb_data():
|
||||
try:
|
||||
dash_bb = ast.literal_eval(os.popen('cat /tmp/gps_data_user_bb.txt').read())
|
||||
tmp_bb = ''
|
||||
|
||||
bb_hdr = '''
|
||||
<TR style=" height: 32px;font: 10pt arial, sans-serif; background-color:#CDCDCD; color:black">
|
||||
<TH>Indicatif</TH><TH>DMR id</TH><TH>Bulletin</TH><TH>Date et heure</TH></TR>
|
||||
'''
|
||||
|
||||
for e in dash_bb:
|
||||
tmp_bb = tmp_bb + '''
|
||||
<TR style="background-color:#f9f9f9f9;">
|
||||
<TD><strong> ''' + e['call'] + ''' </strong></TD>
|
||||
<TD>''' + str(e['dmr_id']) + '''</TD>
|
||||
<TD><strong> ''' + e['bulliten'] + ''' </strong></TD>
|
||||
<TD> ''' + e['time'] + ''' </TD>
|
||||
</TR>
|
||||
'''
|
||||
|
||||
return str('<h1 style="text-align: center;">Bulletins</h1>' + tbl_hdr + bb_hdr + tmp_bb + tbl_ftr)
|
||||
except:
|
||||
return str('<h1 style="text-align: center;">No data</h1>')
|
||||
|
||||
@app.route('/')
|
||||
def index():
|
||||
#return get_data()
|
||||
return render_template('index.html', title = dashboard_title, logo = logo)
|
||||
@app.route('/bulletin_board')
|
||||
def dash_bb():
|
||||
return get_bb_data()
|
||||
#return render_template('index.html', data = str(get_data()))
|
||||
@app.route('/positions')
|
||||
def dash_loc():
|
||||
return get_loc_data()
|
||||
#return render_template('index.html', data = str(get_data()))
|
||||
@app.route('/logdaprs')
|
||||
def dash_log():
|
||||
return get_log_data()
|
||||
##@app.route('/<string:page_name>/')
|
||||
##def render_static(page_name):
|
||||
## return render_template('%s.html' % page_name, title = dashboard_title, logo = logo, description = description)
|
||||
@app.route('/help/')
|
||||
def help():
|
||||
#return get_data()
|
||||
return render_template('help.html', title = dashboard_title, logo = logo, description = description, data_call_type = data_call_type, data_call_id = data_call_id, aprs_ssid = aprs_ssid)
|
||||
@app.route('/about/')
|
||||
def about():
|
||||
#return get_data()
|
||||
return render_template('about.html', title = dashboard_title, logo = logo, contact_name = contact_name, contact_call = contact_call, contact_email = contact_email, contact_website = contact_website)
|
||||
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
app.run(debug = True, port=dash_port, host=dash_host)
|
||||
@@ -0,0 +1,49 @@
|
||||
###############################################################################
|
||||
# HBLink - Copyright (C) 2020 Cortney T. Buffington, N0MJS <n0mjs@me.com>
|
||||
# GPS/Data - Copyright (C) 2020 Eric Craw, KF7EEL <kf7eel@qsl.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
###############################################################################
|
||||
|
||||
'''
|
||||
Settings for web dashboard.
|
||||
'''
|
||||
|
||||
# Title of the Dashboard
|
||||
dashboard_title = 'HBLink3 D-APRS Dashboard'
|
||||
# Logo used on dashboard page
|
||||
logo = 'https://raw.githubusercontent.com/kf7eel/hblink3/gps/HBlink.png'
|
||||
# Port to run server
|
||||
dash_port = 8092
|
||||
# IP to run server on
|
||||
dash_host = '127.0.0.1'
|
||||
#Description of dashboard to show on main page
|
||||
description = '''
|
||||
Welcome to the ''' + dashboard_title + '''.
|
||||
'''
|
||||
# The following will generate a help page for your users.
|
||||
|
||||
# Data call type
|
||||
data_call_type = 'Private Call'
|
||||
# DMR ID of GPS/Data application
|
||||
data_call_id = '9099'
|
||||
# Default APRS ssid
|
||||
aprs_ssid = '15'
|
||||
|
||||
# Gateway contact info displayed on about page.
|
||||
contact_name = 'your name'
|
||||
contact_call = 'N0CALL'
|
||||
contact_email = 'email@example.org'
|
||||
contact_website = 'https://hbl.ink'
|
||||
@@ -0,0 +1,49 @@
|
||||
###############################################################################
|
||||
# HBLink - Copyright (C) 2020 Cortney T. Buffington, N0MJS <n0mjs@me.com>
|
||||
# GPS/Data - Copyright (C) 2020 Eric Craw, KF7EEL <kf7eel@qsl.net>
|
||||
#
|
||||
# This program is free software; you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation; either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program; if not, write to the Free Software Foundation,
|
||||
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
###############################################################################
|
||||
|
||||
'''
|
||||
Settings for web dashboard.
|
||||
'''
|
||||
|
||||
# Title of the Dashboard
|
||||
dashboard_title = 'D-APRS Dashboard'
|
||||
# Logo used on dashboard page
|
||||
logo = 'https://monsite.com/logo.png'
|
||||
# Port to run server
|
||||
dash_port = 8086
|
||||
# IP to run server on
|
||||
dash_host = '192.168.0.1'
|
||||
#Description of dashboard to show on main page
|
||||
description = '''
|
||||
Welcome to the ''' + dashboard_title + '''.
|
||||
'''
|
||||
# The following will generate a help page for your users.
|
||||
|
||||
# Data call type
|
||||
data_call_type = 'Private Call'
|
||||
# DMR ID of GPS/Data application
|
||||
data_call_id = '9099'
|
||||
# Default APRS ssid
|
||||
aprs_ssid = '15'
|
||||
|
||||
# Gateway contact info displayed on about page.
|
||||
contact_name = 'MYCALL'
|
||||
contact_call = 'MYCALL'
|
||||
contact_email = 'mail@free.fr'
|
||||
contact_website = 'http://www.monsite.com'
|
||||
@@ -0,0 +1,29 @@
|
||||
{% include 'page.html' %}
|
||||
{% include 'header.html' %}
|
||||
<fieldset style="background-color:#e0e0e0e0;text-algin: lef; margin-left:15px;margin-right:15px;font-size:14px;border-top-left-radius: 10px; border-top-right-radius: 10px;border-bottom-left-radius: 10px; border-bottom-right-radius: 10px;">
|
||||
<p> </p>
|
||||
<p>Nous contacter.</p>
|
||||
|
||||
<center>
|
||||
<fieldset style="border-radius: 8px; background-color:#e0e0e0e0; text-algin: lef; margin-left:15px;margin-right:15px;font-size:14px;border-top-left-radius: 10px; border-top-right-radius: 10px;border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; width:50%;">
|
||||
<table style="width:80%; font: 10pt arial, sans-serif">
|
||||
<tr>
|
||||
<td><strong>Indicatif</strong></td>
|
||||
<td> {{contact_call}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>E-Mail</strong></td>
|
||||
<td> {{contact_email}}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>Website</strong></td>
|
||||
<td> {{contact_website}}</td>
|
||||
</tr>
|
||||
|
||||
</table></fieldset>
|
||||
</center>
|
||||
|
||||
<p> </p>
|
||||
</fieldset>
|
||||
{% include 'footer.html' %}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<div>
|
||||
<hr />
|
||||
<div style="text-align: center;">Copyright (c) 2016 - 2021. All rights reserved.</div>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,14 @@
|
||||
<p><img style="display: block; margin-left: auto; margin-right: auto;" src="{{logo}}" alt="Logo" width="300" height="144" /></p>
|
||||
<h1 style="text-align: center;">{{title}}</h1>
|
||||
<hr />
|
||||
<table style="width: 1200px; margin-left: auto; margin-right: auto;" border="black" cellspacing="3" cellpadding="3">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: center;"><input class="button link" type="button" value="APRS DashBoard" onclick="javascript:window.location.href='http://fra1od.freeboxos.fr:85';"></td>
|
||||
<td style="text-align: center;"><input class="button link" type="button" value="D-APRS DashBoard" onclick="javascript:window.location.href='/';"></td>
|
||||
<td style="text-align: center;"><input class="button link" type="button" value="D-APRS Help" onclick="javascript:window.location.href='/help';"></td>
|
||||
<td style="text-align: center;"><input class="button link" type="button" value="Contact" onclick="javascript:window.location.href='/about';"></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
<hr />
|
||||
@@ -0,0 +1,96 @@
|
||||
{% include 'page.html' %}
|
||||
{% include 'header.html' %}
|
||||
<fieldset style="border-radius: 8px; background-color:#e0e0e0e0; text-algin: lef; margin-left:15px;margin-right:15px;font-size:14px;border-top-left-radius: 10px; border-top-right-radius: 10px;border-bottom-left-radius: 10px; border-bottom-right-radius: 10px;">
|
||||
<h2 style="text-align: center;">Attention:</h2>
|
||||
<p><span style="color: #ff0000;"><strong>Veuillez noter que de nombreuses radios DMR (sinon toutes) NE transmettent PAS votre indicatif lors de l'envoi d'une position GPS. Il est de votre responsabilité d'identifier votre station conformément aux réglementations de votre pays.</strong></span></p>
|
||||
<p> </p>
|
||||
<p>Configurez votre radio pour envoyer des positions GPS avec les paramètres suivants:</p>
|
||||
|
||||
<center>
|
||||
<fieldset style="border-radius: 8px; background-color:#e0e0e0e0; text-algin: lef; margin-left:15px;margin-right:15px;font-size:14px;border-top-left-radius: 10px; border-top-right-radius: 10px;border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; width:30%;">
|
||||
<table style="width:100%; font: 10pt arial, sans-serif">
|
||||
|
||||
<TR style=" height: 32px;font: 10pt arial, sans-serif; background-color:#CDCDCD; color:black">
|
||||
<TH><strong>Data Call Type</strong></TH><TH><strong>SLOT</strong></TH><TH><strong>TG ID</strong></TH></TR>
|
||||
<tr>
|
||||
<td style="text-align: center;"> {{data_call_type}}</td>
|
||||
<td style="text-align: center;"> SL1 et SL2</td>
|
||||
<td style="text-align: center;"> {{data_call_id}}</td>
|
||||
</tr>
|
||||
</table></fieldset>
|
||||
</center>
|
||||
|
||||
<p> </p>
|
||||
<p>Lorsqu'une position est reçue par cette passerelle, elle extrait les coordonnées et crée un paquet de position APRS. Cette passerelle trouvera votre indicatif en fonction de l'identifiant DMR de votre radio. Il est essentiel d'avoir vos informations à jour avec Le réseaux DMR FRA et DMRNET>. Un SSID APRS prédéfini à <strong>{{aprs_ssid}}</strong> est ajouté à votre indicatif (il peut être personalisé). Le paquet de localisation APRS est ensuite téléchargé vers APRS-IS (la carte APRS). Aucune configuration ou création de compte n'est requise au préalable, il faut juste être enregistré sur le réseaux. C'est à peu près "plug and play"."</p>
|
||||
<p>Par exemple, N0CALL a un ID DMR de 1234567. La radio de N0CALL envoie une position à cette passerelle avec les paramètres ci-dessus. Cette passerelle interrogera le réseaux, et la base de données pour l'ID DMR 1234567. Le résultat sera un paquet d'emplacement APRS avec la position sur la carte APRS INDICATIF-SSID {{aprs_ssid}}. </p>
|
||||
<p>Vous pouvez modifier les paramètres APRS par défaut de votre radio par SMS.</p>
|
||||
<h2 style="text-align: center;">Les commandes</h2>
|
||||
|
||||
<center>
|
||||
<fieldset style="border-radius: 8px; background-color:#e0e0e0e0; text-algin: lef; margin-left:15px;margin-right:15px;font-size:14px;border-top-left-radius: 10px; border-top-right-radius: 10px;border-bottom-left-radius: 10px; border-bottom-right-radius: 10px; width:70%;">
|
||||
<table style="width:100%; font: 10pt arial, sans-serif">
|
||||
|
||||
<TR style=" height: 32px;font: 10pt arial, sans-serif; background-color:#CDCDCD; color:black">
|
||||
<TH><strong>Commande</strong></TH><TH><strong>Description</strong></TH><TH><strong>Exemple</strong></TH></TR>
|
||||
|
||||
<tr>
|
||||
<td><strong>TEST</strong></td>
|
||||
<td>Tester la reception de SMS sur le dashboard.</td>
|
||||
<td><em><code>TEST</code></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>MAILTEST</strong></td>
|
||||
<td>Tester l'envoie de mail. Attention il faut activer la fonction voir @MAIL</td>
|
||||
<td><em><code>MAILTEST</code></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>SOS</strong></td>
|
||||
<td>Envoyer à tous un mail de SOS</td>
|
||||
<td><em><code>SOS</code></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>@COM</strong></td>
|
||||
<td>Changer le commentaire de l'APRS.</td>
|
||||
<td><em><code>@COM c'est un test.</code></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>@ICON</strong></td>
|
||||
<td>Changer l'icon de la position APRS. La table est par défaut /. Voir <a href="http://fra1od.fr.to:85/aprs/aide.php" rel="nofollow">http://fra1od.fr.to:85/aprs/aide.php</a> pour la liste des icon APRS.</td>
|
||||
<td><em><code>@icon p</code></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>@SSID</strong></td>
|
||||
<td>Changer votre SSID à votre indicatif idem voir lien dans la section @ICON.</td>
|
||||
<td><em><code>@SSID 7</code></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>@MAIL</strong></td>
|
||||
<td>Activer et transmettre son mail..</td>
|
||||
<td><em><code>@MAIL mail@fai.extention</code></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>@MH</strong></td>
|
||||
<td>Définissez votre emplacement par carré de grille <a href="https://k7fry.com/grid/">QTH Locator</a> Attention que 6 cararctères, et respecter MAJ MIN. Conçu pour les radios sans GPS ou qui ne sont pas encore compatibles.</td>
|
||||
<td><em><code>@MH JN33no</code></em></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><strong>@BB</strong></td>
|
||||
<td>Publier un message sur le tableau de bord Web.</td>
|
||||
<td><em><code>@BB c'est un bulletin de test.</code></em></td>
|
||||
</tr>
|
||||
<td><strong>@[CALLSIGN-SSID] A-[MESSAGE]</strong></td>
|
||||
<td>Envoyer un message à une autre station via APRS</td>
|
||||
<td><em><code>@N0CALL-15 A-C est un test.</code></em></td>
|
||||
</tr>
|
||||
</table></fieldset>
|
||||
</center>
|
||||
|
||||
<p> </p>
|
||||
<p>Envoyez un SMS à <strong>{{data_call_id}}</strong> comme un <strong>{{data_call_type}}</strong> avec la commande souhaitée suivie de la valeur. Par exemple, pour changer votre icône en chien, la commande serait <code>@ICON p</code> (voir le tableau des icônes pour les valeurs). Changer votre SSID est aussi simple que <code>@SSID 7</code>, et <code>@COM Testing 123</code> changera le commentaire.</p>
|
||||
<p>Envoyer <code>@BB Test</code> entraînera un message sur le buletin avec le message "Test".</p>
|
||||
<p><strong>Pour supprimer l'une des valeurs stockées, envoyez simplement la commande appropriée sans aucune entrée.</strong> <code>@COM</code> supprimera le commentaire stocké, <code>@ICON</code>
|
||||
supprimera l'icône stockée, et <code>@ICON</code> supprimera l'icône en chaîne. Tous les rapports de position envoyés auront les paramètres par défaut.
|
||||
<strong>Pour activer la notification mail: <code>@MAIL mail@fai.extention</code>. pour supprimer la notification de mail: <code>@MAIL</code>.
|
||||
</p>
|
||||
</fieldset>
|
||||
{% include 'footer.html' %}
|
||||
@@ -0,0 +1,160 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="refresh" content="120" >
|
||||
<title>{{title}}</title>
|
||||
|
||||
<style>
|
||||
body {background-color: D3D3D3;}
|
||||
h1 {color: green;}
|
||||
p {
|
||||
padding: 10px;
|
||||
margin: 20px;
|
||||
|
||||
}
|
||||
.content {
|
||||
max-width: 1200px;
|
||||
min-width: 1200px;
|
||||
margin: auto;
|
||||
}
|
||||
a:link {
|
||||
color: #0066ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* visited link */
|
||||
a:visited {
|
||||
color: #0066ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* mouse over link */
|
||||
a:hover {
|
||||
color: hotpink;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* selected link */
|
||||
a:active {
|
||||
color: #0066ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
.tooltip {
|
||||
position: relative;
|
||||
opacity: 1;
|
||||
display: inline-block;
|
||||
border-bottom: 1px dotted black;
|
||||
}
|
||||
|
||||
.tooltip .tooltiptext {
|
||||
visibility: hidden;
|
||||
width: 280px;
|
||||
background-color: #6E6E6E;
|
||||
box-shadow: 4px 4px 6px #800000;
|
||||
color: #FFFFFF;
|
||||
text-align: left;
|
||||
border-radius: 6px;
|
||||
padding: 8px 0;
|
||||
left: 100%
|
||||
opacity: 1;
|
||||
/* Position the tooltip */
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.tooltip:hover .tooltiptext {
|
||||
right: 100%
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
.button {
|
||||
background-color: #356244;
|
||||
border: none;
|
||||
color: white;
|
||||
padding: 8px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
margin: 4px 2px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0px 8px 10px rgba(0,0,0,0.1);
|
||||
}
|
||||
.link {background-color: #356244;}
|
||||
.link:hover {background-color: #3e8e41;}
|
||||
|
||||
.dropbtn {
|
||||
background-color: #356244;
|
||||
border: none;
|
||||
color: white;
|
||||
padding: 8px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
margin: 4px 2px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0px 8px 10px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
/* The container <div> - needed to position the dropdown content */
|
||||
.dropdown {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* Dropdown Content (Hidden by Default) */
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #f1f1f1;
|
||||
min-width: 140px;
|
||||
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* Links inside the dropdown */
|
||||
.dropdown-content a {
|
||||
color: black;
|
||||
padding: 6px 16px;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Change color of dropdown links on hover */
|
||||
.dropdown-content a:hover {background-color: #ddd;}
|
||||
|
||||
/* Show the dropdown menu on hover */
|
||||
.dropdown:hover .dropdown-content {display: block;}
|
||||
|
||||
/* Change the background color of the dropdown button when the dropdown content is shown */
|
||||
.dropdown:hover .dropbtn {background-color: #3e8e41;}
|
||||
table, td, th {border: .5px solid #d0d0d0; padding: 2px; border-collapse: collapse; text-align:center;}
|
||||
</style>
|
||||
</head>
|
||||
<div class="content">
|
||||
<body background="https://fra1od.freeboxos.fr:4443/paper.png">
|
||||
{% include 'header.html' %}
|
||||
<p style="text-align: center;"><b><em>Actualisation automatique toutes les 2min.</em></b></p>
|
||||
<fieldset style="background-color:#e0e0e0e0;text-algin: lef; margin-left:15px;margin-right:15px;font-size:14px;border-top-left-radius: 10px; border-top-right-radius: 10px;border-bottom-left-radius: 10px; border-bottom-right-radius: 10px;">
|
||||
<table style="width:100%; font: 10pt arial, sans-serif">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><p align="center"><iframe style="border: none;" title="Bulletin" src="bulletin_board" width="620" height="550"></iframe></p></td>
|
||||
<td><p align="center"><iframe style="border: none;" title="Positions Reçues" src="positions" width="580" height="550"></iframe></p></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td colspan="2" align="center">
|
||||
<fieldset style="width: 1200px; margin-left:0px;margin-right:0px;font-size:14px;border-top-left-radius: 10px; border-top-right-radius: 10px;border-bottom-left-radius: 10px; border-bottom-right-radius: 10px;"><legend><b><font color="#000"> .: Log DMR Data :. </font></b></legend>
|
||||
<div style="height: 20em; text-align: left; font-size:13px; background-color: #000000; color:#b1eee9;" >
|
||||
<iframe style="border: none;" title="log" src="logdaprs" width="1200" height="250">
|
||||
</div>
|
||||
</fieldset>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
</fieldset>
|
||||
{% include 'footer.html' %}
|
||||
@@ -0,0 +1,137 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>{{title}}</title>
|
||||
<style>
|
||||
body {background-color: D3D3D3;}
|
||||
h1 {color: green;}
|
||||
p {
|
||||
padding: 10px;
|
||||
margin: 20px;
|
||||
|
||||
}
|
||||
.content {
|
||||
max-width: 1200px;
|
||||
min-width: 1200px;
|
||||
margin: auto;
|
||||
}
|
||||
a:link {
|
||||
color: #0066ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* visited link */
|
||||
a:visited {
|
||||
color: #0066ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* mouse over link */
|
||||
a:hover {
|
||||
color: hotpink;
|
||||
text-decoration: underline;
|
||||
}
|
||||
/* selected link */
|
||||
a:active {
|
||||
color: #0066ff;
|
||||
text-decoration: none;
|
||||
}
|
||||
.tooltip {
|
||||
position: relative;
|
||||
opacity: 1;
|
||||
display: inline-block;
|
||||
border-bottom: 1px dotted black;
|
||||
}
|
||||
|
||||
.tooltip .tooltiptext {
|
||||
visibility: hidden;
|
||||
width: 280px;
|
||||
background-color: #6E6E6E;
|
||||
box-shadow: 4px 4px 6px #800000;
|
||||
color: #FFFFFF;
|
||||
text-align: left;
|
||||
border-radius: 6px;
|
||||
padding: 8px 0;
|
||||
left: 100%
|
||||
opacity: 1;
|
||||
/* Position the tooltip */
|
||||
position: absolute;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.tooltip:hover .tooltiptext {
|
||||
right: 100%
|
||||
opacity: 1;
|
||||
visibility: visible;
|
||||
}
|
||||
.button {
|
||||
background-color: #356244;
|
||||
border: none;
|
||||
color: white;
|
||||
padding: 8px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
margin: 4px 2px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0px 8px 10px rgba(0,0,0,0.1);
|
||||
}
|
||||
.link {background-color: #356244;}
|
||||
.link:hover {background-color: #3e8e41;}
|
||||
|
||||
.dropbtn {
|
||||
background-color: #356244;
|
||||
border: none;
|
||||
color: white;
|
||||
padding: 8px;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
display: inline-block;
|
||||
font-size: 14px;
|
||||
font-weight: 500;
|
||||
margin: 4px 2px;
|
||||
border-radius: 8px;
|
||||
box-shadow: 0px 8px 10px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
/* The container <div> - needed to position the dropdown content */
|
||||
.dropdown {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
/* Dropdown Content (Hidden by Default) */
|
||||
.dropdown-content {
|
||||
display: none;
|
||||
position: absolute;
|
||||
background-color: #f1f1f1;
|
||||
min-width: 140px;
|
||||
box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2);
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
/* Links inside the dropdown */
|
||||
.dropdown-content a {
|
||||
color: black;
|
||||
padding: 6px 16px;
|
||||
text-decoration: none;
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Change color of dropdown links on hover */
|
||||
.dropdown-content a:hover {background-color: #ddd;}
|
||||
|
||||
/* Show the dropdown menu on hover */
|
||||
.dropdown:hover .dropdown-content {display: block;}
|
||||
|
||||
/* Change the background color of the dropdown button when the dropdown content is shown */
|
||||
.dropdown:hover .dropbtn {background-color: #3e8e41;}
|
||||
table, td, th {border: .5px solid #d0d0d0; padding: 2px; border-collapse: collapse; text-align:center;}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
<div class="content">
|
||||
<body background="https://fra1od.fr.to:4443/paper.png">
|
||||
Reference in New Issue
Block a user