<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Demystify Puzzle Solver</title>
<link href="/ext/bootstrap.min.css" rel="stylesheet">
<link href="/base/base.css" rel="stylesheet">
<script src="/ext/htmx.js"></script>
<script src="/ext/bootstrap.bundle.min.js"></script>
<script src="/ext/response-targets.js"></script>
<script src="/base/base.js"></script>
<script>
window.addEventListener('load', function() {
htmx.onLoad(x => {doJavascript()});
});
</script>
</head>
<body class="container mt-4">
<div id="puzzleControls" class="mb-3" style="display: none;">
<div class="btn-group">
<button class="btn btn-outline-primary" hx-post="/refresh" hx-target="#mainSpace" hx-indicator="#indicator">
Refresh
</button>
<button class="btn btn-outline-primary" hx-post="/bestNextStep" hx-target="#mainSpace" hx-indicator="#indicator">
Best Next Step
</button>
<button class="btn btn-outline-primary" hx-post="/getDifficulties" hx-target="#mainSpace" hx-indicator="#indicator">
Get Difficulties
</button>
</div>
</div>
<div id="mainSpace" class="card">
<div class="card-body">
<div class="text-center text-muted">
<p>Please upload a puzzle or select an example to begin.</p>
</div>
</div>
</div>
<div class="my-4"></div>
<div class="row mb-4">
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h4>Upload Puzzle</h4>
</div>
<div class="card-body">
<form id="uploadForm" hx-post="/uploadPuzzle" hx-encoding="multipart/form-data" hx-target="#mainSpace">
<div class="row">
<div class="col-md-6">
<label for="model" class="form-label">Model File (.eprime/.essence)</label>
<input type="file" class="form-control" id="model" name="model" accept=".eprime,.essence" required>
</div>
<div class="col-md-6">
<label for="parameter" class="form-label">Parameter File (.param/.json)</label>
<input type="file" class="form-control" id="parameter" name="parameter" accept=".param,.json" required>
</div>
</div>
<button type="submit" class="btn btn-primary mt-3" hx-indicator="#indicator">
Upload and Solve
</button>
</form>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card">
<div class="card-header">
<h4>Load Example</h4>
</div>
<div class="card-body">
<div hx-get="/getExampleNames" hx-trigger="load" hx-swap="outerHTML"></div>
<div id="exampleParams" class="mt-3"></div>
</div>
</div>
</div>
</div>
<div id="indicator" class="htmx-indicator text-center my-4">
<div class="spinner-border text-primary" role="status">
<span class="visually-hidden">Loading...</span>
</div>
</div>
<script>
document.body.addEventListener('htmx:afterSwap', function(evt) {
if (evt.detail.target.id === 'mainSpace' &&
!evt.detail.target.innerHTML.includes('Please upload')) {
document.getElementById('puzzleControls').style.display = 'block';
}
});
</script>
</body>
</html>