log_magic 0.0.7 → 0.0.8

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 3b7c3e7d672405276b37d2d2687204c96f97c7b7
4
- data.tar.gz: 0828e5259dad51ba6152abad19fd0a760f387e87
3
+ metadata.gz: ffd3dcd36465ea32aadfa639ac2960c801c416fd
4
+ data.tar.gz: c8fed639991e0d91b4e56ebb1880942dc2cedb12
5
5
  SHA512:
6
- metadata.gz: b049a8b5e5f7ca84de3465bd06981476a2aa9cd76286f2a49ed444266a6590911fcbd6bfa518260a9dabf59a387903837211342a14aa80aca009f6f5ac5d9ff2
7
- data.tar.gz: 449efca4319c2ff636f6dd2ec09faaaaffdf6978da49d999bb70e797a8570a733144ba938db011c340800b0897401d8b5468f619f3eff4fafbefaa731f41bea8
6
+ metadata.gz: 5f373d8933c051d153128ef6cd1249ba818d5539f1b0f741c251139eae5ea88038f6454caedf125679c79df1a8531dbc776870d8596bf4bf075c9296c87aaf5e
7
+ data.tar.gz: 31a927edee1cdd9bc631c04ce2a006400ecd73a9cd46907a5a622189ffe0714f787da5f8bd0fa0039d8e15bb275ecd8cdad266edd1a06fca31593da889228edf
data/lib/log_magic.rb CHANGED
@@ -53,6 +53,8 @@ require 'log_magic/log_listener'
53
53
  require 'log_magic/refiners/searchkick_refiner'
54
54
  require 'log_magic/printers/searchkick_printer'
55
55
 
56
+ require 'log_magic/renderers/hover_renderer'
57
+
56
58
  require 'log_magic/explainers/searchkick_explainer'
57
59
 
58
60
  Dir.glob("lib/log_magic/explainers/**/*.rb").each do |explainer|
@@ -1,5 +1,32 @@
1
- %h2 Query
2
- %p
3
- = explained_query.explanation
1
+ %head
2
+ %script{ src:"https://code.jquery.com/jquery-3.1.1.min.js", integrity:"sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=", crossorigin:"anonymous" }
4
3
 
5
- = settings_explainer_section.explanation
4
+ :javascript
5
+ $(document).ready(function() {
6
+ $('span.hover-key').mouseover(function(e) {
7
+ $(this).find('.hover-value').css('top', e.pageY);
8
+ $(this).find('.hover-value').css('left', e.pageX);
9
+ $(this).find('.hover-value').show();
10
+ });
11
+
12
+ $('span.hover-key').mouseout(function(e) {
13
+ $(this).find('span.hover-value').hide();
14
+ });
15
+ });
16
+
17
+ :css
18
+ .hover-value {
19
+ display: none;
20
+ position: absolute;
21
+ top: 20px;
22
+ left: 20px;
23
+ background-color: lightyellow;
24
+ color: purple;
25
+ padding: 20px;
26
+ border: purple 1px solid;
27
+ }
28
+
29
+ %body
30
+ %h2 Query
31
+ %p
32
+ = explained_query.explanation
@@ -0,0 +1,26 @@
1
+ require 'hash_deep_search'
2
+
3
+ class LogMagic::SearchkickExplainer::CustomAnalyzerHover
4
+ def initialize(query_explainer, index_settings)
5
+ @query_explainer = query_explainer
6
+ @index_settings = JSON.parse(index_settings)
7
+ end
8
+
9
+ def enriche
10
+ @query_explainer.query_json.clone.scan(custom_analyzer_matcher) do |match|
11
+ inject_hover(match[0])
12
+ end
13
+ end
14
+
15
+ def inject_hover(match)
16
+ @query_explainer.query_json.sub!(/[^w]#{match}[^w]/, hover_template(match).rendered_template)
17
+ end
18
+
19
+ def hover_template(match)
20
+ ::LogMagic::HoverRenderer.new(match, HashDeepSearch.new(@index_settings).search(match))
21
+ end
22
+
23
+ def custom_analyzer_matcher
24
+ /[^w]analyzer[^w]\n[^<]*<\/a>\n:&nbsp;"([^"]*)"/
25
+ end
26
+ end
@@ -3,12 +3,14 @@ class LogMagic::SearchkickExplainer::SettingsExplainerSection
3
3
  include ::LogMagic::JSONUtils
