From a5ffc57ca6ba21123102fba67b2e8e91460208f0 Mon Sep 17 00:00:00 2001 From: Misode Date: Thu, 18 Jun 2020 01:00:06 +0200 Subject: [PATCH] Add history --- package.json | 2 +- src/app/ErrorsView.ts | 9 ++++++++- src/app/app.ts | 18 ++++++++++++++++++ src/generator.html | 4 ++-- 4 files changed, 29 insertions(+), 4 deletions(-) diff --git a/package.json b/package.json index 2e5e456f..4c6ebd1f 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@types/split.js": "^1.4.0", "copy-webpack-plugin": "^6.0.1", "html-webpack-plugin": "^4.3.0", - "minecraft-schemas": "^0.2.0", + "minecraft-schemas": "^0.2.1", "split.js": "^1.5.11", "ts-loader": "^7.0.4", "typescript": "^3.9.3", diff --git a/src/app/ErrorsView.ts b/src/app/ErrorsView.ts index 41c5d2d1..539e2a35 100644 --- a/src/app/ErrorsView.ts +++ b/src/app/ErrorsView.ts @@ -1,6 +1,13 @@ -import { AbstractView, Path, locale } from "minecraft-schemas"; +import { AbstractView, Path, locale, DataModel } from "minecraft-schemas"; export class ErrorsView extends AbstractView { + target: HTMLElement + + constructor(model: DataModel, target: HTMLElement) { + super(model) + this.target = target + } + render(): void { this.target.style.display = this.model.errors.count() > 0 ? 'flex' : 'none' diff --git a/src/app/app.ts b/src/app/app.ts index fe24657d..dc976efb 100644 --- a/src/app/app.ts +++ b/src/app/app.ts @@ -95,6 +95,8 @@ Promise.all([ const treeControlsVersionToggle = document.getElementById('tree-controls-version-toggle')! const treeControlsVersionMenu = document.getElementById('tree-controls-version-menu')! const treeControlsReset = document.getElementById('tree-controls-reset')! + const treeControlsUndo = document.getElementById('tree-controls-undo')! + const treeControlsRedo = document.getElementById('tree-controls-redo')! let selected = modelFromPath(location.pathname) @@ -253,6 +255,22 @@ Promise.all([ addChecked(treeControlsReset) }) + treeControlsUndo.addEventListener('click', evt => { + models[selected].undo() + }) + + treeControlsRedo.addEventListener('click', evt => { + models[selected].redo() + }) + + document.addEventListener('keyup', evt => { + if (evt.ctrlKey && evt.key === 'z') { + models[selected].undo() + } else if (evt.ctrlKey && evt.key === 'y') { + models[selected].redo() + } + }) + errorsToggle.addEventListener('click', evt => { if (errorsViewEl.classList.contains('hidden')) { errorsViewEl.classList.remove('hidden') diff --git a/src/generator.html b/src/generator.html index 07b68533..4c354b73 100644 --- a/src/generator.html +++ b/src/generator.html @@ -48,11 +48,11 @@
- -