From e29fe13957f6188ac9eb8ad39ce12cc5a8d7d925 Mon Sep 17 00:00:00 2001 From: eskopp Date: Mon, 11 Dec 2023 18:16:39 +0100 Subject: [PATCH] initial commit --- .github/ISSUE_TEMPLATE/bug.yml | 57 ++++ .github/ISSUE_TEMPLATE/other.md | 7 + .github/stale.yml | 15 + .gitignore | 30 ++ LICENSE | 21 ++ README.md | 13 + SimpleDWZ/LICENSE | 21 ++ SimpleDWZ/README.md | 13 + SimpleDWZ/backup/Test-Data/history.txt | 9 + SimpleDWZ/backup/Test-Data/table.txt | 6 + SimpleDWZ/backup/Test-Data/user.txt | 6 + SimpleDWZ/img/index.php | 5 + SimpleDWZ/img/logo.png | Bin 0 -> 19916 bytes SimpleDWZ/index.php | 3 + SimpleDWZ/js/Form_New_Child.js | 7 + SimpleDWZ/php/FormNewChild.php | 11 + SimpleDWZ/php/NewChild.php | 141 ++++++++++ SimpleDWZ/php/NewChildlayer.php | 27 ++ SimpleDWZ/php/backup.php | 76 ++++++ SimpleDWZ/php/datum.php | 65 +++++ SimpleDWZ/php/dwz.php | 128 +++++++++ SimpleDWZ/php/enter.php | 45 +++ SimpleDWZ/php/graph.php | 85 ++++++ SimpleDWZ/php/graph_content.php | 51 ++++ SimpleDWZ/php/history.php | 70 +++++ SimpleDWZ/php/index.php | 50 ++++ SimpleDWZ/php/ja.php | 52 ++++ SimpleDWZ/php/licence.php | 33 +++ SimpleDWZ/php/particel.php | 146 ++++++++++ SimpleDWZ/php/reset.php | 24 ++ SimpleDWZ/php/result.php | 84 ++++++ SimpleDWZ/php/sample.php | 78 ++++++ SimpleDWZ/php/sampleDB.php | 24 ++ SimpleDWZ/php/submit.php | 278 +++++++++++++++++++ SimpleDWZ/php/submit_content.php | 27 ++ SimpleDWZ/php/system.php | 20 ++ SimpleDWZ/php/table.php | 77 ++++++ SimpleDWZ/style/ajax.css | 182 +++++++++++++ SimpleDWZ/style/index.php | 4 + SimpleDWZ/style/old.css | 111 ++++++++ SimpleDWZ/style/style.css | 361 +++++++++++++++++++++++++ SimpleDWZ/txt/history.txt | 9 + SimpleDWZ/txt/index.php | 4 + SimpleDWZ/txt/table.txt | 6 + SimpleDWZ/txt/user.txt | 6 + 45 files changed, 2488 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug.yml create mode 100644 .github/ISSUE_TEMPLATE/other.md create mode 100644 .github/stale.yml create mode 100644 .gitignore create mode 100644 LICENSE create mode 100644 README.md create mode 100644 SimpleDWZ/LICENSE create mode 100644 SimpleDWZ/README.md create mode 100644 SimpleDWZ/backup/Test-Data/history.txt create mode 100644 SimpleDWZ/backup/Test-Data/table.txt create mode 100644 SimpleDWZ/backup/Test-Data/user.txt create mode 100644 SimpleDWZ/img/index.php create mode 100644 SimpleDWZ/img/logo.png create mode 100644 SimpleDWZ/index.php create mode 100644 SimpleDWZ/js/Form_New_Child.js create mode 100644 SimpleDWZ/php/FormNewChild.php create mode 100644 SimpleDWZ/php/NewChild.php create mode 100644 SimpleDWZ/php/NewChildlayer.php create mode 100644 SimpleDWZ/php/backup.php create mode 100644 SimpleDWZ/php/datum.php create mode 100644 SimpleDWZ/php/dwz.php create mode 100644 SimpleDWZ/php/enter.php create mode 100644 SimpleDWZ/php/graph.php create mode 100644 SimpleDWZ/php/graph_content.php create mode 100644 SimpleDWZ/php/history.php create mode 100644 SimpleDWZ/php/index.php create mode 100644 SimpleDWZ/php/ja.php create mode 100644 SimpleDWZ/php/licence.php create mode 100644 SimpleDWZ/php/particel.php create mode 100644 SimpleDWZ/php/reset.php create mode 100644 SimpleDWZ/php/result.php create mode 100644 SimpleDWZ/php/sample.php create mode 100644 SimpleDWZ/php/sampleDB.php create mode 100644 SimpleDWZ/php/submit.php create mode 100644 SimpleDWZ/php/submit_content.php create mode 100644 SimpleDWZ/php/system.php create mode 100644 SimpleDWZ/php/table.php create mode 100644 SimpleDWZ/style/ajax.css create mode 100644 SimpleDWZ/style/index.php create mode 100644 SimpleDWZ/style/old.css create mode 100644 SimpleDWZ/style/style.css create mode 100644 SimpleDWZ/txt/history.txt create mode 100644 SimpleDWZ/txt/index.php create mode 100644 SimpleDWZ/txt/table.txt create mode 100644 SimpleDWZ/txt/user.txt diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml new file mode 100644 index 0000000..fa8d214 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug.yml @@ -0,0 +1,57 @@ +name: Bug report +description: Report something not working on the website. See below for mobile app. +labels: ['bug'] +body: + - type: markdown + attributes: + value: | + Thank you for reporting an issue. + - type: textarea + id: url + attributes: + label: Exact URL of where the bug happened + validations: + required: true + - type: textarea + id: steps + attributes: + label: Steps to reproduce the bug + description: Provide precise step by step instructions on how to reproduce the bug + placeholder: | + 1. Go to ... + 2. Click ... + 3. ... + validations: + required: true + - type: textarea + id: expected + attributes: + label: What did you expect to happen? + validations: + required: true + - type: textarea + id: outcome + attributes: + label: What happened instead? + validations: + required: true + - type: input + attributes: + label: Operating system + description: Specify the OS you are using (e.g. Windows 11) + validations: + required: true + - type: input + attributes: + label: Browser and version (or alternate access method) + description: Specify the browser and version you are using (e.g. Firefox 110.0). Otherwise, specify your access method (such as API). + validations: + required: true + - type: textarea + attributes: + label: Additional information + description: | + Provide any additional information that will give more context for the issue you are encountering. + Screenshots can be added by clicking this area and then pasting or dragging them in. + validations: + required: false \ No newline at end of file diff --git a/.github/ISSUE_TEMPLATE/other.md b/.github/ISSUE_TEMPLATE/other.md new file mode 100644 index 0000000..b37215d --- /dev/null +++ b/.github/ISSUE_TEMPLATE/other.md @@ -0,0 +1,7 @@ +--- +name: Other +about: Other issue or enhancement for the website. +title: '' +labels: '' +assignees: '' +--- \ No newline at end of file diff --git a/.github/stale.yml b/.github/stale.yml new file mode 100644 index 0000000..ab8d225 --- /dev/null +++ b/.github/stale.yml @@ -0,0 +1,15 @@ +daysUntilStale: 730 +daysUntilClose: 14 +exemptLabels: + - prospect + - foundational + - wanted + - bug +staleLabel: stale +markComment: > + There has been no activity on this issue for 2 years. It will be + automatically closed in 2 weeks. + + If the issue is still relevant, please briefly explain (or remove the label). + Feel free to reopen at any time. +closeComment: false \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..93d8c50 --- /dev/null +++ b/.gitignore @@ -0,0 +1,30 @@ +# the composer package lock file and install directory +# Commit your application's lock file http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file +# You may choose to ignore a library lock file http://getcomposer.org/doc/02-libraries.md#lock-file +# /composer.lock +/fuel/vendor + +# the fuelphp document +/docs/ + +# you may install these packages with `oil package`. +# http://fuelphp.com/docs/packages/oil/package.html +# /fuel/packages/auth/ +# /fuel/packages/email/ +# /fuel/packages/oil/ +# /fuel/packages/orm/ +# /fuel/packages/parser/ + +# dynamically generated files +/fuel/app/logs/*/*/* +/fuel/app/cache/*/* +/fuel/app/config/crypt.php + +# Server +*/.htpasswd +*/.htaccess + + +# PHPStorm +.idea/ +.idea \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..4c0b62c --- /dev/null +++ b/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Erik Skopp + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/README.md b/README.md new file mode 100644 index 0000000..e71b98b --- /dev/null +++ b/README.md @@ -0,0 +1,13 @@ +# SimpleDWZ + +Track your chess club's rating development effortlessly. + + +## Expose +My developed tool allows chess clubs to track their skill development similar to the German Chess Federation, but without the hefty price tag they demand for an official evaluation. Unlike the German Chess Federation, which demands a significant amount of money for rating calculations, my tool offers a cost-effective alternative. + +Instead of exploiting clubs financially, my tool provides a fair opportunity to track DWZ development. It is based on the same calculation methods as the German Chess Federation and takes into account players' performance in tournaments or matches. Through regular updates, clubs can analyze their skill development transparently and without exorbitant costs. + +Furthermore, my tool provides features to visualize DWZ development without any additional charges, as it is completely free and open-source. Clubs can generate charts and graphs to identify trends and visually represent players' progress. + +So why spend a substantial amount of money on the German Chess Federation when my tool offers a cost-effective and reliable alternative? It's time for clubs to invest their hard-earned money wisely and free themselves from the expensive offerings of an official evaluation. My tool is ready to assist clubs in effectively and budget-friendly tracking their DWZ development. \ No newline at end of file diff --git a/SimpleDWZ/LICENSE b/SimpleDWZ/LICENSE new file mode 100644 index 0000000..4c0b62c --- /dev/null +++ b/SimpleDWZ/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2023 Erik Skopp + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/SimpleDWZ/README.md b/SimpleDWZ/README.md new file mode 100644 index 0000000..e71b98b --- /dev/null +++ b/SimpleDWZ/README.md @@ -0,0 +1,13 @@ +# SimpleDWZ + +Track your chess club's rating development effortlessly. + + +## Expose +My developed tool allows chess clubs to track their skill development similar to the German Chess Federation, but without the hefty price tag they demand for an official evaluation. Unlike the German Chess Federation, which demands a significant amount of money for rating calculations, my tool offers a cost-effective alternative. + +Instead of exploiting clubs financially, my tool provides a fair opportunity to track DWZ development. It is based on the same calculation methods as the German Chess Federation and takes into account players' performance in tournaments or matches. Through regular updates, clubs can analyze their skill development transparently and without exorbitant costs. + +Furthermore, my tool provides features to visualize DWZ development without any additional charges, as it is completely free and open-source. Clubs can generate charts and graphs to identify trends and visually represent players' progress. + +So why spend a substantial amount of money on the German Chess Federation when my tool offers a cost-effective and reliable alternative? It's time for clubs to invest their hard-earned money wisely and free themselves from the expensive offerings of an official evaluation. My tool is ready to assist clubs in effectively and budget-friendly tracking their DWZ development. \ No newline at end of file diff --git a/SimpleDWZ/backup/Test-Data/history.txt b/SimpleDWZ/backup/Test-Data/history.txt new file mode 100644 index 0000000..2f0b4be --- /dev/null +++ b/SimpleDWZ/backup/Test-Data/history.txt @@ -0,0 +1,9 @@ +White,DWZ_old,DWZ_new,Result,Black,DWZ_old,DWZ_new,Date,Time,DB_Fragment +Erik,1100,1108,1-0,Lara,900,892,20230626+,013402-,P0HuDZvcZsWsYuzP +Felix,900,902,0.5-0.5,Georg,950,948,20230626+,013413-,aCJLLl4JUSF0j6TK +Erik,1108,1103,0.5-0.5,Lena,1000,1005,20230626+,013428-,YHIfxf5FAMU0E73R +Erik,1103,1076,0-1,Sina,800,827,20230626+,013449-,Js35irqCnBTUVHsI +Georg,948,967,1-0,Lena,1005,986,20230626+,013518-,DwR0FMRiF2I9iAdm +Lara,892,879,0-1,Georg,967,980,20230626+,013525-,WhwpwHQlXPMEiKz5 +Erik,1076,1088,1-0,Georg,980,968,20230626+,013539-,KEjU7Ylc2eCvldz6 +Lena,986,966,0-1,Felix,902,922,20230626+,013607-,RkyGnHuB8ipTFXwb diff --git a/SimpleDWZ/backup/Test-Data/table.txt b/SimpleDWZ/backup/Test-Data/table.txt new file mode 100644 index 0000000..28cedc4 --- /dev/null +++ b/SimpleDWZ/backup/Test-Data/table.txt @@ -0,0 +1,6 @@ +Sina,827 +Lara,879 +Erik,1088 +Georg,968 +Lena,966 +Felix,922 \ No newline at end of file diff --git a/SimpleDWZ/backup/Test-Data/user.txt b/SimpleDWZ/backup/Test-Data/user.txt new file mode 100644 index 0000000..6bae8d1 --- /dev/null +++ b/SimpleDWZ/backup/Test-Data/user.txt @@ -0,0 +1,6 @@ +Lara,900,892,879 +Lena,1000,1005,986,966 +Georg,950,948,967,980,968 +Sina,800,827 +Felix,900,902,922 +Erik,1100,1108,1103,1076,1088 \ No newline at end of file diff --git a/SimpleDWZ/img/index.php b/SimpleDWZ/img/index.php new file mode 100644 index 0000000..dacd29d --- /dev/null +++ b/SimpleDWZ/img/index.php @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/SimpleDWZ/img/logo.png b/SimpleDWZ/img/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..482c0539be863440c6bbcf99898bce5c5441a628 GIT binary patch literal 19916 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 P00000NkvXXu0mjfKSZ?# literal 0 HcmV?d00001 diff --git a/SimpleDWZ/index.php b/SimpleDWZ/index.php new file mode 100644 index 0000000..e4ce104 --- /dev/null +++ b/SimpleDWZ/index.php @@ -0,0 +1,3 @@ + \ No newline at end of file diff --git a/SimpleDWZ/js/Form_New_Child.js b/SimpleDWZ/js/Form_New_Child.js new file mode 100644 index 0000000..afc5f18 --- /dev/null +++ b/SimpleDWZ/js/Form_New_Child.js @@ -0,0 +1,7 @@ +function validateInputText(input) { + input.value = input.value.replace(/[^A-Za-z]/g, ""); +} + +function validateInputZahl(input) { + input.value = input.value.replace(/[^0-9]/g, ""); +} diff --git a/SimpleDWZ/php/FormNewChild.php b/SimpleDWZ/php/FormNewChild.php new file mode 100644 index 0000000..dc3f75b --- /dev/null +++ b/SimpleDWZ/php/FormNewChild.php @@ -0,0 +1,11 @@ + + +

