Fibinger Ádám
2019-11-10 cb9ca2b735b9fedc479799e88ddb731251b35b08
ESL Api alapján JSON-ból felhúzni a csapatokat gyors kiegészítésre
6 files modified
157 ■■■■ changed files
EOG/Models/TeamList.php 21 ●●●●● patch | view | raw | blame | history
save-teams.php 29 ●●●● patch | view | raw | blame | history
templates/admin/history-round.twig 59 ●●●●● patch | view | raw | blame | history
templates/admin/history.twig 42 ●●●●● patch | view | raw | blame | history
templates/admin/stripe-form.twig 4 ●●●● patch | view | raw | blame | history
templates/overlay-base.twig 2 ●●● patch | view | raw | blame | history
EOG/Models/TeamList.php
@@ -13,25 +13,32 @@
    private $requiredRawFields = ['name', 'seed', 'status'];
    public function fromJson(string $jsonString)
    public function fromJson(string $jsonString) : int
    {
        $rawData = json_decode($jsonString, true);
        if ($rawData === null) return false;
        if ($rawData === null)
        {
            throw new \InvalidArgumentException("Could not decode JSON");
        }
        if (!is_array($rawData)) {
            return false;
        if (!is_array($rawData))
        {
            throw new \InvalidArgumentException("Data is not array");
        }
        $this->teams = [];
        foreach ($rawData as $key => $team) {
        foreach ($rawData as $key => $team)
        {
            $rawKeys = array_keys($team);
            if (count(array_intersect($rawKeys, $this->requiredRawFields)) != 3) {
            if (count(array_intersect($rawKeys, $this->requiredRawFields)) != 3)
            {
                continue;
            }
            if ($team['status'] == 'checkedIn') {
            if ($team['status'] == 'checkedIn')
            {
                $this->teams[] = $team;
            }
        }
save-teams.php
@@ -2,19 +2,34 @@
include_once "common/base.php";
if (empty($_POST['json'])) {
if (empty($_POST['json']))
{
    header('Location: /generator/form.php', true, 302);
}
$teams = new \EOG\Models\TeamList();
$success = false;
if (!$teams->fromJson($_POST['json']))
{
    echo "Nincs benne becsekkolt csapat.";
    return;
if ($teams->fromJson($_POST['json'])) {
    $success = file_put_contents(OVERLAY_DIR . 'teams.json', $teams->getJson());
}
if ($success) {
$success = false;
$success = file_put_contents(TEAMS_JSON, $teams->getJson());
if (!$success)
{
    var_dump($teams->getJson());
    var_dump(is_writable(TEAMS_JSON));
}
if ($success)
{
    header('Location: /generator/form.php', true, 302);
} else {
    echo "Szar van a palacsintában";
}
else
{
    echo "Szar van a palacsintában: " . TEAMS_JSON;
}
templates/admin/history-round.twig
@@ -1,10 +1,63 @@
{% set classes = [ 'btn btn-outline-secondary', 'btn btn-outline-success', 'btn btn-outline-danger', 'btn btn-outline-warning', 'btn btn-outline-info', 'btn btn-outline-light', 'btn btn-outline-dark', 'btn btn-outline-link', 'btn btn-outline-primary'] %}
{% set activeClasses = [ 'btn btn-secondary', 'btn btn-success', 'btn btn-danger', 'btn btn-warning', 'btn btn-info', 'btn btn-light', 'btn btn-dark', 'btn btn-link', 'btn btn-primary'] %}
<div class="round">
    <h4>Round #{{ loop.index }}</h4>
    <div class="form-row" id="s_{{ loop.index0 }}">
<div class="form-row">
    {% for site in history.getCurrentSites %}
        <button class="{{ cycle(classes, loop.index0)}}" id="r_{{ loop.parent.loop.index0 }}_b_{{ loop.index0 }}"
                data-outline="{{ cycle(classes, loop.index0)}}" data-selected="{{ cycle(activeClasses, loop.index0)}}" onclick="return false;">{{ site }}</button>
                <button
                        class="site {{ site == round.site ? cycle(activeClasses, loop.index0) : cycle(classes, loop.index0) }}"
                        id="s_{{ loop.parent.loop.index0 }}_b_{{ loop.index0 }}"
                        data-outline="{{ cycle(classes, loop.index0) }}"
                        data-selected="{{ cycle(activeClasses, loop.index0) }}"
                        onclick="return siteSelected(this);"
                        data-form="s_{{ loop.parent.loop.index0 }}"
                        data-site="{{ site }}"
                        data-input="i_{{ loop.parent.loop.index0 }}_site">{{ site }}</button>
    {% endfor %}
</div>
{{ dump(round) }}
    </div>
    <div class="form-row" id="w_{{ loop.index0 }}">
        <button class="win {{ round.win == "blue" ? "btn btn-primary" : "btn btn-outline-primary" }}"
                id="w_{{ loop.index0 }}_b_{{ loop.index0 }}"
                data-outline="btn btn-outline-primary"
                data-selected="btn btn-primary"
                onclick="return winSelected(this);"
                data-form="w_{{ loop.index0 }}"
                data-team="blue"
                data-input="i_{{ loop.index0 }}_win">{{ stripe.team.blue.name }} <br/>győzelem</button>
        <button class="win {{ round.win == "orange" ? "btn btn-warning" : "btn btn-outline-warning" }}"
                id="w_{{ loop.index0 }}_b_{{ loop.index0 }}"
                data-outline="btn btn-outline-warning"
                data-selected="btn btn-warning"
                onclick="return winSelected(this);"
                data-form="w_{{ loop.index0 }}"
                data-team="blue"
                data-input="i_{{ loop.index0 }}_win"> {{ stripe.team.orange.name }}<br/> győzelem </button>
    </div>
    <div class="form-row" id="r_{{ loop.index0 }}">
        <button class="role {{ round.win == "blue" ? "btn btn-primary" : "btn btn-outline-primary" }}"
                id="w_{{ loop.index0 }}_b_{{ loop.index0 }}"
                data-outline="btn btn-outline-primary"
                data-selected="btn btn-primary"
                onclick="return winSelected(this);"
                data-form="w_{{ loop.index0 }}"
                data-team="blue"
                data-input="i_{{ loop.index0 }}_win">{{ stripe.team.blue.name }} <br/>győzelem</button>
        <button class="win {{ round.win == "orange" ? "btn btn-warning" : "btn btn-outline-warning" }}"
                id="w_{{ loop.index0 }}_b_{{ loop.index0 }}"
                data-outline="btn btn-outline-warning"
                data-selected="btn btn-warning"
                onclick="return winSelected(this);"
                data-form="w_{{ loop.index0 }}"
                data-team="blue"
                data-input="i_{{ loop.index0 }}_win"> {{ stripe.team.orange.name }}<br/> győzelem </button>
    </div>
    <input type="hidden" id="i_{{ loop.index0 }}_site" name="round[{{ loop.index0 }}][site]" value="{{ round.site }}">
    <input type="hidden" id="i_{{ loop.index0 }}_win" name="round[{{ loop.index0 }}][win]" value="{{ round.win }}">
    <input type="hidden" id="i_{{ loop.index0 }}_win_role" name="round[{{ loop.index0 }}][win_role]"
           value="{{ round.win_role }}">
</div>
templates/admin/history.twig
@@ -1,6 +1,10 @@
{% extends "admin/html-skeleton.twig" %}
{% block body %}
    <form action="/generator/match-history.php" method="post">
    <form action="/generator/match-history.php" method="post" onsubmit="return false;">
        <input type="submit" value="Mentés">
        <label for="currentMap">
            Map:
        </label>
        <select name="currentMap" id="currentMap" onchange="updateSites()">
            {% for map in history.getMapNames %}
                <option value="{{ map }}" {{ history.getCurrentMap == map ? "selected" }}>{{ map }}</option>
@@ -24,5 +28,41 @@
                var currentMap = document.getElementById('currentMap').value;
                console.log(maps[currentMap]);
            }
        function siteSelected(button)
        {
            var but = $(button);
            var button_data = but.data();
            resetSiteOutlines(button_data.form);
            $('#' + button_data.input).val(button_data.site);
            but.removeClass().addClass("site " + but.data('selected'));
            return false;
        }
        function resetSiteOutlines(form_id) {
            $('#'+form_id + ' button.site').each(function (idx, button) {
                const but = $(button);
                but.removeClass().addClass("site " + but.data('outline'));
                console.error(but);
            });
        }
        function winSelected(button) {
            var but = $(button);
            var button_data = but.data();
            resetWinOutlines(button_data.form);
            $('#' + button_data.input).val(button_data.site);
            but.removeClass().addClass("win " + but.data('selected'));
            return false;
        }
        function resetWinOutlines(form_id) {
            $('#'+form_id + ' button.win').each(function (idx, button) {
                const but = $(button);
                but.removeClass().addClass("win " + but.data('outline'));
            });
        }
    </script>
{% endblock %}
templates/admin/stripe-form.twig
@@ -80,6 +80,8 @@
        </div>
    </form>
    <a href="/generator/match-history.php" class="btn btn-secondary">Meccstörténet</a>
    <form action="/generator/save-teams.php" method="post">
        <div class="form-group">
            <div class="col-md-4 mb-4">
@@ -90,8 +92,6 @@
            </div>
        </div>
    </form>
    <a href="/generator/match-history.php" class="btn btn-secondary">Meccstörténet</a>
{% endblock %}
{% block lazyload %}
    {{ parent() }}
templates/overlay-base.twig
@@ -58,7 +58,7 @@
        {% block info_right %}
            <span class="info right">
                <img class="esl-logo" src="/assets/ESL_Logo.png"/>
                {# <img class="esl-logo" src="/assets/ESL_Logo.png"/> #}
            </span>
        {% endblock %}
    </div>