tjadmin 0.0.3 → 0.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. checksums.yaml +4 -4
  2. data/lib/tjadmin/version.rb +1 -1
  3. data/vendor/assets/font/DXI1ORHCpsQm3Vp6mXoaTXhCUOGz7vYGh680lGh-uXM.woff +0 -0
  4. data/vendor/assets/font/FontAwesome.otf +0 -0
  5. data/vendor/assets/font/cJZKeOuBrn4kERxqtaUH3T8E0i7KZn-EPnyo3HZu7kw.woff +0 -0
  6. data/vendor/assets/font/fontawesome-webfont.eot +0 -0
  7. data/vendor/assets/font/fontawesome-webfont.svg +399 -0
  8. data/vendor/assets/font/fontawesome-webfont.ttf +0 -0
  9. data/vendor/assets/font/fontawesome-webfont.woff +0 -0
  10. data/vendor/assets/javascripts/tjadmin/ace-elements.js +866 -0
  11. data/vendor/assets/javascripts/tjadmin/ace-extra.js +374 -0
  12. data/vendor/assets/javascripts/tjadmin/ace.js +310 -0
  13. data/vendor/assets/javascripts/tjadmin/additional-methods.js +617 -0
  14. data/vendor/assets/javascripts/tjadmin/bootbox.js +660 -0
  15. data/vendor/assets/javascripts/tjadmin/bootstrap-colorpicker.js +540 -0
  16. data/vendor/assets/javascripts/tjadmin/bootstrap-tag.js +206 -0
  17. data/vendor/assets/javascripts/tjadmin/bootstrap-wysiwyg.js +206 -0
  18. data/vendor/assets/javascripts/tjadmin/bootstrap.js +2280 -0
  19. data/vendor/assets/javascripts/tjadmin/chosen.jquery.js +1166 -0
  20. data/vendor/assets/javascripts/tjadmin/date-time/bootstrap-datepicker.js +1016 -0
  21. data/vendor/assets/javascripts/tjadmin/date-time/bootstrap-timepicker.js +888 -0
  22. data/vendor/assets/javascripts/tjadmin/date-time/daterangepicker.js +854 -0
  23. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.bg.js +14 -0
  24. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.ca.js +14 -0
  25. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.cs.js +15 -0
  26. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.da.js +14 -0
  27. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.de.js +16 -0
  28. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.el.js +13 -0
  29. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.es.js +14 -0
  30. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.fi.js +14 -0
  31. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.fr.js +16 -0
  32. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.he.js +15 -0
  33. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.hr.js +13 -0
  34. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.hu.js +16 -0
  35. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.id.js +13 -0
  36. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.is.js +14 -0
  37. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.it.js +16 -0
  38. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.ja.js +15 -0
  39. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.kr.js +13 -0
  40. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.lt.js +16 -0
  41. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.lv.js +16 -0
  42. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.ms.js +14 -0
  43. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.nb.js +14 -0
  44. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.nl.js +14 -0
  45. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.pl.js +15 -0
  46. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.pt-BR.js +14 -0
  47. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.pt.js +14 -0
  48. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.ro.js +15 -0
  49. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.rs-latin.js +14 -0
  50. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.rs.js +14 -0
  51. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.ru.js +14 -0
  52. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.sk.js +15 -0
  53. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.sl.js +14 -0
  54. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.sv.js +14 -0
  55. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.sw.js +15 -0
  56. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.th.js +14 -0
  57. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.tr.js +15 -0
  58. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.uk.js +14 -0
  59. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.zh-CN.js +14 -0
  60. data/vendor/assets/javascripts/tjadmin/date-time/locales/bootstrap-datepicker.zh-TW.js +13 -0
  61. data/vendor/assets/javascripts/tjadmin/date-time/moment.js +1400 -0
  62. data/vendor/assets/javascripts/tjadmin/excanvas.js +1428 -0
  63. data/vendor/assets/javascripts/tjadmin/flot/jquery.flot.js +3061 -0
  64. data/vendor/assets/javascripts/tjadmin/flot/jquery.flot.pie.js +817 -0
  65. data/vendor/assets/javascripts/tjadmin/flot/jquery.flot.resize.js +60 -0
  66. data/vendor/assets/javascripts/tjadmin/fuelux/data/fuelux.tree-sampledata.js +174 -0
  67. data/vendor/assets/javascripts/tjadmin/fuelux/fuelux.spinner.js +201 -0
  68. data/vendor/assets/javascripts/tjadmin/fuelux/fuelux.tree.js +173 -0
  69. data/vendor/assets/javascripts/tjadmin/fuelux/fuelux.wizard.js +172 -0
  70. data/vendor/assets/javascripts/tjadmin/fullcalendar.js +5973 -0
  71. data/vendor/assets/javascripts/tjadmin/jquery-1.10.2.js +9789 -0
  72. data/vendor/assets/javascripts/tjadmin/jquery-2.0.3.js +8829 -0
  73. data/vendor/assets/javascripts/tjadmin/jquery-ui-1.10.3.custom.js +5423 -0
  74. data/vendor/assets/javascripts/tjadmin/jquery.autosize.js +242 -0
  75. data/vendor/assets/javascripts/tjadmin/jquery.colorbox.js +1063 -0
  76. data/vendor/assets/javascripts/tjadmin/jquery.dataTables.js +12099 -0
  77. data/vendor/assets/javascripts/tjadmin/jquery.easy-pie-chart.js +200 -0
  78. data/vendor/assets/javascripts/tjadmin/jquery.gritter.js +418 -0
  79. data/vendor/assets/javascripts/tjadmin/jquery.hotkeys.js +113 -0
  80. data/vendor/assets/javascripts/tjadmin/jquery.inputlimiter.1.3.1.js +172 -0
  81. data/vendor/assets/javascripts/tjadmin/jquery.knob.js +656 -0
  82. data/vendor/assets/javascripts/tjadmin/jquery.maskedinput.js +338 -0
  83. data/vendor/assets/javascripts/tjadmin/jquery.mobile.custom.js +1081 -0
  84. data/vendor/assets/javascripts/tjadmin/jquery.slimscroll.js +448 -0
  85. data/vendor/assets/javascripts/tjadmin/jquery.sparkline.js +3054 -0
  86. data/vendor/assets/javascripts/tjadmin/jquery.ui.touch-punch.js +160 -0
  87. data/vendor/assets/javascripts/tjadmin/jquery.validate.js +1231 -0
  88. data/vendor/assets/javascripts/tjadmin/markdown/bootstrap-markdown.js +993 -0
  89. data/vendor/assets/javascripts/tjadmin/markdown/markdown.js +1616 -0
  90. data/vendor/assets/javascripts/tjadmin/markdown/to-markdown.js +184 -0
  91. data/vendor/assets/javascripts/tjadmin/select2.js +3168 -0
  92. data/vendor/assets/javascripts/tjadmin/spin.js +349 -0
  93. data/vendor/assets/javascripts/tjadmin/x-editable/ace-editable.js +368 -0
  94. data/vendor/assets/javascripts/tjadmin/x-editable/bootstrap-editable.js +6827 -0
  95. data/vendor/assets/javascripts/tjadmin.js +5 -0
  96. data/vendor/assets/stylesheets/tjadmin/ace-fonts.css.scss +13 -0
  97. data/vendor/assets/stylesheets/tjadmin/ace-ie.css +293 -0
  98. data/vendor/assets/stylesheets/tjadmin/ace-responsive.css +1113 -0
  99. data/vendor/assets/stylesheets/tjadmin/ace-skins.css +1301 -0
  100. data/vendor/assets/stylesheets/tjadmin/ace.css +14701 -0
  101. data/vendor/assets/stylesheets/tjadmin/bootstrap-responsive.css +1109 -0
  102. data/vendor/assets/stylesheets/tjadmin/bootstrap.css +6167 -0
  103. data/vendor/assets/stylesheets/tjadmin/chosen.css +430 -0
  104. data/vendor/assets/stylesheets/tjadmin/font-awesome-ie7.css +1203 -0
  105. data/vendor/assets/stylesheets/tjadmin/font-awesome.css +1479 -0
  106. data/vendor/assets/stylesheets/tjadmin/jquery-ui-1.10.3.custom.css +223 -0
  107. data/vendor/assets/stylesheets/tjadmin.css +9 -0
  108. metadata +106 -1
