linagora/openpaas-esn

View on GitHub
modules/linagora.esn.contact/frontend/app/services/contact-highlight-helpers.service.js

Summary

Maintainability
C
1 day
Test Coverage
(function(angular) {
  'use strict';

  angular.module('linagora.esn.contact')
    .factory('ContactHighLightHelper', ContactHighLightHelper);

  function ContactHighLightHelper() {
    return ContactHighLightHelper;

    function ContactHighLightHelper() {
      var dataHighlight = [];

      return {
        checkArrMatching: checkArrMatching,
        checkStringMatch: checkStringMatch,
        checkArrAddressMatching: checkArrAddressMatching,
        dataHighlight: dataHighlight
      };

      function checkArrMatching(array, query, iconClass) {
        if (typeof array === 'undefined') {
          return -1;
        }
        var index = -1;

        for (var i = 0; i < array.length; i++) {
          var dataInput = array[i].value ? array[i].value : array[i].text;
          var typeInput = array[i].type ? array[i].type : '';
          var strIndex = dataInput.toLowerCase().indexOf(query);

          if (strIndex > -1) {
            index = strIndex;
            dataHighlight.push({
              index: index,
              data: dataInput,
              type: typeInput,
              icon: iconClass
            });
          }
        }

        return index;
      }

      function checkStringMatch(str, query, iconClass) {
        if (str === null || angular.isUndefined(str)) {
          return -1;
        }
        var index = str.toLowerCase().indexOf(query);

        if (index > -1) {
          dataHighlight.push({
            index: index,
            data: str,
            type: '',
            icon: iconClass
          });
        }

        return index;
      }

      function checkArrAddressMatching(array, query, iconClass) {
        function getMinOfArray(numArray) {
          return Math.min.apply(null, numArray);
        }
        if (typeof array === 'undefined') {
          return -1;
        }
        var index = -1;

        for (var i = 0; i < array.length; i++) {
          var strIndex = (array[i].street + array[i].city + array[i].zip + array[i].country).toLowerCase().indexOf(query);

          if (strIndex > -1) {
            var arrIndex = [array[i].street.toLowerCase().indexOf(query), array[i].city.toLowerCase().indexOf(query), array[i].zip.toLowerCase().indexOf(query), array[i].country.toLowerCase().indexOf(query)];

            for (var j = arrIndex.length; j--;) {
              if (arrIndex[j] === -1) {
                arrIndex.splice(j, 1);
              }
            }
            index = getMinOfArray(arrIndex);
            var str = array[i].street + ' ' + array[i].city + ' ' + array[i].country + ' ' + array[i].zip;

            dataHighlight.push({
              index: index,
              data: str,
              type: array[i].type,
              icon: iconClass
            });
          }
        }

        return index;
      }
    }
  }
})(angular);