dev_panel 0.2.7 → 0.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -23,6 +23,39 @@ module DevPanel
23
23
  success: function(response) {
24
24
  $jq("#DevPanel").html(response);
25
25
  #{hide_container};
26
+ $jq("#consoleButton").click(function(e){
27
+ $("#console").toggle();
28
+ $jq("#console").css('top', e.pageY + 10 + 'px');
29
+ $jq("#console").css('left', e.pageX + 10 + 'px');
30
+ })
31
+
32
+ previous = null;
33
+
34
+ $jq("#consoleInput").keydown(function(e) {
35
+ if(event.keyCode == 38) {
36
+ $jq("#consoleInput").val(previous);
37
+ }
38
+
39
+ if(event.which == 13) {
40
+
41
+ if($jq("#consoleInput").val() == "") {
42
+ $jq("#consoleResults").append("><br>");
43
+ return "";
44
+ $jq("#consoleResults")[0].scrollTop = $jq("#consoleResults")[0].scrollHeight
45
+ }
46
+ $jq.ajax({
47
+ url: "/__DevPanel/console?query=" + $jq("#consoleInput").val(),
48
+ success: function(results) {
49
+ previous = $jq("#consoleInput").val()
50
+ $jq("#consoleResults").append(">" + results + "<br>");
51
+ $jq("#consoleInput").val("");
52
+ $jq("#consoleResults")[0].scrollTop = $jq("#consoleResults")[0].scrollHeight
53
+ }
54
+
55
+ })
56
+ }
57
+ })
58
+
26
59
  $jq("#viewTime").click(function(e) {
27
60
  $jq("#partialList").css('top', e.pageY + 10 + 'px');
28
61
  $jq("#partialList").css('left', e.pageX + 10 + 'px');
@@ -31,6 +64,7 @@ module DevPanel
31
64
  $jq("#devPanelHider").on("click", function(s) {
32
65
  $jq("#devPanelContainer").slideToggle(110);
33
66
  $jq("#partialList").hide();
67
+ $jq("#console").hide();
34
68
  $jq.get("/__DevPanel/set_options?visible=" + $jq("#devPanelContainer").is(":visible"));
35
69
  });
36
70
  $jq("#devPanelWindow").draggable({stop: function() {
@@ -11,6 +11,10 @@ module DevPanel
11
11
  params = Rack::Utils.parse_query(env['QUERY_STRING'], "&")
12
12
  Stats.set_by_params(params)
13
13
  [200, { "Content-Type" => "text/plain; charset=utf-8" }, ["#{Stats.show?} #{Stats.left} #{Stats.top}"]]
14
+ elsif env["REQUEST_URI"] =~ /__DevPanel\/console/
15
+ params = Rack::Utils.parse_query(env['QUERY_STRING'], "&")
16
+ query = params["query"]
17
+ [200, { "Content-Type" => "text/plain; charset=utf-8" }, ["#{CGI::escapeHTML(eval(query).to_s)}"]]
14
18
  else
15
19
  @app.call(env)
16
20
  end
@@ -117,6 +121,37 @@ module DevPanel
117
121
  z-index: 500000001;
118
122
  }
119
123
 
124
+ #console {
125
+ position: absolute;
126
+ top: 0px;
127
+ left: 0px;
128
+ background: #F1F1F1;
129
+ border: 2px solid #000;
130
+ background-color: #fff;
131
+ box-shadow: inset 3px 3px 3px rgba(0, 0, 0, 0.1), inset 0 0 0 1px rgba(0, 0, 0, 0.1);
132
+ font-family: arial;
133
+ font-size: 10px;
134
+ overflow: hidden;
135
+ padding: 6px 10px;
136
+ border-top-left-radius: 2px;
137
+ border-top-right-radius: 2px;
138
+ display: none;
139
+ z-index: 500000001;
140
+ width: 600px;
141
+ }
142
+
143
+ #consoleResults {
144
+ width: 97%;
145
+ height: 250px;
146
+ font-size: 13px;
147
+ overflow-x: scroll;
148
+ }
149
+
150
+ #consoleInput {
151
+ width: 97%;
152
+ height: 20px;
153
+ }
154
+
120
155
  .green { background: #21D61A !important}
121
156
  .yellow { background: #BEBE00 !important }
122
157
  .orange { background: #F0A811 !important }
@@ -129,6 +164,11 @@ module DevPanel
129
164
  def html_containers
130
165
  <<-html_code
131
166
  <div id='partialList'>#{partial_list}</div>
167
+ <div id='console'>
168
+ <div id="consoleResults">></div>
169
+ <input id="consoleInput" type="text" placeholder="Type Command">
170
+
171
+ </div>
132
172
  <div id="devPanelWindow" style="top: #{Stats.top.to_s}px; left: #{Stats.left.to_s}px;" >
133
173
  <div id="devPanelHider" class="#{heat_color}"><a class="hider-color" href="#">#{stats(:controller)}##{stats(:action)}</a> / <span class="hider-color" style="font-size: 10px">#{Stats.data[:action_controller].duration.round(0).to_s}ms</span></div>
134
174
  <div id="devPanelContainer">
@@ -145,8 +185,7 @@ module DevPanel
145
185
  "orange"
146
186
  else
147
187
  "red"
148
- end
149
-
188
+ end
150
189
  end
151
190
 
152
191
  def stats(symbol)
@@ -155,16 +194,17 @@ module DevPanel
155
194
 
156
195
  def html_table
157
196
  table_rows = rowify([
158
- first_td("Total:") + td("#{Stats.total_duration.to_s}ms"),
159
- first_td("Controller:") + td("#{Stats.controller_duration.to_s}ms (#{Stats.controller_duration_percent}%)"),
160
- first_td("View:") + td("#{Stats.view_duration.to_s}ms (#{Stats.view_duration_percent}%)"),
161
- first_td("Partials:") + td(partial_count),
162
- first_td("Response:") + td(stats(:status)),
163
- first_td("Controller:") + td(stats(:controller)),
164
- first_td("Action:") + td(stats(:action)),
165
- first_td("Method:") + td(stats(:method)),
166
- first_td("Params:") + td(stats(:params)),
167
- first_td("Log:") + td(Stats.data[:log])
197
+ first_td("Tools:") + td("<a href='#' id='consoleButton'>Console</a>"),
198
+ first_td("Total:") + td("#{Stats.total_duration.to_s}ms"),
199
+ first_td("Controller:") + td("#{Stats.controller_duration.to_s}ms (#{Stats.controller_duration_percent}%)"),
200
+ first_td("View:") + td("#{Stats.view_duration.to_s}ms (#{Stats.view_duration_percent}%)"),
201
+ first_td("Partials:") + td(partial_count),
202
+ first_td("Response:") + td(stats(:status)),
203
+ first_td("Controller:") + td(stats(:controller)),
204
+ first_td("Action:") + td(stats(:action)),
205
+ first_td("Method:") + td(stats(:method)),
206
+ first_td("Params:") + td(stats(:params)),
207
+ first_td("Log:") + td(Stats.data[:log])
168
208
  ])
169
209
 
170
210
  "<table style='margin: auto; table-layout: fixed'>#{table_rows}</table></div></div>"
@@ -7,7 +7,6 @@ module DevPanel
7
7
 
8
8
  ActiveSupport::Notifications.subscribe(//) do |*args|
9
9
  event = ActiveSupport::Notifications::Event.new(*args)
10
- puts event.inspect
11
10
  end
12
11
 
13
12
  ActiveSupport::Notifications.subscribe('start_processing.action_controller') do |*args|
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dev_panel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: '0.3'
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors: