diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index f93849fa..403441bb 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -25,6 +25,7 @@ //= require ./src/views/room //= require ./src/JIT //= require ./src/Metamaps +//= require ./src/Metamaps.Util //= require ./src/Metamaps.Realtime //= require ./src/Metamaps.Control //= require ./src/Metamaps.Filter diff --git a/app/assets/javascripts/src/Metamaps.Util.js b/app/assets/javascripts/src/Metamaps.Util.js new file mode 100644 index 00000000..e150d3bb --- /dev/null +++ b/app/assets/javascripts/src/Metamaps.Util.js @@ -0,0 +1,130 @@ +/* global Metamaps */ + +/* + * Metamaps.Util.js + * + * Dependencies: + * - Metamaps.Visualize + */ + +Metamaps.Util = { + // helper function to determine how many lines are needed + // Line Splitter Function + // copyright Stephen Chapman, 19th April 2006 + // you may copy this code but please keep the copyright notice as well + splitLine: function (st, n) { + var b = '' + var s = st ? st : '' + while (s.length > n) { + var c = s.substring(0, n) + var d = c.lastIndexOf(' ') + var e = c.lastIndexOf('\n') + if (e != -1) d = e + if (d == -1) d = n + b += c.substring(0, d) + '\n' + s = s.substring(d + 1) + } + return b + s + }, + nowDateFormatted: function () { + var date = new Date(Date.now()) + var month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1) + var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate() + var year = date.getFullYear() + + return month + '/' + day + '/' + year + }, + decodeEntities: function (desc) { + var str, temp = document.createElement('p') + temp.innerHTML = desc // browser handles the topics + str = temp.textContent || temp.innerText + temp = null // delete the element + return str + }, // decodeEntities + getDistance: function (p1, p2) { + return Math.sqrt(Math.pow((p2.x - p1.x), 2) + Math.pow((p2.y - p1.y), 2)) + }, + coordsToPixels: function (coords) { + if (Metamaps.Visualize.mGraph) { + var canvas = Metamaps.Visualize.mGraph.canvas, + s = canvas.getSize(), + p = canvas.getPos(), + ox = canvas.translateOffsetX, + oy = canvas.translateOffsetY, + sx = canvas.scaleOffsetX, + sy = canvas.scaleOffsetY + var pixels = { + x: (coords.x / (1 / sx)) + p.x + s.width / 2 + ox, + y: (coords.y / (1 / sy)) + p.y + s.height / 2 + oy + } + return pixels + } else { + return { + x: 0, + y: 0 + } + } + }, + pixelsToCoords: function (pixels) { + var coords + if (Metamaps.Visualize.mGraph) { + var canvas = Metamaps.Visualize.mGraph.canvas, + s = canvas.getSize(), + p = canvas.getPos(), + ox = canvas.translateOffsetX, + oy = canvas.translateOffsetY, + sx = canvas.scaleOffsetX, + sy = canvas.scaleOffsetY + coords = { + x: (pixels.x - p.x - s.width / 2 - ox) * (1 / sx), + y: (pixels.y - p.y - s.height / 2 - oy) * (1 / sy), + } + } else { + coords = { + x: 0, + y: 0 + } + } + return coords + }, + getPastelColor: function () { + var r = (Math.round(Math.random() * 127) + 127).toString(16) + var g = (Math.round(Math.random() * 127) + 127).toString(16) + var b = (Math.round(Math.random() * 127) + 127).toString(16) + return Metamaps.Util.colorLuminance('#' + r + g + b, -0.4) + }, + // darkens a hex value by 'lum' percentage + colorLuminance: function (hex, lum) { + // validate hex string + hex = String(hex).replace(/[^0-9a-f]/gi, '') + if (hex.length < 6) { + hex = hex[0] + hex[0] + hex[1] + hex[1] + hex[2] + hex[2] + } + lum = lum || 0 + + // convert to decimal and change luminosity + var rgb = '#', c, i + for (i = 0; i < 3; i++) { + c = parseInt(hex.substr(i * 2, 2), 16) + c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16) + rgb += ('00' + c).substr(c.length) + } + + return rgb + }, + generateOptionsList: function (data) { + var newlist = '' + for (var i = 0; i < data.length; i++) { + newlist = newlist + '' + } + return newlist + }, + checkURLisImage: function (url) { + // when the page reloads the following regular expression will be screwed up + // please replace it with this one before you save: /*backslashhere*.(jpeg|jpg|gif|png)$/ + return (url.match(/\.(jpeg|jpg|gif|png)$/) != null) + }, + checkURLisYoutubeVideo: function (url) { + return (url.match(/^https?:\/\/(?:www\.)?youtube.com\/watch\?(?=[^?]*v=\w+)(?:[^\s?]+)?$/) != null) + } +}; // end Metamaps.Util diff --git a/app/assets/javascripts/src/Metamaps.js.erb b/app/assets/javascripts/src/Metamaps.js.erb index d656ba2e..0bd30932 100644 --- a/app/assets/javascripts/src/Metamaps.js.erb +++ b/app/assets/javascripts/src/Metamaps.js.erb @@ -1798,134 +1798,3 @@ Metamaps.Visualize = { } }; // end Metamaps.Visualize - - -/* - * - * UTIL - * - */ -Metamaps.Util = { - // helper function to determine how many lines are needed - // Line Splitter Function - // copyright Stephen Chapman, 19th April 2006 - // you may copy this code but please keep the copyright notice as well - splitLine: function (st, n) { - var b = ''; - var s = st ? st : ''; - while (s.length > n) { - var c = s.substring(0, n); - var d = c.lastIndexOf(' '); - var e = c.lastIndexOf('\n'); - if (e != -1) d = e; - if (d == -1) d = n; - b += c.substring(0, d) + '\n'; - s = s.substring(d + 1); - } - return b + s; - }, - nowDateFormatted: function () { - var date = new Date(Date.now()); - var month = (date.getMonth() + 1) < 10 ? '0' + (date.getMonth() + 1) : (date.getMonth() + 1); - var day = date.getDate() < 10 ? '0' + date.getDate() : date.getDate(); - var year = date.getFullYear(); - - return month + '/' + day + '/' + year; - }, - decodeEntities: function (desc) { - var str, temp = document.createElement('p'); - temp.innerHTML = desc; //browser handles the topics - str = temp.textContent || temp.innerText; - temp = null; //delete the element; - return str; - }, //decodeEntities - getDistance: function (p1, p2) { - return Math.sqrt(Math.pow((p2.x - p1.x), 2) + Math.pow((p2.y - p1.y), 2)); - }, - coordsToPixels: function (coords) { - if (Metamaps.Visualize.mGraph) { - var canvas = Metamaps.Visualize.mGraph.canvas, - s = canvas.getSize(), - p = canvas.getPos(), - ox = canvas.translateOffsetX, - oy = canvas.translateOffsetY, - sx = canvas.scaleOffsetX, - sy = canvas.scaleOffsetY; - var pixels = { - x: (coords.x / (1/sx)) + p.x + s.width/2 + ox, - y: (coords.y / (1/sy)) + p.y + s.height/2 + oy - }; - return pixels; - } - else { - return { - x: 0, - y: 0 - }; - } - }, - pixelsToCoords: function (pixels) { - var coords; - if (Metamaps.Visualize.mGraph) { - var canvas = Metamaps.Visualize.mGraph.canvas, - s = canvas.getSize(), - p = canvas.getPos(), - ox = canvas.translateOffsetX, - oy = canvas.translateOffsetY, - sx = canvas.scaleOffsetX, - sy = canvas.scaleOffsetY; - coords = { - x: (pixels.x - p.x - s.width/2 - ox) * (1/sx), - y: (pixels.y - p.y - s.height/2 - oy) * (1/sy), - }; - } - else { - coords = { - x: 0, - y: 0 - }; - } - return coords; - }, - getPastelColor: function () { - var r = (Math.round(Math.random()* 127) + 127).toString(16); - var g = (Math.round(Math.random()* 127) + 127).toString(16); - var b = (Math.round(Math.random()* 127) + 127).toString(16); - return Metamaps.Util.colorLuminance('#' + r + g + b, -0.4); - }, - // darkens a hex value by 'lum' percentage - colorLuminance: function (hex, lum) { - - // validate hex string - hex = String(hex).replace(/[^0-9a-f]/gi, ''); - if (hex.length < 6) { - hex = hex[0]+hex[0]+hex[1]+hex[1]+hex[2]+hex[2]; - } - lum = lum || 0; - - // convert to decimal and change luminosity - var rgb = "#", c, i; - for (i = 0; i < 3; i++) { - c = parseInt(hex.substr(i*2,2), 16); - c = Math.round(Math.min(Math.max(0, c + (c * lum)), 255)).toString(16); - rgb += ("00"+c).substr(c.length); - } - - return rgb; - }, - generateOptionsList: function (data) { - var newlist = ""; - for (var i = 0; i < data.length; i++) { - newlist = newlist + ''; - } - return newlist; - }, - checkURLisImage: function (url) { - // when the page reloads the following regular expression will be screwed up - // please replace it with this one before you save: /*backslashhere*.(jpeg|jpg|gif|png)$/ - return (url.match(/\.(jpeg|jpg|gif|png)$/) != null); - }, - checkURLisYoutubeVideo: function (url) { - return (url.match(/^https?:\/\/(?:www\.)?youtube.com\/watch\?(?=[^?]*v=\w+)(?:[^\s?]+)?$/) != null); - } -}; // end Metamaps.Util