hubstats 0.3.17 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. checksums.yaml +5 -13
  2. data/.gitignore +0 -1
  3. data/CHANGELOG.markdown +10 -0
  4. data/MIT-LICENSE +3 -1
  5. data/README.md +2 -2
  6. data/app/assets/javascripts/hubstats/application.js +80 -24
  7. data/app/assets/javascripts/hubstats/pull_requests.js +35 -3
  8. data/app/assets/javascripts/hubstats/select2.js +8 -1
  9. data/app/assets/javascripts/hubstats/users.js +17 -5
  10. data/app/assets/stylesheets/hubstats/application.css +39 -1
  11. data/app/assets/stylesheets/hubstats/bootstrap.css +0 -6
  12. data/app/assets/stylesheets/hubstats/deploys.css +2 -0
  13. data/app/assets/stylesheets/hubstats/label.css +2 -0
  14. data/app/assets/stylesheets/hubstats/octicons.css.erb +2 -0
  15. data/app/assets/stylesheets/hubstats/pull_requests.css +2 -0
  16. data/app/controllers/hubstats/application_controller.rb +12 -4
  17. data/app/controllers/hubstats/base_controller.rb +8 -0
  18. data/app/controllers/hubstats/deploys_controller.rb +31 -8
  19. data/app/controllers/hubstats/events_controller.rb +11 -0
  20. data/app/controllers/hubstats/pull_requests_controller.rb +9 -1
  21. data/app/controllers/hubstats/repos_controller.rb +17 -3
  22. data/app/controllers/hubstats/users_controller.rb +15 -0
  23. data/app/models/hubstats/comment.rb +13 -5
  24. data/app/models/hubstats/deploy.rb +29 -6
  25. data/app/models/hubstats/label.rb +16 -4
  26. data/app/models/hubstats/pull_request.rb +44 -2
  27. data/app/models/hubstats/repo.rb +48 -4
  28. data/app/models/hubstats/user.rb +130 -32
  29. data/app/views/hubstats/deploys/index.html.erb +1 -3
  30. data/app/views/hubstats/deploys/show.html.erb +7 -2
  31. data/app/views/hubstats/partials/_comment-condensed.html.erb +3 -0
  32. data/app/views/hubstats/partials/_comment.html.erb +3 -0
  33. data/app/views/hubstats/partials/_deploy-condensed.html.erb +2 -2
  34. data/app/views/hubstats/partials/_deploy.html.erb +1 -1
  35. data/app/views/hubstats/partials/_footer.html.erb +22 -0
  36. data/app/views/hubstats/partials/_header.html.erb +18 -10
  37. data/app/views/hubstats/partials/_pull-condensed.html.erb +2 -0
  38. data/app/views/hubstats/partials/_pull.html.erb +2 -0
  39. data/app/views/hubstats/partials/_quick_addition_stats.html.erb +2 -0
  40. data/app/views/hubstats/partials/_quick_stats.html.erb +1 -0
  41. data/app/views/hubstats/partials/_repo.html.erb +2 -3
  42. data/app/views/hubstats/partials/_user-condensed.html.erb +4 -0
  43. data/app/views/hubstats/partials/_user.html.erb +4 -2
  44. data/app/views/hubstats/pull_requests/index.html.erb +6 -1
  45. data/app/views/hubstats/pull_requests/show.html.erb +5 -0
  46. data/app/views/hubstats/repos/dashboard.html.erb +6 -4
  47. data/app/views/hubstats/repos/show.html.erb +6 -1
  48. data/app/views/hubstats/tables/_comments-condensed.html.erb +2 -1
  49. data/app/views/hubstats/tables/_comments.html.erb +2 -1
  50. data/app/views/hubstats/tables/_deploys-condensed.html.erb +1 -0
  51. data/app/views/hubstats/tables/_deploys.html.erb +1 -0
  52. data/app/views/hubstats/tables/_grouped_deploys.html.erb +1 -0
  53. data/app/views/hubstats/tables/_grouped_pulls.html.erb +1 -0
  54. data/app/views/hubstats/tables/_pulls-condensed.html.erb +1 -0
  55. data/app/views/hubstats/tables/_pulls.html.erb +1 -0
  56. data/app/views/hubstats/tables/_repos-condensed.html.erb +1 -0
  57. data/app/views/hubstats/tables/_repos.html.erb +1 -0
  58. data/app/views/hubstats/tables/_users-condensed.html.erb +1 -0
  59. data/app/views/hubstats/tables/_users.html.erb +1 -1
  60. data/app/views/hubstats/users/index.html.erb +3 -2
  61. data/app/views/hubstats/users/show.html.erb +7 -1
  62. data/app/views/layouts/hubstats/application.html.erb +4 -4
  63. data/config/routes.rb +2 -1
  64. data/db/seeds.rb +41 -0
  65. data/hubstats.gemspec +1 -0
  66. data/lib/generators/hubstats/install_generator.rb +2 -1
  67. data/lib/hub_helper.rb +18 -0
  68. data/lib/hubstats.rb +0 -30
  69. data/lib/hubstats/events_handler.rb +25 -7
  70. data/lib/hubstats/github_api.rb +43 -15
  71. data/lib/hubstats/version.rb +1 -1
  72. data/lib/tasks/hubstats_tasks.rake +1 -0
  73. data/lib/tasks/populate_task.rake +2 -1
  74. data/spec/controllers/hubstats/deploys_controller_spec.rb +0 -3
  75. data/spec/controllers/hubstats/pull_requests_controller_spec.rb +3 -4
  76. data/spec/controllers/hubstats/repos_controller_spec.rb +4 -5
  77. data/spec/factories/comment.rb +2 -1
  78. data/spec/factories/deploys.rb +1 -0
  79. data/spec/factories/pull_requests.rb +1 -0
  80. data/spec/factories/repo.rb +1 -0
  81. data/spec/factories/users.rb +2 -1
  82. data/spec/lib/hubstats/github_api_spec.rb +5 -5
  83. metadata +41 -26
  84. data/date_range +0 -0
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- YjU2MmI0YWVkMjVlYWRlMDVmNTVhNGQ4M2NjODIxZWNkMDM1YWRiMw==
5
- data.tar.gz: !binary |-
6
- Yzc2Njc2YWU4MzU4NjIxMGJkODM5MTJhZGE1MDUyZGI2MGFmYzUwNg==
2
+ SHA1:
3
+ metadata.gz: 1d42a5ea9c74a42127466bba8c74ef9a8effec2b
4
+ data.tar.gz: 32f44d7a496f560c48bcbd44469d4ab7f2b07ec4
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ZDZmMTc0NTU5M2FjY2NlNWQ0OTc4NjM3Zjg2YTI4YzM3MjhjODZjNWM4ZjQ1
10
- MTQ5ZWZmNzc4NWY2MDcyZjUwNjdjNzgyYjU5NzdlYmE4YzM5YzBjNGZhM2Rm
11
- MmQ4NWM4MmU4YWQ5ZTU5YTRiM2VjODQwMTkwNzJlODAzMmIyN2I=
12
- data.tar.gz: !binary |-
13
- OGEyYmUzMjJlM2VkMDQ5NGEwZTllODg0NDE1OWJmYThlMDZkOTI2NGFhNjc2
14
- Y2UzMDdhMTM2MjFkNzU2YzZiNWM0MzZhMjNhMmZlOWFlMWEzNmEzOGUwY2Nm
15
- ZjgwOTc0NWRkMmMzYWExOWNkNzljZmRkNDhlNzI3NTkzZDJlNDQ=
6
+ metadata.gz: 4688a3e72183f7108fb153953ea9902feb1195ff8f7e903a81a6c2197a1ac203b6a498d404519711686f7882b9b4a4aca3fb45430d12c0973233215aa62b2103
7
+ data.tar.gz: a57941f00689be010919731bd4ef7c4c3f744b3776be4c8a0887eb0d4e5c1d5e6d07d2efde44c75894bbb78b54c136cb52970868c4fd6b5e60a050c92d2ea45a
data/.gitignore CHANGED
@@ -11,4 +11,3 @@ test/dummy/db/migrate/*
11
11
  .gitkeep
12
12
  Gemfile.lock
13
13
  .idea
14
- db/seeds.rb
@@ -1,3 +1,13 @@
1
+ #### v0.4.1
2
+ #### v0.4.0
3
+ * Cleaning up code; fixing bug with repo filter; adding pretty footer
4
+
5
+ > Emma Sax: Luke Ludwig, Nick LaMuro: https://github.com/sportngin/hubstats/pull/70
6
+
7
+ * Cleaning up code; fixing bug with repo filter; adding pretty footer
8
+
9
+ > Emma Sax: Luke Ludwig, Nick LaMuro: https://github.com/sportngin/hubstats/pull/70
10
+
1
11
  #### v0.3.17
2
12
  * Adding migration to fix datetimes versus strings
3
13
 
@@ -1,4 +1,6 @@
1
- Copyright 2014 YOURNAME
1
+ The MIT License (MIT)
2
+
3
+ Copyright 2015 Sport Ngin
2
4
 
3
5
  Permission is hereby granted, free of charge, to any person obtaining
4
6
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -30,7 +30,7 @@ Hubstats can also use OAUTH access tokens stored in ENV["GITHUB_API_TOKEN"] or f
30
30
 
31
31
  ### Webhooks
32
32
 
33
- Hubstats uses GitHub webhooks to keep itself update. It requires you to set a secret as well as an endpoint to push to.
33
+ Hubstats uses GitHub webhooks to keep itself updated. It requires you to set a secret as well as an endpoint to push to.
34
34
 
35
35
  To generate a secret run:
36
36
 
@@ -48,7 +48,7 @@ Hubstats needs to know what repos for it to watch. You can set it to watch eithe
48
48
 
49
49
  ## Testing
50
50
 
51
- All of the automated tests are written in RSpec. Since hubstats is a plugin, not an application, we need to install the plugin into a Rails application to run. The `test` directory is a dummy rails application for manually testing the UI by serving hubstats locally. When developing and using the `test/dummy` locally, then the test will automatically sync with any updated code, so it doesn't need to be re-served when changes are made with the normal Rails application. When in the development process, one just needs to run `rails s` once from the command line (while in `test/dummy`) to serve the plugin. http://guides.rubyonrails.org/plugins.html will give more information on the implementation of a Rails plugin.
51
+ All of the automated tests are written in RSpec. Since hubstats is a plugin, not an application, we need to install the plugin into a Rails application to run. The `test` directory is a dummy rails application for manually testing the UI by serving hubstats locally. When developing and using the `test/dummy` locally, then the test will automatically sync with any updated code, so it doesn't need to be re-served when changes are made with the normal Rails application. When in the development process, one just needs to run `bundle exec rails s` once from the command line (while in `test/dummy`) to serve the plugin. http://guides.rubyonrails.org/plugins.html will give more information on the implementation of a Rails plugin.
52
52
 
53
53
  ## TL:DR
54
54
 
@@ -14,45 +14,101 @@
14
14
  //= require jquery_ujs
15
15
  //= require select2
16
16
  //= require hubstats/bootstrap
17
+ //= require bootstrap-datepicker
17
18
  //= require_tree .
18
19
 
19
- $(document).ready( function() {
20
- setDateRange()
20
+ /* Below function will run automatically upon refresh. It will do two things:
21
+ * - format the datepicker settings
22
+ * - call setDateRange on the datepicker
23
+ */
24
+ $(document).ready(function() {
25
+ $('.input-daterange').datepicker({
26
+ "todayHighlight": true,
27
+ "endDate": "Today",
28
+ "todayBtn": true
29
+ });
30
+ setDateRange();
21
31
  });
