templates/admin/core/admin.js.twig line 1

Open in your IDE?
  1. function uniqueId() {
  2.     return Math.random().toString(36).substr(2, 9);
  3. }
  4. // colorise les labels au chargement de l'edition
  5. function colorLabel(fields) {
  6.     for (var key in fields) {
  7.         var selector = $('.form-group[id$="' + key + '"]');
  8.         var input = selector.find('input');
  9.         if (input.attr('type') == 'text') {
  10.             if (input.val() != '') {
  11.                 selector.addClass(fields[key]);
  12.             } else {
  13.                 selector.removeClass(fields[key]);
  14.             }
  15.         }
  16.         if (input.attr('type') == 'checkbox') {
  17.             if (input.is(':checked')) {
  18.                 selector.addClass(fields[key]);
  19.             } else {
  20.                 selector.removeClass(fields[key]);
  21.             }
  22.         }
  23.     }
  24. }
  25. // toggle sur les labels si remplissage ou cochage
  26. function colorCheck(fields) {
  27.     $('body').on('change keyup', '.form-row input', function () {
  28.         var self = $(this);
  29.         if (self.attr('id').split('_')[1] in fields) {
  30.             if (self.attr('type') == 'text') {
  31.                 if (self.val() != '') {
  32.                     self.closest('.form-group').addClass(fields[self.attr('id').split('_')[1]]);
  33.                 } else {
  34.                     self.closest('.form-group').removeClass(fields[self.attr('id').split('_')[1]]);
  35.                 }
  36.             }
  37.             if (self.attr('type') == 'checkbox') {
  38.                 if (self.is(':checked')) {
  39.                     self.closest('.form-group').addClass(fields[self.attr('id').split('_')[1]]);
  40.                 } else {
  41.                     self.closest('.form-group').removeClass(fields[self.attr('id').split('_')[1]]);
  42.                 }
  43.             }
  44.         }
  45.     });
  46. }
  47. // permet de relancer iCheck et Select2 apres le chargement AJAX
  48. function reloadIcheckSelect2() {
  49.     $('select').select2({
  50.         allowClear: true,
  51.         placeholder: "-- Choisir --"
  52.     });
  53.     $('input[type="checkbox"], input[type="radio"]').iCheck({
  54.         checkboxClass: 'icheckbox_square-blue',
  55.         radioClass: 'iradio_square-blue'
  56.     }).on('ifToggled', function (e) {
  57.         $(e.target).trigger('change');
  58.     });
  59. }
  60. var coreModalBreadcrumb = [];
  61. var coreModalOpen = [];
  62. function injectResponseInModal(response, size) {
  63.     if(typeof size === 'undefined') {
  64.         size  = 'xl';
  65.     }
  66.     var modalIndex = uniqueId();
  67.     $('#modal-container').append('{{ include('admin/core/admin_modal.html.twig') }}');
  68.     $('#modal-container .modal').last().attr('id', 'admin-modal-' + modalIndex);
  69.     $('#admin-modal-' + modalIndex + ' .modal-body').html(response);
  70.     $('#admin-modal-' + modalIndex + ' .modal-dialog').addClass('modal-'+size);
  71.     $('#admin-modal-' + modalIndex).modal();
  72.     reloadIcheckSelect2();
  73. }
  74. function closePopover() {
  75.     $("*").each(function () {
  76.         var popover = $.data(this, "bs.popover");
  77.         if (popover) {
  78.             $(this).popover('hide');
  79.         }
  80.     });
  81. }
  82. function modalDetail() {
  83.     $('body').on('click', '[class*=get-view-]', function (e) {
  84.         if ($('#modal-container').html() === '') {
  85.             coreModalBreadcrumb = [];
  86.         }
  87.         e.preventDefault();
  88.         var modalIndex = uniqueId();
  89.         var self = $(this);
  90.         var data = {'object': self.data('object')};
  91.         $.ajax({
  92.             type: 'GET',
  93.             url: Routing.generate('admin_ajax_get_' + self.data('type'), data),
  94.             success: function (response) {
  95.                 $('#modal-container').append('{{ include('admin/core/admin_modal.html.twig') }}');
  96.                 $('#modal-container .modal').last().attr('id', 'admin-modal-' + modalIndex);
  97.                 $('#modal-container .modal').last().data('name', self.data('name'));
  98.                 if (self.data('size')) {
  99.                     $('#admin-modal-' + modalIndex + ' .modal-dialog').addClass('modal-' + self.data('size'));
  100.                 }
  101.                 $('#admin-modal-' + modalIndex + ' .modal-body').html(response);
  102.                 $('#admin-modal-' + modalIndex).modal();
  103.                 coreModalBreadcrumb.push('<span class="badge modal-close" data-modalindex="#admin-modal-' + modalIndex + '">' + self.data('name') + '</span>');
  104.                 coreModalOpen.push("#admin-modal-"+modalIndex);
  105.                 $('#admin-modal-' + modalIndex + ' .modal-breadcrumb').html(coreModalBreadcrumb);
  106.             }
  107.         });
  108.     });
  109. }
  110. function modalDelete() {
  111.     $('#modal-container').on('hidden.bs.modal', '.modal', function (e) {
  112.         var self = $(this);
  113.         $("#" + self.attr('id')).remove();
  114.         coreModalOpen = [];
  115.         coreModalBreadcrumb = [];
  116.         $('#modal-container .modal').each(function (index, element) {
  117.             coreModalOpen.push('#'+$(element).attr('id'));
  118.             coreModalBreadcrumb.push('<span class="badge modal-close" data-modalindex="#'+$(element).attr('id')+'">' + $(element).data('name') + '</span>');
  119.         });
  120.     });
  121. }
  122. function modalClose() {
  123.     $('body').on('click', '.modal-close', function (e) {
  124.         e.preventDefault();
  125.         var self = $(this);
  126.         var id = self.data('modalindex');
  127.         var index = coreModalOpen.findIndex(function(element) {
  128.             return element == id;
  129.         });
  130.         for (var i = index+1; i < coreModalOpen.length; i++) {
  131.             $(coreModalOpen[i]).modal('hide');
  132.         }
  133.     });
  134. }
  135. function showGraph(dataRoute, route, canvasSelector, type, configA, optionsA) {
  136.     $.ajax({
  137.         type: 'GET',
  138.         url: Routing.generate(route, dataRoute),
  139.         dataType: 'json'
  140.     }).success(function (json) {
  141.         if (typeof(chart) !== 'undefined') {
  142.             chart.destroy();
  143.         }
  144.         var data = {};
  145.         data.datasets = [];
  146.         data.labels = json['data']['label'];
  147.         var config = {};
  148.         config.data = json['data']['data'];
  149.         config.label = {% if chart_label == '' %}false{% else %}{{ chart_label }}{% endif %};
  150.         ;
  151.         config.backgroundColor = '{{ chart_background_color|raw }}';
  152.         config.borderColor = '{{ chart_border_color|raw }}';
  153.         config.borderWidth = '{{ chart_border_width|raw }}';
  154.         for (key in configA) {
  155.             config[key] = configA[key];
  156.         }
  157.         data.datasets.push(config);
  158.         var ctx = document.getElementById(canvasSelector);
  159.         chart = new Chart(ctx, {
  160.             type: type,
  161.             data: data,
  162.             options: optionsA
  163.         });
  164.     });
  165. }
  166. $(function () {
  167.     modalDetail();
  168.     modalClose();
  169.     modalDelete();
  170.     {% include 'admin/core/update_text_relation.js.twig' %}
  171.     $('.modal').on('show.bs.modal', function (event) {
  172.         var idx = $('.modal:visible').length;
  173.         $(this).css('z-index', 1040 + (10 * idx));
  174.     });
  175.     $('.modal').on('shown.bs.modal', function (event) {
  176.         var idx = ($('.modal:visible').length) - 1; // raise backdrop after animation.
  177.         $('.modal-backdrop').not('.stacked').css('z-index', 1039 + (10 * idx));
  178.         $('.modal-backdrop').not('.stacked').addClass('stacked');
  179.     });
  180.     $('body').on('click', '[data-action="close-popover"]', function() {
  181.         closePopover();
  182.     });
  183.     if ($('.help-block:contains("trans")').hide().closest('.form-group').find('label').before('<i class="fa fa-globe" style="color:#D6261E;"></i>&nbsp;').length == 0) {
  184.         $('.help-block:contains("trans")').hide().closest('div[class*="box box-primary"]').find('h4[class*="box-title"]').before('<i class="fa fa-globe" style="color:#D6261E;"></i>&nbsp;');
  185.     }
  186.     $('label[class|="help-trans"]').append('&nbsp;<i class="fa fa-globe" style="color:#D6261E;"></i>');
  187.     $('body').on('click', '.confirm', function () {
  188.         return confirm('Confirmation ?');
  189.     });
  190. });