From 73f7468869c4ae5a1f9a2f660fc754efcbec8741 Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 4 Dec 2017 12:09:55 +0100 Subject: [PATCH 1/2] map --- _includes/head.html | 33 ++++++++++++++++++-- _layouts/home.html | 65 +++++++++++++++++++++++++++++++++++++-- _sass/minima/_base.scss | 9 ++++++ _sass/minima/_layout.scss | 2 +- 4 files changed, 103 insertions(+), 6 deletions(-) diff --git a/_includes/head.html b/_includes/head.html index 51029d8..cd2ab8a 100644 --- a/_includes/head.html +++ b/_includes/head.html @@ -8,15 +8,44 @@ - + + + + {% if jekyll.environment == 'production' and site.google_analytics %} {% include google-analytics.html %} {% endif %} - + \ No newline at end of file diff --git a/_layouts/home.html b/_layouts/home.html index 7524539..4545fd5 100644 --- a/_layouts/home.html +++ b/_layouts/home.html @@ -3,10 +3,67 @@ ---
-

Bitcoin hard forks

+

Bitcoin Forks

-

A list of known Bitcoin hard forks, including forks-of-forks.

+

An overview of Bitcoin hard forks, including forks-of-forks.

+ +
+
+
+ + + + +
+ +
@@ -46,4 +103,6 @@

Bitcoin hard forks

-

Disclaimer: We do not endorse any forks. Instead, we provide known information about them that is subject to change as we continue to learn more.

+

Disclaimer: We do not endorse any forks. Instead, we provide known information about them that is subject to change as we continue to learn more.

