461 callback.call(window, false, options); |
461 callback.call(window, false, options); |
462 } |
462 } |
463 } |
463 } |
464 }; |
464 }; |
465 |
465 |
|
466 /** |
|
467 * Initialize main events handlers |
|
468 */ |
|
469 MyAMS.initHandlers = function(element) { |
|
470 |
|
471 // Initialize custom click handlers |
|
472 $(element).on('click', '[data-ams-click-handler]', function(event) { |
|
473 var source = $(this); |
|
474 var handlers = source.data('ams-disabled-handlers'); |
|
475 if ((handlers === true) || (handlers === 'click') || (handlers === 'all')) { |
|
476 return; |
|
477 } |
|
478 var data = source.data(); |
|
479 if (data.amsClickHandler) { |
|
480 if ((data.amsStopPropagation === true) || (data.amsClickStopPropagation === true)) { |
|
481 event.stopPropagation(); |
|
482 } |
|
483 if (data.amsClickKeepDefault !== true) { |
|
484 event.preventDefault(); |
|
485 } |
|
486 var clickHandlers = data.amsClickHandler.split(/\s+/); |
|
487 for (var index=0; index < clickHandlers.length; index++) { |
|
488 var callback = ams.getFunctionByName(clickHandlers[index]); |
|
489 if (callback !== undefined) { |
|
490 callback.call(source, event, data.amsClickHandlerOptions); |
|
491 } |
|
492 } |
|
493 } |
|
494 }); |
|
495 |
|
496 // Initialize custom change handlers |
|
497 $(element).on('change', '[data-ams-change-handler]', function(event) { |
|
498 var source = $(this); |
|
499 // Disable change handlers for readonly inputs |
|
500 // These change handlers are activated by IE!!! |
|
501 if (source.prop('readonly')) { |
|
502 return; |
|
503 } |
|
504 var handlers = source.data('ams-disabled-handlers'); |
|
505 if ((handlers === true) || (handlers === 'change') || (handlers === 'all')) { |
|
506 return; |
|
507 } |
|
508 var data = source.data(); |
|
509 if (data.amsChangeHandler) { |
|
510 if ((data.amsStopPropagation === true) || (data.amsChangeStopPropagation === true)) { |
|
511 event.stopPropagation(); |
|
512 } |
|
513 if (data.amsChangeKeepDefault !== true) { |
|
514 event.preventDefault(); |
|
515 } |
|
516 var changeHandlers = data.amsChangeHandler.split(/\s+/); |
|
517 for (var index=0; index < changeHandlers.length; index++) { |
|
518 var callback = ams.getFunctionByName(changeHandlers[index]); |
|
519 if (callback !== undefined) { |
|
520 callback.call(source, event, data.amsChangeHandlerOptions); |
|
521 } |
|
522 } |
|
523 } |
|
524 }); |
|
525 |
|
526 // Notify reset to update Select2 widgets |
|
527 $(element).on('reset', 'form', function(e) { |
|
528 var form = $(this); |
|
529 setTimeout(function() { |
|
530 $('.alert-danger, SPAN.state-error', form).not('.persistent').remove(); |
|
531 $('LABEL.state-error', form).removeClass('state-error'); |
|
532 $('INPUT.select2[type="hidden"]', form).each(function() { |
|
533 var input = $(this); |
|
534 var select = input.data('select2'); |
|
535 var value = input.data('ams-select2-input-value'); |
|
536 if (value) { |
|
537 input.select2('val', value.split(select.opts.separator)); |
|
538 } |
|
539 }); |
|
540 form.find('.select2').trigger('change'); |
|
541 $('[data-ams-reset-callback]', form).each(function() { |
|
542 var element = $(this); |
|
543 var data = element.data(); |
|
544 var callback = ams.getFunctionByName(data.amsResetCallback); |
|
545 if (callback !== undefined) { |
|
546 callback.call(form, element, data.amsResetCallbackOptions); |
|
547 } |
|
548 }); |
|
549 }, 10); |
|
550 ams.form && ams.form.setFocus(form); |
|
551 }); |
|
552 |
|
553 // Initialize custom reset handlers |
|
554 $(element).on('reset', '[data-ams-reset-handler]', function(e) { |
|
555 var form = $(this); |
|
556 var data = form.data(); |
|
557 if (data.amsResetHandler) { |
|
558 if (data.amsResetKeepDefault !== true) { |
|
559 e.preventDefault(); |
|
560 } |
|
561 var callback = ams.getFunctionByName(data.amsResetHandler); |
|
562 if (callback !== undefined) { |
|
563 callback.call(form, data.amsResetHandlerOptions); |
|
564 } |
|
565 } |
|
566 }); |
|
567 |
|
568 // Initialize custom event on click |
|
569 $(element).on('click', '[data-ams-click-event]', function(e) { |
|
570 var source = $(this); |
|
571 $(e.target).trigger(source.data('ams-click-event'), |
|
572 source.data('ams-click-event-options')); |
|
573 }); |
|
574 |
|
575 // Cancel clicks on readonly checkbox |
|
576 $(element).on('click', 'input[type="checkbox"][readonly]', function() { |
|
577 return false; |
|
578 }); |
|
579 }; |
|
580 |
466 })(jQuery, this); |
581 })(jQuery, this); |
467 |
582 |
468 (function($, globals) { |
583 (function($, globals) { |
469 |
584 |
470 var ams = globals.MyAMS; |
585 var ams = globals.MyAMS; |
557 ams.require = function(packages, callback) { |
672 ams.require = function(packages, callback) { |
558 var deferred = []; |
673 var deferred = []; |
559 for (var index=0; index < packages.length; index++) { |
674 for (var index=0; index < packages.length; index++) { |
560 var package_name = packages[index]; |
675 var package_name = packages[index]; |
561 if (loaded_extensions.indexOf(package_name) < 0) { |
676 if (loaded_extensions.indexOf(package_name) < 0) { |
562 var source = ams.baseURL + 'myams-' + package_name + ams.devext + '.js'; |
677 if (package_name.startsWith('http://') || package_name.startsWith('https://')) { |
|
678 var source = package_name; |
|
679 } else { |
|
680 source = ams.baseURL + 'myams-' + package_name + ams.devext + '.js'; |
|
681 } |
563 deferred.push(ams.getScript(source, {async: true}, console.error)); |
682 deferred.push(ams.getScript(source, {async: true}, console.error)); |
564 loaded_extensions.push(package_name); |
683 loaded_extensions.push(package_name); |
565 } |
684 } |
566 } |
685 } |
567 if (deferred.length > 0) { |
686 if (deferred.length > 0) { |