PageRenderTime 88ms CodeModel.GetById 20ms RepoModel.GetById 1ms app.codeStats 0ms

/vendor/plugins/jrails/lib/generators/templates/public/javascripts/jrails.js

https://github.com/btelles/example_reporter
JavaScript | 196 lines | 155 code | 9 blank | 32 comment | 42 complexity | 11f5688e9421b4f5b80e8748fed02ddf MD5 | raw file
  1. /*
  2. *
  3. * jRails ajax extras
  4. * version 0.1
  5. * <aaron@ennerchi.com> | http://www.ennerchi.com
  6. *
  7. */
  8. (function($) {
  9. $.extend( $.ajaxSettings, { accepts: { _default: "text/javascript, text/html, application/xml, text/xml, */*" }} );
  10. })(jQuery);
  11. /*
  12. *
  13. * jRails form extras
  14. * <aaron@ennerchi.com> | http://www.ennerchi.com
  15. *
  16. */
  17. (function($) {
  18. // reset a form
  19. $.fn.reset = function() {
  20. return this.each(function() {
  21. // guard against an input with the name of 'reset'
  22. // note that IE reports the reset function as an 'object'
  23. if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType))
  24. this.reset();
  25. });
  26. };
  27. // enable a form element
  28. $.fn.enable = function() {
  29. return this.each(function() {
  30. this.disabled = false;
  31. });
  32. };
  33. // disable a form element
  34. $.fn.disable = function() {
  35. return this.each(function() {
  36. this.disabled = true;
  37. });
  38. };
  39. })(jQuery);
  40. /*
  41. *
  42. * jRails form observer plugin
  43. * version 0.2
  44. * <aaron@ennerchi.com> | http://www.ennerchi.com
  45. *
  46. */
  47. (function($) {
  48. $.extend({ // Translate field to event
  49. fieldEvent: function(el, obs) {
  50. var field = el[0] || el, e = 'change';
  51. if (field.type == 'radio' || field.type == 'checkbox') e = 'click';
  52. else if (obs && (field.type == 'text' || field.type == 'textarea' || field.type == 'password')) e = 'keyup';
  53. return e;
  54. }
  55. });
  56. $.fn.extend({ // Delayed observer for fields and forms
  57. delayedObserver: function(delay, callback){
  58. var el = $(this);
  59. if (typeof window.delayedObserverStack == 'undefined') window.delayedObserverStack = [];
  60. if (typeof window.delayedObserverCallback == 'undefined') {
  61. window.delayedObserverCallback = function(stackPos) {
  62. var observed = window.delayedObserverStack[stackPos];
  63. if (observed.timer) clearTimeout(observed.timer);
  64. observed.timer = setTimeout(function(){
  65. observed.timer = null;
  66. observed.callback(observed.obj, observed.obj.formVal());
  67. }, observed.delay * 1000);
  68. observed.oldVal = observed.obj.formVal();
  69. };
  70. }
  71. window.delayedObserverStack.push({
  72. obj: el, timer: null, delay: delay,
  73. oldVal: el.formVal(), callback: callback
  74. });
  75. var stackPos = window.delayedObserverStack.length-1;
  76. if (el[0].tagName == 'FORM') {
  77. $(':input', el).each(function(){
  78. var field = $(this);
  79. field.bind($.fieldEvent(field, delay), function(){
  80. var observed = window.delayedObserverStack[stackPos];
  81. if (observed.obj.formVal() == observed.oldVal) return;
  82. else window.delayedObserverCallback(stackPos);
  83. });
  84. });
  85. } else {
  86. el.bind($.fieldEvent(el, delay), function(){
  87. var observed = window.delayedObserverStack[stackPos];
  88. if (observed.obj.formVal() == observed.oldVal) return;
  89. else window.delayedObserverCallback(stackPos);
  90. });
  91. };
  92. },
  93. formVal: function() { // Gets form values
  94. var el = this[0];
  95. if(el.tagName == 'FORM') return this.serialize();
  96. if(el.type == 'checkbox' || el.type == 'radio') return this.filter('input:checked').val() || '';
  97. else return this.val();
  98. }
  99. });
  100. })(jQuery);
  101. /*
  102. *
  103. * jRails visual effects stubs
  104. * version 0.2
  105. * <aaron@ennerchi.com> | http://www.ennerchi.com
  106. *
  107. */
  108. (function($) {
  109. $.fn.extend({
  110. visualEffect : function(o, options) {
  111. if (options) {
  112. speed = options.duration * 1000;
  113. } else {
  114. speed = null;
  115. }
  116. e = o.replace(/\_(.)/g, function(m, l){return l.toUpperCase()});
  117. return eval('$(this).'+e+'('+ speed + ')');
  118. },
  119. appear : function(speed, callback) {
  120. return this.fadeIn(speed, callback);
  121. },
  122. blindDown : function(speed, callback) {
  123. return this.show('blind', { direction: 'vertical' }, speed, callback);
  124. },
  125. blindUp : function(speed, callback) {
  126. return this.hide('blind', { direction: 'vertical' }, speed, callback);
  127. },
  128. blindRight : function(speed, callback) {
  129. return this.show('blind', { direction: 'horizontal' }, speed, callback);
  130. },
  131. blindLeft : function(speed, callback) {
  132. this.hide('blind', { direction: 'horizontal' }, speed, callback);
  133. return this;
  134. },
  135. dropOut : function(speed, callback) {
  136. return this.hide('drop', {direction: 'down' }, speed, callback);
  137. },
  138. dropIn : function(speed, callback) {
  139. return this.show('drop', { direction: 'up' }, speed, callback);
  140. },
  141. fade : function(speed, callback) {
  142. return this.fadeOut(speed, callback);
  143. },
  144. fadeToggle : function(speed, callback) {
  145. return this.animate({opacity: 'toggle'}, speed, callback);
  146. },
  147. fold : function(speed, callback) {
  148. return this.hide('fold', {}, speed, callback);
  149. },
  150. foldOut : function(speed, callback) {
  151. return this.show('fold', {}, speed, callback);
  152. },
  153. grow : function(speed, callback) {
  154. return this.show('scale', {}, speed, callback);
  155. },
  156. highlight : function(speed, callback) {
  157. return this.show('highlight', {}, speed, callback);
  158. },
  159. puff : function(speed, callback) {
  160. return this.hide('puff', {}, speed, callback);
  161. },
  162. pulsate : function(speed, callback) {
  163. return this.show('pulsate', {}, speed, callback);
  164. },
  165. shake : function(speed, callback) {
  166. return this.show('shake', {}, speed, callback);
  167. },
  168. shrink : function(speed, callback) {
  169. return this.hide('scale', {}, speed, callback);
  170. },
  171. squish : function(speed, callback) {
  172. return this.hide('scale', { origin: ['top', 'left'] }, speed, callback);
  173. },
  174. slideUp : function(speed, callback) {
  175. return this.hide('slide', { direction: 'up'}, speed, callback);
  176. },
  177. slideDown : function(speed, callback) {
  178. return this.show('slide', { direction: 'up'}, speed, callback);
  179. },
  180. switchOff : function(speed, callback) {
  181. return this.hide('clip', {}, speed, callback);
  182. },
  183. switchOn : function(speed, callback) {
  184. return this.show('clip', {}, speed, callback);
  185. }
  186. });
  187. })(jQuery);