+ +
\ No newline at end of file diff --git a/_sass/minima/_base.scss b/_sass/minima/_base.scss index ff0d181..c571da4 100644 --- a/_sass/minima/_base.scss +++ b/_sass/minima/_base.scss @@ -305,3 +305,12 @@ table { td:before { content: attr(data-label); } } + +@include media-query($on-palm){ + .subway-map{ + display : none; + } + .subway-img{ + display : block !important; + } +} \ No newline at end of file diff --git a/_sass/minima/_layout.scss b/_sass/minima/_layout.scss index 81ac7de..9e72d0e 100644 --- a/_sass/minima/_layout.scss +++ b/_sass/minima/_layout.scss @@ -7,7 +7,7 @@ padding-top: 5px; position: fixed; width: 100%; - z-index: 10; + z-index: 4000; background: $background-color; @include shadow(0, 1px, 1px, 1px, #111); From 02eafb4827239581d2c5f3ecc87c531d330610ea Mon Sep 17 00:00:00 2001 From: alex Date: Mon, 4 Dec 2017 12:12:26 +0100 Subject: [PATCH 2/2] map assets --- _layouts/home.html | 14 +- assets/img/fork_img.png | Bin 0 -> 32616 bytes assets/img/logo_bw_wm.jpg | Bin 0 -> 3233 bytes assets/js/jquery.subwayMap-0.5.1.js | 507 ++++++++++++++++++++++++++++ 4 files changed, 520 insertions(+), 1 deletion(-) create mode 100644 assets/img/fork_img.png create mode 100644 assets/img/logo_bw_wm.jpg create mode 100644 assets/js/jquery.subwayMap-0.5.1.js diff --git a/_layouts/home.html b/_layouts/home.html index 4545fd5..1c46a05 100644 --- a/_layouts/home.html +++ b/_layouts/home.html @@ -58,7 +58,19 @@

Bitcoin Forks

diff --git a/assets/img/fork_img.png b/assets/img/fork_img.png new file mode 100644 index 0000000000000000000000000000000000000000..e247a15f8a1f7c099c61f573736b3f0f19e1a419 GIT binary patch literal 32616 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�k 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 literal 0 HcmV?d00001 diff --git a/assets/img/logo_bw_wm.jpg b/assets/img/logo_bw_wm.jpg new file mode 100644 index 0000000000000000000000000000000000000000..44df7fed36857b06415f9eb8c52b8f3f11300186 GIT binary patch literal 3233 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 Iz>weh557yYfdBvi literal 0 HcmV?d00001 diff --git a/assets/js/jquery.subwayMap-0.5.1.js b/assets/js/jquery.subwayMap-0.5.1.js new file mode 100644 index 0000000..023388f --- /dev/null +++ b/assets/js/jquery.subwayMap-0.5.1.js @@ -0,0 +1,507 @@ +/* + +Copyright (c) 2010 Nik Kalyani nik@kalyani.com http://www.kalyani.com + +Modified work Copyright (c) 2016 Jon Burrows subwaymap@jonburrows.co.uk https://jonburrows.co.uk + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + +*/ + +(function ($) { + + var plugin = { + + defaults: { + debug: false, + grid: false + }, + + options: { + }, + + identity: function (type) { + if (type === undefined) type = "name"; + + switch (type.toLowerCase()) { + case "version": return "1.0.0"; break; + default: return "subwayMap Plugin"; break; + } + }, + _debug: function (s) { + if (this.options.debug) + this._log(s); + }, + _log: function () { + if (window.console && window.console.log) + window.console.log('[subwayMap] ' + Array.prototype.join.call(arguments, ' ')); + }, + _supportsCanvas: function () { + var canvas = $(""); + if (canvas[0].getContext) + return true; + else + return false; + }, + _getCanvasLayer: function (el, overlay) { + this.layer++; + var canvasWidth = this.options.pixelWidth +100; + var canvas = $(""); + //var canvas = $(""); + el.append(canvas); + return (canvas[0].getContext("2d")); + }, + _render: function (el) { + + this.layer = -1; + var rows = el.attr("data-rows"); + if (rows === undefined) + rows = 10; + else + rows = parseInt(rows); + + var columns = el.attr("data-columns"); + if (columns === undefined) + columns = 10; + else + columns = parseInt(columns); + + var scale = el.attr("data-cellSize"); + if (scale === undefined) + scale = 100; + else + scale = parseInt(scale); + + var lineWidth = el.attr("data-lineWidth"); + if (lineWidth === undefined) + lineWidth = 10; + else + lineWidth = parseInt(lineWidth); + + var textClass = el.attr("data-textClass"); + if (textClass === undefined) textClass = ""; + + var grid = el.attr("data-grid"); + if ((grid === undefined) || (grid.toLowerCase() == "false")) + grid = false; + else + grid = true; + + var legendId = el.attr("data-legendId"); + if (legendId === undefined) legendId = ""; + + var gridNumbers = el.attr("data-gridNumbers"); + if ((gridNumbers === undefined) || (gridNumbers.toLowerCase() == "false")) + gridNumbers = false; + else + gridNumbers = true; + + var reverseMarkers = el.attr("data-reverseMarkers"); + if ((reverseMarkers === undefined) || (reverseMarkers.toLowerCase() == "false")) + reverseMarkers = false; + else + reverseMarkers = true; + + + this.options.pixelWidth = columns * scale; + this.options.pixelHeight = rows * scale; + + //el.css("width", this.options.pixelWidth); + //el.css("height", this.options.pixelHeight); + var self = this; + var lineLabels = []; + var supportsCanvas = $("")[0].getContext; + if (supportsCanvas) { + + if (grid) this._drawGrid(el, scale, gridNumbers); + $(el).children("ul").each(function (index) { + var ul = $(this); + + var color = $(ul).attr("data-color"); + if (color === undefined) color = "#000000"; + + var lineTextClass = $(ul).attr("data-textClass"); + if (lineTextClass === undefined) lineTextClass = ""; + + var shiftCoords = $(ul).attr("data-shiftCoords"); + if (shiftCoords === undefined) shiftCoords = ""; + + var shiftX = 0.00; + var shiftY = 0.00; + if (shiftCoords.indexOf(",") > -1) { + shiftX = parseInt(shiftCoords.split(",")[0]) * lineWidth/scale; + shiftY = parseInt(shiftCoords.split(",")[1]) * lineWidth/scale; + } + + var lineLabel = $(ul).attr("data-label"); + if (lineLabel === undefined) + lineLabel = "Line " + index; + + lineLabels[lineLabels.length] = {label: lineLabel, color: color}; + + var nodes = []; + $(ul).children("li").each(function () { + + var coords = $(this).attr("data-coords"); + if (coords === undefined) coords = ""; + + var dir = $(this).attr("data-dir"); + if (dir === undefined) dir = ""; + + var labelPos = $(this).attr("data-labelPos"); + if (labelPos === undefined) labelPos = "s"; + + var marker = $(this).attr("data-marker"); + if (marker == undefined) marker = ""; + + var markerInfo = $(this).attr("data-markerInfo"); + if (markerInfo == undefined) markerInfo = ""; + + var labeltext = $(this).attr("data-labeltext"); + if (labeltext == undefined) labeltext = ""; + + var dotted = $(this).attr("data-dotted-line"); + if (dotted == undefined) dotted = "false"; + + var anchor = $(this).children("a:first-child"); + var label = $(this).text(); + if (label === undefined) label = ""; + + var link = ""; + var title = ""; + if (anchor != undefined) { + link = $(anchor).attr("href"); + if (link === undefined) link = ""; + title = $(anchor).attr("title"); + if (title === undefined) title = ""; + } + + self._debug("Coords=" + coords + "; Dir=" + dir + "; Link=" + link + "; Label=" + label + "; labelPos=" + labelPos + "; Marker=" + marker + "; Dotted=" + dotted); + + var x = ""; + var y = ""; + if (coords.indexOf(",") > -1) { + x = Number(coords.split(",")[0]) + (marker.indexOf("interchange") > -1 ? 0 : shiftX); + y = Number(coords.split(",")[1]) + (marker.indexOf("interchange") > -1 ? 0 : shiftY); + } + nodes[nodes.length] = { x: x, y: y, direction: dir, marker: marker, markerInfo: markerInfo, link: link, title: title, label: label, labelPos: labelPos, dotted: dotted, labeltext: labeltext }; + }); + if (nodes.length > 0) + self._drawLine(el, scale, rows, columns, color, (lineTextClass != "" ? lineTextClass : textClass), lineWidth, nodes, reverseMarkers); + $(ul).remove(); + }); + + if ((lineLabels.length > 0) && (legendId != "")) + { + var legend = $("#" + legendId); + + for(var line=0; line" + lineLabels[line].label + ""); + } + + } + }, + _drawLine: function (el, scale, rows, columns, color, textClass, width, nodes, reverseMarkers) { + + var ctx = this._getCanvasLayer(el, false); + ctx.beginPath(); + ctx.moveTo(nodes[0].x * scale, nodes[0].y * scale); + var markers = []; + var lineNodes = []; + var node; + for(node = 0; node < nodes.length; node++) + { + if (nodes[node].marker.indexOf("@") != 0) + lineNodes[lineNodes.length] = nodes[node]; + } + for (var lineNode = 0; lineNode < lineNodes.length; lineNode++) { + if (lineNode < (lineNodes.length - 1)) { + var nextNode = lineNodes[lineNode + 1]; + var currNode = lineNodes[lineNode]; + + // Correction for edges so lines are not running off campus + var xCorr = 0; + var yCorr = 0; + if (nextNode.x == 0) xCorr = width / 2; + if (nextNode.x == columns) xCorr = -1 * width / 2; + if (nextNode.y == 0) yCorr = width / 2; + if (nextNode.y == rows) yCorr = -1 * width / 2; + + var xVal = 0; + var yVal = 0; + var direction = ""; + + var xDiff = Math.round(Math.abs(currNode.x - nextNode.x)); + var yDiff = Math.round(Math.abs(currNode.y - nextNode.y)); + if ((xDiff == 0) || (yDiff == 0)) { + // Horizontal or Vertical + ctx.lineTo((nextNode.x * scale) + xCorr, (nextNode.y * scale) + yCorr); + } + else if ((xDiff == 1) && (yDiff == 1)) { + // 90 degree turn + if (nextNode.direction != "") + direction = nextNode.direction.toLowerCase(); + switch (direction) { + case "s": xVal = 0; yVal = scale; break; + case "e": xVal = scale; yVal = 0; break; + case "w": xVal = -1 * scale; yVal = 0; break; + default: xVal = 0; yVal = -1 * scale; break; + } + ctx.quadraticCurveTo((currNode.x * scale) + xVal, (currNode.y * scale) + yVal, + (nextNode.x * scale) + xCorr, (nextNode.y * scale) + yCorr); + } + else if (xDiff == yDiff) { + // Symmetric, angular with curves at both ends + if (nextNode.x < currNode.x) { + if (nextNode.y < currNode.y) + direction = "nw"; + else + direction = "sw"; + } + else { + if (nextNode.y < currNode.y) + direction = "ne"; + else + direction = "se"; + } + var dirVal = 1; + switch (direction) { + case "nw": xVal = -1 * (scale / 2); yVal = 1; dirVal = 1; break; + case "sw": xVal = -1 * (scale / 2); yVal = -1; dirVal = 1; break; + case "se": xVal = (scale / 2); yVal = -1; dirVal = -1; break; + case "ne": xVal = (scale / 2); yVal = 1; dirVal = -1; break; + } + this._debug((currNode.x * scale) + xVal + ", " + (currNode.y * scale) + "; " + (nextNode.x + (dirVal * xDiff / 2)) * scale + ", " + + (nextNode.y + (yVal * xDiff / 2)) * scale); + ctx.bezierCurveTo( + (currNode.x * scale) + xVal, (currNode.y * scale), + (currNode.x * scale) + xVal, (currNode.y * scale), + (nextNode.x + (dirVal * xDiff / 2)) * scale, (nextNode.y + (yVal * xDiff / 2)) * scale); + ctx.bezierCurveTo( + (nextNode.x * scale) + (dirVal * scale / 2), (nextNode.y) * scale, + (nextNode.x * scale) + (dirVal * scale / 2), (nextNode.y) * scale, + nextNode.x * scale, nextNode.y * scale); + } + else + ctx.lineTo(nextNode.x * scale, nextNode.y * scale); + } + } + + if (nodes[0].dotted == "true") { ctx.setLineDash([5, 5]); } + ctx.strokeStyle = color; + ctx.lineWidth = width; + ctx.stroke(); + + ctx = this._getCanvasLayer(el, true); + for (node = 0; node < nodes.length; node++) { + this._drawMarker(el, ctx, scale, color, textClass, width, nodes[node], reverseMarkers); + } + + + }, + _drawMarker: function (el, ctx, scale, color, textClass, width, data, reverseMarkers) { + + if (data.label == "") return; + if (data.marker == "") data.marker = "station"; + + // Scale coordinates for rendering + var x = data.x * scale; + var y = data.y * scale; + + // Keep it simple -- black on white, or white on black + var fgColor = "#000000"; + var bgColor = "#ffffff"; + if (reverseMarkers) + { + fgColor = "#ffffff"; + bgColor = "#000000"; + } + + // Render station and interchange icons + ctx.strokeStyle = fgColor; + ctx.fillStyle = bgColor; + ctx.beginPath(); + switch(data.marker.toLowerCase()) + { + case "interchange": + case "@interchange": + ctx.lineWidth = width; + if (data.markerInfo == "") + ctx.arc(x, y, width * 0.7, 0, Math.PI * 2, true); + else + { + var mDir = data.markerInfo.substr(0,1).toLowerCase(); + var mSize = parseInt(data.markerInfo.substr(1,10)); + if (((mDir == "v") || (mDir == "h")) && (mSize > 1)) + { + if (mDir == "v") + { + ctx.arc(x, y, width * 0.7,290 * Math.PI/180, 250 * Math.PI/180, false); + ctx.arc(x, y-(width*mSize), width * 0.7,110 * Math.PI/180, 70 * Math.PI/180, false); + } + else + { + ctx.arc(x, y, width * 0.7,20 * Math.PI/180, 340 * Math.PI/180, false); + ctx.arc(x+(width*mSize), y, width * 0.7,200 * Math.PI/180, 160 * Math.PI/180, false); + } + } + else + ctx.arc(x, y, width * 0.7, 0, Math.PI * 2, true); + } + break; + case "station": + case "@station": + ctx.lineWidth = width/2; + ctx.arc(x, y, width/2, 0, Math.PI * 2, true); + break; + } + // labels on canvas + if (data.labeltext !== ""){ + ctx.font = '300 14px/1.5 "Ubuntu","Helvetica Neue",Helvetica,Arial,sans-serif'; + ctx.fillStyle = '#111'; + ctx.fillText(data.labeltext, x -6 ,y -13); + } + ctx.fillStyle = bgColor; // reset color + ctx.closePath(); + ctx.stroke(); + ctx.fill(); + + // Render text labels and hyperlinks + var pos = ""; + var offset = width + 4; + var topOffset = 0; + var centerOffset = "-50px"; + switch(data.labelPos.toLowerCase()) + { + case "n": + pos = "text-align: center; margin: 0 0 " + offset + "px " + centerOffset; + topOffset = offset * 2; + break; + case "w": + pos = "text-align: right; margin:0 " + offset + "px 0 -" + (100 + offset) + "px"; + topOffset = offset; + break; + case "e": + pos = "text-align: left; margin:0 0 0 " + offset + "px"; + topOffset = offset; + break; + case "s": + pos = "text-align: center; margin:" + offset + "px 0 0 " + centerOffset; + break; + case "se": + pos = "text-align: left; margin:" + offset + "px 0 0 " + offset + "px"; + break; + case "ne": + pos = "text-align: left; padding-left: " + offset + "px; margin: 0 0 " + offset + "px 0"; + topOffset = offset * 2; + break; + case "sw": + pos = "text-align: right; margin:" + offset + "px 0 0 -" + (100 + offset) + "px"; + topOffset = offset; + break; + case "nw": + pos = "text-align: right; margin: -" + offset + "px 0 0 -" + (100 + offset) + "px"; + topOffset = offset; + break; + } + var style = (textClass != "" ? "class='" + textClass + "' " : "") + "style='" + (textClass == "" ? "font-size:8pt;font-family:Verdana,Arial,Helvetica,Sans Serif;text-decoration:none;" : "") + "width:100px;" + (pos != "" ? pos : "") + ";position:absolute;top:" + (y + el.offset().top - (topOffset > 0 ? topOffset : 0) ) + "px;left:" + (x + el.offset().left ) + "px;z-index:3000;'"; + if (data.link != ""){ + $("" + data.label.replace(/\\n/g,"
") + "").appendTo(el); + } else + $("" + data.label.replace(/\\n/g,"
") + "
").appendTo(el); + + }, + _drawGrid: function (el, scale, gridNumbers) { + + var ctx = this._getCanvasLayer(el, false); + ctx.fillStyle = "#000"; + ctx.beginPath(); + var counter = 0; + for (var x = 0.5; x < this.options.pixelWidth; x += scale) { + if (gridNumbers) + { + ctx.moveTo(x, 0); + ctx.fillText(counter++, x-15, 10); + } + ctx.moveTo(x, 0); + ctx.lineTo(x, this.options.pixelHeight); + } + ctx.moveTo(this.options.pixelWidth - 0.5, 0); + ctx.lineTo(this.options.pixelWidth - 0.5, this.options.pixelHeight); + + counter = 0; + for (var y = 0.5; y < this.options.pixelHeight; y += scale) { + if (gridNumbers) + { + ctx.moveTo(0, y); + ctx.fillText(counter++, 0, y-15); + } + ctx.moveTo(0, y); + ctx.lineTo(this.options.pixelWidth, y); + } + ctx.moveTo(0, this.options.pixelHeight - 0.5); + ctx.lineTo(this.options.pixelWidth, this.options.pixelHeight - 0.5); + ctx.strokeStyle = "#eee"; + ctx.lineWidth = 1; + ctx.stroke(); + ctx.fill(); + ctx.closePath(); + + } +}; + +var methods = { + + init: function (options) { + + plugin.options = $.extend({}, plugin.defaults, options); + // iterate and reformat each matched element + return this.each(function (index) { + + plugin.options = $.meta + ? $.extend(plugin.options, $(this).data()) + : plugin.options; + + plugin._debug("BEGIN: " + plugin.identity() + " for element " + index); + + plugin._render($(this)); + + plugin._debug("END: " + plugin.identity() + " for element " + index); + }); + + }, + drawLine: function (data) { + plugin._drawLine(data.element, data.scale, data.rows, data.columns, data.color, data.width, data.nodes); + } +}; + +$.fn.subwayMap = function (method) { + + // Method calling logic + if (methods[method]) { + return methods[method].apply(this, Array.prototype.slice.call(arguments, 1)); + } else if (typeof method === 'object' || !method) { + return methods.init.apply(this, arguments); + } else { + $.error('Method ' + method + ' does not exist on jQuery.tooltip'); + } + +}; + +})(jQuery);