jquery_cheats 4.1.3 → 4.2.0

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/README.md CHANGED
@@ -71,6 +71,4 @@ string such as(item=4&item2=3)
71
71
 
72
72
  ##Graphing
73
73
 
74
- JQuery Cheats comes packaged with JQueryPlots as of 2.1.0, but some functions may not be available until later dates.
75
-
76
- See the wiki to learn how to make a bar chart, or pie chart.
74
+ JQuery Cheats works in conjunction with [plotSimple](http://github.com/plowdawg/plotSimple) to provide you with a graphing interface.
@@ -1,144 +1,229 @@
1
1
  //*==============SPECIAL THANKS TO:===========
2
2
  // IX3 for his response from Stackoverflow
3
3
 
4
- $(document).ready(function(){
4
+ $(document).ready(function() {
5
5
  //the following are for AJAX requests of form objects
6
- $("select[data-onchange]").live("change",function()
7
- {
8
- $.ajax({type: "post",
9
- url: $(this).attr("data-url"),
10
- data: $(this).serialize(),
11
- success: function(data){eval(data);},
12
- dataType: "script"});
13
- });
14
- $('input[type="radio"][data-onclick]').live("change", function(){
6
+ $("select[data-onchange]").live("change", function() {
7
+ $.ajax({
8
+ type : "post",
9
+ url : $(this).attr("data-url"),
10
+ data : $(this).serialize(),
11
+ success : function(data) {
12
+ eval(data);
13
+ },
14
+ dataType : "script"
15
+ });
16
+ });
17
+ $('input[type="radio"][data-onclick]').live("change", function() {
15
18
  data = $(this).serialze();
16
- if($(this).attr("data-params"))
17
- {
18
- data += "&"+$(this).attr("data-params");
19
+ if($(this).attr("data-params")) {
20
+ data += "&" + $(this).attr("data-params");
19
21
  }
20
22
  $.ajax({
21
- type: "post",
22
- url: eval($(this).attr("data-onclick")),
23
- data: data,
24
- success: function(data){eval(data);},
25
- dataType: "script"
23
+ type : "post",
24
+ url : eval($(this).attr("data-onclick")),
25
+ data : data,
26
+ success : function(data) {
27
+ eval(data);
28
+ },
29
+ dataType : "script"
26
30
  })
27
31
  });
28
32
  //The following Load jqPlot graphs and charts
29
- $("div.piechart").each(function(){
30
- pieChart($(this).attr("id"),$(this).attr("data-xmlurl"));
33
+ $("div.piechart").each(function() {
34
+ pieChart($(this).attr("id"), $(this).attr("data-xmlurl"));
31
35
  });
32
- /*$("div.barchart").each(function(){
33
- barChart($(this).attr("id"),$(this).attr("data-xmlurl"));
34
- });*/
36
+
37
+ $("div.stackedcolumn").each(function() {
38
+ stackedColumn($(this).attr("id"), $(this).attr("data-xmlurl"))
39
+ })
35
40
  //IX3 CONTRIUBTUITION
36
- updateCharts();
41
+ updateBarCharts();
37
42
  //next function commented out because it causes issues with browser...will work on it....
38
- $("body").on("DOMSubtreeModified", function(e) {
39
- //console.log(e);
40
- updateCharts();
41
- });
42
- //CONTRIBUTION END
43
+ $("body").on("DOMSubtreeModified", function(e) {
44
+ //console.log(e);
45
+ updateBarCharts();
46
+ });
47
+ //CONTRIBUTION END
43
48
  //The following provide click-to-link capabilities in charts
44
- $("div.piechart").live('jqplotDataClick',function(ev,seriesIndex,pointIndex,data){
45
- if(data[2] != "")
46
- {
47
-
49
+ $("div.piechart").live('jqplotDataClick', function(ev, seriesIndex, pointIndex, data) {
50
+ if(data[2] != "") {
51
+
48
52
  window.location = data[2];
49
53
  }
50
54
  });
51
- $("div.barchart").live('jqplotDataClick',function(ev,seriesIndex,pointIndex,data){
52
- if(data[2] != "")
53
- {
54
- window.location = data[2];
55
+ $("div.barchart").live('jqplotDataClick', function(ev, seriesIndex, pointIndex, data) {
56
+ if(data[2] != "") {
57
+ window.location = data[2];
55
58
  }
56
59
  });
60
+ $('div.stackedcolumn').live('jqplotDataClick',
61
+ function (ev, seriesIndex, pointIndex, data) {
62
+ //loaded from a global array in loadLinks...FixMe!
63
+ window.location = links[seriesIndex];
64
+ });
57
65
  });
58
- //functions specific to barchart
59
- function updateCharts()
60
- {
61
- $("div.barchart:not([data-barchartloaded])").each(function(){
62
- $(this).attr("data-barchartloaded","1");
63
- barChart($(this).attr("id"),$(this).attr("data-xmlurl"));
64
- })
65
- }
66
- function barChart(name,xmlurl)
67
- {
68
- $.ajax({url: xmlurl,
69
- type: "get",
70
- success: function(xml){
71
- loadBGImage(name,xml);
66
+
67
+ //functions specific to a stacked column
68
+ function stackedColumn(name, xmlurl) {
69
+ $.get(xmlurl, function(xml) {
70
+ loadLinks(xml);
72
71
  establishSize(name,xml);
73
- bars = getBars(xml);
74
- pointLabels = [];
75
- for(i = 0; i < bars.length; i++)
76
- {
77
- pointLabels.push(bars[i][1]);
78
- }
79
- $.jqplot(name,[bars],{
80
- seriesColors: getSeriesColors(xml),
81
- seriesDefaults:
72
+ var s1 = [2, 6, 7, 10];
73
+ var s2 = [7, 5, 3, 4];
74
+ var s3 = [14, 9, 3, 8];
75
+ var series = loadStackedColumns(xml)
76
+ for(var i = 0; i < series.length; i++)
82
77
  {
83
- renderer: $.jqplot.BarRenderer,
84
- renderOptions:
78
+ for(var j = 0; j < series[i].length; j++)
85
79
  {
86
- fillToZero:true, barWidth: getBarWidth(xml)
80
+ $("#debug").append(series[i][j]+"|");
81
+ }
82
+ $("#debug").append("<br />");
83
+ }
84
+ $.jqplot(name,series , {
85
+ // Tell the plot to stack the bars.
86
+ stackSeries : true,
87
+ title: getTitle(xml),
88
+ captureRightClick : true,
89
+ seriesDefaults : {
90
+ renderer : $.jqplot.BarRenderer,
91
+ rendererOptions : {
92
+ // Put a 30 pixel margin between bars.
93
+ barMargin : 30,
94
+ // Highlight bars when mouse button pressed.
95
+ // Disables default highlighting on mouse over.
96
+ highlightMouseDown : true
97
+ },
98
+ pointLabels : {
99
+ show : true
100
+ }
87
101
  },
88
- pointLabels: {show: true}
89
- },
90
- series:[{pointLabels:{
91
- labels: pointLabels,
92
- }
93
- }],
94
- title:
95
- {
96
- text: getTitle(xml)
97
- },
98
- grid:
99
- {
100
- background: getBGColor(xml),
101
- gridLine: getGridLineColor(xml),
102
- borderColor: getGridBorderColor(xml)
103
- },
104
- axesDefaults:
105
- {
106
- tickRenderer: $.jqplot.CanvasAxisTickRenderer
107
- },
108
- axes:
109
- {
110
- xaxis:
111
- {
112
- renderer: $.jqplot.CategoryAxisRenderer,
113
- tickOptions:{
114
- angle: 30
102
+ axes : {
103
+ xaxis : {
104
+ renderer : $.jqplot.CategoryAxisRenderer
115
105
  },
116
- ticks: getTicks(xml),
117
- autoscale: true
106
+ yaxis : {
107
+ // Don't pad out the bottom of the data range. By default,
108
+ // axes scaled as if data extended 10% above and below the
109
+ // actual range to prevent data points right on grid boundaries.
110
+ // Don't want to do that here.
111
+ padMin : 0
112
+ }
113
+ },
114
+ legend : {
115
+ show : true,
116
+ location : 'e',
117
+ placement : 'outside'
118
118
  }
119
- }
119
+ });
120
+ });
121
+ }
122
+
123
+ function loadLinks(xml)
124
+ {
125
+ //Global, but maybe we can find a way around this later...FixMe!
126
+ links = [];
127
+ $(xml).find("series").each(function(){
128
+ links.push($(this).attr("link"));
120
129
  });
121
- return true;
122
- },
123
- error: function(xhr, status, error) {
124
- var err = eval("(" + xhr.responseText + ")");
125
- alert(err.Message);
126
- },
127
- async: false,
128
- timeout: 3000});
129
130
  }
130
- function getBars(xml)
131
+ function loadStackedColumns(xml)
131
132
  {
132
- var bars =[];
133
+ var bar = [];
134
+ var partions = [];
135
+ $(xml).find("series").each(function(){
136
+ $(this).children("partion").each(function(){
137
+ bar.push(parseInt($(this).attr("size")));
138
+ });
139
+ partions.push(bar);
140
+ bar = new Array();
141
+ });
142
+ return partions;
143
+ }
144
+ //functions specific to barchart
145
+ function updateBarCharts() {
146
+ $("div.barchart:not([data-barchartloaded])").each(function() {
147
+ $(this).attr("data-barchartloaded", "1");
148
+ barChart($(this).attr("id"), $(this).attr("data-xmlurl"));
149
+ })
150
+ }
151
+
152
+ function barChart(name, xmlurl) {
153
+ $.ajax({
154
+ url : xmlurl,
155
+ type : "get",
156
+ success : function(xml) {
157
+ loadBGImage(name, xml);
158
+ establishSize(name, xml);
159
+ bars = getBars(xml);
160
+ pointLabels = [];
161
+ for( i = 0; i < bars.length; i++) {
162
+ pointLabels.push(bars[i][1]);
163
+ }
164
+ $.jqplot(name, [bars], {
165
+ seriesColors : getSeriesColors(xml),
166
+ seriesDefaults : {
167
+ renderer : $.jqplot.BarRenderer,
168
+ renderOptions : {
169
+ fillToZero : true,
170
+ barWidth : getBarWidth(xml)
171
+ },
172
+ pointLabels : {
173
+ show : true
174
+ }
175
+ },
176
+ series : [{
177
+ pointLabels : {
178
+ labels : pointLabels,
179
+ }
180
+ }],
181
+ title : {
182
+ text : getTitle(xml)
183
+ },
184
+ grid : {
185
+ background : getBGColor(xml),
186
+ gridLine : getGridLineColor(xml),
187
+ borderColor : getGridBorderColor(xml)
188
+ },
189
+ axesDefaults : {
190
+ tickRenderer : $.jqplot.CanvasAxisTickRenderer
191
+ },
192
+ axes : {
193
+ xaxis : {
194
+ renderer : $.jqplot.CategoryAxisRenderer,
195
+ tickOptions : {
196
+ angle : 30
197
+ },
198
+ ticks : getTicks(xml),
199
+ autoscale : true
200
+ }
201
+ }
202
+ });
203
+ return true;
204
+ },
205
+ error : function(xhr, status, error) {
206
+ var err = eval("(" + xhr.responseText + ")");
207
+ alert(err.Message);
208
+ },
209
+ async : false,
210
+ timeout : 3000
211
+ });
212
+ }
213
+
214
+ function getBars(xml) {
215
+ var bars = [];
133
216
  var bar = [];
134
217
  var categoryId = 1;
135
- $(xml).find("category").each(function(){
136
- $(this).find("bar").each(function()
137
- {
218
+ $(xml).find("category").each(function() {
219
+ $(this).find("bar").each(function() {
138
220
  bar.push(categoryId);
139
221
  bar.push(parseInt($(this).attr("size")));
140
222
  var link = $(this).attr("link");
141
- if(link) bar.push(link); else bar.push("");
223
+ if(link)
224
+ bar.push(link);
225
+ else
226
+ bar.push("");
142
227
  bars.push(bar);
143
228
  bar = new Array();
144
229
  });
@@ -146,101 +231,101 @@ function getBars(xml)
146
231
  });
147
232
  return bars;
148
233
  }
149
- function getBarWidth(xml)
150
- {
234
+
235
+ function getBarWidth(xml) {
151
236
  var width = $(xml).find("render").attr("barwidth");
152
- if(!width) return null; else return width;
237
+ if(!width)
238
+ return null;
239
+ else
240
+ return width;
153
241
  }
154
- function getTicks(xml)
155
- {
242
+
243
+ function getTicks(xml) {
156
244
  var ticks = [];
157
- $(xml).find("category").each(function(){
158
- ticks.push ($(this).find("tick").attr("text"));
245
+ $(xml).find("category").each(function() {
246
+ ticks.push($(this).find("tick").attr("text"));
159
247
  });
160
248
  return ticks;
161
249
  }
250
+
162
251
  //functions specific to piechart
163
- function pieChart(name,xmlurl)
164
- {
165
- $.get(xmlurl,function(xml)
166
- {
167
- establishSize(name,xml);
168
- loadBGImage(name,xml);
169
- $.jqplot(name,[getSlices(xml)],
170
- {
171
- seriesDefaults:
172
- {
173
- renderer: $.jqplot.PieRenderer,
174
- renderOptions:
175
- {
176
- showDataLabels: true
252
+ function pieChart(name, xmlurl) {
253
+ $.get(xmlurl, function(xml) {
254
+ establishSize(name, xml);
255
+ loadBGImage(name, xml);
256
+ $.jqplot(name, [getSlices(xml)], {
257
+ seriesDefaults : {
258
+ renderer : $.jqplot.PieRenderer,
259
+ renderOptions : {
260
+ showDataLabels : true
177
261
  }
178
262
  },
179
- legend:
180
- {
181
- show: true,
182
- location: 'e'
263
+ legend : {
264
+ show : true,
265
+ location : 'e'
183
266
  }
184
267
  });
185
268
  });
186
269
  }
187
- function getSlices(xml)
188
- {
270
+
271
+ function getSlices(xml) {
189
272
  var slices = [];
190
- $(xml).find("category").each(function(){
191
- $(this).find("slice").each(function(){
192
- slice = new Array($(this).attr("name"));
193
- slice.push(parseInt($(this).attr("size")));
194
- var link = $(this).attr("link");
195
- if(link) slice.push(link); else slice.push("");
196
- slices.push(slice);
197
- });
273
+ $(xml).find("category").each(function() {
274
+ $(this).find("slice").each(function() {
275
+ slice = new Array($(this).attr("name"));
276
+ slice.push(parseInt($(this).attr("size")));
277
+ var link = $(this).attr("link");
278
+ if(link)
279
+ slice.push(link);
280
+ else
281
+ slice.push("");
282
+ slices.push(slice);
283
+ });
198
284
  });
199
285
  return slices;
200
286
  }
287
+
201
288
  //functions that can be used by all
202
- function loadBGImage(name,xml)
203
- {
204
- var bgimage="none";
205
- $(xml).find("backgroundImage").each(function()
206
- {
207
- bgimage = "url('"+$(this).text()+"')";
289
+ function loadBGImage(name, xml) {
290
+ var bgimage = "none";
291
+ $(xml).find("backgroundImage").each(function() {
292
+ bgimage = "url('" + $(this).text() + "')";
208
293
  });
209
- $("div#"+name).css("background-image",bgimage);
294
+ $("div#" + name).css("background-image", bgimage);
210
295
  }
211
- function establishSize(name,xml)
212
- {
296
+
297
+ function establishSize(name, xml) {
213
298
  var $grid = $(xml).find("grid");
214
- $("div#"+name).css("width",$grid.find("width").text());
215
- $("div#"+name).css("height",$grid.find("height").text());
299
+ $("div#" + name).css("width", $grid.find("width").text());
300
+ $("div#" + name).css("height", $grid.find("height").text());
216
301
  }
217
- function getTitle(xml)
218
- {
302
+
303
+ function getTitle(xml) {
219
304
  var title = null;
220
- $(xml).find("title").each(function(){
305
+ $(xml).find("title").each(function() {
221
306
  title = $(this).text();
222
307
  });
223
308
  return title;
224
309
  }
225
- function getBGColor(xml)
226
- {
310
+
311
+ function getBGColor(xml) {
227
312
  return $(xml).find("background").text();
228
313
  }
229
- function getGridLineColor(xml)
230
- {
314
+
315
+ function getGridLineColor(xml) {
231
316
  return $(xml).find("grid lineColor").text();
232
317
  }
233
- function getGridBorderColor(xml)
234
- {
318
+
319
+ function getGridBorderColor(xml) {
235
320
  return $(xml).find("grid borderColor").text();
236
321
  }
237
- function getSeriesColors(xml)
238
- {
322
+
323
+ function getSeriesColors(xml) {
239
324
  colors = [];
240
- $(xml).find("grid seriesColor").each(function()
241
- {
325
+ $(xml).find("grid seriesColor").each(function() {
242
326
  colors.push($(this).text());
243
327
  });
244
- if(colors.length < 1)colors.push("#0f0");
328
+ if(colors.length < 1)
329
+ colors.push("#0f0");
245
330
  return colors;
246
331
  }
@@ -2,7 +2,7 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "jquery_cheats"
5
- s.version = "4.1.3"
5
+ s.version = "4.2.0"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Travis Pessettto"]
data/lib/jquery_cheats.rb CHANGED
@@ -47,6 +47,10 @@ module JQueryCheats
47
47
  #we will have to relly on XML to get the rest of the data...
48
48
  end
49
49
 
50
+ def stackedcolumn(name,xmlurl)
51
+ html = "<div id=\"#{name}\" class=\"stackedcolumn\" data-xmlurl=\"#{xmlurl}\"></div>".html_safe
52
+ end
53
+
50
54
  def initialize
51
55
 
52
56
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jquery_cheats
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.1.3
4
+ version: 4.2.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: