rails_mini_profiler 0.2.1 → 0.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/javascripts/rails_mini_profiler.js +1 -78
  3. data/app/assets/stylesheets/rails_mini_profiler/application.css +1 -171
  4. data/app/controllers/rails_mini_profiler/profiled_requests_controller.rb +10 -1
  5. data/app/helpers/rails_mini_profiler/application_helper.rb +9 -0
  6. data/app/{assets/images/rails_mini_profiler → javascript/images}/bookmark.svg +0 -0
  7. data/app/{assets/images/rails_mini_profiler → javascript/images}/chart.svg +0 -0
  8. data/app/{assets/images/rails_mini_profiler → javascript/images}/delete.svg +0 -0
  9. data/app/{assets/images/rails_mini_profiler → javascript/images}/graph.svg +0 -0
  10. data/app/{assets/images/rails_mini_profiler → javascript/images}/logo.svg +0 -0
  11. data/app/{assets/images/rails_mini_profiler → javascript/images}/logo_variant.svg +0 -0
  12. data/app/{assets/images/rails_mini_profiler → javascript/images}/search.svg +0 -0
  13. data/app/{assets/images/rails_mini_profiler → javascript/images}/setting.svg +0 -0
  14. data/app/{assets/images/rails_mini_profiler → javascript/images}/show.svg +0 -0
  15. data/app/javascript/packs/rails-mini-profiler.js +80 -0
  16. data/app/javascript/stylesheets/flamegraph.scss +9 -0
  17. data/app/{assets/stylesheets/rails_mini_profiler/flashes.css → javascript/stylesheets/flashes.scss} +0 -0
  18. data/app/{assets/stylesheets/rails_mini_profiler/navbar.css → javascript/stylesheets/navbar.scss} +2 -2
  19. data/app/{assets/stylesheets/rails_mini_profiler/profiled_requests.css → javascript/stylesheets/profiled_requests.scss} +1 -7
  20. data/app/javascript/stylesheets/rails-mini-profiler.scss +175 -0
  21. data/app/{assets/stylesheets/rails_mini_profiler/traces.css → javascript/stylesheets/traces.scss} +0 -5
  22. data/app/presenters/rails_mini_profiler/profiled_request_presenter.rb +2 -2
  23. data/app/views/layouts/rails_mini_profiler/application.html.erb +1 -8
  24. data/app/views/layouts/rails_mini_profiler/flamegraph.html.erb +1 -8
  25. data/app/views/rails_mini_profiler/badge.html.erb +1 -1
  26. data/app/views/rails_mini_profiler/profiled_requests/index.html.erb +3 -3
  27. data/app/views/rails_mini_profiler/shared/_head.erb +13 -0
  28. data/app/views/rails_mini_profiler/shared/_navbar.html.erb +1 -1
  29. data/lib/generators/rails_mini_profiler/install_generator.rb +13 -0
  30. data/lib/generators/rails_mini_profiler/templates/rails_mini_profiler.js.erb +13 -0
  31. data/lib/rails_mini_profiler/badge.rb +4 -1
  32. data/lib/rails_mini_profiler/engine.rb +5 -1
  33. data/lib/rails_mini_profiler/version.rb +4 -1
  34. data/vendor/assets/images/bookmark.svg +10 -0
  35. data/vendor/assets/images/chart.svg +12 -0
  36. data/vendor/assets/images/delete.svg +9 -0
  37. data/vendor/assets/images/graph.svg +11 -0
  38. data/vendor/assets/images/logo.svg +18 -0
  39. data/vendor/assets/images/logo_variant.svg +32 -0
  40. data/vendor/assets/images/search.svg +10 -0
  41. data/vendor/assets/images/setting.svg +10 -0
  42. data/vendor/assets/images/show.svg +11 -0
  43. data/vendor/assets/javascripts/rails-mini-profiler.css +1 -0
  44. data/vendor/assets/javascripts/rails-mini-profiler.js +1 -0
  45. metadata +31 -22
  46. data/app/assets/fonts/rails_mini_profiler/LICENSE.txt +0 -202
  47. data/app/assets/fonts/rails_mini_profiler/OpenSans-Bold.ttf +0 -0
  48. data/app/assets/fonts/rails_mini_profiler/OpenSans-Regular.ttf +0 -0
  49. data/app/assets/fonts/rails_mini_profiler/OpenSans-SemiBold.ttf +0 -0
  50. data/app/assets/stylesheets/rails_mini_profiler/flamegraph.css +0 -14
  51. data/vendor/assets/javascripts/popper.js +0 -6
  52. data/vendor/assets/javascripts/tippy.js +0 -2