22
32
 
33
+ /* setDateRange
34
+ * Reads the current cookie (which is currently set as a string with two dates),
35
+ * and sets the dates in the corresponding datepicker.
36
+ */
23
37
  function setDateRange() {
24
- var index = readCookie("hubstats_index") || 2;
25
- var timer = document.getElementById("time-select");
38
+ var dates;
39
+ var cookie = readCookie("hubstats_dates");
26
40
 
27
- timer.selectedIndex = index;
41
+ if (cookie === null || cookie.indexOf("null") > -1) {
42
+ dates = getDefaultDateRange();
43
+ } else {
44
+ dates = readCookie("hubstats_dates");
45
+ }
46
+ var submitButton = document.getElementById("submitDateRange");
47
+ var datesArray = dates.split("~~");
28
48
 
29
- timer.onchange = function() {
30
- createCookie("hubstats_index",this.selectedIndex,1);
49
+ var start_input = $('.input-daterange').find('[name="start"]');
50
+ var end_input = $('.input-daterange').find('[name="end"]');
51
+
52
+ start_input.datepicker('update', new Date(datesArray[0]));
53
+ end_input.datepicker('update', new Date(datesArray[1]));
54
+
55
+ /* When the 'Apply' button is pressed for the datepicker, this function will
56
+ * read the datepicker values, assign them to the cookie, and reload the page.
57
+ */
58
+ submitButton.onclick = function() {
59
+ var start_date = start_input.datepicker('getDate');
60
+ var end_date = end_input.datepicker('getDate');
61
+ createCookie("hubstats_dates", start_date + "~~" + end_date, 1);
31
62
  window.location.reload();
32
63
  };
33
64
  };
34
65
 
35
- function createCookie(name,value,days) {
36
- if (days) {
37
- var date = new Date();
38
- date.setTime(date.getTime()+(days*24*60*60*1000));
39
- var expires = "; expires="+date.toGMTString();
40
- }
41
- else var expires = "";
42
- document.cookie = name+"="+value+expires+"; path=/";
66
+ /* createCookie
67
+ * @params - name, value, days
68
+ * Takes a name, value, and number of days and will make a cookie out of those parameters.
69
+ */
70
+ function createCookie(name, value, days) {
71
+ if (days) {
72
+ var date = new Date();
73
+ date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
74
+ var expires = "; expires=" + date.toGMTString();
75
+ }
76
+ else var expires = "";
77
+ document.cookie = name + "=" + value + expires + "; path=/";
43
78
  };
44
79
 
80
+ /* readCookie
81
+ * @params - name
82
+ * Takes in the name of a cookie, and will read that cookie, returning either the data
83
+ * from the cookie or null if there is no cookie with that name.
84
+ */
45
85
  function readCookie(name) {
46
- var nameEQ = name + "=";
47
- var ca = document.cookie.split(';');
48
- for(var i=0;i < ca.length;i++) {
49
- var c = ca[i];
50
- while (c.charAt(0)==' ') c = c.substring(1,c.length);
51
- if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
52
- }
53
- return null;
86
+ var cookieName = name + "=";
87
+ var cookieData = document.cookie.split(';');
88
+ for(var i = 0; i < cookieData.length ; i++) {
89
+ var c = cookieData[i];
90
+ while (c.charAt(0) == ' ') c = c.substring(1, c.length);
91
+ if (c.indexOf(cookieName) == 0) return c.substring(cookieName.length, c.length);
92
+ }
93
+ return null;
54
94
  };
55
95
 
96
+ /* eraseCookie
97
+ * @params - name
98
+ * Creates a new blank cookie.
99
+ */
56
100
  function eraseCookie(name) {
57
- createCookie(name,"",-1);
101
+ createCookie(name, "" , -1);
102
+ };
103
+
104
+ /* getDefaultDateRange
105
+ * Returns a string that is the date two weeks ago, '~~', and today's date with all hours
106
+ * set at midnight.
107
+ */
108
+ function getDefaultDateRange() {
109
+ var today = new Date();
110
+ today.setHours(0,0,0,0);
111
+ var twoWeeksAgo = new Date(today);
112
+ twoWeeksAgo.setDate(twoWeeksAgo.getDate() - 14);
113
+ return twoWeeksAgo + '~~' + today;
58
114
  };
@@ -1,6 +1,12 @@
1
1
  // Place all the behaviors and hooks related to the matching controller here.
2
2
  // All this logic will automatically be available in application.js.
3
3
 
4
+ /* This will be run whenever the Pull Requests page or Deploy page (for some functionality)
5
+ * is opened or refreshed. It will automatically call of the below functions on all of the
6
+ * variables that are in the URL of the page. The below pieces are all about sorting
7
+ * the data on the page based on state (open or closed), order (newest first
8
+ * or oldest first), and the grouping (by repo or user).
9
+ */
4
10
  $(document).ready(function() {
5
11
  queryParameters = getUrlVars();
6
12
  setDefaults(queryParameters);
@@ -31,7 +37,11 @@ $(document).ready(function() {
31
37
  });
32
38
  });
33
39
 
34
-
40
+ /**
41
+ * updateQueryStringParameter
42
+ * @params - queryParameters, key, value
43
+ * Updates the string paramters based on the specifications in the URL.
44
+ */
35
45
  function updateQueryStringParameter(queryParameters, key, value) {
36
46
  var uri = document.location.pathname;
37
47
  if (!queryParameters[key])
@@ -49,6 +59,9 @@ function updateQueryStringParameter(queryParameters, key, value) {
49
59
  document.location.href = uri
50
60
  }
51
61
 
62
+ /* getUrlVars
63
+ * Gets all of the variables that are in the URL.
64
+ */
52
65
  function getUrlVars() {
53
66
  var vars = [], hash;
54
67
  if (window.location.href.indexOf('?') > 0) {
@@ -63,6 +76,10 @@ function getUrlVars() {
63
76
  return vars;
64
77
  }
65
78
 
79
+ /* setDefaults
80
+ * @params - queryParameters
81
+ * Sets the state, order, and grouping to be 'default', or all, descending, and non-grouped.
82
+ */
66
83
  function setDefaults(queryParameters) {
67
84
  if (queryParameters["state"])
68
85
  $('#' + queryParameters["state"]).addClass('active');
@@ -78,6 +95,11 @@ function setDefaults(queryParameters) {
78
95
  $('#group-by').val(queryParameters["group"]);
79
96
  }
80
97
 
98
+ /* initLabels
99
+ * @params - queryParameters
100
+ * Takes the query parameters and if there are labels as a parameter, then assigns
101
+ * the background colors to the labels that are highlighted.
102
+ */
81
103
  function initLabels (queryParameters) {
82
104
  if (queryParameters["label"]) {
83
105
  var labels = queryParameters["label"].split(',');
@@ -93,6 +115,9 @@ function initLabels (queryParameters) {
93
115
  }
94
116
  }
95
117
 
118
+ /* changeColors
119
+ * Adds the colors to the labels on the list of labels and when labeling the pull requests.
120
+ */
96
121
  function changeColors () {
97
122
  $(".color-label").each( function() {
98
123
  var color = '#' + $(this)[0].title;
@@ -104,9 +129,12 @@ function changeColors () {
104
129
  var color = '#' + $(this).data("color");
105
130
  $(this).children().eq(0).css('background-color',color);
106
131
  });
107
-
108
132
  }
109
133
 
134
+ /* activeLabels
135
+ * Shows only the labels that are assigned to a pull request that is currently being shown;
136
+ * whether a PR is being shown is dependent on what state (closed, open, or all) the data is showing.
137
+ */
110
138
  function activeLabels () {
111
139
  $("#labels-container .btn-label").click(function () {
112
140
  $(this).toggleClass("active");
@@ -122,7 +150,11 @@ function activeLabels () {
122
150
  });
123
151
  }
124
152
 
125
- function isDark( color ) {
153
+ /* isDark
154
+ * @params - color
155
+ * Edits the color of the text if the label color is dark.
156
+ */
157
+ function isDark(color) {
126
158
  var match = /rgb\((\d+).*?(\d+).*?(\d+)\)/.exec(color);
127
159
  return parseFloat(match[1])
128
160
  + parseFloat(match[2])
@@ -1,3 +1,7 @@
1
+ /* This is for the filters in the top left corner of the Deploys and Pull Requests pages.
2
+ * This allows the user of Hubstats to filter by an entire list of the repos/users, and then
3
+ * on selection only show data for that choice.
4
+ */
1
5
  $(document).ready(function() {
2
6
  usersIDs = queryParameters["users"] ? queryParameters["users"].replace("%2C", ",") : "";
3
7
  reposIDs = queryParameters["repos"] ? queryParameters["repos"].replace("%2C", ",") : "";
@@ -86,7 +90,10 @@ $(document).ready(function() {
86
90
  }).select2('val', []);
87
91
  });
88
92
 
89
-
93
+ /* getPath
94
+ * @params - model (string)
95
+ * Returns the user or repo bath, based on whether the string passed in is 'repo' or 'user'.
96
+ */
90
97
  function getPath (model) {
91
98
  if (model == 'user') {
92
99
  return $("#brand").attr('data-user-path');}
@@ -1,6 +1,11 @@
1
1
  // Place all the behaviors and hooks related to the matching controller here.
2
2
  // All this logic will automatically be available in application.js.
3
3
 
4
+ /* This function is run whenever the Metrics page or the Users page is opened or refreshed. It will
5
+ * sort all of the repos/users sorted by count of (or alphabetically by) name, number of deploys,
6
+ * number of merged pull requests, number of comments, net additions, average additions, or average
7
+ * deletions.
8
+ */
4
9
  $(document).ready(function() {
5
10
  queryParameters = getUrlVars();
6
11
  setUserDefaults(queryParameters);
@@ -21,7 +26,6 @@ $(document).ready(function() {
21
26
  toggleOrder(queryParameters,$(this).attr('id'));
22
27
  });
23
28
 
24
- // No longer using additions and deletions, but instead using net additions
25
29
  $("#netadditions").on("click", function(){
26
30
  toggleOrder(queryParameters,$(this).attr('id'));
27
31
  });
@@ -35,6 +39,10 @@ $(document).ready(function() {
35
39
  });
36
40
  });
37
41
 
42
+ /* toggleOrder
43
+ * @params - queryParams, sort_by
44
+ * Will toggle the order that the data is sorted by (highest first or lowest first).
45
+ */
38
46
  function toggleOrder(queryParams, sort_by) {
39
47
  if (queryParams["order"] !== undefined) {
40
48
  if (queryParams["order"] === sort_by+"-desc" ) {
@@ -47,10 +55,14 @@ function toggleOrder(queryParams, sort_by) {
47
55
  }
48
56
  }
49
57
 
50
- function setUserDefaults(queryParameters) {
51
- if (queryParameters["order"]) {
52
- sort_by = queryParameters["order"].split("-")[0];
53
- order = queryParameters["order"].split("-")[1];
58
+ /* setUserDefaults
59
+ * @params - queryParameters
60
+ * Sets the arrow next to what piece of data is being sorted.
61
+ */
62
+ function setUserDefaults(queryParams) {
63
+ if (queryParams["order"]) {
64
+ sort_by = queryParams["order"].split("-")[0];
65
+ order = queryParams["order"].split("-")[1];
54
66
  if (order === 'asc') {
55
67
  $('#'+sort_by+' .octicon').addClass('octicon-arrow-up');
56
68
  } else {
@@ -12,9 +12,42 @@
12
12
  *= require hubstats/bootstrap
13
13
  *= require select2
14
14
  *= require select2-bootstrap
15
+ *= require bootstrap-datepicker
15
16
  *= require_tree .
16
17
  */
17
18
 
19
+ /*For the 'Apply' button*/
20
+ .apply {
21
+ float: right;
22
+ margin-top: 8px;
23
+ }
24
+
25
+ /*For the active tab on the navigation bar*/
26
+ .navbar-active {
27
+ font-weight: bold;
28
+ color: #E0E0E0;
29
+ background-color: #E0E0E0;
30
+ border-color: #E0E0E0;
31
+ }
32
+
33
+ /*For the datepicker*/
34
+ .input-daterange {
35
+ width: 245px;
36
+ top: 8px;
37
+ }
38
+
39
+ .footer-main-text {
40
+ font-size: 18px;
41
+ color: #B0B0B0;
42
+ text-align: center;
43
+ }
44
+
45
+ .footer-text {
46
+ font-size: 12px;
47
+ color: #A0A0A0;
48
+ line-height: 20px;
49
+ }
50
+
18
51
  .numeric, .title {
19
52
  text-align: center;
20
53
  }
@@ -50,13 +83,14 @@
50
83
  padding: 5px;
51
84
  }
52
85
 
53
-
54
86
  .user-image > img,
55
87
  .repo-image {
56
88
  width: 55px;
57
89
  height: 55px;
58
90
  }
59
91
 
92
+ /*For the various images of the repos, octicons, deploys, etc*/
93
+
60
94
  .repo-octicon-small {
61
95
  font-size: 36px !important;
62
96
  }
@@ -71,6 +105,8 @@
71
105
  height: 36px;
72
106
  }
73
107
 
108
+ /*For the lists of repos, pull requests, deploys, comments, and users*/
109
+
74
110
  .pulls, .comments, .users, .repos, .deploys {
75
111
  margin: 15px 0px 15px 0px;
76
112
  border: 1px solid #ccc;
@@ -123,6 +159,8 @@
123
159
  margin: 0px;
124
160
  }
125
161
 
162
+ /*Other extraneous bits that format the UI*/
163
+
126
164
  .push-down {
127
165
  margin-top: 8px;
128
166
  }
@@ -3667,12 +3667,6 @@ select[multiple].input-group-sm > .input-group-btn > .btn {
3667
3667
  .navbar-collapse.in {
3668
3668
  overflow-y: auto;
3669
3669
  }
3670
- .navbar-active {
3671
- font-weight: bold;
3672
- color: #E0E0E0;
3673
- background-color: #E0E0E0;
3674
- border-color: #E0E0E0;
3675
- }
3676
3670
  @media (min-width: 768px) {
3677
3671
  .navbar-collapse {
3678
3672
  width: auto;
@@ -1,7 +1,9 @@
1
+ /*For the filter boxes on the left side of the Deploys page*/
1
2
  .select2-container{
2
3
  width: 100%;
3
4
  }
4
5
 
6
+ /*To align the right-side octicon and pull requests numbers on the Deploys index page*/
5
7
  .deploy-right {
6
8
  float: right !important;
7
9
  }