Compare commits

...

12 Commits

Author SHA1 Message Date
933a14523e wieder ok 2025-07-12 00:09:09 +02:00
4406026381 test flyhope ssh 2025-07-12 00:01:17 +02:00
eee164068b layout namen geaendert 2022-12-12 15:18:29 +01:00
b9f8ea83fd layout html css 2022-12-12 15:12:26 +01:00
93170c928d layout 2022-12-12 14:41:27 +01:00
9247b399bc weiteres json opt 2022-12-11 23:00:13 +01:00
b3efa54de2 mit json rum gespielt 2022-12-11 20:05:11 +01:00
afc5b57d98 registieren geht auf nc 2022-12-08 00:46:24 +01:00
0afd2e476d php wildes testen 2022-12-08 00:29:06 +01:00
f5d47af766 nested sidebar zip 2022-12-07 15:01:23 +01:00
5e90c2556b layout 2022-12-07 14:35:32 +01:00
0d8edfa5f5 Color navbar hover 2022-12-07 11:47:13 +01:00
23 changed files with 296 additions and 80 deletions

3
.vscode/settings.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"liveServer.settings.port": 3001
}

View File

@ -1,6 +1,7 @@
[ [
{ {
"name" : "HoPe_all_flights", "name" : "HoPe_all_flights",
"url" : "https://de.dhv-xc.de/api/fli/flights?fkpil%5B%5D=1295&l-fkpil%5B%5D=Hoppe%2C%20Peter&navpars=%7B%22start%22%3A0%2C%22limit%22%3A2000%2C%22sort%22%3A%5B%7B%22field%22%3A%22FlightDate%22%2C%22dir%22%3A-1%7D%2C%7B%22field%22%3A%22BestTaskPoints%22%2C%22dir%22%3A-1%7D%5D%7D"
"url" : "https://de.dhv-xc.de/api/fli/flights?fkpil%5B%5D=1295&navpars=%7B%22start%22%3A0%2C%22limit%22%3A4000%7D"
} }
] ]

6
docs/GetHoPeAll_lang_url.json Executable file
View File

@ -0,0 +1,6 @@
[
{
"name" : "HoPe_all_flights",
"url" : "https://de.dhv-xc.de/api/fli/flights?fkpil%5B%5D=1295&l-fkpil%5B%5D=Hoppe%2C%20Peter&navpars=%7B%22start%22%3A0%2C%22limit%22%3A2000%2C%22sort%22%3A%5B%7B%22field%22%3A%22FlightDate%22%2C%22dir%22%3A-1%7D%2C%7B%22field%22%3A%22BestTaskPoints%22%2C%22dir%22%3A-1%7D%5D%7D"
}
]

0
docs/alex.json Normal file
View File

1
docs/hoyer.json Normal file

File diff suppressed because one or more lines are too long

BIN
docs/hoyer.zip Normal file

Binary file not shown.

83
docs/reduceData.json Normal file
View File

@ -0,0 +1,83 @@
3590
1411
{
"IDFlight": "185129",
"FKGliderCategory": "1",
"Category": "Gleitschirm",
"CompetitionClass": "Sport",
"Launchtype": "Fu\u00dfstart",
"FKPilot": "1295",
"FirstName": "Peter",
"LastName": "Hoppe",
"Nationality": "DE",
"Glider": "Matrix",
"GliderBrand": "FreeX",
"GliderClassification": "-",
"FKSeason": "2003",
"FlightDate": "2003-04-18",
"UtcOffset": "2",
"FlightStartTime": "2003-04-18 12:11:40",
"FlightEndTime": "2003-04-18 13:05:50",
"FlightDuration": "3250",
"TakeoffCountry": "DE",
"TakeoffWaypointName": "Brauneck",
"LinearDistance": "5378",
"MaxLinearDistance": "5812",
"ArcDistance": "27211",
"BestTaskType": "FAI Dreieck",
"BestTaskDistance": "12959",
"BestTaskPoints": "25.918",
"BestTaskDuration": "2910",
"MaxSpeed": "14.6395",
"GroundSpeed": "8.37269",
"BestTaskSpeed": "4.45326",
"TakeoffAltitude": "1534",
"MaxAltitude": "2181",
"MinAltitude": "710",
"ElevationGain": "1773",
"MeanAltitudeDiff": "0",
"MaxClimb": "5.8",
"MinClimb": "-3.4",
},
1436
{
"IDFlight": "1631419",
"FKGliderCategory": "1",
"Category": "Gleitschirm",
"CompetitionClass": "Sport",
"Launchtype": "Fu\u00dfstart",
"FKPilot": "1295",
"FirstName": "Peter",
"LastName": "Hoppe",
"Nationality": "DE",
"ClubName": "Gleitschirmclub Ratisbona e.V.",
"Glider": "Fusion L",
"GliderBrand": "Flow",
"GliderClassification": "EN C",
"FKSeason": "2023",
"FlightDate": "2022-11-01",
"UtcOffset": "1",
"FlightStartTime": "2022-11-01 11:02:13",
"FlightEndTime": "2022-11-01 11:20:25",
"FlightDuration": "1092",
"TakeoffCountry": "AT",
"LinearDistance": "4934",
"MaxLinearDistance": "5082",
"ArcDistance": "10941",
"BestTaskType": "Freie Strecke",
"BestTaskDistance": "8191",
"BestTaskPoints": "12.2865",
"BestTaskDuration": "844",
"MaxSpeed": "17.3356",
"GroundSpeed": "10.0188",
"BestTaskSpeed": "9.70498",
"TakeoffAltitude": "1894",
"MaxAltitude": "1901",
"MinAltitude": "708",
"ElevationGain": "109",
"MeanAltitudeDiff": "0",
"MaxClimb": "0.727273",
"MinClimb": "-3.45455",
},

8
docs/urlDecode.txt Normal file
View File

@ -0,0 +1,8 @@
https://de.dhv-xc.de/api/fli/flights?fkpil[]=1295&navpars={"start":0,"limit":4000}
https://de.dhv-xc.de/api/fli/flights?fkpil%5B%5D=1295&navpars=%7B%22start%22%3A0%2C%22limit%22%3A4000%7D
https://de.dhv-xc.de/api/fli/flights?fkpil[]=1295&l-fkpil[]=Hoppe, Peter&navpars={"start":0,"limit":2000,"sort":[{"field":"FlightDate","dir":-1},{"field":"BestTaskPoints","dir":-1}]}
https://de.dhv-xc.de/api/fli/flights?fkpil%5B%5D=1295&l-fkpil%5B%5D=Hoppe%2C+Peter&navpars=%7B%22start%22%3A0%2C%22limit%22%3A2000%2C%22sort%22%3A%5B%7B%22field%22%3A%22FlightDate%22%2C%22dir%22%3A-1%7D%2C%7B%22field%22%3A%22BestTaskPoints%22%2C%22dir%22%3A-1%7D%5D%7D

View File

@ -1,40 +1,12 @@
.App { .App {
text-align: center; text-align: center;
width: 100%;
} }
.App-logo { .layout {
height: 40vmin; width: 100%;
pointer-events: none;
}
@media (prefers-reduced-motion: no-preference) {
.App-logo {
animation: App-logo-spin infinite 20s linear;
}
}
.App-header {
background-color: #282c34;
min-height: 100vh;
display: flex; display: flex;
flex-direction: column; gap: 5px;
align-items: center;
justify-content: center;
font-size: calc(10px + 2vmin);
color: white;
}
.App-link {
color: #61dafb;
}
@keyframes App-logo-spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
} }
/* @import url('https://fonts.googleapis.com/css2?family=Lato&display=swap'); */ /* @import url('https://fonts.googleapis.com/css2?family=Lato&display=swap'); */
@ -62,6 +34,7 @@
font-family: 'Lato', sans-serif; font-family: 'Lato', sans-serif;
} }
.home, .home,
.flights, .flights,
.seasons { .seasons {
@ -70,6 +43,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
font-size: 3rem; font-size: 3rem;
width: 100%;
} }
@ -129,10 +103,6 @@ h1,h2,h4,p
{ {
text-align: center; text-align: center;
} }
.toindex
{
text-align: left;
}
.flexbox .flexbox
{ {
@ -150,20 +120,8 @@ h1,h2,h4,p
align-items: flex-end; align-items: flex-end;
} }
.header
{
border: 0px;
font-weight: 900;
font-size: 2em;
}
.pilot .header
{
font-weight: bold;
}
.link .link
{ {
font-size: 80%; font-size: 90%;
} }

View File

@ -11,7 +11,7 @@ import Seasons from './pages/Seasons';
export default function App() export default function App()
{ {
return( return(
<> <div className='layout'>
<Router> <Router>
<Navbar /> <Navbar />
<Routes> <Routes>
@ -20,6 +20,6 @@ export default function App()
<Route path='/seasons' element={<Seasons/>} /> <Route path='/seasons' element={<Seasons/>} />
</Routes> </Routes>
</Router> </Router>
</> </div>
); );
} }

View File

