Current File : /home/escuelai/public_html/it/templates/components/itilobject/timeline/filter_timeline.html.twig
{#
 # ---------------------------------------------------------------------
 #
 # GLPI - Gestionnaire Libre de Parc Informatique
 #
 # http://glpi-project.org
 #
 # @copyright 2015-2022 Teclib' and contributors.
 # @copyright 2003-2014 by the INDEPNET Development Team.
 # @licence   https://www.gnu.org/licenses/gpl-3.0.html
 #
 # ---------------------------------------------------------------------
 #
 # LICENSE
 #
 # This file is part of GLPI.
 #
 # This program is free software: you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # the Free Software Foundation, either version 3 of the License, or
 # (at your option) any later version.
 #
 # This program is distributed in the hope that it will be useful,
 # but WITHOUT ANY WARRANTY; without even the implied warranty of
 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 # GNU General Public License for more details.
 #
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <https://www.gnu.org/licenses/>.
 #
 # ---------------------------------------------------------------------
 #}

{% set filters_buttons = {
   'description': {
      'title': __('Description'),
      'icon': item.getIcon(),
      'itemtype': 'ITILContent',
      'checked': true,
   },
   'followups': {
      'title': _n('Followup', 'Followups', get_plural_number()),
      'icon': 'ti ti-message-circle',
      'itemtype': 'ITILFollowup',
      'checked': true,
   },
   'tasks': {
      'title': _n('Task', 'Tasks', get_plural_number()),
      'icon': 'ti ti-checkbox',
      'itemtype': 'ITILTask',
      'checked': true,
   },
   'documents': {
      'title': _n('Document', 'Documents', get_plural_number()),
      'icon': 'ti ti-paperclip',
      'itemtype': 'Document_Item',
      'checked': true,
   },
   'validations': {
      'title': _n('Validation', 'Validations', get_plural_number()),
      'icon': 'ti ti-thumb-up',
      'itemtype': 'ITILValidation',
      'checked': true,
   },
   'solutions': {
      'title': _n('Solution', 'Solutions', get_plural_number()),
      'icon': 'ti ti-check',
      'itemtype': 'ITILSolution',
      'checked': true,
   },
} %}

{% if get_current_interface() == 'central' %}
   {% set filters_buttons = filters_buttons|merge({
      'logs': {
         'title': __('Historical'),
         'icon': 'fas fa-history',
         'itemtype': 'Log',
         'checked': false,
      },
   }) %}
{% endif %}

<div class="filter-timeline d-none d-md-block float-end mt-n2 position-relative">
   <span data-bs-toggle="tooltip" data-bs-placement="top" title="{{ __('Timeline filter') }}">
      <button type="button"
            class="btn btn-sm btn-icon btn-ghost-secondary open-timeline-filter-popover"
            data-bs-toggle="collapse"
            data-bs-target="#filter-timeline-popover"
            data-bs-trigger="click">
         <i class="ti ti-filter"></i>
      </button>
   </span>

   <div class="filter-timeline-popover collapse position-absolute bottom-100 end-0 text-nowrap"
        id="filter-timeline-popover">
      <div class="card pt-2">
         <div class="list-group list-group-flush">
            {% for filter_key, filter_button in filters_buttons %}
               <li class="list-group-item list-group-item-action py-1">
                  <div class="form-check form-switch trigger-filter {{ filter_button['itemtype'] }}" role="button">
                     <input class="form-check-input" type="checkbox" id="timeline-filter-{{ filter_key }}"
                           autocomplete="off"
                           {{ filter_button['checked'] ? 'checked' : '' }}
                           data-itemtype="{{ filter_button['itemtype'] }}" />
                     <label class="form-check-label" for="timeline-filter-{{ filter_key }}" role="button">
                        <i class="{{ filter_button['icon'] }} ms-2"></i>
                        {{ filter_button['title'] }}
                     </label>
                  </div>
               </li>
            {% endfor %}
         </div>
      </div>
   </div>

   {% if get_current_interface() == 'central' %}
      <span data-bs-toggle="tooltip" data-bs-placement="top" title="{{ __('View TODO list') }}">
         <button type="button"
               class="btn btn-sm btn-icon btn-ghost-secondary view-timeline-todo-list me-1">
            <i class="fas fa-tasks"></i>
         </button>
      </span>
   {% endif %}
</div>

<script type="text/javascript">
$(function() {
   $(document).on("click", ".filter-timeline-popover .trigger-filter", function() {
      var timeline       = $('#itil-object-container .itil-timeline');
      var timeline_items = timeline.find(".timeline-item");

      timeline_items.addClass('d-none');
      $('.filter-timeline-popover .trigger-filter input[type=checkbox]').each(function() {
         if(!$(this).is(':checked')) {
            return;
         }
         var itemtype = $(this).data('itemtype');
         timeline_items.filter("."+itemtype).removeClass('d-none');
      });
   });

   $(document).on("click", ".view-timeline-todo-list", function() {
      $('body').toggleClass('timeline-todo-list');
   });

   $(document).mouseup(function(e) {
      var container = $("#filter-timeline-popover");

      // if the target of the click isn't the container nor a descendant of the container
      if (!container.is(e.target) && container.has(e.target).length === 0) {
         var mycollapse = bootstrap.Collapse.getInstance(container[0]);
         if (mycollapse !== null) {
            mycollapse.hide();
         }
      }
   });
});
</script>