4
4
  attr_reader :elasticsearch_url
5
5
 
6
- def initialize(elasticsearch_url)
6
+ def initialize(elasticsearch_url, query_explainer)
7
+ @query_explainer = query_explainer
7
8
  @elasticsearch_url = elasticsearch_url
9
+ enriche_query_json
8
10
  end
9
11
 
10
12
  def index_settings
11
- `curl #{elasticsearch_url}/_settings`
13
+ @index_settings ||= `curl #{elasticsearch_url}/_settings`
12
14
  end
13
15
 
14
16
  def explanation
@@ -18,4 +20,9 @@ class LogMagic::SearchkickExplainer::SettingsExplainerSection
18
20
  def template_name
19
21
  'settings.haml'
20
22
  end
23
+
24
+ def enriche_query_json
25
+ explainer = ::LogMagic::SearchkickExplainer::CustomAnalyzerHover.new(@query_explainer, index_settings)
26
+ explainer.enriche
27
+ end
21
28
  end
@@ -19,11 +19,13 @@ class LogMagic::SearchkickExplainer
19
19
  end
20
20
 
21
21
  def settings_explainer_section
22
- SettingsExplainerSection.new(elasticsearch_url)
22
+ SettingsExplainerSection.new(elasticsearch_url, @query_explainer)
23
23
  end
24
24
 
25
25
  def explained_query
26
- QueryExplainerSection.new(query_json)
26
+ @query_explainer = QueryExplainerSection.new(query_json)
27
+ settings_explainer_section.enriche_query_json
28
+ @query_explainer
27
29
  end
28
30
 
29
31
  def start
@@ -0,0 +1,17 @@
1
+ class LogMagic::HoverRenderer
2
+ attr_reader :key, :value
3
+ include ::LogMagic::TemplatingUtils
4
+
5
+ def initialize(key, value)
6
+ @key = key
7
+ @value = value
8
+ end
9
+
10
+ def template_name
11
+ 'hovering.haml'
12
+ end
13
+
14
+ def template_dir
15
+ 'util_templates'
16
+ end
17
+ end
@@ -0,0 +1,3 @@
1
+ %span.hover-key
2
+ '#{key}'
3
+ %span.hover-value= value
@@ -10,7 +10,7 @@ module LogMagic::TemplatingUtils
10
10
 
11
11
  def template_path
12
12
  File.expand_path(
13
- File.join(__FILE__, '..', '..', 'explainer_templates', template_name)
13
+ File.join(__FILE__, '..', '..', template_dir, template_name)
14
14
  )
15
15
  end
16
16
 
@@ -25,4 +25,8 @@ module LogMagic::TemplatingUtils
25
25
  def template_name
26
26
  "#{term_name}.haml"
27
27
  end
28
+
29
+ def template_dir
30
+ 'explainer_templates'
31
+ end
28
32
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: log_magic
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Manuel Korfmann
@@ -66,6 +66,20 @@ dependencies:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: hash_deep_search
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: byebug
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -118,6 +132,7 @@ files:
118
132
  - lib/log_magic/explainers/explainer_sections/_all_explainer.rb
119
133
  - lib/log_magic/explainers/explainer_sections/analyzer_explainer.rb
120
134
  - lib/log_magic/explainers/explainer_sections/boost_explainer.rb
135
+ - lib/log_magic/explainers/explainer_sections/custom_analyzer_hover.rb
121
136
  - lib/log_magic/explainers/explainer_sections/dis_max_explainer.rb
122
137
  - lib/log_magic/explainers/explainer_sections/fuzzy_transpositions_explainer.rb
123
138
  - lib/log_magic/explainers/explainer_sections/match_explainer.rb
@@ -129,6 +144,8 @@ files:
129
144
  - lib/log_magic/persistance_layer.rb
130
145
  - lib/log_magic/printers/searchkick_printer.rb
131
146
  - lib/log_magic/refiners/searchkick_refiner.rb
147
+ - lib/log_magic/renderers/hover_renderer.rb
148
+ - lib/log_magic/util_templates/hovering.haml
132
149
  - lib/log_magic/utils/json_utils.rb
133
150
  - lib/log_magic/utils/templating_utils.rb
134
151
  homepage: https://github.com/ManuelArno/log_magic