18b4828a6SIftekharul Islamwindow.angular && (function(angular) {
28b4828a6SIftekharul Islam  'use strict';
38b4828a6SIftekharul Islam
4d27bb135SAndrew Geissler  angular.module('app.common.directives').directive('logFilter', [
5d27bb135SAndrew Geissler    'APIUtils',
6d27bb135SAndrew Geissler    function(APIUtils) {
78b4828a6SIftekharul Islam      return {
88b4828a6SIftekharul Islam        'restrict': 'E',
9bbcf670aSEd Tanous        'template': require('./log-filter.html'),
10d27bb135SAndrew Geissler        'controller': [
11d27bb135SAndrew Geissler          '$rootScope', '$scope', 'dataService', '$location',
12d27bb135SAndrew Geissler          function($rootScope, $scope, dataService, $location) {
138b4828a6SIftekharul Islam            $scope.dataService = dataService;
14*4986603eSDerick Montague            $scope.supportsDateInput = true;
15*4986603eSDerick Montague
168b4828a6SIftekharul Islam            $scope.toggleSeverityAll = function() {
178b4828a6SIftekharul Islam              $scope.selectedSeverity.all = !$scope.selectedSeverity.all;
188b4828a6SIftekharul Islam
198b4828a6SIftekharul Islam              if ($scope.selectedSeverity.all) {
208b4828a6SIftekharul Islam                $scope.selectedSeverity.low = false;
218b4828a6SIftekharul Islam                $scope.selectedSeverity.medium = false;
228b4828a6SIftekharul Islam                $scope.selectedSeverity.high = false;
238b4828a6SIftekharul Islam              }
24ba5e3f34SAndrew Geissler            };
258b4828a6SIftekharul Islam
268b4828a6SIftekharul Islam            $scope.toggleSeverity = function(severity) {
27d27bb135SAndrew Geissler              $scope.selectedSeverity[severity] =
28d27bb135SAndrew Geissler                  !$scope.selectedSeverity[severity];
298b4828a6SIftekharul Islam
30df3bd124SMichael Davis              if (['high', 'medium', 'low'].indexOf(severity) > -1) {
3196bbf310SIftekharul Islam                if ($scope.selectedSeverity[severity] == false &&
3296bbf310SIftekharul Islam                    (!$scope.selectedSeverity.low &&
3396bbf310SIftekharul Islam                     !$scope.selectedSeverity.medium &&
34d27bb135SAndrew Geissler                     !$scope.selectedSeverity.high)) {
35df3bd124SMichael Davis                  $scope.selectedSeverity.all = true;
36df3bd124SMichael Davis                  return;
37df3bd124SMichael Davis                }
38df3bd124SMichael Davis              }
39df3bd124SMichael Davis
408b4828a6SIftekharul Islam              if ($scope.selectedSeverity.low &&
418b4828a6SIftekharul Islam                  $scope.selectedSeverity.medium &&
428b4828a6SIftekharul Islam                  $scope.selectedSeverity.high) {
438b4828a6SIftekharul Islam                $scope.selectedSeverity.all = true;
448b4828a6SIftekharul Islam                $scope.selectedSeverity.low = false;
458b4828a6SIftekharul Islam                $scope.selectedSeverity.medium = false;
468b4828a6SIftekharul Islam                $scope.selectedSeverity.high = false;
47d27bb135SAndrew Geissler              } else {
488b4828a6SIftekharul Islam                $scope.selectedSeverity.all = false;
498b4828a6SIftekharul Islam              }
50ba5e3f34SAndrew Geissler            };
51*4986603eSDerick Montague
52*4986603eSDerick Montague            /**
53*4986603eSDerick Montague             * Handle browsers that don't support the native date input element
54*4986603eSDerick Montague             * IE 11 and Safari do not support this native date element and
55*4986603eSDerick Montague             * users cannot select a date from a browser generated date picker.
56*4986603eSDerick Montague             * This is a test so that we can indicate to the user the proper
57*4986603eSDerick Montague             * date format based on date input element support.
58*4986603eSDerick Montague             */
59*4986603eSDerick Montague            const testDateInputSupport = () => {
60*4986603eSDerick Montague              const firstDateInput = document.querySelector('input[type=date]');
61*4986603eSDerick Montague
62*4986603eSDerick Montague              if (firstDateInput && firstDateInput.type == 'text') {
63*4986603eSDerick Montague                $scope.supportsDateInput = false;
64*4986603eSDerick Montague              }
65*4986603eSDerick Montague            };
66*4986603eSDerick Montague
67*4986603eSDerick Montague            testDateInputSupport();
68d27bb135SAndrew Geissler          }
69d27bb135SAndrew Geissler        ]
708b4828a6SIftekharul Islam      };
71d27bb135SAndrew Geissler    }
72d27bb135SAndrew Geissler  ]);
738b4828a6SIftekharul Islam})(window.angular);
74