From 198f42f2992241427dbe4dde139832b5b1735390 Mon Sep 17 00:00:00 2001 From: Stephan Richter Date: Mon, 14 Sep 2020 23:35:15 +0200 Subject: [PATCH] prepared route search --- resources/js/plan.js | 9 +++--- .../java/de/srsoftware/web4rail/Plan.java | 29 ++++++++++++++----- .../java/de/srsoftware/web4rail/Route.java | 5 ++++ .../de/srsoftware/web4rail/tiles/Block.java | 10 +++++++ .../de/srsoftware/web4rail/tiles/BlockH.java | 18 +++++++++++- .../de/srsoftware/web4rail/tiles/BlockV.java | 18 +++++++++++- 6 files changed, 76 insertions(+), 13 deletions(-) create mode 100644 src/main/java/de/srsoftware/web4rail/Route.java create mode 100644 src/main/java/de/srsoftware/web4rail/tiles/Block.java diff --git a/resources/js/plan.js b/resources/js/plan.js index 96fef5d..ff102dd 100644 --- a/resources/js/plan.js +++ b/resources/js/plan.js @@ -125,11 +125,12 @@ function moveTile(x,y){ }); } -function savePlan(ev){ +function runAction(ev){ + console.log("runAction: ",ev.target.id); $.ajax({ url : PLAN, method : POST, - data : {action:'save',name:'default'}, // TODO: ask for name + data : {action:ev.target.id,file:'default'}, // TODO: ask for name success: function(resp){ addMessage(resp);} }); return false; @@ -141,6 +142,6 @@ window.onload = function () { $('.menu > div').click(closeMenu); $('.menu .addtile .list svg').click(enableAdding); $('.menu .move .list div').click(enableMove); - $(BODY).click(bodyClick); - $('#save').click(savePlan); + $('.menu .actions .list > div').click(runAction); + $(BODY).click(bodyClick); } diff --git a/src/main/java/de/srsoftware/web4rail/Plan.java b/src/main/java/de/srsoftware/web4rail/Plan.java index 0f1a488..d9fb6b8 100644 --- a/src/main/java/de/srsoftware/web4rail/Plan.java +++ b/src/main/java/de/srsoftware/web4rail/Plan.java @@ -8,6 +8,7 @@ import java.io.FileWriter; import java.io.IOException; import java.lang.reflect.InvocationTargetException; import java.util.HashMap; +import java.util.HashSet; import java.util.Map.Entry; import java.util.Vector; @@ -17,6 +18,7 @@ import org.slf4j.LoggerFactory; import de.keawe.tools.translations.Translation; import de.srsoftware.tools.Tag; +import de.srsoftware.web4rail.tiles.Block; import de.srsoftware.web4rail.tiles.BlockH; import de.srsoftware.web4rail.tiles.BlockV; import de.srsoftware.web4rail.tiles.CrossH; @@ -46,27 +48,30 @@ import de.srsoftware.web4rail.tiles.TurnoutWS; public class Plan { private static final String ACTION = "action"; private static final String ACTION_ADD = "add"; + private static final String ACTION_ANALYZE = "analyze"; + private static final String ACTION_MOVE = "move"; + private static final String ACTION_PROPS = "openProps"; private static final String ACTION_SAVE = "save"; + private static final String ACTION_UPDATE = "update"; private static final String TILE = "tile"; private static final Logger LOG = LoggerFactory.getLogger(Plan.class); private static final String X = "x"; private static final String Y = "y"; - private static final String NAME = "name"; - private static final String ACTION_PROPS = "openProps"; - private static final String ACTION_MOVE = "move"; + private static final String FILE = "file"; private static final String DIRECTION = "direction"; private static final String EAST = "east"; private static final String WEST = "west"; private static final String SOUTH = "south"; private static final String NORTH = "north"; - private static final String ACTION_UPDATE = "update"; private HashMap> tiles = new HashMap>(); + private HashSet blocks = new HashSet(); private Tag actionMenu() throws IOException { Tag tileMenu = new Tag("div").clazz("actions").content(t("Actions")); StringBuffer tiles = new StringBuffer(); tiles.append(new Tag("div").id("save").content(t("Save plan"))); + tiles.append(new Tag("div").id("analyze").content(t("Analyze plan"))); return new Tag("div").clazz("list").content(tiles.toString()).addTo(tileMenu); } @@ -78,11 +83,17 @@ public class Plan { clazz = tc.getName().replace(".Tile", "."+clazz); Tile tile = (Tile) tc.getClassLoader().loadClass(clazz).getDeclaredConstructor().newInstance(); if (configJson != null) tile.configure(new JSONObject(configJson)); - set(x, y, tile); - + set(x, y, tile); return tile; } + private String analyze() { + for (Block block : blocks) { + LOG.debug("searching routes from {}",block); + } + return "analyze() not implemented, yet!"; + } + public Tile get(int x, int y) { HashMap column = tiles.get(x); return column == null ? null : column.get(y); @@ -195,12 +206,14 @@ public class Plan { case ACTION_ADD: Tile tile = addTile(params.get(TILE),params.get(X),params.get(Y),null); return t("Added {}",tile.getClass().getSimpleName()); + case ACTION_ANALYZE: + return analyze(); case ACTION_MOVE: return moveTile(params.get(DIRECTION),params.get(X),params.get(Y)); case ACTION_PROPS: return propMenu(params.get(X),params.get(Y)); case ACTION_SAVE: - return saveTo(params.get(NAME)); + return saveTo(params.get(FILE)); case ACTION_UPDATE: return update(params); default: @@ -262,10 +275,12 @@ public class Plan { tiles.put(x, column); } old = column.remove(y); + if (old instanceof Block) blocks.remove((Block)old); if (tile != null && !(tile instanceof Eraser)) { column.put(y,tile.position(x, y)); for (int i=1; i routes(); +} diff --git a/src/main/java/de/srsoftware/web4rail/tiles/BlockH.java b/src/main/java/de/srsoftware/web4rail/tiles/BlockH.java index 496b5f5..eee81b4 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/BlockH.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/BlockH.java @@ -3,12 +3,14 @@ package de.srsoftware.web4rail.tiles; import java.io.IOException; import java.util.HashMap; import java.util.Map; +import java.util.Set; import org.json.JSONObject; import de.srsoftware.tools.Tag; +import de.srsoftware.web4rail.Route; -public class BlockH extends StraightH{ +public class BlockH extends Block{ private static final String NAME = "name"; Contact north,center,south; private String name = "Block"; @@ -26,6 +28,10 @@ public class BlockH extends StraightH{ if (config.has(NAME)) name = config.getString(NAME); } + @Override + public int len() { + return length; + } @Override public Tag propForm() { @@ -38,6 +44,11 @@ public class BlockH extends StraightH{ return form; } + @Override + public Set routes() { + return null; + } + @Override public Tag tag(Map replacements) throws IOException { if (replacements == null) replacements = new HashMap(); @@ -45,6 +56,11 @@ public class BlockH extends StraightH{ return super.tag(replacements); } + @Override + public String toString() { + return getClass().getSimpleName()+"("+name+") @ ("+x+","+y+")"; + } + @Override public Tile update(HashMap params) { super.update(params); diff --git a/src/main/java/de/srsoftware/web4rail/tiles/BlockV.java b/src/main/java/de/srsoftware/web4rail/tiles/BlockV.java index aeb5bff..accddba 100644 --- a/src/main/java/de/srsoftware/web4rail/tiles/BlockV.java +++ b/src/main/java/de/srsoftware/web4rail/tiles/BlockV.java @@ -3,12 +3,14 @@ package de.srsoftware.web4rail.tiles; import java.io.IOException; import java.util.HashMap; import java.util.Map; +import java.util.Set; import org.json.JSONObject; import de.srsoftware.tools.Tag; +import de.srsoftware.web4rail.Route; -public class BlockV extends StraightV{ +public class BlockV extends Block{ private static final String NAME = "name"; Contact west,center,east; private String name = "Block"; @@ -26,6 +28,10 @@ public class BlockV extends StraightV{ if (config.has(NAME)) name = config.getString(NAME); } + @Override + public int height() { + return length; + } @Override public Tag propForm() { @@ -38,6 +44,11 @@ public class BlockV extends StraightV{ return form; } + @Override + public Set routes() { + return null; + } + @Override public Tag tag(Map replacements) throws IOException { if (replacements == null) replacements = new HashMap(); @@ -45,6 +56,11 @@ public class BlockV extends StraightV{ return super.tag(replacements); } + @Override + public String toString() { + return getClass().getSimpleName()+"("+name+") @ ("+x+","+y+")"; + } + @Override public Tile update(HashMap params) { super.update(params);