pyk 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/pyk/number_helpers.rb
CHANGED
@@ -20,6 +20,16 @@ module Pyk::NumberHelpers
|
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
23
|
+
def stock_market(d)
|
24
|
+
if d < 0
|
25
|
+
return "<span style='color: red;'><i class='icon-arrow-down'></i></span> #{d}%".html_safe
|
26
|
+
elsif d > 0
|
27
|
+
return "<span style='color: green;'><i class='icon-arrow-up'></i></span> #{d}%".html_safe
|
28
|
+
else
|
29
|
+
return d
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
23
33
|
def color_amount(d)
|
24
34
|
if d < 0
|
25
35
|
"<span class='red'>(#{number_to_currency(d, unit: '')})</span>".html_safe
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 5
|
9
|
+
version: 0.0.5
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Pykih Software LLP
|
@@ -118,10 +118,6 @@ files:
|
|
118
118
|
- app/assets/images/sprites/file-icons-16-px.png
|
119
119
|
- app/assets/images/sprites/signup.png
|
120
120
|
- app/assets/images/sprites/so.png
|
121
|
-
- app/assets/javascripts/pyk/bubbles_geo.js
|
122
|
-
- app/assets/javascripts/pyk/CustomTooltip.js
|
123
|
-
- app/assets/javascripts/pyk/types_bubbles.js
|
124
|
-
- app/assets/javascripts/pyk.js
|
125
121
|
- app/assets/stylesheets/pyk/bootstrap.css.scss
|
126
122
|
- app/assets/stylesheets/pyk/global.css.scss
|
127
123
|
- app/assets/stylesheets/pyk/helpers.css.scss
|
@@ -1,49 +0,0 @@
|
|
1
|
-
function CustomTooltip(tooltipId, width){
|
2
|
-
var tooltipId = tooltipId;
|
3
|
-
$("body").append("<div class='tooltip' id='"+tooltipId+"'></div>");
|
4
|
-
|
5
|
-
if(width){
|
6
|
-
$("#"+tooltipId).css("width", width);
|
7
|
-
}
|
8
|
-
|
9
|
-
hideTooltip();
|
10
|
-
|
11
|
-
function showTooltip(content, event){
|
12
|
-
$("#"+tooltipId).html(content);
|
13
|
-
$("#"+tooltipId).show();
|
14
|
-
|
15
|
-
updatePosition(event);
|
16
|
-
}
|
17
|
-
|
18
|
-
function hideTooltip(){
|
19
|
-
$("#"+tooltipId).hide();
|
20
|
-
}
|
21
|
-
|
22
|
-
function updatePosition(event){
|
23
|
-
var ttid = "#"+tooltipId;
|
24
|
-
var xOffset = 20;
|
25
|
-
var yOffset = 10;
|
26
|
-
|
27
|
-
var ttw = $(ttid).width();
|
28
|
-
var tth = $(ttid).height();
|
29
|
-
var wscrY = $(window).scrollTop();
|
30
|
-
var wscrX = $(window).scrollLeft();
|
31
|
-
var curX = (document.all) ? event.clientX + wscrX : event.pageX;
|
32
|
-
var curY = (document.all) ? event.clientY + wscrY : event.pageY;
|
33
|
-
var ttleft = ((curX - wscrX + xOffset*2 + ttw) > $(window).width()) ? curX - ttw - xOffset*2 : curX + xOffset;
|
34
|
-
if (ttleft < wscrX + xOffset){
|
35
|
-
ttleft = wscrX + xOffset;
|
36
|
-
}
|
37
|
-
var tttop = ((curY - wscrY + yOffset*2 + tth) > $(window).height()) ? curY - tth - yOffset*2 : curY + yOffset;
|
38
|
-
if (tttop < wscrY + yOffset){
|
39
|
-
tttop = curY + yOffset;
|
40
|
-
}
|
41
|
-
$(ttid).css('top', tttop + 'px').css('left', ttleft + 'px');
|
42
|
-
}
|
43
|
-
|
44
|
-
return {
|
45
|
-
showTooltip: showTooltip,
|
46
|
-
hideTooltip: hideTooltip,
|
47
|
-
updatePosition: updatePosition
|
48
|
-
}
|
49
|
-
}
|
@@ -1,56 +0,0 @@
|
|
1
|
-
var map;
|
2
|
-
|
3
|
-
function initialize() {
|
4
|
-
var mapOptions = {
|
5
|
-
zoom: 1,
|
6
|
-
center: new google.maps.LatLng(51.4788, 0.0106),
|
7
|
-
mapTypeId: google.maps.MapTypeId.SATELLITE
|
8
|
-
};
|
9
|
-
|
10
|
-
map = new google.maps.Map(document.getElementById('map-canvas'),
|
11
|
-
mapOptions);
|
12
|
-
|
13
|
-
|
14
|
-
// Create a script tag and set the USGS URL as the source.
|
15
|
-
// Append this tag to the document's <head>.
|
16
|
-
var script = document.createElement('script');
|
17
|
-
//script.src = 'http://earthquake.usgs.gov/earthquakes/feed/geojsonp/2.5/week';
|
18
|
-
script.src = '/data/bubbles_geo.json';
|
19
|
-
document.getElementsByTagName('head')[0].appendChild(script);
|
20
|
-
}
|
21
|
-
|
22
|
-
window.eqfeed_callback = function(results) {
|
23
|
-
for (var i = 0; i < results.features.length; i++) {
|
24
|
-
var earthquake = results.features[i];
|
25
|
-
var coords = earthquake.geometry.coordinates;
|
26
|
-
var latLng = new google.maps.LatLng(coords[1],coords[0]);
|
27
|
-
var marker = new google.maps.Marker({
|
28
|
-
position: latLng,
|
29
|
-
map: map,
|
30
|
-
icon: getCircle(earthquake),
|
31
|
-
title: earthquake.data.tooltip_contents
|
32
|
-
});
|
33
|
-
var infowindow = new google.maps.InfoWindow({
|
34
|
-
content: earthquake.data.tooltip_contents ,
|
35
|
-
maxWidth: 200,
|
36
|
-
position: marker.getPosition()
|
37
|
-
});
|
38
|
-
google.maps.event.addListener(marker, 'click', function() {
|
39
|
-
alert("tip" + earthquake.data.tooltip_contents);
|
40
|
-
infowindow.open(map,marker);
|
41
|
-
});
|
42
|
-
}
|
43
|
-
|
44
|
-
}
|
45
|
-
|
46
|
-
function getCircle(mark) {
|
47
|
-
return {
|
48
|
-
path: google.maps.SymbolPath.CIRCLE,
|
49
|
-
fillColor: mark.data.background_color,
|
50
|
-
fillOpacity: mark.data.background_opacity,
|
51
|
-
radius: mark.data.weight,
|
52
|
-
scale: 10,
|
53
|
-
strokeColor: mark.data.border_color,
|
54
|
-
strokeWeight: mark.data.border_weight
|
55
|
-
};
|
56
|
-
}
|
@@ -1,224 +0,0 @@
|
|
1
|
-
|
2
|
-
var custom_bubble_chart = (function(d3, CustomTooltip
|
3
|
-
) {
|
4
|
-
"use strict";
|
5
|
-
|
6
|
-
var width = 800,
|
7
|
-
height = 600,
|
8
|
-
tooltip = CustomTooltip("gates_tooltip", 240),
|
9
|
-
layout_gravity = -0.01,
|
10
|
-
damper = 0.1,
|
11
|
-
nodes = [],
|
12
|
-
year_centers = [],
|
13
|
-
years_x = [],
|
14
|
-
vis, force, circles, radius_scale;
|
15
|
-
|
16
|
-
var center = {x: width /2, y: height/3};
|
17
|
-
|
18
|
-
|
19
|
-
function find_unique_elements(data, param, deltaWidthParam) {
|
20
|
-
var birthDates = {};
|
21
|
-
$.each(data, function() {
|
22
|
-
if (!birthDates[this[param]])
|
23
|
-
birthDates[this[param]] = [];
|
24
|
-
birthDates[this[param]].push(this);
|
25
|
-
})
|
26
|
-
var length = 0;
|
27
|
-
for (var d in birthDates) {
|
28
|
-
length ++;
|
29
|
-
};
|
30
|
-
var rows = Math.floor(length / 3) + 1;
|
31
|
-
var col =3;
|
32
|
-
var deltaWidth = (height /rows);
|
33
|
-
var h = deltaWidthParam;
|
34
|
-
for(var d in birthDates) {
|
35
|
-
var key = d;
|
36
|
-
var w;
|
37
|
-
if (col > 0) {
|
38
|
-
switch(col) {
|
39
|
-
case 3 : w = width /5; break;
|
40
|
-
case 2 : w = width /2; break;
|
41
|
-
case 1 : w = 4 * width /5;break;
|
42
|
-
|
43
|
-
}
|
44
|
-
year_centers[key] = {
|
45
|
-
x: w,
|
46
|
-
y: h
|
47
|
-
}
|
48
|
-
years_x[key] = {
|
49
|
-
x:w
|
50
|
-
}
|
51
|
-
console.log("key:"+ key + " x:" + w+ "y:"+h);
|
52
|
-
if (col == 3) {
|
53
|
-
rows --;
|
54
|
-
|
55
|
-
}
|
56
|
-
col --;
|
57
|
-
if (col == 0) {col = 3;h += deltaWidth;}
|
58
|
-
}
|
59
|
-
|
60
|
-
}
|
61
|
-
}
|
62
|
-
|
63
|
-
function custom_chart(data, type, divId) {
|
64
|
-
var max_amount = d3.max(data, function(d) { return parseInt(d.weight/10, 10); } );
|
65
|
-
radius_scale = d3.scale.pow().exponent(0.5).domain([0, max_amount]).range([10, 100]);
|
66
|
-
|
67
|
-
//create node objects from original data
|
68
|
-
//that will serve as the data behind each
|
69
|
-
//bubble in the vis, then add each node
|
70
|
-
//to nodes to be used later
|
71
|
-
data.forEach(function(d){
|
72
|
-
var node = {
|
73
|
-
id: d.id,
|
74
|
-
radius: radius_scale(parseInt(d.weight/10, 10)),
|
75
|
-
value: d.weight,
|
76
|
-
name: d.name,
|
77
|
-
visits: d.visits,
|
78
|
-
calls: d.calls,
|
79
|
-
leads: d.leads,
|
80
|
-
color: d.color,
|
81
|
-
genre: d.genre,
|
82
|
-
genre2:d.genre2,
|
83
|
-
x: Math.random() * 900,
|
84
|
-
y: Math.random() * 800
|
85
|
-
}
|
86
|
-
nodes.push(node);
|
87
|
-
});
|
88
|
-
|
89
|
-
nodes.sort(function(a, b) {return b.value- a.value; });
|
90
|
-
|
91
|
-
vis = d3.select("#"+ divID).append("svg")
|
92
|
-
.attr("width", width)
|
93
|
-
.attr("height", height)
|
94
|
-
.attr("id", "svg_vis");
|
95
|
-
|
96
|
-
circles = vis.selectAll("circle")
|
97
|
-
.data(nodes, function(d) { return d.id ;});
|
98
|
-
|
99
|
-
circles.enter().append("circle")
|
100
|
-
.attr("r", 0)
|
101
|
-
.attr("fill", function(d) { return d.color ;})
|
102
|
-
.attr("stroke-width", 2)
|
103
|
-
.attr("stroke", function(d) {return d3.rgb(d.color).darker();})
|
104
|
-
.attr("id", function(d) { return "bubble_" + d.id; })
|
105
|
-
.on("mouseover", function(d, i) {show_details(d, i, this);} )
|
106
|
-
.on("mouseout", function(d, i) {hide_details(d, i, this);} )
|
107
|
-
|
108
|
-
circles.transition().duration(2000).attr("r", function(d) { return d.radius; });
|
109
|
-
}
|
110
|
-
|
111
|
-
function charge(d) {
|
112
|
-
return -Math.pow(d.radius, 2.0) / 8;
|
113
|
-
}
|
114
|
-
|
115
|
-
function start() {
|
116
|
-
force = d3.layout.force()
|
117
|
-
.nodes(nodes)
|
118
|
-
.size([width, height]);
|
119
|
-
}
|
120
|
-
|
121
|
-
function display_group_all() {
|
122
|
-
force.gravity(layout_gravity)
|
123
|
-
.charge(charge)
|
124
|
-
.friction(0.9)
|
125
|
-
.on("tick", function(e) {
|
126
|
-
circles.each(move_towards_center(e.alpha))
|
127
|
-
.attr("cx", function(d) {return d.x;})
|
128
|
-
.attr("cy", function(d) {return d.y;});
|
129
|
-
});
|
130
|
-
force.start();
|
131
|
-
hide_years();
|
132
|
-
}
|
133
|
-
|
134
|
-
function move_towards_center(alpha) {
|
135
|
-
return function(d) {
|
136
|
-
d.x = d.x + (center.x - d.x) * (damper + 0.02) * alpha;
|
137
|
-
d.y = d.y + (center.y - d.y) * (damper + 0.02) * alpha;
|
138
|
-
};
|
139
|
-
}
|
140
|
-
|
141
|
-
function display_by_year(type) {
|
142
|
-
force.gravity(layout_gravity)
|
143
|
-
.charge(charge)
|
144
|
-
.friction(0.9)
|
145
|
-
.on("tick", function(e) {
|
146
|
-
circles.each(move_towards_year(e.alpha, type))
|
147
|
-
.attr("cx", function(d) {return d.x;})
|
148
|
-
.attr("cy", function(d) {return d.y;});
|
149
|
-
});
|
150
|
-
force.start();
|
151
|
-
display_years();
|
152
|
-
}
|
153
|
-
|
154
|
-
function move_towards_year(alpha, type1) {
|
155
|
-
return function(d) {
|
156
|
-
var key1 = "";
|
157
|
-
for(var k in d) {
|
158
|
-
if (type1 == k) {
|
159
|
-
key1 = d[k];
|
160
|
-
break;
|
161
|
-
}
|
162
|
-
}
|
163
|
-
var target = year_centers[key1];
|
164
|
-
d.x = d.x + (target.x - d.x) * (damper + 0.02) * alpha * 1.1;
|
165
|
-
d.y = d.y + (target.y - d.y) * (damper + 0.02) * alpha * 1.1;
|
166
|
-
};
|
167
|
-
}
|
168
|
-
|
169
|
-
|
170
|
-
function display_years() {
|
171
|
-
var years_data = d3.keys(year_centers);
|
172
|
-
var years = vis.selectAll(".years")
|
173
|
-
.data(years_data);
|
174
|
-
|
175
|
-
years.enter().append("text")
|
176
|
-
.attr("class", "years")
|
177
|
-
.attr("x", function(d) { return year_centers[d].x; } )
|
178
|
-
.attr("y", function(d) { return year_centers[d].y;})
|
179
|
-
.attr("text-anchor", "middle")
|
180
|
-
.attr("fill", "white")
|
181
|
-
.text(function(d) { return d;});
|
182
|
-
|
183
|
-
}
|
184
|
-
|
185
|
-
function hide_years() {
|
186
|
-
var years = vis.selectAll(".years").remove();
|
187
|
-
}
|
188
|
-
|
189
|
-
|
190
|
-
function show_details(data, i, element) {
|
191
|
-
d3.select(element).attr("stroke", "black");
|
192
|
-
var content = "<h3>" + data.name + "</h3>";
|
193
|
-
content +="<span class=\"name\">Visits:</span><span class=\"value\"> " + data.visits + "</span><br/>";
|
194
|
-
content +="<span class=\"name\">Calls:</span><span class=\"value\"> " + data.calls + "</span><br/>";
|
195
|
-
content +="<span class=\"name\">Leads:</span><span class=\"value\"> " + data.leads + "</span><br/>";
|
196
|
-
|
197
|
-
tooltip.showTooltip(content, d3.event);
|
198
|
-
}
|
199
|
-
|
200
|
-
function hide_details(data, i, element) {
|
201
|
-
d3.select(element).attr("stroke", function(d) { return d3.rgb(d.color).darker();} );
|
202
|
-
tooltip.hideTooltip();
|
203
|
-
}
|
204
|
-
|
205
|
-
var my_mod = {};
|
206
|
-
my_mod.init = function (_data, type, deltaWidthParam,divId) {
|
207
|
-
custom_chart(_data, type, divId);
|
208
|
-
find_unique_elements(_data, type, deltaWidthParam);
|
209
|
-
start();
|
210
|
-
};
|
211
|
-
|
212
|
-
my_mod.display_all = display_group_all;
|
213
|
-
my_mod.display_year = display_by_year;
|
214
|
-
my_mod.toggle_view = function(view_type, type) {
|
215
|
-
if (view_type == 'year') {
|
216
|
-
display_by_year(type);
|
217
|
-
} else {
|
218
|
-
display_group_all();
|
219
|
-
}
|
220
|
-
};
|
221
|
-
|
222
|
-
return my_mod;
|
223
|
-
})(d3, CustomTooltip
|
224
|
-
);
|
@@ -1 +0,0 @@
|
|
1
|
-
//= require_tree ./launchpad/
|