summaryrefslogtreecommitdiff
path: root/rt/share/static/js/late.js
diff options
context:
space:
mode:
Diffstat (limited to 'rt/share/static/js/late.js')
-rw-r--r--rt/share/static/js/late.js39
1 files changed, 39 insertions, 0 deletions
diff --git a/rt/share/static/js/late.js b/rt/share/static/js/late.js
new file mode 100644
index 000000000..92a827906
--- /dev/null
+++ b/rt/share/static/js/late.js
@@ -0,0 +1,39 @@
+// Lower the speed limit for hover intent event
+jQuery.event.special.hover.speed = 80; // pixels per second
+
+jQuery(function() { sync_grouped_custom_fields() } );
+function sync_grouped_custom_fields() {
+ var all_inputs = jQuery("input,textarea,select");
+ var parse_cf = /^Object-([\w:]+)-(\d*)-CustomField(?::\w+)?-(\d+)-(.*)$/;
+ all_inputs.each(function() {
+ var elem = jQuery(this);
+ var parsed = parse_cf.exec(elem.attr("name"));
+ if (parsed == null)
+ return;
+ if (/-Magic$/.test(parsed[4]))
+ return;
+ var name_filter_regex = new RegExp(
+ "^Object-"+parsed[1]+"-"+parsed[2]+
+ "-CustomField(?::\\w+)?-"+parsed[3]+"-"+parsed[4]+"$"
+ );
+ var update_elems = all_inputs.filter(function () {
+ return name_filter_regex.test(jQuery(this).attr("name"));
+ }).not(elem);
+ if (update_elems.length == 0)
+ return;
+ var trigger_func = function() {
+ var curval = elem.val();
+ if ((elem.attr("type") == "checkbox") || (elem.attr("type") == "radio")) {
+ curval = [ ];
+ jQuery('[name="'+elem.attr("name")+'"]:checked').each( function() {
+ curval.push( jQuery(this).val() );
+ });
+ }
+ update_elems.val(curval);
+ };
+ if ((elem.attr("type") == "text") || (elem.attr("tagName") == "TEXTAREA"))
+ elem.keyup( trigger_func );
+ else
+ elem.change( trigger_func );
+ });
+}