+ + +

+ +
A rating of 900 is recommended as a starting value.

+
+ + \ No newline at end of file diff --git a/SimpleDWZ/php/NewChild.php b/SimpleDWZ/php/NewChild.php new file mode 100644 index 0000000..c961918 --- /dev/null +++ b/SimpleDWZ/php/NewChild.php @@ -0,0 +1,141 @@ + + + + + Internal Rating + + + + + + + + + + +
+

Internal Rating



+
"); +} + +if (!preg_match('/^[1-9][0-9]*$/', $rating) && $rating !== '0') { + echo "{$rating} ist keine normale ganze Zahl."; + die("

"); +} + +if ($rating <= 799){ + echo "Das Rating darf nicht unter 800 sein (".$rating.")"; + die("

"); +} +if (strlen($child) < 3){ + echo "Der Name muss mindestens 3 Zeichen haben (".$child.")"; + die("

"); +} + +if (strlen($child) > 12){ + echo "Der Name muss weniger als 12 Zeichen haben (".$child.")"; + die("

"); +} + +if (preg_match('/\s|[^\w\s]/', $child)){ + echo "Error: Sonderzeichen"; + echo "Bitte entferne die Sonderzeichen (".$child.")"; + die("

"); +} + +if (preg_match('/^[a-zA-Z]+$/', $child) == False){ + echo "Sonderzeichen II"; + echo "Bitte gib einen normalen Namen ein (".$child.")"; + die("