@@ -0,0 +1,60 @@
1
+ /* Flot plugin for automatically redrawing plots as the placeholder resizes.
2
+
3
+ Copyright (c) 2007-2013 IOLA and Ole Laursen.
4
+ Licensed under the MIT license.
5
+
6
+ It works by listening for changes on the placeholder div (through the jQuery
7
+ resize event plugin) - if the size changes, it will redraw the plot.
8
+
9
+ There are no options. If you need to disable the plugin for some plots, you
10
+ can just fix the size of their placeholders.
11
+
12
+ */
13
+
14
+ /* Inline dependency:
15
+ * jQuery resize event - v1.1 - 3/14/2010
16
+ * http://benalman.com/projects/jquery-resize-plugin/
17
+ *
18
+ * Copyright (c) 2010 "Cowboy" Ben Alman
19
+ * Dual licensed under the MIT and GPL licenses.
20
+ * http://benalman.com/about/license/
21
+ */
22
+
23
+ (function($,h,c){var a=$([]),e=$.resize=$.extend($.resize,{}),i,k="setTimeout",j="resize",d=j+"-special-event",b="delay",f="throttleWindow";e[b]=250;e[f]=true;$.event.special[j]={setup:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.add(l);$.data(this,d,{w:l.width(),h:l.height()});if(a.length===1){g()}},teardown:function(){if(!e[f]&&this[k]){return false}var l=$(this);a=a.not(l);l.removeData(d);if(!a.length){clearTimeout(i)}},add:function(l){if(!e[f]&&this[k]){return false}var n;function m(s,o,p){var q=$(this),r=$.data(this,d);r.w=o!==c?o:q.width();r.h=p!==c?p:q.height();n.apply(this,arguments)}if($.isFunction(l)){n=l;return m}else{n=l.handler;l.handler=m}}};function g(){i=h[k](function(){a.each(function(){var n=$(this),m=n.width(),l=n.height(),o=$.data(this,d);if(m!==o.w||l!==o.h){n.trigger(j,[o.w=m,o.h=l])}});g()},e[b])}})(jQuery,this);
24
+
25
+ (function ($) {
26
+ var options = { }; // no options
27
+
28
+ function init(plot) {
29
+ function onResize() {
30
+ var placeholder = plot.getPlaceholder();
31
+
32
+ // somebody might have hidden us and we can't plot
33
+ // when we don't have the dimensions
34
+ if (placeholder.width() == 0 || placeholder.height() == 0)
35
+ return;
36
+
37
+ plot.resize();
38
+ plot.setupGrid();
39
+ plot.draw();
40
+ }
41
+
42
+ function bindEvents(plot, eventHolder) {
43
+ plot.getPlaceholder().resize(onResize);
44
+ }
45
+
46
+ function shutdown(plot, eventHolder) {
47
+ plot.getPlaceholder().unbind("resize", onResize);
48
+ }
49
+
50
+ plot.hooks.bindEvents.push(bindEvents);
51
+ plot.hooks.shutdown.push(shutdown);
52
+ }
53
+
54
+ $.plot.plugins.push({
55
+ init: init,
56
+ options: options,
57
+ name: 'resize',
58
+ version: '1.0'
59
+ });
60
+ })(jQuery);
@@ -0,0 +1,174 @@
1
+ var DataSourceTree = function(options) {
2
+ this._data = options.data;
3
+ this._delay = options.delay;
4
+ }
5
+
6
+ DataSourceTree.prototype.data = function(options, callback) {
7
+ var self = this;
8
+ var $data = null;
9
+
10
+ if(!("name" in options) && !("type" in options)){
11
+ $data = this._data;//the root tree
12
+ callback({ data: $data });
13
+ return;
14
+ }
15
+ else if("type" in options && options.type == "folder") {
16
+ if("additionalParameters" in options && "children" in options.additionalParameters)
17
+ $data = options.additionalParameters.children;
18
+ else $data = {}//no data
19
+ }
20
+
21
+ if($data != null)//this setTimeout is only for mimicking some random delay
22
+ setTimeout(function(){callback({ data: $data });} , parseInt(Math.random() * 500) + 200);
23
+
24
+ //you can retrieve your data from a server using ajax call
25
+ };
26
+
27
+ var tree_data = {
28
+ 'for-sale' : {name: 'For Sale', type: 'folder'} ,
29
+ 'vehicles' : {name: 'Vehicles', type: 'folder'} ,
30
+ 'rentals' : {name: 'Rentals', type: 'folder'} ,
31
+ 'real-estate' : {name: 'Real Estate', type: 'folder'} ,
32
+ 'pets' : {name: 'Pets', type: 'folder'} ,
33
+ 'tickets' : {name: 'Tickets', type: 'item'} ,
34
+ 'services' : {name: 'Services', type: 'item'} ,
35
+ 'personals' : {name: 'Personals', type: 'item'}
36
+ }
37
+ tree_data['for-sale']['additionalParameters'] = {
38
+ 'children' : {
39
+ 'appliances' : {name: 'Appliances', type: 'item'},
40
+ 'arts-crafts' : {name: 'Arts & Crafts', type: 'item'},
41
+ 'clothing' : {name: 'Clothing', type: 'item'},
42
+ 'computers' : {name: 'Computers', type: 'item'},
43
+ 'jewelry' : {name: 'Jewelry', type: 'item'},
44
+ 'office-business' : {name: 'Office & Business', type: 'item'},
45
+ 'sports-fitness' : {name: 'Sports & Fitness', type: 'item'}
46
+ }
47
+ }
48
+ tree_data['vehicles']['additionalParameters'] = {
49
+ 'children' : {
50
+ 'cars' : {name: 'Cars', type: 'folder'},
51
+ 'motorcycles' : {name: 'Motorcycles', type: 'item'},
52
+ 'boats' : {name: 'Boats', type: 'item'}
53
+ }
54
+ }
55
+ tree_data['vehicles']['additionalParameters']['children']['cars']['additionalParameters'] = {
56
+ 'children' : {
57
+ 'classics' : {name: 'Classics', type: 'item'},
58
+ 'convertibles' : {name: 'Convertibles', type: 'item'},
59
+ 'coupes' : {name: 'Coupes', type: 'item'},
60
+ 'hatchbacks' : {name: 'Hatchbacks', type: 'item'},
61
+ 'hybrids' : {name: 'Hybrids', type: 'item'},
62
+ 'suvs' : {name: 'SUVs', type: 'item'},
63
+ 'sedans' : {name: 'Sedans', type: 'item'},
64
+ 'trucks' : {name: 'Trucks', type: 'item'}
65
+ }
66
+ }
67
+
68
+ tree_data['rentals']['additionalParameters'] = {
69
+ 'children' : {
70
+ 'apartments-rentals' : {name: 'Apartments', type: 'item'},
71
+ 'office-space-rentals' : {name: 'Office Space', type: 'item'},
72
+ 'vacation-rentals' : {name: 'Vacation Rentals', type: 'item'}
73
+ }
74
+ }
75
+ tree_data['real-estate']['additionalParameters'] = {
76
+ 'children' : {
77
+ 'apartments' : {name: 'Apartments', type: 'item'},
78
+ 'villas' : {name: 'Villas', type: 'item'},
79
+ 'plots' : {name: 'Plots', type: 'item'}
80
+ }
81
+ }
82
+ tree_data['pets']['additionalParameters'] = {
83
+ 'children' : {
84
+ 'cats' : {name: 'Cats', type: 'item'},
85
+ 'dogs' : {name: 'Dogs', type: 'item'},
86
+ 'horses' : {name: 'Horses', type: 'item'},
87
+ 'reptiles' : {name: 'Reptiles', type: 'item'}
88
+ }
89
+ }
90
+
91
+ var treeDataSource = new DataSourceTree({data: tree_data});
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+ var tree_data_2 = {
104
+ 'pictures' : {name: 'Pictures', type: 'folder'} ,
105
+ 'music' : {name: 'Music', type: 'folder'} ,
106
+ 'video' : {name: 'Video', type: 'folder'} ,
107
+ 'documents' : {name: 'Documents', type: 'folder'} ,
108
+ 'backup' : {name: 'Backup', type: 'folder'} ,
109
+ 'readme' : {name: '<img src="'+$assets+'/icons/txt.png" /> ReadMe.txt', type: 'item'},
110
+ 'manual' : {name: '<img src="'+$assets+'/icons/html.png" /> Manual.html', type: 'item'}
111
+ }
112
+ tree_data_2['music']['additionalParameters'] = {
113
+ 'children' : [
114
+ {name: '<img src="'+$assets+'/icons/ogg.png" /> song1.ogg', type: 'item'},
115
+ {name: '<img src="'+$assets+'/icons/ogg.png" /> song2.ogg', type: 'item'},
116
+ {name: '<img src="'+$assets+'/icons/ogg.png" /> song3.ogg', type: 'item'},
117
+ {name: '<img src="'+$assets+'/icons/ogg.png" /> song4.ogg', type: 'item'},
118
+ {name: '<img src="'+$assets+'/icons/ogg.png" /> song5.ogg', type: 'item'}
119
+ ]
120
+ }
121
+ tree_data_2['video']['additionalParameters'] = {
122
+ 'children' : [
123
+ {name: '<img src="'+$assets+'/icons/divx.png" /> movie1.avi', type: 'item'},
124
+ {name: '<img src="'+$assets+'/icons/divx.png" /> movie2.avi', type: 'item'},
125
+ {name: '<img src="'+$assets+'/icons/divx.png" /> movie3.avi', type: 'item'},
126
+ {name: '<img src="'+$assets+'/icons/divx.png" /> movie4.avi', type: 'item'},
127
+ {name: '<img src="'+$assets+'/icons/divx.png" /> movie5.avi', type: 'item'}
128
+ ]
129
+ }
130
+ tree_data_2['pictures']['additionalParameters'] = {
131
+ 'children' : {
132
+ 'wallpapers' : {name: 'Wallpapers', type: 'folder'},
133
+ 'camera' : {name: 'Camera', type: 'folder'}
134
+ }
135
+ }
136
+ tree_data_2['pictures']['additionalParameters']['children']['wallpapers']['additionalParameters'] = {
137
+ 'children' : [
138
+ {name: '<img src="'+$assets+'/icons/jpg.png" /> wallpaper1.jpg', type: 'item'},
139
+ {name: '<img src="'+$assets+'/icons/jpg.png" /> wallpaper2.jpg', type: 'item'},
140
+ {name: '<img src="'+$assets+'/icons/jpg.png" /> wallpaper3.jpg', type: 'item'},
141
+ {name: '<img src="'+$assets+'/icons/jpg.png" /> wallpaper4.jpg', type: 'item'}
142
+ ]
143
+ }
144
+ tree_data_2['pictures']['additionalParameters']['children']['camera']['additionalParameters'] = {
145
+ 'children' : [
146
+ {name: '<img src="'+$assets+'/icons/jpg.png" /> photo1.jpg', type: 'item'},
147
+ {name: '<img src="'+$assets+'/icons/jpg.png" /> photo2.jpg', type: 'item'},
148
+ {name: '<img src="'+$assets+'/icons/jpg.png" /> photo3.jpg', type: 'item'},
149
+ {name: '<img src="'+$assets+'/icons/jpg.png" /> photo4.jpg', type: 'item'},
150
+ {name: '<img src="'+$assets+'/icons/jpg.png" /> photo5.jpg', type: 'item'},
151
+ {name: '<img src="'+$assets+'/icons/jpg.png" /> photo6.jpg', type: 'item'}
152
+ ]
153
+ }
154
+
155
+
156
+ tree_data_2['documents']['additionalParameters'] = {
157
+ 'children' : [
158
+ {name: '<img src="'+$assets+'/icons/pdf.png" /> document1.pdf', type: 'item'},
159
+ {name: '<img src="'+$assets+'/icons/doc.png" /> document2.doc', type: 'item'},
160
+ {name: '<img src="'+$assets+'/icons/doc.png" /> document3.doc', type: 'item'},
161
+ {name: '<img src="'+$assets+'/icons/pdf.png" /> document4.pdf', type: 'item'},
162
+ {name: '<img src="'+$assets+'/icons/doc.png" /> document5.doc', type: 'item'}
163
+ ]
164
+ }
165
+
166
+ tree_data_2['backup']['additionalParameters'] = {
167
+ 'children' : [
168
+ {name: '<img src="'+$assets+'/icons/zip.png" /> backup1.zip', type: 'item'},
169
+ {name: '<img src="'+$assets+'/icons/zip.png" /> backup2.zip', type: 'item'},
170
+ {name: '<img src="'+$assets+'/icons/zip.png" /> backup3.zip', type: 'item'},
171
+ {name: '<img src="'+$assets+'/icons/zip.png" /> backup4.zip', type: 'item'}
172
+ ]
173
+ }
174
+ var treeDataSource2 = new DataSourceTree({data: tree_data_2});
@@ -0,0 +1,201 @@
1
+ /*
2
+ * Fuel UX Spinner
3
+ * https://github.com/ExactTarget/fuelux
4
+ *
5
+ * Copyright (c) 2012 ExactTarget
6
+ * Licensed under the MIT license.
7
+ */
8
+
9
+ (function($ , undefined) {
10
+
11
+ //var $ = require('jquery');
12
+
13
+
14
+ // SPINNER CONSTRUCTOR AND PROTOTYPE
15
+
16
+ var Spinner = function (element, options) {
17
+ this.$element = $(element);
18
+ this.options = $.extend({}, $.fn.spinner.defaults, options);
19
+ this.$input = this.$element.find('.spinner-input');
20
+ this.$element.on('keyup', this.$input, $.proxy(this.change, this));
21
+
22
+ if (this.options.hold) {
23
+ this.$element.on('mousedown', '.spinner-up', $.proxy(function() { this.startSpin(true); } , this));
24
+ this.$element.on('mouseup', '.spinner-up, .spinner-down', $.proxy(this.stopSpin, this));
25
+ this.$element.on('mouseout', '.spinner-up, .spinner-down', $.proxy(this.stopSpin, this));
26
+ this.$element.on('mousedown', '.spinner-down', $.proxy(function() {this.startSpin(false);} , this));
27
+ } else {
28
+ this.$element.on('click', '.spinner-up', $.proxy(function() { this.step(true); } , this));
29
+ this.$element.on('click', '.spinner-down', $.proxy(function() { this.step(false); }, this));
30
+ }
31
+
32
+ this.switches = {
33
+ count: 1,
34
+ enabled: true
35
+ };
36
+
37
+ if (this.options.speed === 'medium') {
38
+ this.switches.speed = 300;
39
+ } else if (this.options.speed === 'fast') {
40
+ this.switches.speed = 100;
41
+ } else {
42
+ this.switches.speed = 500;
43
+ }
44
+
45
+ this.lastValue = null;
46
+
47
+ this.render();
48
+
49
+ if (this.options.disabled) {
50
+ this.disable();
51
+ }
52
+ };
53
+
54
+ Spinner.prototype = {
55
+ constructor: Spinner,
56
+
57
+ render: function () {
58
+ this.$input.val(this.options.value);
59
+ this.$input.attr('maxlength',(this.options.max + '').split('').length);
60
+ },
61
+
62
+ change: function () {
63
+ var newVal = this.$input.val();
64
+
65
+ if(newVal/1){
66
+ this.options.value = newVal/1;
67
+ }else{
68
+ newVal = newVal.replace(/[^0-9]/g,'');
69
+ this.$input.val(newVal);
70
+ this.options.value = newVal/1;
71
+ }
72
+
73
+ this.triggerChangedEvent();
74
+ },
75
+
76
+ stopSpin: function () {
77
+ clearTimeout(this.switches.timeout);
78
+ this.switches.count = 1;
79
+ this.triggerChangedEvent();
80
+ },
81
+
82
+ triggerChangedEvent: function () {
83
+ var currentValue = this.value();
84
+ if (currentValue === this.lastValue) return;
85
+
86
+ this.lastValue = currentValue;
87
+
88
+ // Primary changed event
89
+ this.$element.trigger('changed', currentValue);
90
+
91
+ // Undocumented, kept for backward compatibility
92
+ this.$element.trigger('change');
93
+ },
94
+
95
+ startSpin: function (type) {
96
+
97
+ if (!this.options.disabled) {
98
+ var divisor = this.switches.count;
99
+
100
+ if (divisor === 1) {
101
+ this.step(type);
102
+ divisor = 1;
103
+ } else if (divisor < 3){
104
+ divisor = 1.5;
105
+ } else if (divisor < 8){
106
+ divisor = 2.5;
107
+ } else {
108
+ divisor = 4;
109
+ }
110
+
111
+ this.switches.timeout = setTimeout($.proxy(function() {this.iterator(type);} ,this),this.switches.speed/divisor);
112
+ this.switches.count++;
113
+ }
114
+ },
115
+
116
+ iterator: function (type) {
117
+ this.step(type);
118
+ this.startSpin(type);
119
+ },
120
+
121
+ step: function (dir) {
122
+ var curValue = this.options.value;
123
+ var limValue = dir ? this.options.max : this.options.min;
124
+
125
+ if ((dir ? curValue < limValue : curValue > limValue)) {
126
+ var newVal = curValue + (dir ? 1 : -1) * this.options.step;
127
+
128
+ if (dir ? newVal > limValue : newVal < limValue) {
129
+ this.value(limValue);
130
+ } else {
131
+ this.value(newVal);
132
+ }
133
+ }
134
+ },
135
+
136
+ value: function (value) {
137
+ if (!isNaN(parseFloat(value)) && isFinite(value)) {
138
+ value = parseFloat(value);
139
+ this.options.value = value;
140
+ this.$input.val(value);
141
+ return this;
142
+ } else {
143
+ return this.options.value;
144
+ }
145
+ },
146
+
147
+ disable: function () {
148
+ this.options.disabled = true;
149
+ this.$input.attr('disabled','');
150
+ this.$element.find('button').addClass('disabled');
151
+ },
152
+
153
+ enable: function () {
154
+ this.options.disabled = false;
155
+ this.$input.removeAttr("disabled");
156
+ this.$element.find('button').removeClass('disabled');
157
+ }
158
+ };
159
+
160
+
161
+ // SPINNER PLUGIN DEFINITION
162
+
163
+ $.fn.spinner = function (option,value) {
164
+ var methodReturn;
165
+
166
+ var $set = this.each(function () {
167
+ var $this = $(this);
168
+ var data = $this.data('spinner');
169
+ var options = typeof option === 'object' && option;
170
+
171
+ if (!data) $this.data('spinner', (data = new Spinner(this, options)));
172
+ if (typeof option === 'string') methodReturn = data[option](value);
173
+ });
174
+
175
+ return (methodReturn === undefined) ? $set : methodReturn;
176
+ };
177
+
178
+ $.fn.spinner.defaults = {
179
+ value: 1,
180
+ min: 1,
181
+ max: 999,
182
+ step: 1,
183
+ hold: true,
184
+ speed: 'medium',
185
+ disabled: false
186
+ };
187
+
188
+ $.fn.spinner.Constructor = Spinner;
189
+
190
+
191
+ // SPINNER DATA-API
192
+
193
+ $(function () {
194
+ $('body').on('mousedown.spinner.data-api', '.spinner', function (e) {
195
+ var $this = $(this);
196
+ if ($this.data('spinner')) return;
197
+ $this.spinner($this.data());
198
+ });
199
+ });
200
+
201
+ })(window.jQuery);
@@ -0,0 +1,173 @@
1
+ /*
2
+ * Fuel UX Tree
3
+ * https://github.com/ExactTarget/fuelux
4
+ *
5
+ * Copyright (c) 2012 ExactTarget
6
+ * Licensed under the MIT license.
7
+ */
8
+
9
+ (function($ , undefined) {
10
+
11
+ //var $ = require('jquery');
12
+
13
+
14
+ // TREE CONSTRUCTOR AND PROTOTYPE
15
+
16
+ var Tree = function (element, options) {
17
+ this.$element = $(element);
18
+ this.options = $.extend({}, $.fn.tree.defaults, options);
19
+
20
+ this.$element.on('click', '.tree-item', $.proxy( function(ev) { this.selectItem(ev.currentTarget); } ,this));
21
+ this.$element.on('click', '.tree-folder-header', $.proxy( function(ev) { this.selectFolder(ev.currentTarget); }, this));
22
+
23
+ this.render();
24
+ };
25
+
26
+ Tree.prototype = {
27
+ constructor: Tree,
28
+
29
+ render: function () {
30
+ this.populate(this.$element);
31
+ },
32
+
33
+ populate: function ($el) {
34
+ var self = this;
35
+ var loader = $el.parent().find('.tree-loader:eq(0)');
36
+
37
+ loader.show();
38
+ this.options.dataSource.data($el.data(), function (items) {
39
+ loader.hide();
40
+
41
+ $.each( items.data, function(index, value) {
42
+ var $entity;
43
+
44
+ if(value.type === "folder") {
45
+ $entity = self.$element.find('.tree-folder:eq(0)').clone().show();
46
+ $entity.find('.tree-folder-name').html(value.name);
47
+ $entity.find('.tree-loader').html(self.options.loadingHTML);
48
+ var header = $entity.find('.tree-folder-header');
49
+ header.data(value);
50
+ if('icon-class' in value)
51
+ header.find('[class*="icon-"]').addClass(value['icon-class']);
52
+ } else if (value.type === "item") {
53
+ $entity = self.$element.find('.tree-item:eq(0)').clone().show();
54
+ $entity.find('.tree-item-name').html(value.name);
55
+ $entity.data(value);
56
+ }
57
+
58
+ if($el.hasClass('tree-folder-header')) {
59
+ $el.parent().find('.tree-folder-content:eq(0)').append($entity);
60
+ } else {
61
+ $el.append($entity);
62
+ }
63
+ });
64
+
65
+ self.$element.trigger('loaded');
66
+ });
67
+ },
68
+
69
+ selectItem: function (el) {
70
+ if(this.options['selectable'] == false) return;
71
+ var $el = $(el);
72
+ var $all = this.$element.find('.tree-selected');
73
+ var data = [];
74
+
75
+ if (this.options.multiSelect) {
76
+ $.each($all, function(index, value) {
77
+ var $val = $(value);
78
+ if($val[0] !== $el[0]) {
79
+ data.push( $(value).data() );
80
+ }
81
+ });
82
+ } else if ($all[0] !== $el[0]) {
83
+ $all.removeClass('tree-selected')
84
+ .find('i').removeClass(this.options['selected-icon']).addClass(this.options['unselected-icon']);
85
+ data.push($el.data());
86
+ }
87
+
88
+ if($el.hasClass('tree-selected')) {
89
+ $el.removeClass('tree-selected');
90
+ $el.find('i').removeClass(this.options['selected-icon']).addClass(this.options['unselected-icon']);
91
+ } else {
92
+ $el.addClass ('tree-selected');
93
+ $el.find('i').removeClass(this.options['unselected-icon']).addClass(this.options['selected-icon']);
94
+ if (this.options.multiSelect) {
95
+ data.push( $el.data() );
96
+ }
97
+ }
98
+
99
+ if(data.length) {
100
+ this.$element.trigger('selected', {info: data});
101
+ }
102
+
103
+ },
104
+
105
+ selectFolder: function (el) {
106
+ var $el = $(el);
107
+ var $par = $el.parent();
108
+
109
+ if($el.find('.'+this.options['close-icon']).length) {
110
+ if ($par.find('.tree-folder-content').children().length) {
111
+ $par.find('.tree-folder-content:eq(0)').show();
112
+ } else {
113
+ this.populate( $el );
114
+ }
115
+
116
+ $par.find('.'+this.options['close-icon']+':eq(0)')
117
+ .removeClass(this.options['close-icon'])
118
+ .addClass(this.options['open-icon']);
119
+
120
+ this.$element.trigger('opened', $el.data());
121
+ } else {
122
+ if(this.options.cacheItems) {
123
+ $par.find('.tree-folder-content:eq(0)').hide();
124
+ } else {
125
+ $par.find('.tree-folder-content:eq(0)').empty();
126
+ }
127
+
128
+ $par.find('.'+this.options['open-icon']+':eq(0)')
129
+ .removeClass(this.options['open-icon'])
130
+ .addClass(this.options['close-icon']);
131
+
132
+ this.$element.trigger('closed', $el.data());
133
+ }
134
+ },
135
+
136
+ selectedItems: function () {
137
+ var $sel = this.$element.find('.tree-selected');
138
+ var data = [];
139
+
140
+ $.each($sel, function (index, value) {
141
+ data.push($(value).data());
142
+ });
143
+ return data;
144
+ }
145
+ };
146
+
147
+
148
+ // TREE PLUGIN DEFINITION
149
+
150
+ $.fn.tree = function (option, value) {
151
+ var methodReturn;
152
+
153
+ var $set = this.each(function () {
154
+ var $this = $(this);
155
+ var data = $this.data('tree');
156
+ var options = typeof option === 'object' && option;
157
+
158
+ if (!data) $this.data('tree', (data = new Tree(this, options)));
159
+ if (typeof option === 'string') methodReturn = data[option](value);
160
+ });
161
+
162
+ return (methodReturn === undefined) ? $set : methodReturn;
163
+ };
164
+
165
+ $.fn.tree.defaults = {
166
+ multiSelect: false,
167
+ loadingHTML: '<div>Loading...</div>',
168
+ cacheItems: true
169
+ };
170
+
171
+ $.fn.tree.Constructor = Tree;
172
+
173
+ })(window.jQuery);