From 35038d52c7b388fae9745979c65d85546905bf2b Mon Sep 17 00:00:00 2001
From: NatureFreshMilk <naturefreshmilk@github.com>
Date: Thu, 4 Apr 2019 13:21:20 +0200
Subject: [PATCH] add color to label, border and train

---
 mapserver_mod/mapserver/border.lua        |  8 +++++++-
 mapserver_mod/mapserver/label.lua         |  9 ++++++++-
 mapserver_mod/mapserver/train.lua         | 11 +++++++++--
 server/mapobject/border.go                |  1 +
 server/mapobject/label.go                 |  1 +
 server/mapobject/train.go                 |  1 +
 server/static/js/overlays/LabelOverlay.js |  9 ++++++++-
 7 files changed, 35 insertions(+), 5 deletions(-)

diff --git a/mapserver_mod/mapserver/border.lua b/mapserver_mod/mapserver/border.lua
index 5c1ce4b..ab5c60a 100644
--- a/mapserver_mod/mapserver/border.lua
+++ b/mapserver_mod/mapserver/border.lua
@@ -5,16 +5,20 @@ local last_name = ""
 local update_formspec = function(meta)
 	local name = meta:get_string("name")
 	local index = meta:get_string("index")
+	local color = meta:get_string("color") or "rgb(10,10,200)"
 
 	meta:set_string("infotext", "Border: Name=" .. name .. ", Index=" .. index)
 