"); +} + +$rating = roundNumber($rating); + +$tableFile = substr(__DIR__, 0, -3)."/txt/table.txt"; + +if (!file_exists($tableFile)) { + touch($tableFile); + chmod($tableFile, 0644); +} + +$fileHandle = fopen($tableFile, 'a+'); + +if ($fileHandle) { + if (flock($fileHandle, LOCK_EX)) { + fseek($fileHandle, 0); + + $fileContent = file_get_contents($tableFile); + + if (strpos($fileContent, $child) === false) { + fwrite($fileHandle, $child . "," . $rating . "\n"); + echo "TABLE: Eintrag angelegt.

"; + } else { + echo "TABLE: Eintrag existiert bereits.

"; + } + + flock($fileHandle, LOCK_UN); + } else { + echo "Fehler beim Sperren der CSV-Datei."; + } + + fclose($fileHandle); +} + +$currentPath = __DIR__; + +$child = $_POST["balg"]; +$rating = $_POST["rating"]; + +$tableFile = substr(__DIR__, 0, -3)."/txt/user.txt"; + +if (!file_exists($tableFile)) { + touch($tableFile); + chmod($tableFile, 0644); +} + +$fileHandle = fopen($tableFile, 'a+'); + +if ($fileHandle) { + if (flock($fileHandle, LOCK_EX)) { + fseek($fileHandle, 0); + + $fileContent = file_get_contents($tableFile); + + if (strpos($fileContent, $child) === false) { + fwrite($fileHandle, $child . "," . $rating . "\n"); + echo "USER: Eintrag angelegt.

"; + } else { + echo "USER: Eintrag existiert bereits.

"; + } + + flock($fileHandle, LOCK_UN); + } else { + echo "Fehler beim Sperren der CSV-Datei."; + } + + fclose($fileHandle); +} + +print("