@ -2,11 +2,37 @@ import flights from '../data/HoPe_all_flights.json';
import {CFlight} from '../classes/CFlight'; import {CFlight} from '../classes/CFlight';
import {CSeason} from '../classes/CSeason'; import {CSeason} from '../classes/CSeason';
import {groupByMap} from '../global/tools'; import {groupByMap} from '../global/tools';
import getFlights from '../data/GetAllFlights.json';
const data_raw = flights.data; const data_raw = flights.data;
export const g_data: CFlight[] = []; export const g_data: CFlight[] = [];
export const g_seasondata: CSeason[] = []; export const g_seasondata: CSeason[] = [];
// function GetFlightsFromXcServer(FKpilot: number)
// {
// var url_raw: string = getFlights[0].url;
// const pattern: string = getFlights[0].pattern;
// const regex = /XXXXXXXX/gi;
// const url = url_raw.replace(regex, FKpilot.toString());
// var fldata: any;
// fetch(url)
// .then(function(response)
// {
// return response.json();
// }
// ).then(function(myJson)
// {
// fldata=myJson;
// console.log(fldata);
// });
// return fldata;
// }
// const data_raw = GetFlightsFromXcServer(1295).data;
for (let fl of data_raw) for (let fl of data_raw)
{ {
g_data.push(new CFlight(fl)); g_data.push(new CFlight(fl));

View File

@ -7,7 +7,7 @@ function Link2Flight(u_key: string, key: string, row: any, data: string | null)
{ {
var val: JSX.Element = <></>; var val: JSX.Element = <></>;
const link: string = 'https://de.dhv-xc.de/flight/' + row['IDFlight']; const link: string = 'https://de.dhv-xc.de/flight/' + row['IDFlight'];
val = <td key={u_key}><a href={link} target="_blank" rel="noopener noreferrer" >{data}</a></td>; val = <td className='link' key={u_key}><a href={link} target="_blank" rel="noopener noreferrer" >{data}</a></td>;
return val; return val;
} }

View File

@ -1,15 +1,14 @@
.navbar { .navbar {
background-color: #ba3a07c2; background-color: #ba3a07c2;
height: 80px; height: 40px;
width: 100px; min-width: 50px;
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;
} }
.menu-bars { .menu-bars {
margin-left: 2rem; margin-left: 1rem;
font-size: 2rem;
background: none; background: none;
} }
@ -52,7 +51,7 @@
} }
.nav-text a:hover { .nav-text a:hover {
background-color: #1a83ff; background-color: #d8150e;
} }
.nav-menu-items { .nav-menu-items {
@ -62,7 +61,7 @@
.navbar-toggle { .navbar-toggle {
background-color: #ba3a07c2; background-color: #ba3a07c2;
width: 100%; width: 100%;
height: 80px; height: 40px;
display: flex; display: flex;
justify-content: flex-start; justify-content: flex-start;
align-items: center; align-items: center;

View File

@ -15,9 +15,9 @@ export default function Navbar()
return ( return (
<> <>
<IconContext.Provider value={{ color: '#fff' }}> <IconContext.Provider value={{ color: '#fff' }}>
<div className='navbar'> <div className='navbar' onClick={showSidebar}>
<Link to='#' className='menu-bars'> <Link to='#' className='menu-bars'>
<FaIcons.FaBars onClick={showSidebar} /> <FaIcons.FaBars />
</Link> </Link>
</div> </div>
<nav className={sidebar ? 'nav-menu active' : 'nav-menu'}> <nav className={sidebar ? 'nav-menu active' : 'nav-menu'}>

7
src/data/GetAllFlights.json Executable file
View File

@ -0,0 +1,7 @@
[
{
"name" : "all_flights",
"pattern" : "XXXXXXXX",
"url" : "https://de.dhv-xc.de/api/fli/flights?fkpil%5B%5D=XXXXXXXX&navpars=%7B%22start%22%3A0%2C%22limit%22%3A5000%7D"
}
]

89
src/layout.txt Normal file
View File

@ -0,0 +1,89 @@
layout
flex
nn hhhhhhhhhhh
nn mmmmmmmmmmm
nn mmmmmmmmmmm
nn mmmmmmmmmmm
nn mmmmmmmmmmm
nn fffffffffff
n nav
h header
m main/inhalt
f footer
n fix links, immer gesamte höhe
h immer gesamte breite bis auf nav fixe höhe
f immer gesamte breite bis auf nav fixe höhe
m horizontal und vertikal center
row
element 1
nav
elemen1 2
column
header
main
footer
/column
/row
<div class="container">
<nav class="nav left">left</nav>
<section class="main">
<div class="col header">header</div>
<div class="col middle">
<div class="ver_hor_center">
main
</div>
</div>
<div class="col footer">footer</div>
</section>
</div>
.container {
display: flex;
flex-flow: row;
min-height: 50px;
}
.left {
flex: 0 0;
background-color: blue;
height: 100vh;
}
.main {
width: 100%;
background-color: red;
display: flex;
flex-direction: column;
justify-content: space-between;
height: 100vh;
}
.col {
margin: 2px;
}
.header {
flex: 0 0;
height: 20px;
background: yellow;
}
.middle {
height: 100%;
background: pink;
}
.footer {
flex: 0 0;
height: 20px;
background: cyan;
}
.ver_hor_center
{
/* horizontal und vertikal zentrieren */
position: absolute;
top: 25%;
left: 25%;
}

View File

@ -2,7 +2,7 @@ import React from 'react';
export default function Home() { export default function Home() {
return ( return (
<div> <div className='home'>
<h1>HOME</h1> <h1>HOME</h1>
</div> </div>
); );

BIN
thirdParty/react-sidebar-main.zip vendored Normal file

Binary file not shown.

12
www/liesmich.txt Normal file
View File

@ -0,0 +1,12 @@
https://www.php-einfach.de/experte/php-codebeispiele/loginscript/
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT ,
`email` VARCHAR(255) NOT NULL ,
`passwort` VARCHAR(255) NOT NULL ,
`vorname` VARCHAR(255) NOT NULL DEFAULT '' ,
`nachname` VARCHAR(255) NOT NULL DEFAULT '' ,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`updated_at` TIMESTAMP on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`id`), UNIQUE (`email`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

View File

@ -1,28 +1,46 @@
<?php <?php
session_start(); if(session_start())
$pdo = new PDO('mysql:host=rdbms.strato.de;dbname=dbs9336961', 'dbu1516891', 'C5ZrqVZDDBtv9SfloCh3'); {
echo "session ok<br/>---<br/>";
var_dump( get_defined_vars() );
}
else
{
echo "session error";
};
//strato
//$pdo = new PDO('mysql:host=rdbms.strato.de;dbname=dbs9336961', 'dbu1516891', 'C5ZrqVZDDBtv9SfloCh3');
//netcup local
$pdo = new PDO('mysql:host=localhost;dbname=k200835_php', 'k200835_admin', 'C5ZrqVZDDBtv9SfloCh3');
var_dump( get_defined_vars() );
if(isset($_GET['login'])) if(isset($_GET['login']))
{ {
$email = $_POST['email']; $email = $_POST['email'];
$passwort = $_POST['passwort']; $passwort = $_POST['passwort'];
$statement = $pdo->prepare("SELECT * FROM users WHERE email = :email"); // $statement = $pdo->prepare("SELECT * FROM users WHERE email = :email");
$result = $statement->execute(array('email' => $email)); // $result = $statement->execute(array('email' => $email));
$user = $statement->fetch(); // $user = $statement->fetch();
//Überprüfung des Passworts // //Überprüfung des Passworts
if ($user !== false && password_verify($passwort, $user['passwort'])) // if ($user !== false && password_verify($passwort, $user['passwort']))
{ // {
$_SESSION['userid'] = $user['id']; // $_SESSION['userid'] = $user['id'];
die('Login erfolgreich. Weiter zu <a href="./geheim.php">internen Bereich</a>'); // die('Login erfolgreich. Weiter zu <a href="./geheim.php">internen Bereich</a>');
} // }
else // else
{ // {
$errorMessage = "E-Mail oder Passwort war ungültig<br>"; // $errorMessage = "E-Mail oder Passwort war ungültig<br>";
} // }
} }
echo "No login set";
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>

1
www/p.php Normal file
View File

@ -0,0 +1 @@
<?php phpinfo() ?>

View File

@ -1,6 +1,7 @@
<?php <?php
session_start(); session_start();
$pdo = new PDO('mysql:host=rdbms.strato.de;dbname=dbs9336961', 'dbu1516891', 'C5ZrqVZDDBtv9SfloCh3'); // geht auf netcup
$pdo = new PDO('mysql:host=10.35.232.188:3306;dbname=k200835_php', 'k200835_admin', 'C5ZrqVZDDBtv9SfloCh3');
?> ?>
<!DOCTYPE html> <!DOCTYPE html>
<html> <html>

3
www/t.php Normal file
View File

@ -0,0 +1,3 @@
<?php
echo "wwwwwwww";
?>