immissione_dati.php

<?php
declare(strict_types=1);
require 'template.php';
require_once 'json_ajax.php';
$name = 'tmp' . gmdate('siH');

// Elenco dei problemi di esempio salvati in esempi/ (caricabili nel form via AJAX).
$optionsEsempi = '';
foreach ((new SimplexJsonAjaxService())->listExamples(__DIR__) as $nomeEsempio) {
    $safe = htmlspecialchars($nomeEsempio, ENT_QUOTES, 'UTF-8');
    $optionsEsempi .= "<option value=\"{$safe}\">{$safe}</option>";
}

$content = <<<HTML
<script src="immissione_dati.js"></script>
<form id="simplexForm" name="form1" method="post" action="simplesso.php" class="d-grid gap-3">
    <input type="hidden" name="name" value="{$name}">

    <fieldset class="border rounded p-3">
        <legend class="float-none w-auto px-2 fs-6">Impostazioni Problema</legend>

        <div class="mb-3">
            <span class="me-3">Il problema e' di:</span>
            <label class="form-check-label me-3">
                <input class="form-check-input me-1" type="radio" name="minmax" value="min" checked>
                minimo
            </label>
            <label class="form-check-label">
                <input class="form-check-input me-1" type="radio" name="minmax" value="max">
                massimo
            </label>
        </div>

        <div class="row g-3">
            <div class="col-md-4">
                <label class="form-label" for="numVariables">Numero variabili</label>
                <input class="form-control" id="numVariables" type="number" name="numVariables" min="0" max="10" value="2" required>
            </div>
            <div class="col-md-4">
                <label class="form-label" for="numConstraints">Numero vincoli</label>
                <input class="form-control" id="numConstraints" type="number" name="numConstraints" min="0" max="10" value="2" required>
            </div>
            <div class="col-md-4">
                <label class="form-label invisible">Placeholder</label>
                <div class="form-check form-switch">
                    <label class="form-check-label" for="intera">Variabili intere</label>
                    <input class="form-check-input" type="checkbox" id="intera" name="intera" value="true">
                </div>
            </div>
        </div>

        <p class="text-muted mt-3 mb-0">Le variabili sono intese non negative.</p>
    </fieldset>

    <fieldset class="border rounded p-3">
        <legend class="float-none w-auto px-2 fs-6">Modello</legend>
        <div class="mb-3">
            <span class="me-2">Carica esempio:</span>
            <button type="button" class="btn btn-sm btn-outline-secondary me-2" data-example="max2">PL max (2x2)</button>
            <button type="button" class="btn btn-sm btn-outline-secondary me-2" data-example="min3">PL min (3x3)</button>
            <button type="button" class="btn btn-sm btn-outline-secondary me-2" data-example="int2">PLI max (2x3)</button>
            <button type="button" class="btn btn-sm btn-outline-secondary" data-example="parfums">Prod profumi (2x3)</button>
        </div>

        <div class="mb-3 d-flex flex-wrap align-items-center gap-2">
            <label class="mb-0" for="exampleFile">Carica un problema salvato:</label>
            <select class="form-select form-select-sm d-inline-block w-auto" id="exampleFile" name="exampleFile">
                <option value="" selected>&mdash; scegli &mdash;</option>
                {$optionsEsempi}
            </select>
            <button type="button" class="btn btn-sm btn-outline-secondary" id="loadExampleFile">Carica</button>
            <a class="small ms-1" id="viewExampleFile" href="show_esempi.php" target="esempi" hidden>vedi la soluzione &raquo;</a>
        </div>

        <div id="modelContainer" class="d-grid gap-3"></div>
    </fieldset>

    <div class="d-flex gap-2">
        <button class="btn btn-primary" type="submit">Procedi</button>
        <button class="btn btn-outline-secondary" type="reset">Cancella</button>
    </div>
</form>
HTML;
// Le istruzioni per visualizzare la pagina.
$title = 'Immissione dati';
$pagina = new template();
$pagina->setta_titolo($title);
$pagina->setta_filename(basename($_SERVER['SCRIPT_NAME']));
$pagina->setta_contenuto($content);
print($pagina->mostra_pagina());
?>