"); + +?> +
+ + + + + diff --git a/SimpleDWZ/php/NewChildlayer.php b/SimpleDWZ/php/NewChildlayer.php new file mode 100644 index 0000000..33f9d59 --- /dev/null +++ b/SimpleDWZ/php/NewChildlayer.php @@ -0,0 +1,27 @@ + + + + + Internal Rating + + + + + + + + +
+

Internal rating

+
+

Add new player:

+
+ +
+
+
+ + + + + diff --git a/SimpleDWZ/php/backup.php b/SimpleDWZ/php/backup.php new file mode 100644 index 0000000..2ce2372 --- /dev/null +++ b/SimpleDWZ/php/backup.php @@ -0,0 +1,76 @@ +'; + echo ''; + echo ''; + + foreach ($files as $file) { + if ($file === '.' || $file === '..') { + continue; + } + + if ($file === 'Test-Data') { + $filePath = $directory . '/' . $file; + echo ''; + echo ''; + echo ''; + echo ""; + echo ''; + }else{ + + $filePath = $directory . '/' . $file; + + if (is_dir($filePath)) { + $fileName = explode('-', $file); + $column1 = $fileName[0]; + $column2 = $fileName[1]; + + echo ''; + echo ''; + echo ''; + echo ""; + echo ''; + } + } + } + + echo '
DateTimeData Set
Test Data Test Data Download
' . umrechneDatum($column1) . '' . umrechneUhrzeit($column2) . 'Download
'; + echo ''; +} +?> + + + + + + Internal Rating + + + + + + +
+

Internal Rating

+
+
+

BackUp

+
+ +
+
+
+ +
+ + + + + diff --git a/SimpleDWZ/php/datum.php b/SimpleDWZ/php/datum.php new file mode 100644 index 0000000..a1e216c --- /dev/null +++ b/SimpleDWZ/php/datum.php @@ -0,0 +1,65 @@ + 0) { + $endung = substr($eingabe, -1); + + if ($endung === '-') { + $uhrzeit = substr($eingabe, 0, -1); + return umrechneUhrzeit($uhrzeit); + } elseif ($endung === '+') { + $datum = substr($eingabe, 0, -1); + return umrechneDatum($datum); + } + } + + return $eingabe; +} + + +?> \ No newline at end of file diff --git a/SimpleDWZ/php/dwz.php b/SimpleDWZ/php/dwz.php new file mode 100644 index 0000000..3210547 --- /dev/null +++ b/SimpleDWZ/php/dwz.php @@ -0,0 +1,128 @@ + diff --git a/SimpleDWZ/php/enter.php b/SimpleDWZ/php/enter.php new file mode 100644 index 0000000..cd98e12 --- /dev/null +++ b/SimpleDWZ/php/enter.php @@ -0,0 +1,45 @@ + + + + + Internal Rating + + + + + + + +
+

Internal Rating


+
+

Load Backup



+ The tool only reads the data. The data is not tested for correctness or redunancy.

+
+
+
+
+
+
+
+
+
+
+ I guarantee that the data is correct. + + +
+ + + + +
+ + + + + diff --git a/SimpleDWZ/php/graph.php b/SimpleDWZ/php/graph.php new file mode 100644 index 0000000..7901f42 --- /dev/null +++ b/SimpleDWZ/php/graph.php @@ -0,0 +1,85 @@ + + + + + + + + Internal Rating + + + + + + + +
+

Internal Rating



+
+

Development

+ + +
+ + +
+
+
+ + + + + diff --git a/SimpleDWZ/php/graph_content.php b/SimpleDWZ/php/graph_content.php new file mode 100644 index 0000000..f75ebcf --- /dev/null +++ b/SimpleDWZ/php/graph_content.php @@ -0,0 +1,51 @@ + diff --git a/SimpleDWZ/php/history.php b/SimpleDWZ/php/history.php new file mode 100644 index 0000000..475b16e --- /dev/null +++ b/SimpleDWZ/php/history.php @@ -0,0 +1,70 @@ + + + + + Internal Rating + + + + + + + + +
+
+

Internal Rating

+
+
+
+ Game history"; + echo "
"; + echo '
'; + echo "\n"; + if (($file = fopen($filename, "r")) !== false) { + $header = fgets($file); + $headerColumns = explode(",", $header); + echo ""; + foreach ($headerColumns as $column) { + echo ""; + } + echo "\n"; + while (($line = fgets($file)) !== false) { + $data = explode(",", $line); + echo ""; + foreach ($data as $column) { + echo ""; + } + echo "\n"; + } + fclose($file); + } else { + echo ""; + } + echo "
" . trim($column) . "
" . umrechneString(trim($column)) . "
The file could not be opened.
\n"; + echo "
"; + echo "
"; + print("

"); + ?> +
+ + + + + + diff --git a/SimpleDWZ/php/index.php b/SimpleDWZ/php/index.php new file mode 100644 index 0000000..cd036e3 --- /dev/null +++ b/SimpleDWZ/php/index.php @@ -0,0 +1,50 @@ + + + + + Internal Rating + + + + + + + + + +
+

Internal Rating


+
+

What do you want to do?

+ + + + +

Tables:

+ + + + +

Beta features - Please use with caution:

+ + + +

Database - functions:

+ + + + +

Source Code:

+ + + + + + + +
+ + + + + diff --git a/SimpleDWZ/php/ja.php b/SimpleDWZ/php/ja.php new file mode 100644 index 0000000..eab5c53 --- /dev/null +++ b/SimpleDWZ/php/ja.php @@ -0,0 +1,52 @@ +format('Ymd-His')); +} + + +$contentx = xyz(); +$backupDir = substr(__DIR__, 0, -3)."backup/" . $contentx; +mkdir($backupDir); + +$files = array( + "table.txt", + "user.txt", + "history.txt" +); + +foreach ($files as $file) { + $source = substr(__DIR__, 0, -3)."txt/" . $file; + $destination = $backupDir . "/" . $file; + + if (!copy($source, $destination)) { + die("Backup could not be created."); + } + + delete_file($source); +} + +$txt = "White,DWZ_old,DWZ_new,Result,Black,DWZ_old,DWZ_new,Date,Time\n"; +file_put_contents(substr(__DIR__, 0, -3).'/txt/history.txt', $txt); + +header("Location: ../"); + +?> \ No newline at end of file diff --git a/SimpleDWZ/php/licence.php b/SimpleDWZ/php/licence.php new file mode 100644 index 0000000..9d116a1 --- /dev/null +++ b/SimpleDWZ/php/licence.php @@ -0,0 +1,33 @@ + + + + + Erik Skopp + + + + + + + +
+