@@ -1,9 +1,3 @@
1
- /*
2
- Place all the styles related to the matching controller here.
3
- They will automatically be included in application.css.
4
- */
5
-
6
-
7
1
  main {
8
2
  width: 100%;
9
3
 
@@ -133,7 +127,7 @@ main {
133
127
  .data-item {
134
128
  display: flex;
135
129
  flex-direction: column;
136
- align-items: start;
130
+ align-items: flex-start;
137
131
  list-style: none;
138
132
 
139
133
  margin-right: 3rem;
@@ -0,0 +1,175 @@
1
+ @import 'flashes';
2
+ @import 'flamegraph';
3
+ @import 'navbar';
4
+ @import 'profiled_requests';
5
+ @import 'traces';
6
+
7
+ @import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;600;700&display=swap');
8
+
9
+ @font-face {
10
+ font-family: 'Open Sans';
11
+ font-weight: 400;
12
+ font-style: normal;
13
+ }
14
+
15
+ @font-face {
16
+ font-family: 'Open Sans';
17
+ font-weight: 600;
18
+ font-style: normal;
19
+ }
20
+
21
+ @font-face {
22
+ font-family: 'Open Sans';
23
+ font-weight: 700;
24
+ font-style: normal;
25
+ }
26
+
27
+ html {
28
+ width: 100%;
29
+ height: 100%;
30
+ margin: 0;
31
+ padding: 0;
32
+
33
+ --grey-50: #F9FAFB;
34
+ --grey-100: #F3F4F6;
35
+ --grey-200: #E5E7EB;
36
+ --grey-400: #9CA3AF;
37
+ --grey-500: #6B7280;
38
+ --grey-700: #374151;
39
+ --grey-900: #111827;
40
+
41
+ --red-400: #F87171;
42
+ --red-500: #EF4444;
43
+ --red-600: #DC2626;
44
+
45
+ --yellow-400: #FBBF24;
46
+ --yellow-500: #F59E0B;
47
+
48
+ --green-300: #6EE7B7;
49
+ --green-400: #34D399;
50
+ --green-500: #10B981;
51
+
52
+ --blue-400: #60A5FA;
53
+ --blue-500: #3B82F6;
54
+
55
+ --main-width: 1056px;
56
+
57
+ --primary: var(--red-600);
58
+
59
+ --border-color: var(--grey-200);
60
+ --text-color: var(--grey-900);
61
+
62
+ font-family: 'Open Sans', monospace;
63
+
64
+ }
65
+
66
+ body {
67
+ width: 100%;
68
+ height: 100%;
69
+ margin: 0;
70
+ padding: 0;
71
+
72
+ color: var(--text-color)
73
+ }
74
+
75
+ h1 {
76
+ padding: 2rem 0 1rem;
77
+ }
78
+
79
+ button {
80
+ border: none;
81
+ border-radius: .25rem;
82
+ padding: 0.5em .5em;
83
+ text-align: center;
84
+ text-decoration: none;
85
+ display: inline-block;
86
+ font-size: 1rem;
87
+ cursor: pointer;
88
+ }
89
+
90
+ button:hover {
91
+ box-shadow: 0 .25rem .25rem 0 var(--grey-50);
92
+ }
93
+
94
+ /* --------------------------------------- */
95
+
96
+ .text-left {
97
+ text-align: left;
98
+ }
99
+
100
+ .text-right {
101
+ text-align: right;
102
+ }
103
+
104
+ /* --------------------------------------- */
105
+
106
+ .pill {
107
+ margin: .2rem 0;
108
+ padding: .1rem .4rem;
109
+ border-radius: 5px;
110
+
111
+ font-size: .9rem;
112
+ font-weight: 600;
113
+ letter-spacing: .1rem;
114
+
115
+ background: var(--grey-200);
116
+ }
117
+
118
+ /* --------------------------------------- */
119
+
120
+ .popover {
121
+ display: flex;
122
+ flex-direction: column;
123
+ width: 600px;
124
+ padding: 1em;
125
+ color: black;
126
+ }
127
+
128
+ .popover-header {
129
+ display: flex;
130
+ padding-bottom: 1em;
131
+ flex-direction: row;
132
+ justify-content: space-between;
133
+ align-items: center;
134
+ }
135
+
136
+ .popover-description {
137
+ margin: 0;
138
+ padding: 0;
139
+ }
140
+
141
+ .popover-close {
142
+ background: transparent;
143
+ padding: 0;
144
+ font-weight: 700;
145
+ font-size: 20px;
146
+ color: var(--grey-400);
147
+ }
148
+
149
+ .popover-body {
150
+ padding: 1em 0;
151
+ }
152
+
153
+ .popover-footer {
154
+ border-top: 1px solid var(--grey-50);
155
+ }
156
+
157
+ .tippy-box[data-theme~='rmp'] {
158
+ background: white;
159
+ box-shadow: 8px 0 30px 4px rgba(0, 0, 0, .2), 8px 4px 10px 0 rgba(0, 0, 0, .05);
160
+ border-radius: 3px;
161
+
162
+ transition: all cubic-bezier(.19,1,.22,1) .2s;
163
+ }
164
+ .tippy-box[data-theme~='rmp'][data-placement^='top'] > .tippy-arrow::before {
165
+ border-top-color: white;
166
+ }
167
+ .tippy-box[data-theme~='rmp'][data-placement^='bottom'] > .tippy-arrow::before {
168
+ border-bottom-color: white;
169
+ }
170
+ .tippy-box[data-theme~='rmp'][data-placement^='left'] > .tippy-arrow::before {
171
+ border-left-color: white;
172
+ }
173
+ .tippy-box[data-theme~='rmp'][data-placement^='right'] > .tippy-arrow::before {
174
+ border-right-color: white;
175
+ }
@@ -1,8 +1,3 @@
1
- /*
2
- Place all the styles related to the matching controller here.
3
- They will automatically be included in application.css.
4
- */
5
-
6
1
  .trace-list {
7
2
  margin: 0;
8
3
  padding: 0;
@@ -23,11 +23,11 @@ module RailsMiniProfiler
23
23
 
24
24
  if model.flamegraph.present?
25
25
  link_to(flamegraph_path(model.id), title: 'Show Flamegraph') do
26
- inline_svg_tag('rails_mini_profiler/graph.svg')
26
+ inline_svg('graph.svg')
27
27
  end
28
28
  else
29
29
  link_to(flamegraph_path(model.id), title: 'No Flamegraph present for this request', class: 'link-disabled') do
30
- inline_svg_tag('rails_mini_profiler/graph.svg')
30
+ inline_svg('graph.svg')
31
31
  end
32
32
  end
33
33
  end
@@ -1,13 +1,6 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
- <head>
4
- <title>Rails Mini Profiler</title>
5
- <%= csrf_meta_tags %>
6
- <%= csp_meta_tag %>
7
-
8
- <%= javascript_include_tag "rails_mini_profiler" %>
9
- <%= stylesheet_link_tag "rails_mini_profiler/application", media: "all" %>
10
- </head>
3
+ <%= render 'rails_mini_profiler/shared/head' %>
11
4
  <body>
12
5
 
13
6
  <%= render 'rails_mini_profiler/shared/navbar' %>
@@ -1,13 +1,6 @@
1
1
  <!DOCTYPE html>
2
2
  <html>
3
- <head>
4
- <title>Rails Mini Profiler</title>
5
- <%= csrf_meta_tags %>
6
- <%= csp_meta_tag %>
7
-
8
- <%= javascript_include_tag "rails_mini_profiler" %>
9
- <%= stylesheet_link_tag "rails_mini_profiler/application", media: "all" %>
10
- </head>
3
+ <%= render 'rails_mini_profiler/shared/head' %>
11
4
  <body>
12
5
 
13
6
  <main>
@@ -32,6 +32,6 @@
32
32
  }
33
33
  </style>
34
34
  <a id="rails-mini-profiler-badge" href="<%= profiled_request_path(@profiled_request.id) %>" data-turbolinks="false" title="View performance data">
35
- <%= inline_svg_tag('rails_mini_profiler/logo_variant', id: "rails-mini-profiler-badge-icon") %>
35
+ <%= inline_svg('logo_variant.svg', id: "rails-mini-profiler-badge-icon") %>
36
36
  <%= (@profiled_request.duration.to_f / 100).round %>ms
37
37
  </a>
@@ -1,6 +1,6 @@
1
1
  <% if @profiled_requests.empty? %>
2
2
  <section class="placeholder">
3
- <%= inline_svg_tag('rails_mini_profiler/logo_variant', class: 'placeholder-image') %>
3
+ <%= inline_svg('logo_variant.svg', class: 'placeholder-image') %>
4
4
  <div class="placeholder-text">
5
5
  <h2> There is nothing here yet! </h2>
6
6
  <p>Send some requests to your app for them to show up here</p>
@@ -43,11 +43,11 @@
43
43
  <td class=""><%= profiled_request.created_at %></td>
44
44
  <td class="request-buttons">
45
45
  <%= link_to(profiled_request_path(profiled_request.id), title: 'Show Details') do %>
46
- <%= inline_svg_tag('rails_mini_profiler/show.svg', options = {}) %>
46
+ <%= inline_svg('show.svg', options = {}) %>
47
47
  <% end %>
48
48
  <%= profiled_request.flamegraph_icon %>
49
49
  <%= link_to(profiled_request_path(profiled_request.id), title: 'Delete Request', method: :delete) do %>
50
- <%= inline_svg_tag('rails_mini_profiler/delete.svg') %>
50
+ <%= inline_svg('delete.svg') %>
51
51
  <% end %>
52
52
  </td>
53
53
  </tr>
@@ -0,0 +1,13 @@
1
+ <head>
2
+ <title>Rails Mini Profiler</title>
3
+ <%= csrf_meta_tags %>
4
+ <%= csp_meta_tag %>
5
+
6
+ <% if defined?(Webpacker::Engine) %>
7
+ <%= javascript_pack_tag "rails-mini-profiler" %>
8
+ <%= stylesheet_pack_tag 'rails-mini-profiler' %>
9
+ <% else %>
10
+ <%= javascript_include_tag "rails_mini_profiler" %>
11
+ <%= stylesheet_link_tag "rails_mini_profiler/application", media: "all" %>
12
+ <%end %>
13
+ </head>
@@ -1,7 +1,7 @@
1
1
  <header class="header">
2
2
  <nav class="nav">
3
3
  <a class="home" href="<%= profiled_requests_path %>">
4
- <%= inline_svg_tag('rails_mini_profiler/logo', class: 'home-logo') %>
4
+ <%= inline_svg('logo.svg', class: 'home-logo') %>
5
5
  <h1 class="home-title">Rails Mini Profiler </h1>
6
6
  </a>
7
7
  <ul class="header-links">
@@ -11,10 +11,23 @@ module RailsMiniProfiler
11
11
  #
12
12
  # Updates the routes file to mount the engine, adds an initializer and copies a migration.
13
13
  desc 'Install rails-mini-profiler'
14
+
14
15
  def install
15
16
  route("mount RailsMiniProfiler::Engine => '/rails_mini_profiler'")
16
17
  template 'rails_mini_profiler.rb.erb', 'config/initializers/rails_mini_profiler.rb'
17
18
  system('rails rails_mini_profiler:install:migrations')
19
+ webpacker_install if defined?(Webpacker::Engine)
20
+ end
21
+
22
+ private
23
+
24
+ def webpacker_install
25
+ run 'yarn add @rails-mini-profiler/assets'
26
+ webpack_config = YAML.load_file(Rails.root.join('config', 'webpacker.yml'))[Rails.env]
27
+ destination = Rails.root.join(webpack_config['source_path'],
28
+ webpack_config['source_entry_path'],
29
+ 'rails-mini-profiler.js')
30
+ template('rails_mini_profiler.js.erb', destination)
18
31
  end
19
32
  end
20
33
  end
@@ -0,0 +1,13 @@
1
+ import "@rails-mini-profiler/assets"
2
+
3
+ // Import styles
4
+ import "@rails-mini-profiler/assets/dist/rails-mini-profiler.css";
5
+
6
+ // Import images
7
+ //
8
+ // You may simplify this when using a glob loader (e.g glob-import-loader)
9
+ <%- Dir.chdir(RailsMiniProfiler::Engine.root.join('app/javascript/images')) do -%>
10
+ <%- Dir.glob('**/*').each do |file| -%>
11
+ import "@rails-mini-profiler/assets/dist/images/<%= file %>";
12
+ <%- end -%>
13
+ <%- end -%>
@@ -1,11 +1,14 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../../app/helpers/rails_mini_profiler/application_helper'
4
+
3
5
  module RailsMiniProfiler
4
6
  # Wraps functionality to render an interactive badge on top of HTML responses
5
7
  #
6
8
  # @api private
7
9
  class Badge
8
10
  include InlineSvg::ActionView::Helpers
11
+ include RailsMiniProfiler::ApplicationHelper
9
12
  include Engine.routes.url_helpers
10
13
 
11
14
  # @param request_context [RequestContext] The current request context
@@ -60,7 +63,7 @@ module RailsMiniProfiler
60
63
  template.result(binding)
61
64
  end
62
65
 
63
- # Transform the configuration position into CSS styles
66
+ # Transform the configuration position into CSS style positions
64
67
  #
65
68
  # @return String The badge position as CSS style
66
69
  def css_position
@@ -12,7 +12,11 @@ module RailsMiniProfiler
12
12
  end
13
13
 
14
14
  initializer 'rails_mini_profiler.assets.precompile', group: :all do |app|
15
- app.config.assets.precompile += %w[rails_mini_profiler.js rails_mini_profiler/application.css]
15
+ app.config.assets.precompile += %w[
16
+ rails_mini_profiler.js
17
+ rails_mini_profiler/application.css
18
+ vendor/assets/images
19
+ ]
16
20
  end
17
21
 
18
22
  config.generators do |g|
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsMiniProfiler
4
- VERSION = '0.2.1'
4
+ # This needs to be double quoted for release-please
5
+ #
6
+ # See https://github.com/googleapis/release-please/issues/1018
7
+ VERSION = "0.3.0" # rubocop:disable Style/StringLiterals
5
8
  end
@@ -0,0 +1,10 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>Iconly/Bulk/Bookmark</title>
4
+ <g id="Iconly/Bulk/Bookmark" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="Bookmark" transform="translate(4.000000, 2.000000)" fill="#000000" fill-rule="nonzero">
6
+ <path d="M7.99117971,16.6215262 L1.49944873,19.8641008 C1.00920819,20.1302192 0.397682727,19.9525481 0.123484013,19.4643313 C0.043404087,19.3108374 0.00105752372,19.1402321 -5.24025268e-14,18.9668404 L-5.24025268e-14,11.7088036 C-5.24025268e-14,12.4283887 0.405733186,12.872577 1.47298787,13.3700679 L7.99117971,16.6215262 Z" id="Bookmark-2" opacity="0.400000006"></path>
7
+ <path d="M11.0694598,0 C13.7772878,0 15.9735391,1.06605192 16,3.79336809 L16,3.79336809 L16,18.9668404 C15.998918,19.1374024 15.9565307,19.3051222 15.876516,19.4554476 C15.7479482,19.7006536 15.5259405,19.8826876 15.2614691,19.959752 C14.9969977,20.0368164 14.7127851,20.0022901 14.4740904,19.8641008 L14.4740904,19.8641008 L7.99117971,16.6215262 L1.47298787,13.3700679 C0.405733186,12.872577 8.17124146e-14,12.4283887 8.17124146e-14,11.7088036 L8.17124146e-14,11.7088036 L8.17124146e-14,3.79336809 C8.17124146e-14,1.06605192 2.19625138,0 4.8952591,0 L4.8952591,0 Z M11.7486218,6.04096089 L4.22491731,6.04096089 C3.79137074,6.04096089 3.4399118,6.39494927 3.4399118,6.83161607 C3.4399118,7.26828286 3.79137074,7.62227124 4.22491731,7.62227124 L4.22491731,7.62227124 L11.7486218,7.62227124 C12.1821684,7.62227124 12.5336273,7.26828286 12.5336273,6.83161607 C12.5336273,6.39494927 12.1821684,6.04096089 11.7486218,6.04096089 L11.7486218,6.04096089 Z"></path>
8
+ </g>
9
+ </g>
10
+ </svg>
@@ -0,0 +1,12 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <title>Iconly/Bulk/Chart</title>
4
+ <g id="Iconly/Bulk/Chart" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
5
+ <g id="Chart" transform="translate(2.000000, 2.000000)" fill="currentColor" fill-rule="nonzero">
6
+ <path d="M14.6755556,0 L5.33333333,0 C1.92888889,0 0,1.92888889 0,5.33333333 L0,14.6666667 C0,18.0711111 1.92888889,20 5.33333333,20 L14.6755556,20 C18.08,20 20,18.0711111 20,14.6666667 L20,5.33333333 C20,1.92888889 18.08,0 14.6755556,0" id="Fill-1" opacity="0.400000006"></path>
7
+ <path d="M5.36871111,7.36897778 C4.91537778,7.36897778 4.54204444,7.74231111 4.54204444,8.20453333 L4.54204444,15.0756444 C4.54204444,15.5289778 4.91537778,15.9023111 5.36871111,15.9023111 C5.83093333,15.9023111 6.20426667,15.5289778 6.20426667,15.0756444 L6.20426667,8.20453333 C6.20426667,7.74231111 5.83093333,7.36897778 5.36871111,7.36897778" id="Fill-4"></path>
8
+ <path d="M10.0353778,4.08897778 C9.58204444,4.08897778 9.20871111,4.46231111 9.20871111,4.92453333 L9.20871111,15.0756444 C9.20871111,15.5289778 9.58204444,15.9023111 10.0353778,15.9023111 C10.4976,15.9023111 10.8709333,15.5289778 10.8709333,15.0756444 L10.8709333,4.92453333 C10.8709333,4.46231111 10.4976,4.08897778 10.0353778,4.08897778" id="Fill-6"></path>
9
+ <path d="M14.6399111,10.9956444 C14.1776889,10.9956444 13.8043556,11.3689778 13.8043556,11.8312 L13.8043556,15.0756444 C13.8043556,15.5289778 14.1776889,15.9023111 14.6310222,15.9023111 C15.0932444,15.9023111 15.4665778,15.5289778 15.4665778,15.0756444 L15.4665778,11.8312 C15.4665778,11.3689778 15.0932444,10.9956444 14.6399111,10.9956444" id="Fill-8"></path>
10
+ </g>
11
+ </g>
12
+ </svg>
@@ -0,0 +1,9 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink">
3
+ <g id="Iconly/Bulk/Delete" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
4
+ <g id="Delete" transform="translate(3.000000, 2.000000)" fill="currentColor" fill-rule="nonzero">
5
+ <path d="M16.6432894,7.4884379 C16.6432894,7.55643552 16.1103307,14.2971996 15.8059218,17.1341003 C15.6153015,18.8750394 14.492976,19.9310024 12.8094878,19.9610014 C11.5159931,19.9900003 10.2497298,20 9.00389021,20 C7.68121893,20 6.38772423,19.9900003 5.13215907,19.9610014 C3.50507888,19.9220027 2.38178085,18.8450404 2.2008861,17.1341003 C1.88772423,14.2871999 1.36449103,7.55643552 1.35476551,7.4884379 C1.34503998,7.28344508 1.41117355,7.0884519 1.54538578,6.93045743 C1.67765291,6.78446254 1.86827318,6.69646562 2.06861898,6.69646562 L15.9391614,6.69646562 C16.1385347,6.69646562 16.3194294,6.78446254 16.4623946,6.93045743 C16.5956343,7.0884519 16.6627404,7.28344508 16.6432894,7.4884379" id="Fill-1" opacity="0.400000006"></path>
6
+ <path d="M18,3.97686081 C18,3.56587519 17.67614,3.24388646 17.2871191,3.24388646 L14.371407,3.24388646 C13.77815,3.24388646 13.2626972,2.82190123 13.1304301,2.22692206 L12.9670413,1.49794757 C12.7384915,0.616978406 11.9497515,-1.50990331e-14 11.0647288,-1.50990331e-14 L6.93624379,-1.50990331e-14 C6.04149557,-1.50990331e-14 5.26053598,0.616978406 5.0232332,1.54594589 L4.87054247,2.22792202 C4.73730279,2.82190123 4.22185001,3.24388646 3.62956559,3.24388646 L0.713853469,3.24388646 C0.323859952,3.24388646 0,3.56587519 0,3.97686081 L0,4.35684751 C0,4.75783348 0.323859952,5.08982186 0.713853469,5.08982186 L17.2871191,5.08982186 C17.67614,5.08982186 18,4.75783348 18,4.35684751 L18,3.97686081 Z" id="Fill-4"></path>
7
+ </g>
8
+ </g>
9
+ </svg>
@@ -0,0 +1,11 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg width="24px" height="24px" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg">
3
+ <g id="Iconly/Bulk/Graph" stroke="none" stroke-width="1" fill="none" fill-rule="evenodd">
4
+ <g id="Graph" transform="translate(2.000000, 2.000000)" fill="currentColor" fill-rule="nonzero">
5
+ <path d="M8.152754,3.55552761 C8.20368413,3.65919399 8.237323,3.77020981 8.2523868,3.88433813 L8.53082191,8.02425688 L8.53082191,8.02425688 L8.66903307,10.1050779 C8.67046167,10.3190591 8.7040335,10.5316649 8.76866587,10.7360386 C8.9355965,11.1325559 9.33716333,11.3845716 9.77405142,11.3669994 L16.4313342,10.9315476 C16.7196104,10.9267943 16.9980001,11.0346143 17.2052401,11.2312807 C17.3779401,11.3951693 17.4894372,11.6095651 17.524563,11.8401601 L17.5363525,11.9801866 C17.260866,15.7948982 14.4591587,18.9766559 10.6523561,19.797994 C6.84555351,20.6193322 2.94186389,18.8842999 1.06070995,15.534895 C0.518387516,14.5618191 0.179650312,13.4922526 0.0643819183,12.388978 C0.0162285779,12.0623771 -0.00497451535,11.7324952 0.000979225624,11.4025464 C-0.00496594783,7.31273376 2.90747021,3.77695779 6.98433295,2.92456686 C7.47500829,2.84816493 7.95602805,3.10792111 8.152754,3.55552761 Z"
6
+ id="Path"></path>
7
+ <path d="M10.8700123,0.000819186003 C15.42989,0.11682655 19.2623146,3.39578782 20,7.81229094 L19.9929553,7.84487576 L19.9929553,7.84487576 L19.9728274,7.89227188 L19.9756317,8.0223616 C19.9651826,8.19471218 19.8986437,8.36053991 19.7839681,8.49448471 C19.6645145,8.63401054 19.5013145,8.72903004 19.3215929,8.76590816 L19.2119951,8.78094898 L11.5312118,9.27860816 C11.2757261,9.30380455 11.0213466,9.22142251 10.8313499,9.05195453 C10.6730193,8.91073121 10.5717997,8.72009233 10.543203,8.5146766 L10.0276622,0.845062436 C10.0186901,0.819128783 10.0186901,0.791015148 10.0276622,0.765081496 C10.0347061,0.553672114 10.127765,0.353839855 10.2860482,0.210229821 C10.4443315,0.0666197874 10.6546487,-0.00880036929 10.8700123,0.000819186003 Z"
8
+ id="Path" opacity="0.400000006"></path>
9
+ </g>
10
+ </g>
11
+ </svg>