Vašek Šraier
4 years ago
6 changed files with 219 additions and 46 deletions
@ -0,0 +1,143 @@ |
|||
<script type="ts"> |
|||
import Graph from "./Graph.svelte"; |
|||
import { grabAssignment } from "./ksp-task-grabber"; |
|||
import type { TaskDescriptor, TasksFile } from "./task-loader"; |
|||
import { createTaskMap, getCategories } from "./task-loader"; |
|||
|
|||
export let tasks: TasksFile; |
|||
|
|||
let selectedTask: string | null = null; |
|||
let clickedTask: string | null = null; |
|||
|
|||
let clicked: string[] = []; |
|||
|
|||
function clickTask(e: CustomEvent<TaskDescriptor>) { |
|||
// ukladani seznamu poslednich kliknuti |
|||
clicked.push(selectedTask); |
|||
if (clicked.length > 3) |
|||
clicked = clicked.slice(clicked.length - 3, clicked.length); |
|||
clicked = clicked; |
|||
|
|||
// trackovani, kam se naposledy kliknulo |
|||
if (clickedTask == selectedTask) { |
|||
clickedTask = null; |
|||
} else { |
|||
clickedTask = selectedTask; |
|||
} |
|||
} |
|||
|
|||
$: taskMap = createTaskMap(tasks); |
|||
$: currentTask = clickedTask != null ? clickedTask : selectedTask; |
|||
|
|||
function addEdge() { |
|||
if (clicked.length > 1) { |
|||
const first = clicked[clicked.length - 1]; |
|||
const second = clicked[clicked.length - 2]; |
|||
|
|||
tasks.tasks.forEach((t) => { |
|||
if (t.id == first) { |
|||
t.requires.push(second); |
|||
t = t; |
|||
} |
|||
}); |
|||
tasks = tasks; |
|||
} else { |
|||
alert("Nope, prvni musis nekam klikat..."); |
|||
} |
|||
} |
|||
|
|||
let hovnoDivnaPromenaKteraJeFaktFuj = true; |
|||
function toggleDivnaPromena() { |
|||
hovnoDivnaPromenaKteraJeFaktFuj = ! hovnoDivnaPromenaKteraJeFaktFuj; |
|||
} |
|||
</script> |
|||
|
|||
<style> |
|||
h3 { |
|||
margin: 0; |
|||
padding: 0; |
|||
} |
|||
|
|||
.container { |
|||
display: flex; |
|||
flex-direction: row; |
|||
margin: 0; |
|||
height: 100vh; |
|||
width: 100%; |
|||
} |
|||
|
|||
.graph { |
|||
width: 100%; |
|||
margin: 0; |
|||
background-color: black; |
|||
height: 95%; |
|||
} |
|||
|
|||
.right { |
|||
width: 40vw; |
|||
height: 100%; |
|||
} |
|||
|
|||
.left { |
|||
width: 60vw; |
|||
height: 100%; |
|||
} |
|||
|
|||
.toolbox { |
|||
width: 100%; |
|||
margin: 0; |
|||
height: 50%; |
|||
background-color: pink; |
|||
} |
|||
|
|||
.taskDetails { |
|||
width: 100%; |
|||
margin: 0; |
|||
height: 50%; |
|||
background-color: aqua; |
|||
} |
|||
|
|||
.lastClicked { |
|||
height: 5%; |
|||
} |
|||
</style> |
|||
|
|||
<div class="container"> |
|||
<div class="left"> |
|||
<div class="lastClicked">Last clicked: <b>{clicked.join(' | ')}</b></div> |
|||
<div class="graph"> |
|||
<Graph {tasks} bind:selectedTask on:selectTask={clickTask} runSimulationWeirdHack={hovnoDivnaPromenaKteraJeFaktFuj} /> |
|||
</div> |
|||
</div> |
|||
<div class="right"> |
|||
<div class="toolbox"> |
|||
<div>Toolbox</div> |
|||
<div> |
|||
<button on:click={addEdge}>Pridat hranu - posledni vyzaduje predposledni</button> |
|||
</div> |
|||
<div> |
|||
<button on:click={toggleDivnaPromena}>Spustit simulaci</button> |
|||
</div> |
|||
</div> |
|||
<div class="taskDetails"> |
|||
{#if currentTask != null} |
|||
<h3>{currentTask}</h3> |
|||
<span>{taskMap.get(currentTask).comment}</span> |
|||
<ul> |
|||
{#each getCategories(tasks, currentTask) as cat} |
|||
<li>{cat}</li> |
|||
{/each} |
|||
</ul> |
|||
<div> |
|||
{#await grabAssignment(currentTask)} |
|||
Loading... |
|||
{:then text} |
|||
{@html text} |
|||
{/await} |
|||
</div> |
|||
{:else} |
|||
<h3>Nothing selected...</h3> |
|||
{/if} |
|||
</div> |
|||
</div> |
|||
</div> |
Reference in new issue