Internal Rating

+
+

Lizenz

+
+ + 2023 - Erik Skopp + + Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +
+ +
+ + + + + diff --git a/SimpleDWZ/php/particel.php b/SimpleDWZ/php/particel.php new file mode 100644 index 0000000..d0e01ea --- /dev/null +++ b/SimpleDWZ/php/particel.php @@ -0,0 +1,146 @@ + +
+ + + + + + + + + + diff --git a/SimpleDWZ/php/reset.php b/SimpleDWZ/php/reset.php new file mode 100644 index 0000000..099ff47 --- /dev/null +++ b/SimpleDWZ/php/reset.php @@ -0,0 +1,24 @@ + + + + + Internal Rating + + + + + + +
+

Internal Rating

+
+
+ Do you really want to delete the database?
+
+
+
+ + + + + diff --git a/SimpleDWZ/php/result.php b/SimpleDWZ/php/result.php new file mode 100644 index 0000000..90dfce5 --- /dev/null +++ b/SimpleDWZ/php/result.php @@ -0,0 +1,84 @@ + + + + + + + Internal rating + + + + + + + + +
+

Internal rating

+
+

Report result:

+
+ +


+ +


+ + +

+ + +
+
+ +

+
+ + + + + diff --git a/SimpleDWZ/php/sample.php b/SimpleDWZ/php/sample.php new file mode 100644 index 0000000..a4000f7 --- /dev/null +++ b/SimpleDWZ/php/sample.php @@ -0,0 +1,78 @@ +format('Ymd-His')); +} + +// content +$history = "White,DWZ_old,DWZ_new,Result,Black,DWZ_old,DWZ_new,Date,Time,DB_Fragment +Erik,1100,1108,1-0,Lara,900,892,20230626+,013402-,P0HuDZvcZsWsYuzP +Felix,900,902,0.5-0.5,Georg,950,948,20230626+,013413-,aCJLLl4JUSF0j6TK +Erik,1108,1103,0.5-0.5,Lena,1000,1005,20230626+,013428-,YHIfxf5FAMU0E73R +Erik,1103,1076,0-1,Sina,800,827,20230626+,013449-,Js35irqCnBTUVHsI +Georg,948,967,1-0,Lena,1005,986,20230626+,013518-,DwR0FMRiF2I9iAdm +Lara,892,879,0-1,Georg,967,980,20230626+,013525-,WhwpwHQlXPMEiKz5 +Erik,1076,1088,1-0,Georg,980,968,20230626+,013539-,KEjU7Ylc2eCvldz6 +Lena,986,966,0-1,Felix,902,922,20230626+,013607-,RkyGnHuB8ipTFXwb +"; +$user = "Lara,900,892,879 +Lena,1000,1005,986,966 +Georg,950,948,967,980,968 +Sina,800,827 +Felix,900,902,922 +Erik,1100,1108,1103,1076,1088 +"; +$table="Sina,827 +Lara,879 +Erik,1088 +Georg,968 +Lena,966 +Felix,922 +"; + + +$contentx = xyz(); +$backupDir = substr(__DIR__, 0, -3)."backup/" . $contentx; +mkdir($backupDir); + +$files = array( + "table.txt", + "user.txt", + "history.txt" +); + +foreach ($files as $file) { + $source = substr(__DIR__, 0, -3)."txt/" . $file; + $destination = $backupDir . "/" . $file; + + if (!copy($source, $destination)) { + die("Backup could not be created."); + } + + delete_file($source); +} + +file_put_contents(substr(__DIR__, 0, -3).'/txt/history.txt', $history); +file_put_contents(substr(__DIR__, 0, -3).'/txt/table.txt', $table); +file_put_contents(substr(__DIR__, 0, -3).'/txt/user.txt', $user); +header("Location: ../?action=SampleDB"); + +?> \ No newline at end of file diff --git a/SimpleDWZ/php/sampleDB.php b/SimpleDWZ/php/sampleDB.php new file mode 100644 index 0000000..c00bcf2 --- /dev/null +++ b/SimpleDWZ/php/sampleDB.php @@ -0,0 +1,24 @@ + + + + + Internal Rating + + + + + + +
+

Internal Rating

+
+
+ Do you really want to load a sample Database?
+
+
+
+ + + + + diff --git a/SimpleDWZ/php/submit.php b/SimpleDWZ/php/submit.php new file mode 100644 index 0000000..4cea1dc --- /dev/null +++ b/SimpleDWZ/php/submit.php @@ -0,0 +1,278 @@ + + + + + + + Internal Rating + + + + + + +
+ +

Internal Rating


+ Error


"; + echo "Conflicting games:


"; + echo "
"; + $db_error = "Weiss,DWZ_alt,DWZ_neu,Ergebnis,Schwarz,DWZ_alt,DWZ_neu,Datum,Zeit,Alive?\n".$db_error; + $rows = explode("\n", $db_error); + + $table_html = '' . PHP_EOL . '' . PHP_EOL . '' . PHP_EOL; + $header = explode(",", $rows[0]); + foreach ($header as $column) { + $table_html .= '' . PHP_EOL; + } + $table_html .= '' . PHP_EOL . '' . PHP_EOL . '' . PHP_EOL; + + for ($i = 1; $i < count($rows); $i++) { + $table_html .= '' . PHP_EOL; + $columns = explode(",", $rows[$i]); + foreach ($columns as $column) { + $table_html .= '' . PHP_EOL; + } + $table_html .= '' . PHP_EOL; + } + + $table_html .= '' . PHP_EOL . '
' . $column . '
' . $column . '
'; + + echo $table_html; + echo "
"; + echo "

Please consider that the game above you has already been entered into the database."; + + die("
"); +} + +if(isUUIDValid($db_key)){ + echo "Internal Error


