dist-demo/maps/scripts/app-05b05487e7.js.map
{"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/"}