all files / app/components/responseError/ responseError.directive.js

100% Statements 29/29
87.5% Branches 7/8
100% Functions 9/9
100% Lines 29/29
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79                                    11×                     11×       11×   11×   11× 22×   11× 22×   11×   11× 48×       69× 69× 69× 65× 43× 38×   22×   22× 22×     69×   43×            
/**
 * @ngdoc directive
 * @name app.components.directive:feResponseError
 * @restrict E
 * @description
 * Displays an http error response:
 * * Status code
 * * Status text
 * * Message
 *
 */
 
(function () {
  'use strict';
 
  angular
    .module('app.components')
    .directive('feResponseError', directive);
 
  /** @ngInject */
  function directive() {
    var directive = {
      restrict: 'E',
      templateUrl: 'app/components/responseError/responseError.html',
      controller: Controller,
      controllerAs: 'vm',
      bindToController: true,
      scope: {
        error: '='
      }
    };
 
    return directive;
  }
 
  /** @ngInject */
  function Controller(errorsMapper) {
    var vm = this;
 
    activate();
 
    function activate() {
      vm.status = function () {
        return vm.error.status;
      };
      vm.statusText = function () {
        return vm.error.statusText;
      };
      vm.message = responseMessage;
 
      vm.hasMessage = function () {
        return responseMessage()
      };
    }
 
    function responseMessage() {
      var data = vm.error.data;
      var result = null;
      if (data) {
        if (angular.isString(data)) {
          if (!isMarkup())
            result = data;
        }
        else Eif (angular.isObject(data)) {
          // Handle {somekey: ['some error message']}
          var errors = errorsMapper(data);
          result = errors.other[0];
        }
      }
      return result;
 
      function isMarkup() {
        return data.startsWith('<');
      }
 
    }
  }
})();