"; + echo "Bitte geben Sie dem Admin bescheid"; + die("
"); +} + +if($name_weiss == $name_schwarz){ + + echo "This pairing can not be accepted


"; + echo "How to play ".$name_weiss." against ".$name_schwarz."?


"; + die("
"); +} + +echo "
"; +echo ""; +echo ''; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo ""; +echo "
WertTyp
".$name_schwarz."name_schwarz
".$name_weiss."name_weiss
".$weiß_dwz."weiß_dwz
".$schwarz_dwz."schwarz_dwz
".$schwarz_dwz_neu."schwarz_dwz_neu
".$weiß_dwz_neu."weiss_dwz_neu
".$result."result
".getScoreW($result)."getScoreW()
".getScoreS($result)."getScoreS()
".$db_key."DB Key Fragment
"; +echo "
"; + + + +$filename = substr(__DIR__, 0, -3).'/txt/table.txt'; +$lines = file($filename); +$updatedContent = ''; +$lineDeleted = false; + +foreach ($lines as $line) { + if (strpos($line, $name_weiss) !== false) { + $lineDeleted = true; + continue; + } + $updatedContent .= $line; +} + +if ($lineDeleted) { + file_put_contents($filename, $updatedContent . $weiss_tupel . PHP_EOL, LOCK_EX); +} else { + echo "Eintrag für $name_weiss nicht gefunden."; +} + + +$filename = substr(__DIR__, 0, -3).'/txt/table.txt'; + + +$lines = file($filename); +$updatedContent = ''; +$lineDeleted = false; + +foreach ($lines as $line) { + if (strpos($line, $name_schwarz) !== false) { + $lineDeleted = true; + continue; + } + $updatedContent .= $line; +} + +if ($lineDeleted) { + file_put_contents($filename, $updatedContent . $schwarz_tupel . PHP_EOL, LOCK_EX); +} else { + echo "Eintrag für $name_schwarz nicht gefunden."; +} + + +$filename = substr(__DIR__, 0, -3) . '/txt/user.txt'; + +// Update content for $name_weiss +$file = fopen($filename, 'r+'); +if ($file) { + $newContent = ''; + while (($line = fgets($file)) !== false) { + if (strpos($line, $name_weiss) !== false) { + $line = rtrim($line); + $line .= ',' . $weiß_dwz_neu . "\n"; + } + $newContent .= $line; + } + fclose($file); + file_put_contents($filename, $newContent); + echo " "; +} else { + echo "The file could not be opened."; +} + +// Update content for $name_schwarz +$file = fopen($filename, 'r+'); +if ($file) { + $newContent = ''; + while (($line = fgets($file)) !== false) { + if (strpos($line, $name_schwarz) !== false) { + $line = rtrim($line); + $line .= ',' . $schwarz_dwz_neu . "\n"; + } + $newContent .= $line; + } + fclose($file); + file_put_contents($filename, $newContent); + echo " "; +} else { + echo "The file could not be opened."; +} + + + +$file = substr(__DIR__, 0, -3) . '/txt/history.txt'; +$date = date("Ymd") . "+"; +$time = date("His") . "-"; +$newLine = $name_weiss . "," . $weiß_dwz . "," . $weiß_dwz_neu . "," . $result . "," . $name_schwarz . "," . $schwarz_dwz . "," . $schwarz_dwz_neu . "," . $date . "," . $time . "," . $db_key . "\n"; + +if (file_put_contents($file, $newLine, FILE_APPEND | LOCK_EX) !== false) { + echo " "; +} else { + echo "The file could not be opened."; +} + +?> + +
+
+
+ + + + + + + + + + + + + + diff --git a/SimpleDWZ/php/submit_content.php b/SimpleDWZ/php/submit_content.php new file mode 100644 index 0000000..f09304a --- /dev/null +++ b/SimpleDWZ/php/submit_content.php @@ -0,0 +1,27 @@ + diff --git a/SimpleDWZ/php/system.php b/SimpleDWZ/php/system.php new file mode 100644 index 0000000..0ec8761 --- /dev/null +++ b/SimpleDWZ/php/system.php @@ -0,0 +1,20 @@ + diff --git a/SimpleDWZ/php/table.php b/SimpleDWZ/php/table.php new file mode 100644 index 0000000..44f9a6c --- /dev/null +++ b/SimpleDWZ/php/table.php @@ -0,0 +1,77 @@ + + + + Internal Rating + + + + + + + +
+

Ratingtable


+

+
+
+ '; + echo ''; + echo ''; + foreach ($lines as $line) { + [$name, $rating] = explode(',', $line); + echo ''; + echo ''; + echo ''; + echo ''; + } + echo '
NameRating
' . htmlspecialchars($name) . '' . htmlspecialchars($rating) . '
'; + echo '
'; + echo '

'; + echo '


'; + echo '
'; + echo ''; + echo '
'; + echo ''; + echo ''; + echo '
'; + echo '

'; + } else { + echo "File does not exist."; + } + echo '