-	meta:set_string("formspec", "size[8,3;]" ..
+	meta:set_string("formspec", "size[8,4;]" ..
 		-- col 1
 		"field[0,1;4,1;name;Name;" .. name .. "]" ..
 		"button_exit[4,1;4,1;save;Save]" ..
 
 		-- col 2
 		"field[4,2.5;4,1;index;Index;" .. index .. "]" ..
+
+		-- col 3
+		"field[4,3.5;4,1;color;Color;" .. color .. "]" ..
 		"")
 
 end
@@ -35,6 +39,7 @@ minetest.register_node("mapserver:border", {
 
 		last_index = last_index + 5
 
+		meta:set_string("color", "rgb(10,10,200)")
 		meta:set_string("name", last_name)
 		meta:set_int("index", last_index)
 
@@ -52,6 +57,7 @@ minetest.register_node("mapserver:border", {
 		if fields.save then
 			last_name = fields.name
 			meta:set_string("name", fields.name)
+			meta:set_string("color", fields.color)
 			local index = tonumber(fields.index)
 			if index ~= nil then
 				last_index = index
diff --git a/mapserver_mod/mapserver/label.lua b/mapserver_mod/mapserver/label.lua
index 601f538..9748122 100644
--- a/mapserver_mod/mapserver/label.lua
+++ b/mapserver_mod/mapserver/label.lua
@@ -3,10 +3,11 @@ local update_formspec = function(meta)
 	local text = meta:get_string("text")
 	local size = meta:get_string("size")
 	local direction = meta:get_string("direction")
+	local color = meta:get_string("color") or "rgb(0,0,0)"
 
 	meta:set_string("infotext", "Label, Text:" .. text .. ", Size:" .. size .. ", Direction:" .. direction)
 
-	meta:set_string("formspec", "size[8,5;]" ..
+	meta:set_string("formspec", "size[8,6;]" ..
 		-- col 1
 		"field[0,1;4,1;text;Text;" .. text .. "]" ..
 		"button_exit[4,1;4,1;save;Save]" ..
@@ -16,6 +17,10 @@ local update_formspec = function(meta)
 
 		-- col 3
 		"field[0,3.5;8,1;direction;Direction (0-360);" .. direction .. "]" ..
+
+		-- col 4
+		"field[0,4.5;8,1;color;Color;" .. color .. "]" ..
+
 		"")
 
 end
@@ -37,6 +42,7 @@ minetest.register_node("mapserver:label", {
 		meta:set_string("text", "")
 		meta:set_string("direction", "0")
 		meta:set_string("size", "1")
+		meta:set_string("color", "rgb(0,0,0)")
 
 		update_formspec(meta)
 	end,
@@ -50,6 +56,7 @@ minetest.register_node("mapserver:label", {
 		local meta = minetest.get_meta(pos)
 
 		if fields.save then
+			meta:set_string("color", fields.color)
 			meta:set_string("text", fields.text)
 			meta:set_string("direction", fields.direction)
 			meta:set_string("size", fields.size)
diff --git a/mapserver_mod/mapserver/train.lua b/mapserver_mod/mapserver/train.lua
index e88f68d..95b4dba 100644
--- a/mapserver_mod/mapserver/train.lua
+++ b/mapserver_mod/mapserver/train.lua
@@ -6,17 +6,22 @@ local update_formspec = function(meta)
 	local line = meta:get_string("line")
 	local station = meta:get_string("station")
 	local index = meta:get_string("index")
+	local color = meta:get_string("color") or ""
 
 	meta:set_string("infotext", "Train: Line=" .. line .. ", Station=" .. station)
 
-	meta:set_string("formspec", "size[8,3;]" ..
+	meta:set_string("formspec", "size[8,4;]" ..
 		-- col 1
 		"field[0,1;4,1;line;Line;" .. line .. "]" ..
 		"button_exit[4,1;4,1;save;Save]" ..
 
 		-- col 2
 		"field[0,2.5;4,1;station;Station;" .. station .. "]" ..
-		"field[4,2.5;4,1;index;Index;" .. index .. "]"
+		"field[4,2.5;4,1;index;Index;" .. index .. "]" ..
+
+		-- col 3
+		"field[0,3.5;4,1;color;Color;" .. color .. "]" ..
+		""
 	)
 
 end
@@ -40,6 +45,7 @@ minetest.register_node("mapserver:train", {
 		meta:set_string("station", "")
 		meta:set_string("line", last_line)
 		meta:set_int("index", last_index)
+		meta:set_string("color", "rgb(10,10,200)")
 
 		update_formspec(meta)
 	end,
@@ -54,6 +60,7 @@ minetest.register_node("mapserver:train", {
 
 		if fields.save then
 			last_line = fields.line
+			meta:set_string("color", fields.color)
 			meta:set_string("line", fields.line)
 			meta:set_string("station", fields.station)
 			local index = tonumber(fields.index)
diff --git a/server/mapobject/border.go b/server/mapobject/border.go
index f078792..8c72391 100644
--- a/server/mapobject/border.go
+++ b/server/mapobject/border.go
@@ -14,6 +14,7 @@ func (this *BorderBlock) onMapObject(x, y, z int, block *mapblockparser.MapBlock
 	o.Attributes["name"] = md["name"]
 	o.Attributes["index"] = md["index"]
 	o.Attributes["owner"] = md["owner"]
+	o.Attributes["color"] = md["color"]
 
 	return o
 }
diff --git a/server/mapobject/label.go b/server/mapobject/label.go
index a816e5e..e8f2cd4 100644
--- a/server/mapobject/label.go
+++ b/server/mapobject/label.go
@@ -15,6 +15,7 @@ func (this *LabelBlock) onMapObject(x, y, z int, block *mapblockparser.MapBlock)
 	o.Attributes["size"] = md["size"]
 	o.Attributes["direction"] = md["direction"]
 	o.Attributes["owner"] = md["owner"]
+	o.Attributes["color"] = md["color"]
 
 	return o
 }
diff --git a/server/mapobject/train.go b/server/mapobject/train.go
index e7cafe5..5476071 100644
--- a/server/mapobject/train.go
+++ b/server/mapobject/train.go
@@ -15,6 +15,7 @@ func (this *TrainBlock) onMapObject(x, y, z int, block *mapblockparser.MapBlock)
 	o.Attributes["line"] = md["line"]
 	o.Attributes["index"] = md["index"]
 	o.Attributes["owner"] = md["owner"]
+	o.Attributes["color"] = md["color"]
 
 	return o
 }
diff --git a/server/static/js/overlays/LabelOverlay.js b/server/static/js/overlays/LabelOverlay.js
index fee76b6..7414a0b 100644
--- a/server/static/js/overlays/LabelOverlay.js
+++ b/server/static/js/overlays/LabelOverlay.js
@@ -22,10 +22,17 @@ var LabelOverlay = AbstractIconOverlay.extend({
   },
 
   getIcon: function(lbl){
+
+    const html = `
+      <svg height='30' width='100'>
+        <text x='0' y='15'>${lbl.attributes.text}</text>
+      </svg>
+    `;
+
     return new LabelIcon({
       iconAnchor:   [15, 50],
       iconSize:     [30, 100],
-      html: "<svg height='30' width='100'><text x='0' y='15'>" + lbl.attributes.text + "</text></svg>"
+      html: html
     });
   },