jakubrohleder/angular-jsonapi

View on GitHub
dist-demo/maps/scripts/app-05b05487e7.js.map

Summary

Maintainability
Test Coverage
{"version":3,"sources":["scripts/app-05b05487e7.js"],"names":["angular","module","config","ngClipProvider","setPath","$stateProvider","$urlRouterProvider","state","url","templateUrl","controller","abstract","template","resolve","factory","$jsonapi","$stateParams","getResource","type","collection","$location","params","sourceRest","decodeParams","search","all","object","get","id","otherwise","toTitleCase","string","out","replace","str","offset","toUpperCase","substr","toTitleCaseFilter","input","constant","filter","bytes","precision","isNaN","parseFloat","isFinite","units","number","Math","floor","log","pow","toFixed","link","scope","schema","polymorphic","contentUrl","$scope","$timeout","isEmpty","obj","Object","keys","length","addLink","target","loading","reject","error","errorText","statusText","key","then","show","showResults","hideResults","setInput","value","getIndex","modelName","data","relationships","collections","forEach","allResources","resource","resourceName","cache","index","model","$inject","restrict","directive","searchFilter","names","listResources","items","relationship","undefined","isArray","indexOf","searchWord","results","words","split","toString","toLowerCase","push","splice","join","promiseButton","$parse","$q","compile","$element","attr","loadingClass","errorClass","successClass","fn","ngClick","element","onClick","event","response","removeClass","addClass","on","preventDefault","stopImmediatePropagation","off","callback","$event","$apply","priority","RecursionHelper","$interval","toggleTimmer","updateDiff","Date","now","updatedAt","interval","cancel","showMore","$watch","$on","equals","unlink","nested","require","objectRelationships","emptyRelationship","form","parent","errorMessage","errors","errorList","isObject","isString","$state","close","$broadcast","clear","clearCache","add","newObjects","initialize","addFilter","filterKey","filters","removeFilter","encodeParams","reload","clearFilter","objectKeys","attributeField","sidebar","sidebarController","Spaceships","run","apiURL","attributes","name","presence","maximum","minimum","durability","numericality","onlyInteger","quality","pilot","included","reflection","spaceshipModel","location","functions","this","localeSynchro","sourceLocal","create","restSynchro","synchronizer","synchronizerSimple","addResource","SpaceshipModels","code","speed","cargo","spaceships","Robots","nameFirst","nameLast","creationDate","datetime","pictureUrl","robotModel","job","laserGuns","powerArmors","include","RobotModels","robots","PowerArmors","armor","rarity","owner","Planets","cordsX","cordsY","cordsZ","size","locations","Locations","planet","entity","Jobs","power","salary","RequestController","RequestGetController","RequestAllController","frameController","localStoreSize","logEvents","$rootScope","$log","logOnEvent","eventName","watcher","status","info","watchers","clearWatchers","events","resources","_","app","$","each","site","settings","modules","charAt","substring","seModule","options","arguments","ngModel","iElement","handler","onChange","clone","apply","$templateCache","put"],"mappings":"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","file":"scripts/app-05b05487e7.js","sourcesContent":["(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample', [\n    'ui.router',\n    'angular-jsonapi',\n    'angular-jsonapi-local',\n    'angular-jsonapi-rest',\n    'jsonFormatter',\n    'ngClipboard',\n    'promise-button',\n    'RecursionHelper'\n  ])\n  .config(function(ngClipProvider) {\n    ngClipProvider.setPath('bower_components/zeroclipboard/dist/ZeroClipboard.swf');\n  })\n  .config(function($stateProvider, $urlRouterProvider) {\n    $stateProvider\n      .state('frame', {\n        url: '',\n        templateUrl: 'app/frame/frame.html',\n        controller: 'FrameController',\n        abstract: true\n      })\n      .state('frame.hello', {\n        url: '',\n        templateUrl: 'app/frame/hello.html'\n      })\n      .state('frame.request', {\n        url: '/{type}',\n        template: '<ui-view></ui-view>',\n        controller: 'RequestController',\n        abstract: true,\n        resolve: {\n          factory: function($jsonapi, $stateParams) {\n            return $jsonapi.getResource($stateParams.type);\n          }\n        }\n      })\n      .state('frame.request.all', {\n        url: '',\n        templateUrl: 'app/request/all.html',\n        controller: 'RequestAllController',\n        resolve: {\n          collection: function(factory, $location, $jsonapi) {\n            var params = $jsonapi.sourceRest.decodeParams($location.search());\n\n            return factory.all(params);\n          }\n        }\n      })\n      .state('frame.request.get', {\n        url: '/{id}',\n        templateUrl: 'app/request/get.html',\n        controller: 'RequestGetController',\n        resolve: {\n          object: function(factory, $stateParams) {\n            return factory.get($stateParams.id);\n          }\n        }\n      });\n\n    $urlRouterProvider.otherwise('/robots');\n  });\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .constant('toTitleCase', toTitleCase)\n    .filter('toTitleCase', toTitleCaseFilter);\n\n  function toTitleCase(string) {\n    var out = string.replace(/^\\s*/, '');  // strip leading spaces\n    out = out.replace(/^[a-z]|[^\\s][A-Z]/g, function(str, offset) {\n      if (offset === 0) {\n        return str.toUpperCase();\n      } else {\n        return str.substr(0, 1) + ' ' + str.substr(1).toUpperCase();\n      }\n    });\n\n    return out;\n  }\n\n  function toTitleCaseFilter() {\n    return function(input) {\n      return toTitleCase(input);\n    };\n  }\n})();\n\n// adopted from https://gist.github.com/thomseddon/3511330\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .filter('bytes', bytes);\n\n  function bytes() {\n    return function(bytes, precision) {\n      if (isNaN(parseFloat(bytes)) || !isFinite(bytes)) {\n        return '-';\n      }\n\n      if (typeof precision === 'undefined') {\n        precision = 1;\n      }\n\n      var units = ['bytes', 'kB', 'MB', 'GB', 'TB', 'PB'];\n      var number = Math.floor(Math.log(bytes) / Math.log(1024));\n\n      return (bytes / Math.pow(1024, Math.floor(number))).toFixed(precision) +  ' ' + units[number];\n    };\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .directive('angularJsonapiSearch', search);\n\n  function search() {\n    return {\n      restrict: 'E',\n      template: '<div ng-include=\"contentUrl\"></div>',\n      controller: controller,\n      link: link,\n      scope: {\n        object: '=',\n        key: '='\n      }\n    };\n\n    function link(scope) {\n      if (scope.schema.polymorphic === true) {\n        scope.contentUrl = 'app/components/search/search-polymorphic.html';\n      } else {\n        scope.contentUrl = 'app/components/search/search.html';\n      }\n    }\n\n    function controller($scope, $jsonapi, $timeout) {\n      $scope.schema = $scope.object.schema.relationships[$scope.key];\n      if ($scope.schema.polymorphic) {\n        $scope.collections = {};\n        angular.forEach($jsonapi.allResources(), function(resource, resourceName) {\n          $scope.collections[resourceName] = resource.cache.index();\n        });\n      } else {\n        $scope.model = $scope.schema.model;\n        $scope.collection = $jsonapi.getResource($scope.model).cache.index();\n      }\n\n      $scope.show = false;\n      $scope.isEmpty = isEmpty;\n      $scope.addLink = addLink;\n      $scope.showResults = showResults;\n      $scope.hideResults = hideResults;\n      $scope.setInput = setInput;\n      $scope.getIndex = getIndex;\n\n      function isEmpty(obj) {\n        return Object.keys(obj).length === 0;\n      }\n\n      function addLink(target) {\n        $scope.loading = true;\n        $scope.object.link($scope.key, target).then(resolve, reject);\n        $scope.show = false;\n\n        function resolve() {\n          $scope.loading = false;\n          $scope.input = '';\n        }\n\n        function reject(error) {\n          $scope.loading = false;\n          $scope.error = true;\n          $scope.errorText = error[0].statusText;\n        }\n      }\n\n      function showResults() {\n        $scope.error = false;\n        $scope.show = true;\n      }\n\n      function hideResults() {\n        $scope.show = false;\n      }\n\n      function setInput(value) {\n        $scope.input = value;\n      }\n\n      function getIndex(modelName) {\n        $timeout(function() {\n          $scope.collection = $jsonapi.getResource(modelName).all().data;\n        });\n      }\n    }\n  }\n\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .filter('angularJsonapiSearchObject', searchFilter);\n\n  function searchFilter($jsonapi) {\n    var names = $jsonapi.listResources();\n\n    return function(items, search, relationship, polymorphic) {\n      if(items === undefined) {\n        return;\n      }\n\n      if (!search) {\n        if (polymorphic === true) {\n          return [];\n        } else if (angular.isArray(relationship)) {\n          return items.filter(function(value) {\n            return relationship.indexOf(value) === -1;\n          });\n        } else {\n          return items;\n        }\n      }\n\n      var results = [];\n      var words = search.split(' ');\n      var searchWord;\n\n      if (polymorphic === false) {\n        searchWord = search;\n        angular.forEach(items, function(value) {\n          if (relationship.indexOf(value) === -1 && value.toString().toLowerCase().indexOf(searchWord.toLowerCase()) > -1) {\n            results.push(value);\n          }\n        });\n      } else {\n        if (words.length > 1) {\n          searchWord = words.splice(1).join(' ');\n          angular.forEach(items, function(value) {\n            if (relationship.indexOf(value) === -1 && value.toString().toLowerCase().indexOf(searchWord.toLowerCase()) > -1) {\n              results.push(value);\n            }\n          });\n        } else if (names.indexOf(words[0]) > -1) {\n          if (angular.isArray(relationship)) {\n            return items.filter(function(value) {\n              return relationship.indexOf(value) === -1;\n            });\n          } else {\n            return items.filter(function(value) {\n              return relationship !== value;\n            });\n          }\n        }\n      }\n\n      return results;\n    };\n  }\n\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .filter('angularJsonapiSearchCollection', searchFilter);\n\n  function searchFilter() {\n    return function(items, search) {\n      if (!search) {\n        return items;\n      }\n\n      var results = {};\n      var words = search.split(' ');\n      angular.forEach(items, function(value, key) {\n        if (key.indexOf(words[0]) > -1) {\n          results[key] = value;\n        }\n      });\n\n      return results;\n    };\n  }\n\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('promise-button', []);\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('promise-button')\n    .directive('promiseButton', promiseButton);\n\n  function promiseButton($parse, $q) {\n    return {\n      restrict: 'A',\n      priority: -1,\n      compile: compile\n    };\n\n    function compile($element, attr) {\n      var loadingClass = attr.loadingClass || 'loading';\n      var errorClass = attr.errorClass || 'negative';\n      var successClass = attr.successClass || 'positive';\n\n      var fn = $parse(attr.ngClick, null,  true);\n      return function ngEventHandler(scope, element) {\n        element.on('click', onClick);\n\n        function onClick(event) {\n          event.preventDefault();\n          event.stopImmediatePropagation();\n          element.off('click');\n\n          var callback = function() {\n            element.addClass(loadingClass);\n            element.removeClass(errorClass);\n            element.removeClass(successClass);\n            $q.resolve(fn(scope, {$event:event})).then(resolve, reject);\n          };\n\n          function resolve(response) {\n            element.removeClass(loadingClass);\n            element.addClass(successClass);\n            element.on('click', onClick);\n\n            return response;\n          }\n\n          function reject(response) {\n            element.removeClass(loadingClass);\n            element.addClass(errorClass);\n            element.on('click', onClick);\n\n            return response;\n          }\n\n          scope.$apply(callback);\n        }\n      };\n    }\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .directive('angularJsonapiObject', object);\n\n  function object(RecursionHelper) {\n    return {\n      restrict: 'E',\n      templateUrl: 'app/components/object/object.html',\n      scope: {\n        object: '=data',\n        unlink: '&',\n        nested: '='\n      },\n      require: '^angularJsonapiObject',\n      compile: RecursionHelper.compile,\n      controller: controller\n    };\n\n    function controller($scope, $interval) {\n      var interval;\n\n      $scope.showMore = false;\n      $scope.isArray = angular.isArray;\n\n      $scope.$watch('showMore', toggleTimmer);\n\n      $scope.$on('close', function() {\n        $scope.showMore = false;\n      });\n\n      $scope.equals = angular.equals;\n\n      function toggleTimmer(value) {\n        if (value === true) {\n          $scope.updateDiff = (Date.now() - $scope.object.updatedAt) / 1000;\n          interval = $interval(function() {\n            $scope.updateDiff = (Date.now() - $scope.object.updatedAt) / 1000;\n          }, 100);\n        } else if (value === false) {\n          $interval.cancel(interval);\n        }\n      }\n    }\n  }\n\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .directive('angularJsonapiObjectRelationships', objectRelationships);\n\n  function objectRelationships(RecursionHelper) {\n    return {\n      restrict: 'E',\n      templateUrl: 'app/components/object/object-relationships.html',\n      scope: {\n        object: '=data'\n      },\n      compile: RecursionHelper.compile,\n      controller: controller\n    };\n\n    function controller($scope) {\n      $scope.isArray = angular.isArray;\n      $scope.emptyRelationship = emptyRelationship;\n      $scope.form = $scope.object.parent !== undefined;\n\n      function emptyRelationship(relationship) {\n        return relationship === undefined ||\n          relationship === null ||\n          angular.isArray(relationship) &&\n          relationship.length === 0;\n      }\n    }\n  }\n\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .directive('errorMessage', errorMessage);\n\n  function errorMessage() {\n    return {\n      restrict: 'E',\n      templateUrl: 'app/components/error-message/error-message.html',\n      scope: {\n        errors: '=data'\n      }\n    };\n  }\n\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .directive('errorList', errorList);\n\n  function errorList() {\n    return {\n      restrict: 'E',\n      templateUrl: 'app/components/error-message/error-list.html',\n      scope: {\n        errors: '=data'\n      },\n      controller: controller\n    };\n\n    function controller($scope) {\n      $scope.isObject = angular.isObject;\n      $scope.isString = angular.isString;\n    }\n  }\n\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .directive('angularJsonapiCollection', collection);\n\n  function collection(RecursionHelper) {\n    return {\n      restrict: 'E',\n      templateUrl: 'app/components/collection/collection.html',\n      scope: {\n        collection: '=data'\n      },\n      compile: RecursionHelper.compile,\n      controller: function($scope, $interval, $jsonapi, $location, $state) {\n        $interval(function() {\n          $scope.updateDiff = (Date.now() - $scope.collection.updatedAt) / 1000;\n        }, 100);\n\n        $scope.objectKeys = objectKeys;\n\n        $scope.newObjects = [];\n        $scope.filters = $scope.collection.params.filter || {};\n        var params = $jsonapi.sourceRest.encodeParams({filter: $scope.filters});\n        $location.search(params);\n\n        $scope.close = close;\n        $scope.clear = clear;\n        $scope.add = add;\n        $scope.addFilter = addFilter;\n        $scope.removeFilter = removeFilter;\n        $scope.filterKey = undefined;\n        $scope.filter = filter;\n        $scope.clearFilter = clearFilter;\n\n        function close() {\n          $scope.$broadcast('close');\n        }\n\n        function clear() {\n          $jsonapi.clearCache();\n        }\n\n        function add() {\n          $scope.newObjects.push($scope.collection.resource.initialize());\n        }\n\n        function addFilter(filterKey) {\n          $scope.filters[filterKey] = null;\n        }\n\n        function removeFilter(filterKey) {\n          delete $scope.filters[filterKey];\n        }\n\n        function filter() {\n          var params = $jsonapi.sourceRest.encodeParams({filter: $scope.filters});\n          $location.search(params);\n          $state.reload();\n        }\n\n        function clearFilter() {\n          $location.search({});\n          $state.reload();\n        }\n\n        function objectKeys(object) {\n          if (angular.isObject(object)) {\n            return Object.keys(object).length;\n          } else {\n            return 0;\n          }\n        }\n      }\n    };\n  }\n\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('promise-button')\n    .directive('attributeField', attributeField);\n\n  function attributeField() {\n    return {\n      restrict: 'A',\n      templateUrl: 'app/components/attribute-field/attribute-field.html',\n      scope: {\n        object: '=',\n        key: '='\n      }\n    };\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .directive('sidebar', sidebar);\n\n  function sidebar() {\n    return {\n      restrict: 'E',\n      templateUrl: 'app/sidebar/sidebar.html',\n      controller: sidebarController,\n      replace: true\n    };\n\n    function sidebarController($scope, $jsonapi) {\n      $scope.names = $jsonapi.listResources();\n    }\n  }\n\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n  .run(function(\n    $jsonapi,\n    apiURL\n  ) {\n    var schema = {\n      type: 'spaceships',\n      id: 'uuid4',\n      attributes: {\n        name: {presence: true, length: {maximum: 20, minimum: 3}},\n        durability: {presence: true, numericality: {onlyInteger: true}},\n        quality: {presence: true, numericality: {onlyInteger: true}}\n      },\n      relationships: {\n        pilot: {\n          included: true,\n          type: 'hasOne',\n          reflection: 'spaceships',\n          polymorphic: true\n        },\n        spaceshipModel: {\n          included: true,\n          type: 'hasOne'\n        },\n        location: {\n          included: true,\n          type: 'hasOne',\n          reflection: 'entity'\n        }\n      },\n      functions: {\n        toString: function() {\n          if (!this.data.attributes.name) {\n            return this.data.id;\n          }\n\n          return this.data.attributes.name;\n        }\n      }\n    };\n\n    var localeSynchro = $jsonapi.sourceLocal.create('LocalStore synchronization', 'AngularJsonAPI');\n    var restSynchro = $jsonapi.sourceRest.create('Rest synchronization', apiURL + '/spaceships');\n    var synchronizer = $jsonapi.synchronizerSimple.create([localeSynchro, restSynchro]);\n\n    $jsonapi.addResource(schema, synchronizer);\n  })\n  .factory('Spaceships', Spaceships);\n\n  function Spaceships(\n    $jsonapi\n  ) {\n    return $jsonapi.getResource('spaceships');\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n  .run(function(\n    $jsonapi,\n    apiURL\n  ) {\n    var schema = {\n      type: 'spaceshipModels',\n      id: 'uuid4',\n      attributes: {\n        name: {presence: true, length: {maximum: 20, minimum: 3}},\n        code: {presence: true, length: {maximum: 20, minimum: 3}},\n        speed: {presence: true, numericality: {onlyInteger: true}},\n        cargo: {presence: true, numericality: {onlyInteger: true}},\n        type: {presence: true, length: {maximum: 20, minimum: 3}}\n      },\n      relationships: {\n        spaceships: {\n          included: true,\n          type: 'hasMany'\n        }\n      },\n      functions: {\n        toString: function() {\n          if (!this.data.attributes.name) {\n            return this.data.id;\n          }\n\n          return this.data.attributes.name;\n        }\n      }\n    };\n\n    var localeSynchro = $jsonapi.sourceLocal.create('LocalStore synchronization', 'AngularJsonAPI');\n    var restSynchro = $jsonapi.sourceRest.create('Rest synchronization', apiURL + '/spaceshipModels');\n    var synchronizer = $jsonapi.synchronizerSimple.create([localeSynchro, restSynchro]);\n\n    $jsonapi.addResource(schema, synchronizer);\n  })\n  .factory('SpaceshipModels', SpaceshipModels);\n\n  function SpaceshipModels(\n    $jsonapi\n  ) {\n    return $jsonapi.getResource('spaceshipModels');\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n  .run(function(\n    $jsonapi,\n    apiURL\n  ) {\n    var schema = {\n      type: 'robots',\n      id: 'uuid4',\n      attributes: {\n        nameFirst: {presence: true, length: {maximum: 20, minimum: 3}},\n        nameLast: {presence: true, length: {maximum: 20, minimum: 3}},\n        creationDate: {datetime: true},\n        pictureUrl: {presence: true}\n      },\n      relationships: {\n        location: {\n          included: true,\n          type: 'hasOne',\n          reflection: 'entity'\n        },\n        robotModel: {\n          included: true,\n          type: 'hasOne'\n        },\n        job: {\n          included: true,\n          type: 'hasOne'\n        },\n        laserGuns: {\n          included: true,\n          type: 'hasMany',\n          reflection: 'owner'\n        },\n        powerArmors: {\n          included: true,\n          type: 'hasMany',\n          reflection: 'owner'\n        },\n        spaceships: {\n          included: true,\n          type: 'hasMany',\n          reflection: 'pilot'\n        }\n      },\n      include: {\n        get: ['location.planet']\n      },\n      functions: {\n        toString: function() {\n          if (!this.data.attributes.nameFirst && !this.data.attributes.nameLast) {\n            return this.data.id;\n          }\n\n          return this.data.attributes.nameFirst + this.data.attributes.nameLast;\n        }\n      }\n    };\n\n    var localeSynchro = $jsonapi.sourceLocal.create('LocalStore synchronization', 'AngularJsonAPI');\n    var restSynchro = $jsonapi.sourceRest.create('Rest synchronization', apiURL + '/robots');\n    var synchronizer = $jsonapi.synchronizerSimple.create([localeSynchro, restSynchro]);\n\n    $jsonapi.addResource(schema, synchronizer);\n  })\n  .factory('Robots', Robots);\n\n  function Robots(\n    $jsonapi\n  ) {\n    return $jsonapi.getResource('robots');\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n  .run(function(\n    $jsonapi,\n    apiURL\n  ) {\n    var schema = {\n      type: 'robotModels',\n      id: 'uuid4',\n      attributes: {\n        name: {presence: true, length: {maximum: 20, minimum: 3}},\n        code: {presence: true, length: {maximum: 20, minimum: 3}}\n      },\n      relationships: {\n        robots: {\n          included: true,\n          type: 'hasMany'\n        }\n      },\n      functions: {\n        toString: function() {\n          if (!this.data.attributes.name) {\n            return this.data.id;\n          }\n\n          return this.data.attributes.name;\n        }\n      }\n    };\n\n    var localeSynchro = $jsonapi.sourceLocal.create('LocalStore synchronization', 'AngularJsonAPI');\n    var restSynchro = $jsonapi.sourceRest.create('Rest synchronization', apiURL + '/robotModels');\n    var synchronizer = $jsonapi.synchronizerSimple.create([localeSynchro, restSynchro]);\n\n    $jsonapi.addResource(schema, synchronizer);\n  })\n  .factory('RobotModels', RobotModels);\n\n  function RobotModels(\n    $jsonapi\n  ) {\n    return $jsonapi.getResource('robotModels');\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n  .run(function(\n    $jsonapi,\n    apiURL\n  ) {\n    var schema = {\n      type: 'powerArmors',\n      id: 'uuid4',\n      attributes: {\n        name: {presence: true, length: {maximum: 20, minimum: 3}},\n        durability: {presence: true, numericality: {onlyInteger: true}},\n        quality: {presence: true, numericality: {onlyInteger: true}},\n        armor: {presence: true, numericality: {onlyInteger: true}},\n        type: {presence: true, length: {maximum: 20, minimum: 3}},\n        rarity: {presence: true, length: {maximum: 20, minimum: 3}}\n      },\n      relationships: {\n        owner: {\n          included: true,\n          type: 'hasOne',\n          polymorphic: true\n        }\n      },\n      functions: {\n        toString: function() {\n          if (!this.data.attributes.name) {\n            return this.data.id;\n          }\n\n          return this.data.attributes.name;\n        }\n      }\n    };\n\n    var localeSynchro = $jsonapi.sourceLocal.create('LocalStore synchronization', 'AngularJsonAPI');\n    var restSynchro = $jsonapi.sourceRest.create('Rest synchronization', apiURL + '/powerArmors');\n    var synchronizer = $jsonapi.synchronizerSimple.create([localeSynchro, restSynchro]);\n\n    $jsonapi.addResource(schema, synchronizer);\n  })\n  .factory('PowerArmors', PowerArmors);\n\n  function PowerArmors(\n    $jsonapi\n  ) {\n    return $jsonapi.getResource('powerArmors');\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n  .run(function(\n    $jsonapi,\n    apiURL\n  ) {\n    var schema = {\n      type: 'planets',\n      id: 'uuid4',\n      attributes: {\n        name: {presence: true, length: {maximum: 20, minimum: 3}},\n        cordsX: {presence: true, numericality: {onlyInteger: true}},\n        cordsY: {presence: true, numericality: {onlyInteger: true}},\n        cordsZ: {presence: true, numericality: {onlyInteger: true}},\n        size: {presence: true, numericality: {onlyInteger: true}}\n      },\n      relationships: {\n        locations: {\n          included: true,\n          type: 'hasMany'\n        }\n      },\n      functions: {\n        toString: function() {\n          if (!this.data.attributes.name) {\n            return this.data.id;\n          }\n\n          return this.data.attributes.name;\n        }\n      }\n    };\n\n    var localeSynchro = $jsonapi.sourceLocal.create('LocalStore synchronization', 'AngularJsonAPI');\n    var restSynchro = $jsonapi.sourceRest.create('Rest synchronization', apiURL + '/planets');\n    var synchronizer = $jsonapi.synchronizerSimple.create([localeSynchro, restSynchro]);\n\n    $jsonapi.addResource(schema, synchronizer);\n  })\n  .factory('Planets', Planets);\n\n  function Planets(\n    $jsonapi\n  ) {\n    return $jsonapi.getResource('planets');\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n  .run(function(\n    $jsonapi,\n    apiURL\n  ) {\n    var schema = {\n      type: 'locations',\n      id: 'uuid4',\n      attributes: {\n        cordsX: {presence: true, numericality: {onlyInteger: true}},\n        cordsY: {presence: true, numericality: {onlyInteger: true}}\n      },\n      relationships: {\n        planet: {\n          included: true,\n          type: 'hasOne'\n        },\n        entity: {\n          included: true,\n          type: 'hasOne',\n          polymorphic: true,\n          reflection: 'location'\n        }\n      },\n      functions: {\n        toString: function() {\n          if (!this.relationships.planet || !this.relationships.planet.data.attributes.name) {\n            return this.data.id;\n          }\n\n          return this.relationships.planet.data.attributes.name;\n        }\n      }\n    };\n\n    var localeSynchro = $jsonapi.sourceLocal.create('LocalStore synchronization', 'AngularJsonAPI');\n    var restSynchro = $jsonapi.sourceRest.create('Rest synchronization', apiURL + '/locations');\n    var synchronizer = $jsonapi.synchronizerSimple.create([localeSynchro, restSynchro]);\n\n    $jsonapi.addResource(schema, synchronizer);\n  })\n  .factory('Locations', Locations);\n\n  function Locations(\n    $jsonapi\n  ) {\n    return $jsonapi.getResource('locations');\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n  .run(function(\n    $jsonapi,\n    apiURL\n  ) {\n    var schema = {\n      type: 'laserGuns',\n      id: 'uuid4',\n      attributes: {\n        name: {presence: true, length: {maximum: 20, minimum: 3}},\n        durability: {presence: true, numericality: {onlyInteger: true}},\n        quality: {presence: true, numericality: {onlyInteger: true}},\n        power: {presence: true, numericality: {onlyInteger: true}},\n        type: {presence: true, length: {maximum: 20, minimum: 3}},\n        rarity: {presence: true, length: {maximum: 20, minimum: 3}}\n      },\n      relationships: {\n        owner: {\n          included: true,\n          type: 'hasOne',\n          polymorphic: true\n        }\n      },\n      functions: {\n        toString: function() {\n          if (!this.data.attributes.name) {\n            return this.data.id;\n          }\n\n          return this.data.attributes.name;\n        }\n      }\n    };\n\n    var localeSynchro = $jsonapi.sourceLocal.create('LocalStore synchronization', 'AngularJsonAPI');\n    var restSynchro = $jsonapi.sourceRest.create('Rest synchronization', apiURL + '/laserGuns');\n    var synchronizer = $jsonapi.synchronizerSimple.create([localeSynchro, restSynchro]);\n\n    $jsonapi.addResource(schema, synchronizer);\n  })\n  .factory('Jobs', Jobs);\n\n  function Jobs(\n    $jsonapi\n  ) {\n    return $jsonapi.getResource('laserGuns');\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n  .run(function(\n    $jsonapi,\n    apiURL\n  ) {\n    var schema = {\n      type: 'jobs',\n      id: 'uuid4',\n      attributes: {\n        name: {presence: true, length: {maximum: 20, minimum: 3}},\n        salary: {presence: true, numericality: {onlyInteger: true}}\n      },\n      relationships: {\n        robots: {\n          included: true,\n          type: 'hasMany'\n        }\n      },\n      functions: {\n        toString: function() {\n          if (!this.data.attributes.name) {\n            return this.data.id;\n          }\n\n          return this.data.attributes.name;\n        }\n      }\n    };\n\n    var localeSynchro = $jsonapi.sourceLocal.create('LocalStore synchronization', 'AngularJsonAPI');\n    var restSynchro = $jsonapi.sourceRest.create('Rest synchronization', apiURL + '/jobs');\n    var synchronizer = $jsonapi.synchronizerSimple.create([localeSynchro, restSynchro]);\n\n    $jsonapi.addResource(schema, synchronizer);\n  })\n  .factory('Jobs', Jobs);\n\n  function Jobs(\n    $jsonapi\n  ) {\n    return $jsonapi.getResource('jobs');\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .controller('RequestController', RequestController);\n\n  function RequestController(\n  ) {\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .controller('RequestGetController', RequestGetController);\n\n  function RequestGetController(\n    $scope, object\n  ) {\n    $scope.object = object;\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .controller('RequestAllController', RequestAllController);\n\n  function RequestAllController(\n    $scope, collection\n  ) {\n    $scope.collection = collection;\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .controller('FrameController', frameController);\n\n  function frameController(\n    $jsonapi,\n    $scope\n  ) {\n    $scope.names = $jsonapi.listResources();\n\n    $scope.localStoreSize = $jsonapi.sourceLocal.size;\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n    .run(logEvents);\n\n  function logEvents(\n    $rootScope,\n    $jsonapi,\n    $log\n  ) {\n    var events = [\n      'resource:init',\n      'resource:clearCache',\n      'resource:initialize',\n      'object:add',\n      'object:update',\n      'object:refresh',\n      'object:remove',\n      'object:link',\n      'object:linkReflection',\n      'object:unlink',\n      'object:include',\n      'object:unlinkReflection',\n      'collection:fetch'\n    ];\n\n    var resources = $jsonapi.listResources();\n    var watchers = [];\n\n    angular.forEach(events, function(eventName) {\n      angular.forEach(resources, function(resourceName) {\n        logOnEvent(eventName, resourceName);\n      });\n    });\n\n    function logOnEvent(eventName, resource) {\n      var watcher = $rootScope.$on('angularJsonAPI:' + resource + ':' + eventName, function(event, status, object, response) {\n        $log.info(resource, eventName, status, object, response);\n      });\n\n      watchers.push(watcher);\n    }\n\n    $rootScope.$on('$destroy', clearWatchers);\n\n    function clearWatchers() {\n      angular.forEach(watchers, function(watcher) {\n        watcher();\n      });\n    }\n  }\n})();\n\n(function() {\n  'use strict';\n\n  angular.module('angularJsonapiExample')\n  /* global _: false */\n    .constant('_', _)\n    .constant('apiURL', 'http://jsonapi-robot-wars.herokuapp.com')\n    ;\n})();\n\n(function() {\n  'use strict';\n  /* global $:false*/\n\n  var app = angular.module('angularJsonapiExample');\n\n  $.each($.site.settings.modules, function(index, module) {\n    var fn = $.fn[module];\n    var name = 'ui' + module.charAt(0).toUpperCase() + module.substring(1);\n\n    /** @ngInject */\n    app.directive(name, ['$timeout', '_', '$rootScope', function($timeout, _, $rootScope) {\n      return {\n        restrict: 'A',\n        seModule: {\n          name: module,\n          fn: fn\n        },\n        scope: {\n          options: '&',\n          arguments: '=',\n          ngModel: '='\n        },\n        link: function(scope, iElement) {\n          if (!scope.options) {\n            scope.options = {};\n          }\n\n          scope.options.directive = scope;\n\n          scope.options.onChange = function(value) {\n            $timeout(function() {\n              scope.ngModel = value;\n            });\n          };\n\n          $timeout(function() {\n            var element = iElement[module](_.clone(scope.options));\n            if (scope.arguments !== undefined) {\n              iElement[module].apply(element, scope.arguments);\n            }\n          }, 300);\n\n          var handler = $rootScope.$on('semantic-ui:reload', function() {\n            $timeout(function() {\n              var element = iElement[module](_.clone(scope.options));\n              if (scope.arguments !== undefined) {\n                iElement[module].apply(element, scope.arguments);\n              }\n            }, 300);\n          });\n\n          $rootScope.$on('$destroy', clear);\n\n          function clear() {\n            handler();\n          }\n        }\n      };\n    }]);\n  });\n})();\n\nangular.module(\"angularJsonapiExample\").run([\"$templateCache\", function($templateCache) {$templateCache.put(\"app/footer/footer.html\",\"\");\n$templateCache.put(\"app/frame/frame.html\",\"<header class=\\\"ui container\\\"><div class=\\\"ui secondary pointing menu\\\"><a class=\\\"toc item\\\"><i class=\\\"sidebar icon\\\"></i></a> <a ng-repeat=\\\"name in names\\\" class=\\\"item\\\" ui-sref=\\\"frame.request.all({type: name})\\\" ui-sref-active=\\\"active\\\">{{name}}</a><div class=\\\"right item\\\"><a href=\\\"mailto:jakubrohleder@gmail.com?subject=Angular JsonAPI\\\"><i class=\\\"mail outline icon\\\"></i> Any questions? Contact me!</a></div></div><div class=\\\"ui divider hidden\\\"></div></header><div class=\\\"ui container\\\"><a class=\\\"ui image right floated label\\\" ng-class=\\\"{ green: localStoreSize.fraction < 30, yellow: localStoreSize.fraction >= 30 && localStoreSize.fraction < 70, red: localStoreSize.fraction >= 70 }\\\">All<div class=\\\"detail\\\">{{localStoreSize.all | bytes}} - {{localStoreSize.fraction | number:2}}%</div></a> <a class=\\\"ui image right floated label\\\" ng-class=\\\"{ green: localStoreSize.list[localStoreSize.max] < localStoreSize.limit / 10, yellow: localStoreSize.list[localStoreSize.max] >= localStoreSize.limit / 10 && localStoreSize.list[localStoreSize.max] < localStoreSize.limit / 4, red: localStoreSize.list[localStoreSize.max] >= localStoreSize.limit / 4 }\\\">Max<div class=\\\"detail\\\">{{localStoreSize.max}} - {{localStoreSize.list[localStoreSize.max] | bytes}}</div></a> <strong>Localstore space occupied:</strong></div><main ui-view=\\\"\\\" class=\\\"ui container\\\"></main><footer></footer>\");\n$templateCache.put(\"app/frame/hello.html\",\"<div class=\\\"center aligned column\\\"><h1 class=\\\"ui icon header\\\">Angular-jsonapi showcase</h1><p>Go to one of the models in the menu and check out how this package works.</p><p>If you want to use it yourself check <a href=\\\"https://github.com/jakubrohleder/angular-jsonapi\\\">github readme</a> and <a href=\\\"https://github.com/jakubrohleder/angular-jsonapi/tree/master/demo/app\\\">source code</a> of this demo.</p></div>\");\n$templateCache.put(\"app/request/all.html\",\"<h2>All</h2><angular-jsonapi-collection data=\\\"collection\\\"></angular-jsonapi-collection>\");\n$templateCache.put(\"app/request/get.html\",\"<h2>Get</h2><p>{{object.toString()}}</p>\");\n$templateCache.put(\"app/sidebar/sidebar.html\",\"<div ui-sidebar=\\\"\\\" class=\\\"ui vertical inverted sidebar menu left\\\" arguments=\\\"[\\'attach events\\', \\'.toc.item\\']\\\"><a class=\\\"item logo\\\" ui-sref=\\\"frame.hello\\\" ui-sref-active=\\\"active\\\">Angular JSON API demo</a> <a ng-repeat=\\\"name in names\\\" class=\\\"item\\\" ui-sref=\\\"frame.request.all({type: name})\\\" ui-sref-active=\\\"active\\\">{{name}}</a></div>\");\n$templateCache.put(\"app/components/attribute-field/attribute-field.html\",\"<div class=\\\"field\\\" ng-class=\\\"{ error: object.errors.validation.hasErrors(key), success: !object.errors.validation.hasErrors(key) && object.form.data.attributes[key] !== object.data.attributes[key] }\\\"><label>{{key | toTitleCase}}</label> <input type=\\\"text\\\" name=\\\"{{key}}\\\" ng-model=\\\"object.form.data.attributes[key]\\\" ng-model-options=\\\"{ updateOn: \\'default blur\\', debounce: { \\'default\\': 500, \\'blur\\': 0 } }\\\" ng-change=\\\"object.form.validate(key)\\\"><div class=\\\"ui error message\\\" ng-show=\\\"object.errors.validation.hasErrors(key)\\\"><ul class=\\\"list\\\"><li ng-repeat=\\\"error in object.errors.validation.errors[key]\\\">{{error.message}}</li></ul></div></div>\");\n$templateCache.put(\"app/components/collection/collection.html\",\"<h3 class=\\\"h3\\\">{{collection.type}}<json-formatter style=\\\"display: inline;\\\" json=\\\"collection.params\\\" open=\\\"0\\\"></json-formatter></h3><small>Loading {{collection.loadingCount}}:{{collection.loading}}</small><div class=\\\"row\\\"><div class=\\\"ui mini icon input\\\"><input type=\\\"text\\\" placeholder=\\\"Object ID\\\" ng-model=\\\"getInput\\\"> <i class=\\\"search icon\\\"></i></div><button promise-button=\\\"\\\" class=\\\"ui button mini primary\\\" ng-click=\\\"collection.get(getInput)\\\" ng-class=\\\"{disabled: getInput === undefined || getInput.length === 0}\\\">Get</button> <button promise-button=\\\"\\\" class=\\\"ui button mini green\\\" ng-click=\\\"collection.refresh()\\\">Refresh</button> <button class=\\\"ui button mini yellow\\\" ng-click=\\\"add()\\\">Add</button><div ui-dropdown=\\\"\\\" class=\\\"ui mini selection dropdown\\\" ng-model=\\\"filterKey\\\"><div class=\\\"ui mini icon input\\\"><input type=\\\"hidden\\\" name=\\\"gender\\\"></div><i class=\\\"dropdown icon\\\"></i><div class=\\\"default text\\\">Key</div><div class=\\\"menu\\\"><div ng-show=\\\"$parent.filters[key] === undefined\\\" class=\\\"item\\\" data-value=\\\"{{key}}\\\" ng-repeat=\\\"(key, schema) in collection.resource.schema.attributes\\\">{{key}}</div></div></div><button class=\\\"ui button mini violet\\\" ng-click=\\\"addFilter(filterKey)\\\" ng-class=\\\"{disabled: filterKey === undefined || filters[filterKey] !== undefined}\\\">Add Filter</button> <button class=\\\"ui button mini red\\\" ng-click=\\\"clearFilter()\\\" ng-show=\\\"collection.params.filter\\\">Clear Filter</button><div class=\\\"ui red basic mini right floated button\\\" ng-hide=\\\"collection.synchronized\\\">Synchronizing...</div><div class=\\\"ui basic mini right floated button\\\" ng-show=\\\"collection.synchronized\\\" ng-class=\\\"{ green: updateDiff <= 30, yellow: updateDiff > 30 && updateDiff < 240, red: updateDiff >= 240 }\\\">Synchronized {{updateDiff}} s. ago</div></div><div ng-show=\\\"objectKeys(filters)\\\" class=\\\"ui hidden divider\\\"></div><div class=\\\"ui small form\\\"><div class=\\\"fields\\\" ng-repeat=\\\"(key, value) in filters\\\"><div class=\\\"field\\\"><label ng-show=\\\"$first\\\">Key</label><div class=\\\"ui mini input\\\"><input type=\\\"text\\\" ng-model=\\\"key\\\" placeholder=\\\"Key\\\" readonly=\\\"readonly\\\"></div></div><div class=\\\"field\\\"><label ng-show=\\\"$first\\\">Value</label><div class=\\\"ui mini input\\\"><input type=\\\"text\\\" ng-model=\\\"filters[key]\\\" placeholder=\\\"Value\\\"></div></div><div class=\\\"field\\\"><label ng-show=\\\"$first\\\" style=\\\"visibility: hidden\\\">Remove</label> <button class=\\\"mini red right labeled icon ui button\\\" ng-click=\\\"removeFilter(key)\\\"><i class=\\\"remove icon\\\"></i> Remove</button></div></div><button ng-show=\\\"objectKeys(filters)\\\" class=\\\"mini violet right labeled icon ui button\\\" ng-click=\\\"filter()\\\"><i class=\\\"filter icon\\\"></i> Filter</button></div><div class=\\\"ui divider\\\"></div><error-message ng-show=\\\"collection.hasErrors()\\\" data=\\\"collection.errors\\\"></error-message><div ng-show=\\\"collection.error\\\" class=\\\"ui divider hidden\\\"></div><div class=\\\"collection\\\" ng-show=\\\"filteredObjects.length > 0\\\"><h3>New objects</h3><angular-jsonapi-object nested=\\\"false\\\" data=\\\"object\\\" ng-repeat=\\\"object in filteredObjects = (newObjects | filter: {new: true})\\\"></angular-jsonapi-object></div><div class=\\\"collection\\\"><h3>All objects</h3><div ng-show=\\\"collection.pristine && collection.loading\\\" class=\\\"ui large active text loader\\\">Loading collection for the first time</div><div ng-show=\\\"collection.pristine && !collection.loading\\\" class=\\\"ui large active text loader\\\">Collection not synchronized, refresh it to fetch data</div><angular-jsonapi-object nested=\\\"false\\\" data=\\\"object\\\" ng-repeat=\\\"object in collection.data\\\"></angular-jsonapi-object><div class=\\\"ui basic segment fixed bottom\\\"><div class=\\\"ui black button\\\" ng-click=\\\"close()\\\">Close all models</div><div class=\\\"ui grey button\\\" ng-click=\\\"clear()\\\">Clear cache</div></div></div>\");\n$templateCache.put(\"app/components/error-message/error-list.html\",\"<div class=\\\"ui list\\\"><div class=\\\"item\\\" ng-repeat=\\\"errorManager in errors track by errorManager.name\\\" ng-show=\\\"errorManager.hasErrors()\\\"><i class=\\\"thumbs outline down icon\\\"></i><div class=\\\"content\\\"><div class=\\\"header\\\">{{errorManager.name}}</div><div class=\\\"description\\\">{{errorManager.description}}</div><div class=\\\"list\\\"><div class=\\\"item\\\" ng-repeat=\\\"(key, errors) in errorManager.errors\\\" ng-show=\\\"errorManager.hasErrors(key)\\\"><div class=\\\"content\\\"><div class=\\\"header\\\">{{key}}</div><div class=\\\"list\\\"><div class=\\\"item\\\" ng-repeat=\\\"error in errors\\\"><i class=\\\"warning icon\\\"></i><div class=\\\"content\\\"><div class=\\\"description\\\">{{error.message}}</div></div></div></div></div></div></div></div></div></div>\");\n$templateCache.put(\"app/components/error-message/error-message.html\",\"<div class=\\\"ui error message\\\"><div class=\\\"header\\\">There were some errors:</div><div class=\\\"ui divider\\\"></div><error-list data=\\\"errors\\\"></error-list></div>\");\n$templateCache.put(\"app/components/object/object-relationships.html\",\"<div class=\\\"ui padded segment\\\" ng-repeat=\\\"(relationshipName, relationshipCollection) in object.relationships\\\" ng-class=\\\"{red: form}\\\"><div class=\\\"ui stackable grid\\\"><div class=\\\"four wide column\\\" style=\\\"padding-left:0\\\"><h4 style=\\\"margin-bottom: 0;\\\" clip-copy=\\\"object.data.id\\\"><span ng-if=\\\"form\\\">Form:</span>{{object.schema.relationships[relationshipName].model}}</h4><small ng-show=\\\"object.schema.relationships[relationshipName].polymorphic\\\">polymorphic</small></div><div class=\\\"twelve wide column\\\"><button class=\\\"ui mini green left floated button\\\" ng-hide=\\\"object.schema.relationships[relationshipName].polymorphic\\\" ng-click=\\\"expression\\\">Create new {{object.schema.relationships[relationshipName].model}}</button><angular-jsonapi-search object=\\\"object\\\" key=\\\"relationshipName\\\" class=\\\"ui left floated\\\"></angular-jsonapi-search><button class=\\\"ui mini primary right floated button\\\" ng-hide=\\\"object.schema.relationships[relationshipName].polymorphic\\\" ui-sref=\\\"frame.request.all({type: object.schema.relationships[relationshipName].model})\\\">Go to {{object.schema.relationships[relationshipName].model}}</button></div></div><div class=\\\"ui divider hidden\\\"></div><div ng-show=\\\"object.new === true && form === false\\\"><strong>Relationship data locked for new object</strong><div>This object is new, you can only add relationships to its form.</div></div><div ng-show=\\\"object.new === false && relationshipCollection === undefined\\\"><strong>Relationship data undefined</strong><div>The relationship data hasn\\'t been fetched yet, refresh the model to fetch it.</div></div><div ng-show=\\\"object.new === false &&relationshipCollection === null\\\"><strong>Has one relationship null</strong><div>Set something as relationship object.</div></div><div ng-show=\\\"(object.new === false || (object.parent.new === true && form === true)) && isArray(relationshipCollection) && relationshipCollection.length === 0\\\"><strong>Has many relationship empty</strong><div>Add something to the relationship array.</div></div><angular-jsonapi-object data=\\\"relationshipObject\\\" nested=\\\"true\\\" unlink=\\\"object.unlink(relationshipName, relationshipObject)\\\" ng-if=\\\"relationshipCollection !== undefined && isArray(relationshipCollection)\\\" ng-repeat=\\\"relationshipObject in relationshipCollection\\\"></angular-jsonapi-object><angular-jsonapi-object data=\\\"relationshipCollection\\\" nested=\\\"true\\\" unlink=\\\"object.unlink(relationshipName, relationshipCollection)\\\" ng-if=\\\"relationshipCollection !== undefined && !isArray(relationshipCollection) && relationshipCollection !== null\\\"></angular-jsonapi-object></div>\");\n$templateCache.put(\"app/components/object/object.html\",\"<div class=\\\"ui padded segment\\\"><div class=\\\"ui stackable grid\\\"><div class=\\\"four wide column\\\" style=\\\"padding: 0;\\\"><small>Loading {{object.loadingCount}}:{{object.loading}} Saving {{object.savingCount}}:{{object.saving}}</small><h4 style=\\\"margin-bottom: 0; margin-top: 0;\\\" clip-copy=\\\"object.data.id\\\">{{object.toString()}}</h4><small>{{object.data.type}}:{{object.data.id}}</small></div><div class=\\\"twelve wide column\\\"><button class=\\\"ui mini button\\\" ng-init=\\\"showMore = $parent.$first && !nested\\\" ng-click=\\\"showMore = !showMore\\\" ng-class=\\\"{yellow: showMore, olive: !showMore, disabled: object.removed}\\\">Show more</button> <button ng-class=\\\"{disabled: object.removed}\\\" class=\\\"ui primary mini button\\\" clip-copy=\\\"object.data.id\\\">Copy ID</button> <button promise-button=\\\"\\\" ng-class=\\\"{disabled: object.removed}\\\" class=\\\"ui green mini button\\\" ng-click=\\\"object.refresh()\\\">Refresh</button> <button promise-button=\\\"\\\" ng-class=\\\"{disabled: object.removed}\\\" class=\\\"ui orange mini button\\\" ng-show=\\\"nested\\\" ng-click=\\\"unlink()\\\">Unlink</button> <button promise-button=\\\"\\\" ng-class=\\\"{disabled: object.removed}\\\" class=\\\"ui red mini button\\\" ng-click=\\\"object.remove()\\\" ng-hide=\\\"object.removed\\\">Remove</button> <button promise-button=\\\"\\\" ng-class=\\\"{red: !object.stable, green: object.stable}\\\" class=\\\"ui mini basic button\\\">Stable</button> <button promise-button=\\\"\\\" ng-class=\\\"{red: !object.new, green: object.new}\\\" class=\\\"ui mini basic button\\\">New</button><div class=\\\"ui red basic mini right floated button\\\" ng-hide=\\\"object.synchronized\\\">Not synchronized</div><div class=\\\"ui basic green mini right floated button\\\" ng-if=\\\"!showMore\\\" ng-show=\\\"object.synchronized\\\">Synchronized</div><div class=\\\"ui basic mini right floated button\\\" ng-if=\\\"showMore\\\" ng-show=\\\"object.synchronized\\\" ng-class=\\\"{ green: updateDiff <= 30, yellow: updateDiff > 30 && updateDiff < 240, red: updateDiff >= 240 }\\\">Synchronized {{updateDiff}} s. ago</div></div></div><div ng-if=\\\"showMore\\\"><div class=\\\"ui divider hidden\\\"></div><div ng-show=\\\"object.hasErrors()\\\"><error-message data=\\\"object.errors\\\"></error-message><div class=\\\"ui divider hidden\\\"></div></div><div class=\\\"ui stackable grid\\\"><div class=\\\"eight wide column\\\"><div class=\\\"ui segment\\\"><h4>Data</h4><div class=\\\"ui basic mini button\\\" style=\\\"position: absolute; top: 10px; right: 10px;\\\" ng-class=\\\"{purple: !showFormRelationships}\\\" ng-click=\\\"showFormRelationships = !showFormRelationships\\\">Show relationships</div><div class=\\\"ui list\\\"><div class=\\\"item\\\" ng-repeat=\\\"(attributeName, attributeValue) in object.data.attributes\\\"><div class=\\\"content\\\"><div class=\\\"header\\\">{{attributeValue}}</div><div class=\\\"description\\\">{{attributeName | toTitleCase}}</div></div></div><div class=\\\"item\\\"><div class=\\\"content\\\"><div class=\\\"header\\\">Relationships</div><div class=\\\"description\\\"><json-formatter json=\\\"object.data.relationships\\\" open=\\\"0\\\"></json-formatter></div></div></div></div></div></div><div class=\\\"eight wide column\\\"><div class=\\\"ui segment\\\" ng-class=\\\"{loading: !object.synchronized && !object.new}\\\"><h4>Form</h4><div class=\\\"ui basic mini button\\\" style=\\\"position: absolute; top: 10px; right: 10px;\\\" ng-class=\\\"{purple: showFormRelationships}\\\" ng-click=\\\"showFormRelationships = !showFormRelationships\\\">Show relationships</div><form class=\\\"ui small form\\\" ng-class=\\\"{error: object.error}\\\"><div attribute-field=\\\"\\\" key=\\\"attributeKey\\\" object=\\\"object\\\" ng-repeat=\\\"(attributeKey, attributeValue) in object.form.data.attributes\\\"></div><div class=\\\"ui divider hidden\\\"></div><button promise-button=\\\"\\\" ng-class=\\\"{disabled: object.removed}\\\" class=\\\"ui blue mini button\\\" ng-click=\\\"object.save()\\\">Save</button> <button promise-button=\\\"\\\" ng-class=\\\"{disabled: object.removed}\\\" class=\\\"ui red mini button\\\" ng-click=\\\"object.reset()\\\">Reset</button></form></div></div></div><div class=\\\"ui divider hidden\\\"></div><angular-jsonapi-object-relationships ng-hide=\\\"showFormRelationships\\\" data=\\\"object\\\"></angular-jsonapi-object-relationships><angular-jsonapi-object-relationships ng-show=\\\"showFormRelationships\\\" data=\\\"object.form\\\"></angular-jsonapi-object-relationships></div></div><div ng-show=\\\"showMore\\\" class=\\\"ui divider hidden\\\"></div>\");\n$templateCache.put(\"app/components/search/search-polymorphic.html\",\"<div class=\\\"ui category search focus\\\"><div class=\\\"ui mini left icon input\\\" ng-class=\\\"{loading: loading, error: error, \\'right action\\': show}\\\"><input ng-focus=\\\"showResults()\\\" ng-model=\\\"input\\\" placeholder=\\\"Add {{object.schema.relationships[key].model}}\\\" autocomplete=\\\"off\\\" ng-disabled=\\\"loading\\\"> <i class=\\\"plus icon\\\"></i> <button class=\\\"ui red mini icon button\\\" ng-show=\\\"show\\\" ng-focus=\\\"hideResults()\\\"><i class=\\\"remove icon\\\"></i></button></div><div class=\\\"ui left pointing red basic label\\\" ng-show=\\\"error\\\">{{errorText}}</div><div class=\\\"results\\\" ng-show=\\\"show\\\"><div class=\\\"category\\\" ng-repeat=\\\"(name, collection) in filteredCollections = (collections | angularJsonapiSearchCollection : input)\\\"><div class=\\\"name\\\" ng-click=\\\"setInput(\\'\\')\\\">{{name}}</div><a class=\\\"result\\\" ng-repeat=\\\"object in filteredCollection = (collection | angularJsonapiSearchObject : input : object.relationships[key] : true)\\\" ng-click=\\\"addLink(object)\\\"><div class=\\\"content\\\"><div class=\\\"title\\\">{{object.toString()}}</div><div class=\\\"description\\\">{{object.data.id}}</div></div></a> <a class=\\\"result\\\" ng-show=\\\"filteredCollection.length === 0\\\" ng-click=\\\"setInput(name)\\\"><div class=\\\"content\\\"><div class=\\\"title\\\">{{collection.length}} objects</div><div class=\\\"description\\\">Type full name of model to unroll or typeahead with new word</div></div></a></div><div class=\\\"message empty\\\" ng-show=\\\"isEmpty(filteredCollections)\\\"><div class=\\\"header\\\">No Results</div><div class=\\\"description\\\">Your search returned no results</div></div></div></div>\");\n$templateCache.put(\"app/components/search/search.html\",\"<div class=\\\"ui category search focus\\\"><div class=\\\"ui mini left icon input\\\" ng-class=\\\"{loading: loading, error: error, \\'right action\\': show}\\\"><input ng-focus=\\\"showResults()\\\" ng-model=\\\"input\\\" placeholder=\\\"Add {{object.schema.relationships[key].model}}\\\" autocomplete=\\\"off\\\" ng-disabled=\\\"loading || object.relationships[key] === undefined || object.new === true\\\"> <i class=\\\"plus icon\\\"></i> <button class=\\\"ui red mini icon button\\\" ng-show=\\\"show\\\" ng-focus=\\\"hideResults()\\\"><i class=\\\"remove icon\\\"></i></button></div><div class=\\\"ui left pointing red basic label\\\" ng-show=\\\"error\\\">{{errorText}}</div><div class=\\\"results\\\" ng-show=\\\"show\\\"><div class=\\\"category\\\"><div class=\\\"name\\\" ng-click=\\\"setInput(\\'\\')\\\">{{model}}</div><a class=\\\"result\\\" ng-repeat=\\\"object in filteredCollection = (collection | angularJsonapiSearchObject : input : object.relationships[key] : false)\\\" ng-click=\\\"addLink(object)\\\"><div class=\\\"content\\\"><div class=\\\"title\\\">{{object.toString()}}</div><div class=\\\"description\\\">{{object.data.id}}</div></div></a> <a class=\\\"result\\\" ng-show=\\\"filteredCollection.length === 0\\\" ng-click=\\\"setInput(model)\\\"><div class=\\\"content\\\"><div class=\\\"title\\\">{{collection.length}} objects</div><div class=\\\"description\\\">Type full name of model to unroll or typeahead with new word</div></div></a> <a class=\\\"result\\\" ng-show=\\\"filteredCollection === undefined\\\" ng-click=\\\"getIndex(model)\\\"><div class=\\\"content\\\"><div class=\\\"title\\\">Not synchronized</div><div class=\\\"description\\\">These collection hasn\\'t been synchronized yet by ALL request, click to do it.</div></div></a></div></div></div>\");}]);"],"sourceRoot":"/source/"}