'; + ?> + + + + + + + + + + + diff --git a/SimpleDWZ/style/ajax.css b/SimpleDWZ/style/ajax.css new file mode 100644 index 0000000..7e4cc00 --- /dev/null +++ b/SimpleDWZ/style/ajax.css @@ -0,0 +1,182 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ +html { + line-height: 1.15; + -webkit-text-size-adjust: 100% +} + +body { + margin: 0 +} + +main { + display: block +} + +h1 { + font-size: 2em; + margin: .67em 0 +} + +hr { + box-sizing: content-box; + height: 0; + overflow: visible +} + +pre { + font-family: monospace, monospace; + font-size: 1em +} + +a { + background-color: transparent +} + +abbr[title] { + border-bottom: none; + text-decoration: underline; + text-decoration: underline dotted +} + +b, +strong { + font-weight: bolder +} + +code, +kbd, +samp { + font-family: monospace, monospace; + font-size: 1em +} + +small { + font-size: 80% +} + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline +} + +sub { + bottom: -.25em +} + +sup { + top: -.5em +} + +img { + border-style: none +} + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; + font-size: 100%; + line-height: 1.15; + margin: 0 +} + +button, +input { + overflow: visible +} + +button, +select { + text-transform: none +} + +[type=button], +[type=reset], +[type=submit], +button { + -webkit-appearance: button +} + +[type=button]::-moz-focus-inner, +[type=reset]::-moz-focus-inner, +[type=submit]::-moz-focus-inner, +button::-moz-focus-inner { + border-style: none; + padding: 0 +} + +[type=button]:-moz-focusring, +[type=reset]:-moz-focusring, +[type=submit]:-moz-focusring, +button:-moz-focusring { + outline: 1px dotted ButtonText +} + +fieldset { + padding: .35em .75em .625em +} + +legend { + box-sizing: border-box; + color: inherit; + display: table; + max-width: 100%; + padding: 0; + white-space: normal +} + +progress { + vertical-align: baseline +} + +textarea { + overflow: auto +} + +[type=checkbox], +[type=radio] { + box-sizing: border-box; + padding: 0 +} + +[type=number]::-webkit-inner-spin-button, +[type=number]::-webkit-outer-spin-button { + height: auto +} + +[type=search] { + -webkit-appearance: textfield; + outline-offset: -2px +} + +[type=search]::-webkit-search-decoration { + -webkit-appearance: none +} + +::-webkit-file-upload-button { + -webkit-appearance: button; + font: inherit +} + +details { + display: block +} + +summary { + display: list-item +} + +template { + display: none +} + +[hidden] { + display: none +} + +/*# sourceMappingURL=normalize.min.css.map */ \ No newline at end of file diff --git a/SimpleDWZ/style/index.php b/SimpleDWZ/style/index.php new file mode 100644 index 0000000..9c05082 --- /dev/null +++ b/SimpleDWZ/style/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/SimpleDWZ/style/old.css b/SimpleDWZ/style/old.css new file mode 100644 index 0000000..967c816 --- /dev/null +++ b/SimpleDWZ/style/old.css @@ -0,0 +1,111 @@ +body { + font-family: Arial, sans-serif; + background-color: #262A2B; + color: #fff; + padding: 10px; +} + +.container { + max-width: 80%; + margin: 0 auto; + padding: 20px; + background-color: #1A1C1D; + border: 1px solid #555; + border-radius: 5px; + text-align: center; + justify-content: center; + align-items: center; + +} + +#tablex { + display: flex; + justify-content: center; + align-items: center; + +} + +h1 { + color: #fff; +} + +hr { + border: 0; + border-top: 1px solid #555; + margin: 20px 0; +} + +button { + display: block; + width: 100%; + margin: 10px 0; + padding: 10px; + font-size: 16px; + color: #fff; + background-color: #444; + border: 1px solid #555; + border-radius: 5px; + cursor: pointer; +} + +button:hover { + background-color: #555; +} + +table { + border-collapse: collapse; + table-layout: fixed; + text-align: center; +} + +th { + background-color: #33373A; + font-weight: bold; + padding: 8px; + text-align: center; +} + +td { + padding: 8px; + text-align: center; +} + +.small-text { + font-size: 14px; + text-align: center; +} + +.table-container { + text-align: center; + display: flex; + justify-content: center; + align-items: center; +} + +input[type="text"] { + padding: 10px; + border: 2px solid #333; + border-radius: 4px; + font-size: 16px; + background-color: #222; + color: #fff; + transition: border-color 0.3s ease; + } + + input[type="text"]:focus { + outline: none; + border-color: #007bff; + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); + } + +#tooltip { + display: none; + position: absolute; + background-color: white; + border: 1px solid black; + padding: 5px; +} + +.table-container { + overflow-x: auto; +} \ No newline at end of file diff --git a/SimpleDWZ/style/style.css b/SimpleDWZ/style/style.css new file mode 100644 index 0000000..34b1a95 --- /dev/null +++ b/SimpleDWZ/style/style.css @@ -0,0 +1,361 @@ +body { + display: grid; + grid-template-rows: min-content auto; + grid-template-areas: "main" "footer"; + overflow-x: hidden; + background: #F5F7FA; + min-height: 100vh; + font-family: 'Open Sans', sans-serif; + font-family: Arial, sans-serif; + background-color: #262A2B; + color: #fff; + padding: 10px 0; + font-size: 16px; +} + + .container { + max-width: 80%; + margin: 0 auto; + padding: 40px; + background-color: #1A1C1D; + border: 1px solid #555; + border-radius: 10px; + text-align: center; + justify-content: center; + align-items: center; + font-size: 18px; + } + + #tablex { + display: flex; + justify-content: center; + align-items: center; + } + + h1 { + color: #fff; + font-size: 24px; + } + + hr { + border: 0; + border-top: 1px solid #555; + margin: 20px 0; + } + + button { + display: block; + width: 100%; + margin: 10px 0; + padding: 10px; + font-size: 18px; + color: #fff; + background-color: #444; + border: 1px solid #555; + border-radius: 5px; + cursor: pointer; + } + + button:hover { + background-color: #555; + } + + table { + border-collapse: collapse; + table-layout: fixed; + text-align: center; + } + + th { + background-color: #33373A; + font-weight: bold; + padding: 8px; + text-align: center; + font-size: 20px; + } + + td { + padding: 8px; + text-align: center; + font-size: 16px; + } + + .small-text { + font-size: 12px; + text-align: center; + } + + .table-container { + text-align: center; + display: flex; + justify-content: center; + align-items: center; + } + + input[type="text"] { + padding: 10px; + border: 2px solid #333; + border-radius: 4px; + font-size: 16px; + background-color: #222; + color: #fff; + transition: border-color 0.3s ease; + } + + input[type="text"]:focus { + outline: none; + border-color: #007bff; + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); + } + + #tooltip { + display: none; + position: absolute; + background-color: white; + border: 1px solid black; + padding: 5px; + } + + .table-container { + overflow-x: auto; + } + + .footer { + position: fixed; + bottom: 0; + left: 0; + right: 0; + z-index: -1; + --footer-background: #08771d; + display: grid; + grid-area: footer; + min-height: 6rem; + } + + .footer .bubbles { + position: absolute; + top: 0; + left: 0; + right: 0; + height: 1rem; + background: var(--footer-background); + filter: url("#blob"); + } + + .footer .bubbles .bubble { + position: absolute; + left: var(--position, 50%); + background: var(--footer-background); + border-radius: 100%; + animation: bubble-size var(--time, 4s) ease-in infinite var(--delay, 0s), bubble-move var(--time, 4s) ease-in infinite var(--delay, 0s); + transform: translate(-50%, 100%); + } + + .footer .content { + z-index: 2; + display: grid; + grid-template-columns: 1fr auto; + grid-gap: 4rem; + padding: 2rem; + background: var(--footer-background); + grid-column: 1 / -1; + } + + .footer .content a, + .footer .content p { + color: #F5F7FA; + text-decoration: none; + } + + .footer .content b { + color: white; + } + + .footer .content p { + margin: 0; + font-size: 0.75rem; + } + + .footer .content > div { + display: flex; + flex-direction: column; + justify-content: center; + align-items: center; + } + + .footer .content > div > div { + margin: 0.25rem 0; + } + + .footer .content > div > div > * { + margin-right: 0.5rem; + } + + .footer .content > div .image { + align-self: center; + width: 4rem; + height: 4rem; + margin: 0.25rem 0; + background-size: cover; + background-position: center; + } + + @keyframes bubble-size { + 0%, 75% { + width: var(--size, 4rem); + height: var(--size, 4rem); + } + 100% { + width: 0; + height: 0; + } + } + + @keyframes bubble-move { + 0% { + bottom: -4rem; + } + 100% { + bottom: var(--distance, 10rem); + } + } + + + +input[type="text"].form-input { + padding: 10px; + border: 2px solid #333; + border-radius: 4px; + font-size: 16px; + background-color: #222; + color: #fff; + transition: border-color 0.3s ease; +} + +input[type="text"].form-input:focus { + outline: none; + border-color: #007bff; + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); +} + +textarea.form-textarea { + padding: 10px; + border: 2px solid #333; + border-radius: 4px; + font-size: 16px; + background-color: #222; + color: #fff; + transition: border-color 0.3s ease; +} + +textarea.form-textarea:focus { + outline: none; + border-color: #007bff; + box-shadow: 0 0 0 2px rgba(0, 123, 255, 0.25); +} + +textarea { + background-color: #4440; +} + +.switch { + position: relative; + display: inline-block; + width: 60px; + height: 34px; +} + +.switch input { + opacity: 0; + width: 0; + height: 0; +} + +.slider { + position: absolute; + cursor: pointer; + top: 0; + left: 0; + right: 0; + bottom: 0; + background-color: #ccc; + transition: .4s; + border-radius: 34px; +} + +.slider:before { + position: absolute; + content: ""; + height: 26px; + width: 26px; + left: 4px; + bottom: 4px; + background-color: white; + transition: .4s; + border-radius: 50%; +} + +.slider-text { + position: absolute; + top: 50%; + transform: translateY(-50%); + left: 8px; + color: #fff; + font-size: 12px; + font-weight: bold; + transition: .4s; +} + +input:checked + .slider { + background-color: #007bff; +} + +input:checked + .slider:before { + transform: translateX(26px); +} + +input:checked + .slider + .slider-text { + left: calc(100% - 28px); + color: #fff; +} + +@media (max-width: 767px) { + body { + font-size: 20px; + } + + h1 { + font-size: 28px; + } + + .container { + font-size: 24px; + } + + th { + font-size: 24px; + } + + td { + font-size: 20px; + } + + .small-text { + font-size: 16px; + } + + .form-input input[type="text"], + .form-textarea textarea { + font-size: 20px; + } + + .slider-text { + font-size: 16px; + } + } + + + + + + \ No newline at end of file diff --git a/SimpleDWZ/txt/history.txt b/SimpleDWZ/txt/history.txt new file mode 100644 index 0000000..2f0b4be --- /dev/null +++ b/SimpleDWZ/txt/history.txt @@ -0,0 +1,9 @@ +White,DWZ_old,DWZ_new,Result,Black,DWZ_old,DWZ_new,Date,Time,DB_Fragment +Erik,1100,1108,1-0,Lara,900,892,20230626+,013402-,P0HuDZvcZsWsYuzP +Felix,900,902,0.5-0.5,Georg,950,948,20230626+,013413-,aCJLLl4JUSF0j6TK +Erik,1108,1103,0.5-0.5,Lena,1000,1005,20230626+,013428-,YHIfxf5FAMU0E73R +Erik,1103,1076,0-1,Sina,800,827,20230626+,013449-,Js35irqCnBTUVHsI +Georg,948,967,1-0,Lena,1005,986,20230626+,013518-,DwR0FMRiF2I9iAdm +Lara,892,879,0-1,Georg,967,980,20230626+,013525-,WhwpwHQlXPMEiKz5 +Erik,1076,1088,1-0,Georg,980,968,20230626+,013539-,KEjU7Ylc2eCvldz6 +Lena,986,966,0-1,Felix,902,922,20230626+,013607-,RkyGnHuB8ipTFXwb diff --git a/SimpleDWZ/txt/index.php b/SimpleDWZ/txt/index.php new file mode 100644 index 0000000..9a7c4b3 --- /dev/null +++ b/SimpleDWZ/txt/index.php @@ -0,0 +1,4 @@ + \ No newline at end of file diff --git a/SimpleDWZ/txt/table.txt b/SimpleDWZ/txt/table.txt new file mode 100644 index 0000000..28cedc4 --- /dev/null +++ b/SimpleDWZ/txt/table.txt @@ -0,0 +1,6 @@ +Sina,827 +Lara,879 +Erik,1088 +Georg,968 +Lena,966 +Felix,922 \ No newline at end of file diff --git a/SimpleDWZ/txt/user.txt b/SimpleDWZ/txt/user.txt new file mode 100644 index 0000000..6bae8d1 --- /dev/null +++ b/SimpleDWZ/txt/user.txt @@ -0,0 +1,6 @@ +Lara,900,892,879 +Lena,1000,1005,986,966 +Georg,950,948,967,980,968 +Sina,800,827 +Felix,900,902,922 +Erik,1100,1108,1103,1076,1088 \ No newline at end of file