{"action":"created","comment":{"url":"https://api.github.com/repos/geoadmin/web-emapis/pulls/comments/28129497","id":28129497,"diff_hunk":"@@ -0,0 +1,436 @@\n+var addPopup = function(map, objPermalink, translator) {\n+ \n+  var tooltip = $('#tooltip');\n+  var infobox =  $('#infobox');\n+  var xhr = [];\n+  var parser = new ol.format.GeoJSON();\n+  var htmlUrl;\n+  var coordinate;\n+  var hasTooltip = false; // by default value\n+  var features;\n+  var hasJustBeenClicked;\n+  var ua = window.navigator.userAgent;\n+  var msie = +((/msie (\\d+)/.exec(ua.toLowerCase()) || [])[1]); // MSIE sniffer (for forEachLayerAtPixel)\n+  if (isNaN(msie)) {\n+    msie = +((/trident\\/.*; rv:(\\d+)/.exec(ua.toLowerCase()) || [])[1]);\n+  }\n+  if (isNaN(msie)) {\n+    msie = false;\n+  }\n+\n+  // Highlighting style definition\n+  var hlFill =  new ol.style.Fill({\n+    color: 'rgba(255, 255, 0, 0.75)'\n+  });\n+  var hlStroke = new ol.style.Stroke({\n+    color: 'rgba(255, 128, 0, 1)',\n+    width: 3\n+  });\n+\n+  var style = new ol.style.Style({\n+    fill: hlFill,\n+    stroke: hlStroke,\n+    image: new ol.style.Circle({\n+      radius: 10,\n+      fill: hlFill,\n+      stroke: hlStroke\n+    })\n+  });\n+  var styles = [style];\n+  var featureOverlay = new ol.FeatureOverlay({\n+    map: map,\n+    style: [style]\n+  });\n+\n+  // Remove tooltip popup and highlighting\n+  var removeHighlight = function() {\n+    featureOverlay.getFeatures().clear();\n+  };\n+\n+  var layerFilter = function(layer) {\n+    return (layer.get('layerType') === 0);\n+  };\n+\n+  // Event click on close button on tooltip\n+  $('.btn-close').click(function(event) {\n+    $(this).parents('.ga-draggable').hide();\n+    if ($(this).parents('.ga-draggable').attr('id') == 'tooltip') {\n+      removeHighlight();\n+    }\n+    event.stopPropagation();\n+  });\n+\n+  // Event click on reduce button on tooltip\n+  $('.btn-reduce').click(function(event) {\n+    $(this).parents('.ga-draggable').addClass('popup-reduce');\n+    event.stopPropagation();\n+  });\n+\n+  // Event click on title on reduced popup to re-open tooltip \n+  $('body').on('click', '.popup-reduce', function(event) {\n+    $(this).removeClass('popup-reduce');\n+    event.stopPropagation();\n+  });\n+\n+  // Event click on close button on infobox\n+  $('.infobox-btn-close').click(function(event) {\n+    infobox.hide();\n+    event.stopPropagation();\n+  });\n+\n+  // Manage catalog infoboxes \n+  $.getLegend = function(layerBodId) {\n+    // AJAX getLegend request\n+    $.ajax({\n+      url: location.protocol + '//mf-chsdi3.dev.bgdi.ch/rest/services/dev/MapServer/' + layerBodId + '/legend?lang=' + translator.lang(), // adapt to prod url when needed\n+      jsonp: 'callback', // Use JSONP for IE9\n+      dataType: 'jsonp',\n+      success: function(html) {\n+        showInfobox(html);\n+      }\n+    });\n+  };\n+\n+  // Draggable function\n+  var draggable = function(el) {\n+    var startX = 0;\n+    var startY = 0;\n+    var x = null;\n+    var y = null;\n+    var regex = /^(input|textarea|a|button)$/i;\n+    \n+    // Firefox doesn't like transition during drag\n+    el.addClass('ga-draggable');\n+\n+    var dragZone = el;\n+    dragZone.addClass('ga-draggable-zone');\n+\n+    dragZone.bind('mousedown', function(evt) {\n+      // If the class has disappeared that means draggable is not allow\n+      // temporarly.\n+      if (!dragZone.hasClass('ga-draggable-zone')) {\n+        return;\n+      }\n+      var elt = $(evt.target);\n+\n+      x = el.prop('offsetLeft');\n+      y = el.prop('offsetTop');\n+\n+      // block default interaction\n+      if (!regex.test(evt.target.nodeName)) {\n+        evt.preventDefault();\n+      }\n+\n+      startX = getMouseEventX(evt) - x;\n+      startY = getMouseEventY(evt) - y;\n+      $(document).bind('mousemove', drag);\n+      $(document).bind('mouseup', dragend);\n+    });\n+\n+    var drag = function(evt) {\n+      x = getMouseEventX(evt) - startX;\n+      y = getMouseEventY(evt) - startY;\n+\n+      x = adjustX(x);\n+      y = adjustY(y);\n+\n+      el.css({\n+        margin: 0,\n+        top: y + 'px',\n+        left: x + 'px'\n+      });\n+\n+      // block default interaction\n+      if (!regex.test(evt.target.nodeName)) {\n+        evt.preventDefault();\n+      }\n+    };\n+\n+    var dragend = function(evt) {\n+      $(document).unbind('mousemove', drag);\n+      $(document).unbind('mouseup', dragend);\n+\n+      // block default interaction\n+      if (!regex.test(evt.target.nodeName)) {\n+        evt.preventDefault();\n+      }\n+    };\n+\n+    /* Utils */\n+\n+    // Ensure the x coordinate has a valid value\n+    var adjustX = function(x) {\n+      if (x < 0) {\n+        x = 0;\n+      } else if (x + el.width() > $(document.body).width()) {\n+        x = $(document.body).width() - el.width();\n+      }\n+      return x;\n+    };\n+\n+    // Ensure the y coordinate has a valid value\n+    var adjustY = function(y) {\n+      if (y < 0) {\n+        y = 0;\n+      } else if (y + el.height() > $(document.body).height()) {\n+        var newY = $(document.body).height() - el.height();\n+\n+        // This usecase happens when screen's height is too small to display\n+        // the popup entirely. In that case we try to make the dragzone\n+        // available all the time so the user can move/close the popup.\n+        // Works only if the dragZone is on top of the draggable element.\n+        if (newY < 0) {\n+          var maxY = $(document.body).height() - dragZone.outerHeight();\n+          if (y > maxY) {\n+            y = maxY;\n+          }\n+        } else {\n+          y = newY;\n+        }\n+      }\n+      return y;\n+    };\n+\n+    // RE3: Get the X coordinate of a mouse or a touch event\n+    var getMouseEventX = function(event) {\n+      if (event.originalEvent) {\n+        event = event.originalEvent;\n+      }\n+      return (typeof(event.clientX) == 'number') ? event.clientX : event.touches[0].clientX;\n+    }; // equivalent to angular.isNumber\n+\n+    // RE3: Get the Y coordinate of a mouse or touch event\n+    var getMouseEventY = function(event) {\n+      if (event.originalEvent) {\n+        event = event.originalEvent;\n+      }\n+      return (typeof(event.clientY) == 'number') ? event.clientY : event.touches[0].clientY;\n+    }; // equivalent to angular.isNumber\n+  };\n+\n+  // Change cursor style on mouse move, only on desktop\n+  var updateCursorStyle = function(evt) {\n+\n+    if (evt.dragging) {\n+      return;\n+    }\n+\n+    var pixel = map.getEventPixel(evt.originalEvent);\n+    \n+    if (!msie || msie > 10) { \n+      var hit = map.forEachLayerAtPixel(pixel, function(layer) {\n+        return true;\n+      }, undefined, layerFilter);\n+      map.getTargetElement().style.cursor = hit ? 'pointer' : '';\n+    }\n+  };\n+\n+  $(map.getViewport()).on('mousemove', function(evt) {\n+    updateCursorStyle(evt);\n+  });\n+    \n+  // Make popups draggable\n+  draggable(tooltip);\n+  draggable(infobox);\n+\n+  map.on('singleclick', function(evt) {\n+\n+    // Cancel previous pending Ajax requests\n+    if (xhr) {\n+      for (var i = 0; i < xhr.length; i++) {\n+        xhr[i].abort();\n+      }\n+      xhr = [];\n+    }\n+\n+    // Set boolean to be able to detach html from previous tooltip\n+    hasJustBeenClicked = true;\n+\n+    // Remove existing tooltip\n+    if (hasTooltip) {\n+      removeHighlight();\n+    }\n+\n+    var size = map.getSize();\n+    var mapExtent = map.getView().calculateExtent(size);\n+    coordinate = (evt.originalEvent) ? map.getEventCoordinate(evt.originalEvent) : evt.coordinate;\n+    findFeatures(coordinate, size, mapExtent);\n+  });\n+\n+  // Test if the layer is a vector layer\n+  var isVectorLayer = function(olLayer) {\n+    return (olLayer instanceof ol.layer.Vector ||\n+        (olLayer instanceof ol.layer.Image &&\n+        olLayer.getSource() instanceof ol.source.ImageVector));\n+  };\n+\n+  // Test if the layer is a queryable bod layer\n+  var isQueryableBodLayer = function(olLayer) {\n+    return (olLayer.bodId &&\n+        gaLayers.getLayerProperty(olLayer.bodId, 'queryable'));\n+  };\n+\n+  // Get all the queryable layers\n+  var getLayersToQuery = function() {\n+    var layersToQuery = [];\n+    map.getLayers().forEach(function(l) {\n+      if (l.getVisible() && (l.get('layerType') !== undefined || l.queryable)) {\n+        layersToQuery.push(l);\n+      }\n+    });\n+    return layersToQuery;\n+  };\n+\n+  // Find the first feature from a vector layer\n+  var findVectorFeature = function(pixel, vectorLayer) {\n+    var featureFound;\n+    map.forEachFeatureAtPixel(pixel, function(feature, layer) {\n+      if (!vectorLayer || vectorLayer == layer) {\n+        if (!featureFound &&\n+            (feature.get('name') ||\n+            feature.get('description'))) {\n+          feature.set('layerId', layer.id);\n+          featureFound = feature;\n+        }\n+      }\n+    });\n+    return featureFound;\n+  };\n+\n+  // Success function for Ajax identify request\n+  var onIdentifySuccess = function(features, mapExtent, size) {\n+    showFeatures(mapExtent, size, features.results);\n+  };\n+\n+  // Find features for all type of layers\n+  var findFeatures = function(coordinate, size, mapExtent) {\n+    var identifyUrl = 'http://mf-chsdi3.dev.bgdi.ch/kan_chsdi_emapis_entwaesserung/rest/services/all/MapServer/identify'; // adapt to prod url when needed\n+    var layersToQuery = getLayersToQuery();\n+    var pixel = map.getPixelFromCoordinate(coordinate);\n+    for (var i = 0; i < layersToQuery.length; i++) {\n+      var layerToQuery = layersToQuery[i];\n+      if (isVectorLayer(layerToQuery)) {","path":"js/popup.js","position":312,"original_position":312,"commit_id":"b6f6d1e08a2fcbaa9ac26e62c5e7f36da0c3dbfc","original_commit_id":"b6f6d1e08a2fcbaa9ac26e62c5e7f36da0c3dbfc","user":{"login":"oterral","id":621420,"avatar_url":"https://avatars.githubusercontent.com/u/621420?v=3","gravatar_id":"","url":"https://api.github.com/users/oterral","html_url":"https://github.com/oterral","followers_url":"https://api.github.com/users/oterral/followers","following_url":"https://api.github.com/users/oterral/following{/other_user}","gists_url":"https://api.github.com/users/oterral/gists{/gist_id}","starred_url":"https://api.github.com/users/oterral/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/oterral/subscriptions","organizations_url":"https://api.github.com/users/oterral/orgs","repos_url":"https://api.github.com/users/oterral/repos","events_url":"https://api.github.com/users/oterral/events{/privacy}","received_events_url":"https://api.github.com/users/oterral/received_events","type":"User","site_admin":false},"body":"we don't have vector features I think you can remove this part","created_at":"2015-04-10T08:40:31Z","updated_at":"2015-04-10T08:40:31Z","html_url":"https://github.com/geoadmin/web-emapis/pull/86#discussion_r28129497","pull_request_url":"https://api.github.com/repos/geoadmin/web-emapis/pulls/86","_links":{"self":{"href":"https://api.github.com/repos/geoadmin/web-emapis/pulls/comments/28129497"},"html":{"href":"https://github.com/geoadmin/web-emapis/pull/86#discussion_r28129497"},"pull_request":{"href":"https://api.github.com/repos/geoadmin/web-emapis/pulls/86"}}},"pull_request":{"url":"https://api.github.com/repos/geoadmin/web-emapis/pulls/86","id":32841840,"html_url":"https://github.com/geoadmin/web-emapis/pull/86","diff_url":"https://github.com/geoadmin/web-emapis/pull/86.diff","patch_url":"https://github.com/geoadmin/web-emapis/pull/86.patch","issue_url":"https://api.github.com/repos/geoadmin/web-emapis/issues/86","number":86,"state":"open","locked":false,"title":"Add popups component: tooltips and infoboxes","user":{"login":"kandre","id":8038575,"avatar_url":"https://avatars.githubusercontent.com/u/8038575?v=3","gravatar_id":"","url":"https://api.github.com/users/kandre","html_url":"https://github.com/kandre","followers_url":"https://api.github.com/users/kandre/followers","following_url":"https://api.github.com/users/kandre/following{/other_user}","gists_url":"https://api.github.com/users/kandre/gists{/gist_id}","starred_url":"https://api.github.com/users/kandre/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kandre/subscriptions","organizations_url":"https://api.github.com/users/kandre/orgs","repos_url":"https://api.github.com/users/kandre/repos","events_url":"https://api.github.com/users/kandre/events{/privacy}","received_events_url":"https://api.github.com/users/kandre/received_events","type":"User","site_admin":false},"body":"","created_at":"2015-04-08T09:23:06Z","updated_at":"2015-04-10T08:40:31Z","closed_at":null,"merged_at":null,"merge_commit_sha":"cce3d4ff4104ba86ff863765ee8246590d3175e3","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/geoadmin/web-emapis/pulls/86/commits","review_comments_url":"https://api.github.com/repos/geoadmin/web-emapis/pulls/86/comments","review_comment_url":"https://api.github.com/repos/geoadmin/web-emapis/pulls/comments{/number}","comments_url":"https://api.github.com/repos/geoadmin/web-emapis/issues/86/comments","statuses_url":"https://api.github.com/repos/geoadmin/web-emapis/statuses/b6f6d1e08a2fcbaa9ac26e62c5e7f36da0c3dbfc","head":{"label":"geoadmin:kan_emapis_popup","ref":"kan_emapis_popup","sha":"b6f6d1e08a2fcbaa9ac26e62c5e7f36da0c3dbfc","user":{"login":"geoadmin","id":3369793,"avatar_url":"https://avatars.githubusercontent.com/u/3369793?v=3","gravatar_id":"","url":"https://api.github.com/users/geoadmin","html_url":"https://github.com/geoadmin","followers_url":"https://api.github.com/users/geoadmin/followers","following_url":"https://api.github.com/users/geoadmin/following{/other_user}","gists_url":"https://api.github.com/users/geoadmin/gists{/gist_id}","starred_url":"https://api.github.com/users/geoadmin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoadmin/subscriptions","organizations_url":"https://api.github.com/users/geoadmin/orgs","repos_url":"https://api.github.com/users/geoadmin/repos","events_url":"https://api.github.com/users/geoadmin/events{/privacy}","received_events_url":"https://api.github.com/users/geoadmin/received_events","type":"Organization","site_admin":false},"repo":{"id":30542418,"name":"web-emapis","full_name":"geoadmin/web-emapis","owner":{"login":"geoadmin","id":3369793,"avatar_url":"https://avatars.githubusercontent.com/u/3369793?v=3","gravatar_id":"","url":"https://api.github.com/users/geoadmin","html_url":"https://github.com/geoadmin","followers_url":"https://api.github.com/users/geoadmin/followers","following_url":"https://api.github.com/users/geoadmin/following{/other_user}","gists_url":"https://api.github.com/users/geoadmin/gists{/gist_id}","starred_url":"https://api.github.com/users/geoadmin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoadmin/subscriptions","organizations_url":"https://api.github.com/users/geoadmin/orgs","repos_url":"https://api.github.com/users/geoadmin/repos","events_url":"https://api.github.com/users/geoadmin/events{/privacy}","received_events_url":"https://api.github.com/users/geoadmin/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/geoadmin/web-emapis","description":"Emapis web application","fork":false,"url":"https://api.github.com/repos/geoadmin/web-emapis","forks_url":"https://api.github.com/repos/geoadmin/web-emapis/forks","keys_url":"https://api.github.com/repos/geoadmin/web-emapis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/geoadmin/web-emapis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/geoadmin/web-emapis/teams","hooks_url":"https://api.github.com/repos/geoadmin/web-emapis/hooks","issue_events_url":"https://api.github.com/repos/geoadmin/web-emapis/issues/events{/number}","events_url":"https://api.github.com/repos/geoadmin/web-emapis/events","assignees_url":"https://api.github.com/repos/geoadmin/web-emapis/assignees{/user}","branches_url":"https://api.github.com/repos/geoadmin/web-emapis/branches{/branch}","tags_url":"https://api.github.com/repos/geoadmin/web-emapis/tags","blobs_url":"https://api.github.com/repos/geoadmin/web-emapis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/geoadmin/web-emapis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/geoadmin/web-emapis/git/refs{/sha}","trees_url":"https://api.github.com/repos/geoadmin/web-emapis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/geoadmin/web-emapis/statuses/{sha}","languages_url":"https://api.github.com/repos/geoadmin/web-emapis/languages","stargazers_url":"https://api.github.com/repos/geoadmin/web-emapis/stargazers","contributors_url":"https://api.github.com/repos/geoadmin/web-emapis/contributors","subscribers_url":"https://api.github.com/repos/geoadmin/web-emapis/subscribers","subscription_url":"https://api.github.com/repos/geoadmin/web-emapis/subscription","commits_url":"https://api.github.com/repos/geoadmin/web-emapis/commits{/sha}","git_commits_url":"https://api.github.com/repos/geoadmin/web-emapis/git/commits{/sha}","comments_url":"https://api.github.com/repos/geoadmin/web-emapis/comments{/number}","issue_comment_url":"https://api.github.com/repos/geoadmin/web-emapis/issues/comments{/number}","contents_url":"https://api.github.com/repos/geoadmin/web-emapis/contents/{+path}","compare_url":"https://api.github.com/repos/geoadmin/web-emapis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/geoadmin/web-emapis/merges","archive_url":"https://api.github.com/repos/geoadmin/web-emapis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/geoadmin/web-emapis/downloads","issues_url":"https://api.github.com/repos/geoadmin/web-emapis/issues{/number}","pulls_url":"https://api.github.com/repos/geoadmin/web-emapis/pulls{/number}","milestones_url":"https://api.github.com/repos/geoadmin/web-emapis/milestones{/number}","notifications_url":"https://api.github.com/repos/geoadmin/web-emapis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/geoadmin/web-emapis/labels{/name}","releases_url":"https://api.github.com/repos/geoadmin/web-emapis/releases{/id}","created_at":"2015-02-09T15:26:22Z","updated_at":"2015-03-20T07:40:09Z","pushed_at":"2015-04-09T15:02:22Z","git_url":"git://github.com/geoadmin/web-emapis.git","ssh_url":"git@github.com:geoadmin/web-emapis.git","clone_url":"https://github.com/geoadmin/web-emapis.git","svn_url":"https://github.com/geoadmin/web-emapis","homepage":null,"size":1380,"stargazers_count":2,"watchers_count":2,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":6,"forks":0,"open_issues":6,"watchers":2,"default_branch":"master"}},"base":{"label":"geoadmin:master","ref":"master","sha":"f6b14f2c064e552f53db8364a4f5b4c662bcbf5a","user":{"login":"geoadmin","id":3369793,"avatar_url":"https://avatars.githubusercontent.com/u/3369793?v=3","gravatar_id":"","url":"https://api.github.com/users/geoadmin","html_url":"https://github.com/geoadmin","followers_url":"https://api.github.com/users/geoadmin/followers","following_url":"https://api.github.com/users/geoadmin/following{/other_user}","gists_url":"https://api.github.com/users/geoadmin/gists{/gist_id}","starred_url":"https://api.github.com/users/geoadmin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoadmin/subscriptions","organizations_url":"https://api.github.com/users/geoadmin/orgs","repos_url":"https://api.github.com/users/geoadmin/repos","events_url":"https://api.github.com/users/geoadmin/events{/privacy}","received_events_url":"https://api.github.com/users/geoadmin/received_events","type":"Organization","site_admin":false},"repo":{"id":30542418,"name":"web-emapis","full_name":"geoadmin/web-emapis","owner":{"login":"geoadmin","id":3369793,"avatar_url":"https://avatars.githubusercontent.com/u/3369793?v=3","gravatar_id":"","url":"https://api.github.com/users/geoadmin","html_url":"https://github.com/geoadmin","followers_url":"https://api.github.com/users/geoadmin/followers","following_url":"https://api.github.com/users/geoadmin/following{/other_user}","gists_url":"https://api.github.com/users/geoadmin/gists{/gist_id}","starred_url":"https://api.github.com/users/geoadmin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/geoadmin/subscriptions","organizations_url":"https://api.github.com/users/geoadmin/orgs","repos_url":"https://api.github.com/users/geoadmin/repos","events_url":"https://api.github.com/users/geoadmin/events{/privacy}","received_events_url":"https://api.github.com/users/geoadmin/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/geoadmin/web-emapis","description":"Emapis web application","fork":false,"url":"https://api.github.com/repos/geoadmin/web-emapis","forks_url":"https://api.github.com/repos/geoadmin/web-emapis/forks","keys_url":"https://api.github.com/repos/geoadmin/web-emapis/keys{/key_id}","collaborators_url":"https://api.github.com/repos/geoadmin/web-emapis/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/geoadmin/web-emapis/teams","hooks_url":"https://api.github.com/repos/geoadmin/web-emapis/hooks","issue_events_url":"https://api.github.com/repos/geoadmin/web-emapis/issues/events{/number}","events_url":"https://api.github.com/repos/geoadmin/web-emapis/events","assignees_url":"https://api.github.com/repos/geoadmin/web-emapis/assignees{/user}","branches_url":"https://api.github.com/repos/geoadmin/web-emapis/branches{/branch}","tags_url":"https://api.github.com/repos/geoadmin/web-emapis/tags","blobs_url":"https://api.github.com/repos/geoadmin/web-emapis/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/geoadmin/web-emapis/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/geoadmin/web-emapis/git/refs{/sha}","trees_url":"https://api.github.com/repos/geoadmin/web-emapis/git/trees{/sha}","statuses_url":"https://api.github.com/repos/geoadmin/web-emapis/statuses/{sha}","languages_url":"https://api.github.com/repos/geoadmin/web-emapis/languages","stargazers_url":"https://api.github.com/repos/geoadmin/web-emapis/stargazers","contributors_url":"https://api.github.com/repos/geoadmin/web-emapis/contributors","subscribers_url":"https://api.github.com/repos/geoadmin/web-emapis/subscribers","subscription_url":"https://api.github.com/repos/geoadmin/web-emapis/subscription","commits_url":"https://api.github.com/repos/geoadmin/web-emapis/commits{/sha}","git_commits_url":"https://api.github.com/repos/geoadmin/web-emapis/git/commits{/sha}","comments_url":"https://api.github.com/repos/geoadmin/web-emapis/comments{/number}","issue_comment_url":"https://api.github.com/repos/geoadmin/web-emapis/issues/comments{/number}","contents_url":"https://api.github.com/repos/geoadmin/web-emapis/contents/{+path}","compare_url":"https://api.github.com/repos/geoadmin/web-emapis/compare/{base}...{head}","merges_url":"https://api.github.com/repos/geoadmin/web-emapis/merges","archive_url":"https://api.github.com/repos/geoadmin/web-emapis/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/geoadmin/web-emapis/downloads","issues_url":"https://api.github.com/repos/geoadmin/web-emapis/issues{/number}","pulls_url":"https://api.github.com/repos/geoadmin/web-emapis/pulls{/number}","milestones_url":"https://api.github.com/repos/geoadmin/web-emapis/milestones{/number}","notifications_url":"https://api.github.com/repos/geoadmin/web-emapis/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/geoadmin/web-emapis/labels{/name}","releases_url":"https://api.github.com/repos/geoadmin/web-emapis/releases{/id}","created_at":"2015-02-09T15:26:22Z","updated_at":"2015-03-20T07:40:09Z","pushed_at":"2015-04-09T15:02:22Z","git_url":"git://github.com/geoadmin/web-emapis.git","ssh_url":"git@github.com:geoadmin/web-emapis.git","clone_url":"https://github.com/geoadmin/web-emapis.git","svn_url":"https://github.com/geoadmin/web-emapis","homepage":null,"size":1380,"stargazers_count":2,"watchers_count":2,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":6,"forks":0,"open_issues":6,"watchers":2,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/geoadmin/web-emapis/pulls/86"},"html":{"href":"https://github.com/geoadmin/web-emapis/pull/86"},"issue":{"href":"https://api.github.com/repos/geoadmin/web-emapis/issues/86"},"comments":{"href":"https://api.github.com/repos/geoadmin/web-emapis/issues/86/comments"},"review_comments":{"href":"https://api.github.com/repos/geoadmin/web-emapis/pulls/86/comments"},"review_comment":{"href":"https://api.github.com/repos/geoadmin/web-emapis/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/geoadmin/web-emapis/pulls/86/commits"},"statuses":{"href":"https://api.github.com/repos/geoadmin/web-emapis/statuses/b6f6d1e08a2fcbaa9ac26e62c5e7f36da0c3dbfc"}}}}