editor: saving changes
This commit is contained in:
		
							parent
							
								
									b1dcf45db6
								
							
						
					
					
						commit
						8c6dc06bb0
					
				
					 3 changed files with 39 additions and 17 deletions
				
			
		|  | @ -8,15 +8,14 @@ | ||||||
| 
 | 
 | ||||||
|   const tasksPromise: Promise<TasksFile> = loadTasks(); |   const tasksPromise: Promise<TasksFile> = loadTasks(); | ||||||
| 
 | 
 | ||||||
|   let selectedTask: string | null = null |   let selectedTask: string | null = null; | ||||||
|   let finalSelect: boolean = false |   let finalSelect: boolean = false; | ||||||
| 
 | 
 | ||||||
|   function clickTask(e: CustomEvent<TaskDescriptor>) { |   function clickTask(e: CustomEvent<TaskDescriptor>) { | ||||||
|     finalSelect = true |     finalSelect = true; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   const hash = window.location.hash.substr(1); |   const hash = window.location.hash.substr(1); | ||||||
| 
 |  | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style> | <style> | ||||||
|  | @ -24,6 +23,7 @@ | ||||||
|     text-align: center; |     text-align: center; | ||||||
|     max-width: 240px; |     max-width: 240px; | ||||||
|     margin: 0 auto; |     margin: 0 auto; | ||||||
|  |     min-height: 420px; | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   h1 { |   h1 { | ||||||
|  | @ -41,14 +41,16 @@ | ||||||
| </style> | </style> | ||||||
| 
 | 
 | ||||||
| <main> | <main> | ||||||
| 	{#if hash == "editor"} |   {#if hash == 'editor'} | ||||||
|     <TasksLoader promise={tasksPromise} let:data={t}> |     <TasksLoader promise={tasksPromise} let:data={t}> | ||||||
|       <Editor tasks={t} /> |       <Editor tasks={t} /> | ||||||
|     </TasksLoader> |     </TasksLoader> | ||||||
|   {:else} |   {:else} | ||||||
|     <TasksLoader promise={tasksPromise} let:data={t}> |     <TasksLoader promise={tasksPromise} let:data={t}> | ||||||
| 		<TaskPanel bind:finalSelect={finalSelect} selectedTask={selectedTask} /> |       <TaskPanel bind:finalSelect {selectedTask} /> | ||||||
| 		<Graph tasks={t} bind:selectedTask={selectedTask} on:selectTask={clickTask} /> |       <div style="height: 100%"> | ||||||
|  |         <Graph tasks={t} bind:selectedTask on:selectTask={clickTask} /> | ||||||
|  |       </div> | ||||||
|     </TasksLoader> |     </TasksLoader> | ||||||
|   {/if} |   {/if} | ||||||
| </main> | </main> | ||||||
|  |  | ||||||
|  | @ -2,7 +2,7 @@ | ||||||
|   import Graph from "./Graph.svelte"; |   import Graph from "./Graph.svelte"; | ||||||
|   import { grabAssignment } from "./ksp-task-grabber"; |   import { grabAssignment } from "./ksp-task-grabber"; | ||||||
|   import type { TaskDescriptor, TasksFile } from "./task-loader"; |   import type { TaskDescriptor, TasksFile } from "./task-loader"; | ||||||
|   import { createTaskMap, getCategories } from "./task-loader"; |   import { saveTasks, createTaskMap, getCategories } from "./task-loader"; | ||||||
| 
 | 
 | ||||||
|   export let tasks: TasksFile; |   export let tasks: TasksFile; | ||||||
| 
 | 
 | ||||||
|  | @ -59,6 +59,10 @@ | ||||||
|   function toggleDivnaPromena() { |   function toggleDivnaPromena() { | ||||||
|     hovnoDivnaPromenaKteraJeFaktFuj = !hovnoDivnaPromenaKteraJeFaktFuj; |     hovnoDivnaPromenaKteraJeFaktFuj = !hovnoDivnaPromenaKteraJeFaktFuj; | ||||||
|   } |   } | ||||||
|  | 
 | ||||||
|  |   async function saveCurrentState() { | ||||||
|  |     await saveTasks(tasks); | ||||||
|  |   } | ||||||
| </script> | </script> | ||||||
| 
 | 
 | ||||||
| <style> | <style> | ||||||
|  | @ -133,6 +137,9 @@ | ||||||
|       <div> |       <div> | ||||||
|         Repulsion force: <input type="number" bind:value={repulsionForce} name="repulsionForceInput" max="1000" min="-10000" /> |         Repulsion force: <input type="number" bind:value={repulsionForce} name="repulsionForceInput" max="1000" min="-10000" /> | ||||||
|       </div> |       </div> | ||||||
|  |       <div> | ||||||
|  |         <button on:click={saveCurrentState}>Uložit aktuální stav</button> | ||||||
|  |       </div> | ||||||
|     </div> |     </div> | ||||||
|     <div class="taskDetails"> |     <div class="taskDetails"> | ||||||
|       {#if currentTask != null} |       {#if currentTask != null} | ||||||
|  |  | ||||||
|  | @ -19,6 +19,19 @@ export async function loadTasks(): Promise<TasksFile> { | ||||||
|     return await r.json() |     return await r.json() | ||||||
| } | } | ||||||
| 
 | 
 | ||||||
|  | export async function saveTasks(tasks: TasksFile) { | ||||||
|  |     // request options
 | ||||||
|  |     const options = { | ||||||
|  |         method: 'POST', | ||||||
|  |         body: JSON.stringify(tasks, null, 4), | ||||||
|  |         headers: { | ||||||
|  |             'Content-Type': 'application/json' | ||||||
|  |         } | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     fetch("/tasks.json", options) | ||||||
|  | } | ||||||
|  | 
 | ||||||
| export function createTaskMap(tasks: TasksFile): TaskMap { | export function createTaskMap(tasks: TasksFile): TaskMap { | ||||||
|     let m = new Map<string, TaskDescriptor>(); |     let m = new Map<string, TaskDescriptor>(); | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
		Reference in a new issue