{"action":"created","comment":{"url":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/comments/42101963","id":42101963,"diff_hunk":"@@ -0,0 +1,322 @@\n+(function(){\n+\t'use strict';\n+\n+\tvar MAX_COUNT = 5; // MAGIC_NUMBER\n+\tvar MAGIC_NUMBER_maxUsers = 10000; // Number of users to retrieve when using a user-picker-multiple or custom filter\n+\tvar DEFAULT_HOMONYMS_PROPERTIES = [\"department.name\", \"legalEntity.name\", \"employeeNumber\", \"mail\"]; // MAGIC_STRING\n+\n+\tvar uiSelectChoicesTemplate = \"<ui-select-choices repeat=\\\"user in users\\\" refresh=\\\"find($select.search)\\\" refreshDelay=\\\"200\\\" ui-disable-choice=\\\"!!user.overflow\\\">\" +\n+\t\"<div ng-bind-html=\\\"user.firstName + ' ' + user.lastName | highlight: $select.search\\\" ng-if=\\\"!user.overflow\\\"></div>\" +\n+\t\"<small ng-if=\\\"!user.overflow && user.hasHomonyms && getProperty(user, property)\\\" ng-repeat=\\\"property in properties\\\">{{property}}: {{getProperty(user, property)}}<br/></small>\" +\n+\t\"<small ng-if=\\\"showFormerEmployees && user.isFormerEmployee\\\">VAR_TRAD Parti(e) le {{user.dtContractEnd | luifMoment: 'll'}}</small>\" +\n+\t\"<small ng-if=\\\"user.overflow\\\">{{user.overflow}}</small>\" +\n+\t\"</ui-select-choices>\";\n+\n+\tvar userPickerTemplate = \"<ui-select ng-model=\\\"user\\\" theme=\\\"bootstrap\\\"\" +\n+\t\"class=\\\"lui regular nguibs-ui-select\\\" on-select=\\\"onSelect()\\\" on-remove=\\\"onRemove()\\\" ng-disabled=\\\"controlDisabled\\\">\" +\n+\t\"<ui-select-match placeholder=\\\"{{ $select.selected.firstName }} {{$select.selected.lastName}}\\\">{{ $select.selected.firstName }} {{$select.selected.lastName}}</ui-select-match>\" +\n+\tuiSelectChoicesTemplate +\n+\t\"</ui-select>\";\n+\n+\tvar userPickerMultipleTemplate = \"<ui-select multiple ng-model=\\\"selected.users\\\" theme=\\\"bootstrap\\\"\" +\n+\t\"class=\\\"lui regular nguibs-ui-select\\\" on-select=\\\"addSelectedUser()\\\" on-remove=\\\"onRemove()\\\" ng-disabled=\\\"controlDisabled\\\">\" +\n+\t\"<ui-select-match placeholder=\\\"VAR_TRAD Sélectionner un utilisateur...\\\">{{$item.firstName}} {{$item.lastName}} \" +\n+\t\"<span ng-if=\\\"$item.hasHomonyms\\\" ng-repeat=\\\"property in properties\\\">&lt{{getProperty($item, property)}}&gt</span>\" +\n+\t\"<span ng-if=\\\"$item.isFormerEmployee\\\">&lt;VAR_TRAD Parti(e) le {{$item.dtContractEnd | luifMoment: 'll'}}&gt;</span>\" +\n+\t\"</ui-select-match>\" +\n+\tuiSelectChoicesTemplate +\n+\t\"</ui-select>\";\n+\n+\n+\tangular.module('lui.directives')\n+\t.directive('luidUserPicker', function () {\n+\t\treturn {\n+\t\t\trestrict: 'E',\n+\t\t\tcontroller: \"luidUserPickerController\",\n+\t\t\ttemplate: userPickerTemplate,\n+\t\t\trequire: \"luidUserPicker\",\n+\t\t\tscope: {\n+\t\t\t\tshowFormerEmployees: \"=\",\n+\t\t\t\tonSelect: \"&\",\n+\t\t\t\tonRemove: \"&\",\n+\t\t\t\tcontrolDisabled: \"=\",\n+\t\t\t\tuseCustomFilter: \"=\",\n+\t\t\t\tcustomFilter: \"&\",\n+\t\t\t\tappId: \"@\",\n+\t\t\t\toperation: \"@\",\n+\t\t\t\thomonymsProperties: \"@\"\n+\t\t\t},\n+\t\t\tlink: function (scope, elt, attrs, ctrls) {\n+\t\t\t\tif (attrs.homonymsProperties) {\n+\t\t\t\t\tscope.properties = attrs.homonymsProperties.split(',');\n+\t\t\t\t}\n+\t\t\t\telse {\n+\t\t\t\t\tscope.properties = DEFAULT_HOMONYMS_PROPERTIES;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t};\n+\t})\n+\n+\t.directive('luidUserPickerMultiple', function () {\n+\t\treturn {\n+\t\t\trestrict: 'E',\n+\t\t\tcontroller: \"luidUserPickerController\",\n+\t\t\ttemplate: userPickerMultipleTemplate,\n+\t\t\trequire: \"luidUserPickerController\",\n+\t\t\tscope: {\n+\t\t\t\tshowFormerEmployees: \"=\",\n+\t\t\t\tonSelect: \"&\",\n+\t\t\t\tonRemove: \"&\",\n+\t\t\t\tcontrolDisabled: \"=\",\n+\t\t\t\tuseCustomFilter: \"=\",\n+\t\t\t\tcustomFilter: \"&\",\n+\t\t\t\tappId: \"@\",\n+\t\t\t\toperation: \"@\",\n+\t\t\t\thomonymsProperties: \"@\"\n+\t\t\t},\n+\t\t\tlink: function (scope, elt, attrs, ctrls) {\n+\t\t\t\tif (attrs.homonymsProperties) {\n+\t\t\t\t\tscope.properties = attrs.homonymsProperties.split(',');\n+\t\t\t\t}\n+\t\t\t\telse {\n+\t\t\t\t\tscope.properties = DEFAULT_HOMONYMS_PROPERTIES;\n+\t\t\t\t}\n+\t\t\t}\n+\t\t};\n+\t})\n+\n+\t.controller(\"luidUserPickerController\", ['$scope', '$http', 'moment', '$timeout', '$q', function ($scope, $http, moment, $timeout, $q) {\n+\t\tvar timeout = {};\n+\t\tvar promise;\n+\t\tvar maxUsers = 0;\n+\t\tvar selectedUsersCount = 0;\n+\n+\t\t$scope.user = {};\n+\t\t$scope.selected = {};\n+\t\t$scope.selected.users = [];\n+\n+\t\tvar getUsers = function(init, input) {\n+\t\t\tvar formerEmployees = \"formerEmployees=\" + ($scope.showFormerEmployees ? \"true\" : \"false\");\n+\t\t\tvar limit = \"&limit=\";\n+\t\t\tvar clue = \"&clue=\" + input;\n+\t\t\tvar query = \"/api/v3/users/find?\" + (init ? \"\" : (clue + \"&\")) + formerEmployees;\n+\n+\t\t\tif (promise) {\n+\t\t\t\tpromise.then(function (response) {}); // do nothing\n+\t\t\t}\n+\n+\t\t\t// Cancel previous timeout\n+\t\t\tif (timeout.count) {\n+\t\t\t\t$timeout.cancel(timeout.count);\n+\t\t\t}\n+\n+\t\t\t// If we use a UserPickerMultiple or a custom filter, we ask for all the users\n+\t\t\tif ((selectedUsersCount !== 0) || ($scope.useCustomFilter)) {\n+\t\t\t\tlimit += MAGIC_NUMBER_maxUsers;\n+\t\t\t}\n+\t\t\telse {\n+\t\t\t\tlimit += (MAX_COUNT + 1);\n+\t\t\t}\n+\t\t\tquery += limit;\n+\n+\t\t\tpromise = $http.get(query);\n+\t\t\tpromise.then(function (response) {\n+\t\t\t\t$scope.users = response.data.data.items;\n+\n+\t\t\t\t// Handle pagination\n+\t\t\t\tif (!$scope.useCustomFilter && (selectedUsersCount === 0)) {\n+\t\t\t\t\t// If there are more results than MAX_COUNT, launch a timer to get the number of results\n+\t\t\t\t\tif ($scope.users.length > MAX_COUNT) {\n+\t\t\t\t\t\tcountTimeout(input);\n+\t\t\t\t\t\t$scope.users = _.first($scope.users, MAX_COUNT);\n+\t\t\t\t\t\t$scope.users.push({ overflow: MAX_COUNT + \"/...\" });\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\t\t\t\telse {\n+\t\t\t\t\t// Used for UserPickerMultiple only\n+\t\t\t\t\tif (selectedUsersCount > 0) {\n+\t\t\t\t\t\t// Remove duplicates between results and selected users\n+\t\t\t\t\t\t_.each($scope.selected.users, function (selectedUser) {\n+\t\t\t\t\t\t\t$scope.users = _.reject($scope.users, function (user) {\n+\t\t\t\t\t\t\t\treturn (user.id === selectedUser.id);\n+\t\t\t\t\t\t\t});\n+\t\t\t\t\t\t});\n+\t\t\t\t\t\t// Number of results matching the query\n+\t\t\t\t\t\t$scope.count = $scope.users.length;\n+\t\t\t\t\t}\n+\n+\t\t\t\t\t// Used when a custom filtering function is given\n+\t\t\t\t\tif ($scope.useCustomFilter) {\n+\t\t\t\t\t\t// Get new set of users\n+\t\t\t\t\t\t$scope.users = $scope.customFilter({ users: $scope.users });\n+\t\t\t\t\t\t$scope.count = $scope.users.length;\n+\t\t\t\t\t}\n+\n+\t\t\t\t\tif ($scope.count > MAX_COUNT) {\n+\t\t\t\t\t\t$scope.users = _.first($scope.users, MAX_COUNT);\n+\t\t\t\t\t\t$scope.users.push({ overflow: MAX_COUNT + \"/\" + $scope.count });\n+\t\t\t\t\t}\n+\t\t\t\t}\n+\n+\t\t\t\tif ($scope.showFormerEmployees) {\n+\t\t\t\t\tcheckFormerEmployees();\n+\t\t\t\t}\n+\n+\t\t\t\tif (hasHomonyms()) {\n+\t\t\t\t\tgetHomonymsProperties();\n+\t\t\t\t}\n+\t\t\t});\n+\t\t};\n+\n+\t\tvar checkFormerEmployees = function () {\n+\t\t\t_.each($scope.users, function (user) {\n+\t\t\t\tif (moment(user.dtContractEnd).isBefore(moment())) {\n+\t\t\t\t\tuser.isFormerEmployee = true;\n+\t\t\t\t}\n+\t\t\t});\n+\t\t};\n+\n+\t\tvar hasHomonyms = function () {\n+\t\t\tvar hasHomonyms = false;\n+\n+\t\t\t_.each($scope.users, function (user) {\n+\t\t\t\t\t\t\t\t// Search homonyms in set of results\n+\t\t\t\t\t\t\t\t_.each($scope.users, function (otherUser) {\n+\t\t\t\t\t\t\t\t\tif ((user.firstName === otherUser.firstName) && (user.lastName === otherUser.lastName) && (user.id !== otherUser.id)) {\n+\t\t\t\t\t\t\t\t\t\tuser.hasHomonyms = true;\n+\t\t\t\t\t\t\t\t\t\totherUser.hasHomonyms = true;\n+\t\t\t\t\t\t\t\t\t\tif (!hasHomonyms) {\n+\t\t\t\t\t\t\t\t\t\t\thasHomonyms = true;\n+\t\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t});\n+\n+\t\t\t\t\t\t\t\t// Search homonyms in selected users (used by UserPickerMultiple only)\n+\t\t\t\t\t\t\t\t_.each($scope.selected.users, function (selectedUser) {\n+\t\t\t\t\t\t\t\t\tif ((user.firstName === selectedUser.firstName) && (user.lastName === selectedUser.lastName)) {\n+\t\t\t\t\t\t\t\t\t\tuser.hasHomonyms = true;\n+\t\t\t\t\t\t\t\t\t\tselectedUser.hasHomonyms = true;\n+\t\t\t\t\t\t\t\t\t\tif (!hasHomonyms) {\n+\t\t\t\t\t\t\t\t\t\t\thasHomonyms = true;\n+\t\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t\t}\n+\t\t\t\t\t\t\t\t});\n+\t\t\t\t\t\t\t});\n+\t\t\treturn hasHomonyms;\n+\t\t};\n+\n+\t\tvar getHomonymsProperties = function () {\n+\t\t\tvar homonyms = _.where($scope.users, { hasHomonyms: true });\n+\t\t\tvar homonymsArray = [];\n+\n+\t\t\tloadPropertiesFromUrls(homonyms).then(function (response) {\n+\t\t\t\t\t\t\t\t// Add homonyms properties for each user\n+\t\t\t\t\t\t\t\t_.each(homonyms, function (user, item) {\n+\t\t\t\t\t\t\t\t\t// Get the returned user\n+\t\t\t\t\t\t\t\t\tvar userWithProps = response[item].data.data.items[0];\n+\n+\t\t\t\t\t\t\t\t\t// Add each property to the user\n+\t\t\t\t\t\t\t\t\t_.each($scope.properties, function (prop) {\n+\t\t\t\t\t\t\t\t\t\tvar newProp = prop.split('.')[0];\n+\t\t\t\t\t\t\t\t\t\tuser[newProp] = userWithProps[newProp];\n+\t\t\t\t\t\t\t\t\t});\n+\t\t\t\t\t\t\t\t});\n+\t\t\t\t\t\t\t});\n+\t\t};\n+\n+\t\tvar loadPropertiesFromUrls = function (homonyms) {\n+\t\t\tvar urlCalls = [];\n+\t\t\tvar queries = [];\n+\t\t\tvar templateQuery = \"/api/v3/users?id=\";\n+\t\t\tvar fields = \"&fields=id,name,firstname,lastname,dtcontractend\";\n+\t\t\tvar deferred = $q.defer();\n+\n+\t\t\t// WARNING: Do not check if the properties exist!\n+\t\t\t// WARNING: If they do not exist, the request will fail\n+\t\t\t_.each($scope.properties, function (prop) {\n+\t\t\t\tfields += \",\" + prop;\n+\t\t\t});\n+\n+\t\t\t_.each(homonyms, function (user) {\n+\t\t\t\tqueries.push(templateQuery + user.id + fields);\n+\t\t\t});\n+\n+\t\t\t_.each(queries, function (query) {\n+\t\t\t\turlCalls.push($http.get(query));\n+\t\t\t});\n+\n+\t\t\t$q.all(urlCalls)\n+\t\t\t.then(\n+\t\t\t\tfunction (response) {\n+\t\t\t\t\tdeferred.resolve(response);\n+\t\t\t\t},\n+\t\t\t\tfunction (error) {\n+\t\t\t\t\tdeferred.reject(error);\n+\t\t\t\t}\n+\t\t\t\t);\n+\t\t\treturn deferred.promise;\n+\t\t};\n+\n+\t\tvar countTimeout = function (input, delay) {\n+\t\t\tdelay = delay || 5000; // default delay value 1s\n+\n+\t\t\t// cancel previous timeout\n+\t\t\tif (timeout.count) {\n+\t\t\t\tconsole.log(\"-- cancel previous timeout\");\n+\t\t\t\t$timeout.cancel(timeout.count);\n+\t\t\t}\n+\n+\t\t\t// launch new timeout to save in _delay_ \n+\t\t\ttimeout.count = $timeout(function () {\n+\t\t\t\tdoCount(input);\n+\t\t\t}, delay);\n+\t\t};\n+\n+\t\tvar doCount = function (input) {\n+\t\t\tvar query = \"/api/v3/users?name=like,\" + input + \"&fields=collection.count\"; // query for count\n+\n+\t\t\tdelete timeout.count;\n+\n+\t\t\t$http.get(query)\n+\t\t\t.then(function (response) {\n+\t\t\t\t\t$scope.count = response.data.data.count; // To update with right query\n+\t\t\t\t\t_.last($scope.users).overflow = MAX_COUNT + \"/\" + $scope.count;\n+\t\t\t\t});\n+\t\t};\n+\n+\t\t$scope.getProperty = function (user, prop) {\n+\t\t\tvar propList = prop.split('.');\n+\t\t\tvar value = user[_.first(propList)];\n+\n+\t\t\t_.each(propList, function (item) {\n+\t\t\t\tif (value && (item !== _.first(propList))) {\n+\t\t\t\t\tvalue = value[item];\n+\t\t\t\t}\n+\t\t\t});\n+\n+\t\t\treturn value;\n+\t\t};\n+\n+\t\t// Used by UserPickerMultiple\n+\t\t// Function executed when onSelect is fired\n+\t\t$scope.addSelectedUser = function () {\n+\t\t\t$scope.onSelect();\n+\t\t\tselectedUsersCount++;\n+\t\t\t// Update overflow message\n+\t\t\tif ($scope.count > MAX_COUNT) {\n+\t\t\t\t_.last($scope.users).overflow = (MAX_COUNT - selectedUsersCount) + \"/\" + $scope.count;\n+\t\t\t}\n+\t\t};\n+\n+\t\t$scope.find = function (input) {\n+\t\t\tif (input) {\n+\t\t\t\tgetUsers(false, input);\n+\t\t\t}\n+\t\t\t// For initialization\n+\t\t\telse {\n+\t\t\t\tgetUsers(true, \"\");\n+\t\t\t}\n+\t\t};","path":"js/directives/lucca/user-picker.js","position":319,"original_position":319,"commit_id":"0a4e8807ea9c0ec357f513f82219c9a38d0e9212","original_commit_id":"0a4e8807ea9c0ec357f513f82219c9a38d0e9212","user":{"login":"lucienbertin","id":10089239,"avatar_url":"https://avatars.githubusercontent.com/u/10089239?v=3","gravatar_id":"","url":"https://api.github.com/users/lucienbertin","html_url":"https://github.com/lucienbertin","followers_url":"https://api.github.com/users/lucienbertin/followers","following_url":"https://api.github.com/users/lucienbertin/following{/other_user}","gists_url":"https://api.github.com/users/lucienbertin/gists{/gist_id}","starred_url":"https://api.github.com/users/lucienbertin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lucienbertin/subscriptions","organizations_url":"https://api.github.com/users/lucienbertin/orgs","repos_url":"https://api.github.com/users/lucienbertin/repos","events_url":"https://api.github.com/users/lucienbertin/events{/privacy}","received_events_url":"https://api.github.com/users/lucienbertin/received_events","type":"User","site_admin":false},"body":"`$scope.find` must be the conductor, not delegate this role to the method get user\r\n\r\n```js\r\n$scope.find = function(clue){\r\n  // reinit timeouts linked to the way we handle pagination and other stuff that can be called later in the treatment\r\n  reInitStuff();\r\n\r\n  // fetch the users that satisfy 'clue'\r\n  getUsersAsync(clue)\r\n  .then(function(users){\r\n    // handle pagination if needed\r\n    if(hasPagination(users)){ handlePaginationAsync(); }\r\n\r\n    // handle formerEmployees if needed\r\n    if(hasFormerEmployees(users)) { handleFormerEmployees(); }\r\n\r\n    // handle homonyms\r\n    if(hasHomonyms()){ handleHomonymsAsync(); }\r\n  },function(message){\r\n    handleError(message);\r\n  });\r\n}\r\n```\r\n\r\non every async method called don't forget to handle the possible rejection. i did not put it here for concision","created_at":"2015-10-15T09:39:06Z","updated_at":"2015-10-15T09:39:06Z","html_url":"https://github.com/LuccaSA/lucca-ui/pull/36#discussion_r42101963","pull_request_url":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/36","_links":{"self":{"href":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/comments/42101963"},"html":{"href":"https://github.com/LuccaSA/lucca-ui/pull/36#discussion_r42101963"},"pull_request":{"href":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/36"}}},"pull_request":{"url":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/36","id":47762396,"html_url":"https://github.com/LuccaSA/lucca-ui/pull/36","diff_url":"https://github.com/LuccaSA/lucca-ui/pull/36.diff","patch_url":"https://github.com/LuccaSA/lucca-ui/pull/36.patch","issue_url":"https://api.github.com/repos/LuccaSA/lucca-ui/issues/36","number":36,"state":"open","locked":false,"title":"DO NOT MERGE!!!","user":{"login":"lucienbertin","id":10089239,"avatar_url":"https://avatars.githubusercontent.com/u/10089239?v=3","gravatar_id":"","url":"https://api.github.com/users/lucienbertin","html_url":"https://github.com/lucienbertin","followers_url":"https://api.github.com/users/lucienbertin/followers","following_url":"https://api.github.com/users/lucienbertin/following{/other_user}","gists_url":"https://api.github.com/users/lucienbertin/gists{/gist_id}","starred_url":"https://api.github.com/users/lucienbertin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lucienbertin/subscriptions","organizations_url":"https://api.github.com/users/lucienbertin/orgs","repos_url":"https://api.github.com/users/lucienbertin/repos","events_url":"https://api.github.com/users/lucienbertin/events{/privacy}","received_events_url":"https://api.github.com/users/lucienbertin/received_events","type":"User","site_admin":false},"body":"# DO NOT MERGE THIS PR\r\nPR just here for code review\r\n# WARNING DO NOT MERGE\r\nseriously do not merge this PR","created_at":"2015-10-15T09:24:10Z","updated_at":"2015-10-15T09:39:06Z","closed_at":null,"merged_at":null,"merge_commit_sha":null,"assignee":{"login":"pierop","id":9415349,"avatar_url":"https://avatars.githubusercontent.com/u/9415349?v=3","gravatar_id":"","url":"https://api.github.com/users/pierop","html_url":"https://github.com/pierop","followers_url":"https://api.github.com/users/pierop/followers","following_url":"https://api.github.com/users/pierop/following{/other_user}","gists_url":"https://api.github.com/users/pierop/gists{/gist_id}","starred_url":"https://api.github.com/users/pierop/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/pierop/subscriptions","organizations_url":"https://api.github.com/users/pierop/orgs","repos_url":"https://api.github.com/users/pierop/repos","events_url":"https://api.github.com/users/pierop/events{/privacy}","received_events_url":"https://api.github.com/users/pierop/received_events","type":"User","site_admin":false},"milestone":null,"commits_url":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/36/commits","review_comments_url":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/36/comments","review_comment_url":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/comments{/number}","comments_url":"https://api.github.com/repos/LuccaSA/lucca-ui/issues/36/comments","statuses_url":"https://api.github.com/repos/LuccaSA/lucca-ui/statuses/0a4e8807ea9c0ec357f513f82219c9a38d0e9212","head":{"label":"LuccaSA:luid.user.picker","ref":"luid.user.picker","sha":"0a4e8807ea9c0ec357f513f82219c9a38d0e9212","user":{"login":"LuccaSA","id":2686158,"avatar_url":"https://avatars.githubusercontent.com/u/2686158?v=3","gravatar_id":"","url":"https://api.github.com/users/LuccaSA","html_url":"https://github.com/LuccaSA","followers_url":"https://api.github.com/users/LuccaSA/followers","following_url":"https://api.github.com/users/LuccaSA/following{/other_user}","gists_url":"https://api.github.com/users/LuccaSA/gists{/gist_id}","starred_url":"https://api.github.com/users/LuccaSA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LuccaSA/subscriptions","organizations_url":"https://api.github.com/users/LuccaSA/orgs","repos_url":"https://api.github.com/users/LuccaSA/repos","events_url":"https://api.github.com/users/LuccaSA/events{/privacy}","received_events_url":"https://api.github.com/users/LuccaSA/received_events","type":"Organization","site_admin":false},"repo":{"id":38605030,"name":"lucca-ui","full_name":"LuccaSA/lucca-ui","owner":{"login":"LuccaSA","id":2686158,"avatar_url":"https://avatars.githubusercontent.com/u/2686158?v=3","gravatar_id":"","url":"https://api.github.com/users/LuccaSA","html_url":"https://github.com/LuccaSA","followers_url":"https://api.github.com/users/LuccaSA/followers","following_url":"https://api.github.com/users/LuccaSA/following{/other_user}","gists_url":"https://api.github.com/users/LuccaSA/gists{/gist_id}","starred_url":"https://api.github.com/users/LuccaSA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LuccaSA/subscriptions","organizations_url":"https://api.github.com/users/LuccaSA/orgs","repos_url":"https://api.github.com/users/LuccaSA/repos","events_url":"https://api.github.com/users/LuccaSA/events{/privacy}","received_events_url":"https://api.github.com/users/LuccaSA/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/LuccaSA/lucca-ui","description":"Framework Less & Angular by Lucca","fork":false,"url":"https://api.github.com/repos/LuccaSA/lucca-ui","forks_url":"https://api.github.com/repos/LuccaSA/lucca-ui/forks","keys_url":"https://api.github.com/repos/LuccaSA/lucca-ui/keys{/key_id}","collaborators_url":"https://api.github.com/repos/LuccaSA/lucca-ui/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/LuccaSA/lucca-ui/teams","hooks_url":"https://api.github.com/repos/LuccaSA/lucca-ui/hooks","issue_events_url":"https://api.github.com/repos/LuccaSA/lucca-ui/issues/events{/number}","events_url":"https://api.github.com/repos/LuccaSA/lucca-ui/events","assignees_url":"https://api.github.com/repos/LuccaSA/lucca-ui/assignees{/user}","branches_url":"https://api.github.com/repos/LuccaSA/lucca-ui/branches{/branch}","tags_url":"https://api.github.com/repos/LuccaSA/lucca-ui/tags","blobs_url":"https://api.github.com/repos/LuccaSA/lucca-ui/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/LuccaSA/lucca-ui/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/LuccaSA/lucca-ui/git/refs{/sha}","trees_url":"https://api.github.com/repos/LuccaSA/lucca-ui/git/trees{/sha}","statuses_url":"https://api.github.com/repos/LuccaSA/lucca-ui/statuses/{sha}","languages_url":"https://api.github.com/repos/LuccaSA/lucca-ui/languages","stargazers_url":"https://api.github.com/repos/LuccaSA/lucca-ui/stargazers","contributors_url":"https://api.github.com/repos/LuccaSA/lucca-ui/contributors","subscribers_url":"https://api.github.com/repos/LuccaSA/lucca-ui/subscribers","subscription_url":"https://api.github.com/repos/LuccaSA/lucca-ui/subscription","commits_url":"https://api.github.com/repos/LuccaSA/lucca-ui/commits{/sha}","git_commits_url":"https://api.github.com/repos/LuccaSA/lucca-ui/git/commits{/sha}","comments_url":"https://api.github.com/repos/LuccaSA/lucca-ui/comments{/number}","issue_comment_url":"https://api.github.com/repos/LuccaSA/lucca-ui/issues/comments{/number}","contents_url":"https://api.github.com/repos/LuccaSA/lucca-ui/contents/{+path}","compare_url":"https://api.github.com/repos/LuccaSA/lucca-ui/compare/{base}...{head}","merges_url":"https://api.github.com/repos/LuccaSA/lucca-ui/merges","archive_url":"https://api.github.com/repos/LuccaSA/lucca-ui/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/LuccaSA/lucca-ui/downloads","issues_url":"https://api.github.com/repos/LuccaSA/lucca-ui/issues{/number}","pulls_url":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls{/number}","milestones_url":"https://api.github.com/repos/LuccaSA/lucca-ui/milestones{/number}","notifications_url":"https://api.github.com/repos/LuccaSA/lucca-ui/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/LuccaSA/lucca-ui/labels{/name}","releases_url":"https://api.github.com/repos/LuccaSA/lucca-ui/releases{/id}","created_at":"2015-07-06T07:50:16Z","updated_at":"2015-10-05T15:53:15Z","pushed_at":"2015-10-15T09:24:11Z","git_url":"git://github.com/LuccaSA/lucca-ui.git","ssh_url":"git@github.com:LuccaSA/lucca-ui.git","clone_url":"https://github.com/LuccaSA/lucca-ui.git","svn_url":"https://github.com/LuccaSA/lucca-ui","homepage":null,"size":3860,"stargazers_count":4,"watchers_count":4,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":8,"forks":0,"open_issues":8,"watchers":4,"default_branch":"master"}},"base":{"label":"LuccaSA:master","ref":"master","sha":"97a6109359b88ec1ee0d0092fa30cbbb52c68233","user":{"login":"LuccaSA","id":2686158,"avatar_url":"https://avatars.githubusercontent.com/u/2686158?v=3","gravatar_id":"","url":"https://api.github.com/users/LuccaSA","html_url":"https://github.com/LuccaSA","followers_url":"https://api.github.com/users/LuccaSA/followers","following_url":"https://api.github.com/users/LuccaSA/following{/other_user}","gists_url":"https://api.github.com/users/LuccaSA/gists{/gist_id}","starred_url":"https://api.github.com/users/LuccaSA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LuccaSA/subscriptions","organizations_url":"https://api.github.com/users/LuccaSA/orgs","repos_url":"https://api.github.com/users/LuccaSA/repos","events_url":"https://api.github.com/users/LuccaSA/events{/privacy}","received_events_url":"https://api.github.com/users/LuccaSA/received_events","type":"Organization","site_admin":false},"repo":{"id":38605030,"name":"lucca-ui","full_name":"LuccaSA/lucca-ui","owner":{"login":"LuccaSA","id":2686158,"avatar_url":"https://avatars.githubusercontent.com/u/2686158?v=3","gravatar_id":"","url":"https://api.github.com/users/LuccaSA","html_url":"https://github.com/LuccaSA","followers_url":"https://api.github.com/users/LuccaSA/followers","following_url":"https://api.github.com/users/LuccaSA/following{/other_user}","gists_url":"https://api.github.com/users/LuccaSA/gists{/gist_id}","starred_url":"https://api.github.com/users/LuccaSA/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/LuccaSA/subscriptions","organizations_url":"https://api.github.com/users/LuccaSA/orgs","repos_url":"https://api.github.com/users/LuccaSA/repos","events_url":"https://api.github.com/users/LuccaSA/events{/privacy}","received_events_url":"https://api.github.com/users/LuccaSA/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/LuccaSA/lucca-ui","description":"Framework Less & Angular by Lucca","fork":false,"url":"https://api.github.com/repos/LuccaSA/lucca-ui","forks_url":"https://api.github.com/repos/LuccaSA/lucca-ui/forks","keys_url":"https://api.github.com/repos/LuccaSA/lucca-ui/keys{/key_id}","collaborators_url":"https://api.github.com/repos/LuccaSA/lucca-ui/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/LuccaSA/lucca-ui/teams","hooks_url":"https://api.github.com/repos/LuccaSA/lucca-ui/hooks","issue_events_url":"https://api.github.com/repos/LuccaSA/lucca-ui/issues/events{/number}","events_url":"https://api.github.com/repos/LuccaSA/lucca-ui/events","assignees_url":"https://api.github.com/repos/LuccaSA/lucca-ui/assignees{/user}","branches_url":"https://api.github.com/repos/LuccaSA/lucca-ui/branches{/branch}","tags_url":"https://api.github.com/repos/LuccaSA/lucca-ui/tags","blobs_url":"https://api.github.com/repos/LuccaSA/lucca-ui/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/LuccaSA/lucca-ui/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/LuccaSA/lucca-ui/git/refs{/sha}","trees_url":"https://api.github.com/repos/LuccaSA/lucca-ui/git/trees{/sha}","statuses_url":"https://api.github.com/repos/LuccaSA/lucca-ui/statuses/{sha}","languages_url":"https://api.github.com/repos/LuccaSA/lucca-ui/languages","stargazers_url":"https://api.github.com/repos/LuccaSA/lucca-ui/stargazers","contributors_url":"https://api.github.com/repos/LuccaSA/lucca-ui/contributors","subscribers_url":"https://api.github.com/repos/LuccaSA/lucca-ui/subscribers","subscription_url":"https://api.github.com/repos/LuccaSA/lucca-ui/subscription","commits_url":"https://api.github.com/repos/LuccaSA/lucca-ui/commits{/sha}","git_commits_url":"https://api.github.com/repos/LuccaSA/lucca-ui/git/commits{/sha}","comments_url":"https://api.github.com/repos/LuccaSA/lucca-ui/comments{/number}","issue_comment_url":"https://api.github.com/repos/LuccaSA/lucca-ui/issues/comments{/number}","contents_url":"https://api.github.com/repos/LuccaSA/lucca-ui/contents/{+path}","compare_url":"https://api.github.com/repos/LuccaSA/lucca-ui/compare/{base}...{head}","merges_url":"https://api.github.com/repos/LuccaSA/lucca-ui/merges","archive_url":"https://api.github.com/repos/LuccaSA/lucca-ui/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/LuccaSA/lucca-ui/downloads","issues_url":"https://api.github.com/repos/LuccaSA/lucca-ui/issues{/number}","pulls_url":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls{/number}","milestones_url":"https://api.github.com/repos/LuccaSA/lucca-ui/milestones{/number}","notifications_url":"https://api.github.com/repos/LuccaSA/lucca-ui/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/LuccaSA/lucca-ui/labels{/name}","releases_url":"https://api.github.com/repos/LuccaSA/lucca-ui/releases{/id}","created_at":"2015-07-06T07:50:16Z","updated_at":"2015-10-05T15:53:15Z","pushed_at":"2015-10-15T09:24:11Z","git_url":"git://github.com/LuccaSA/lucca-ui.git","ssh_url":"git@github.com:LuccaSA/lucca-ui.git","clone_url":"https://github.com/LuccaSA/lucca-ui.git","svn_url":"https://github.com/LuccaSA/lucca-ui","homepage":null,"size":3860,"stargazers_count":4,"watchers_count":4,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":true,"forks_count":0,"mirror_url":null,"open_issues_count":8,"forks":0,"open_issues":8,"watchers":4,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/36"},"html":{"href":"https://github.com/LuccaSA/lucca-ui/pull/36"},"issue":{"href":"https://api.github.com/repos/LuccaSA/lucca-ui/issues/36"},"comments":{"href":"https://api.github.com/repos/LuccaSA/lucca-ui/issues/36/comments"},"review_comments":{"href":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/36/comments"},"review_comment":{"href":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/LuccaSA/lucca-ui/pulls/36/commits"},"statuses":{"href":"https://api.github.com/repos/LuccaSA/lucca-ui/statuses/0a4e8807ea9c0ec357f513f82219c9a38d0e9212"}}}}