glib-web 0.5.43 → 0.5.44

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 (171) hide show
  1. checksums.yaml +4 -4
  2. data/app/controllers/concerns/glib/analytics/funnel.rb +61 -61
  3. data/app/controllers/concerns/glib/auth/policy.rb +148 -148
  4. data/app/controllers/concerns/glib/json/dynamic_text.rb +126 -126
  5. data/app/controllers/concerns/glib/json/libs.rb +144 -144
  6. data/app/controllers/concerns/glib/json/new_dynamic_text.rb +122 -122
  7. data/app/controllers/concerns/glib/json/transformation.rb +11 -11
  8. data/app/controllers/concerns/glib/json/traversal.rb +87 -87
  9. data/app/controllers/concerns/glib/json/ui.rb +88 -88
  10. data/app/controllers/concerns/glib/json/validation.rb +13 -13
  11. data/app/controllers/glib/home_controller.rb +16 -16
  12. data/app/helpers/glib/app_feature_support_helper.rb +16 -16
  13. data/app/helpers/glib/dynamic_images_helper.rb +55 -55
  14. data/app/helpers/glib/dynamic_texts_helper.rb +42 -42
  15. data/app/helpers/glib/enum_helper.rb +8 -8
  16. data/app/helpers/glib/forms_helper.rb +15 -15
  17. data/app/helpers/glib/json_ui/abstract_builder.rb +294 -294
  18. data/app/helpers/glib/json_ui/action_builder.rb +131 -131
  19. data/app/helpers/glib/json_ui/action_builder/dialogs.rb +58 -58
  20. data/app/helpers/glib/json_ui/action_builder/http.rb +39 -39
  21. data/app/helpers/glib/json_ui/action_builder/sheets.rb +15 -15
  22. data/app/helpers/glib/json_ui/action_builder/snackbars.rb +41 -41
  23. data/app/helpers/glib/json_ui/action_builder/windows.rb +26 -26
  24. data/app/helpers/glib/json_ui/analytics_helper.rb +17 -17
  25. data/app/helpers/glib/json_ui/dynamic_field_builders.rb +25 -25
  26. data/app/helpers/glib/json_ui/generic_builders.rb +28 -28
  27. data/app/helpers/glib/json_ui/list_builders.rb +104 -104
  28. data/app/helpers/glib/json_ui/menu_builder.rb +94 -94
  29. data/app/helpers/glib/json_ui/page_helper.rb +213 -213
  30. data/app/helpers/glib/json_ui/response_helper.rb +25 -25
  31. data/app/helpers/glib/json_ui/split_builders.rb +32 -32
  32. data/app/helpers/glib/json_ui/styling_helper.rb +47 -47
  33. data/app/helpers/glib/json_ui/table_builders.rb +74 -74
  34. data/app/helpers/glib/json_ui/view_builder.rb +208 -208
  35. data/app/helpers/glib/json_ui/view_builder/banners.rb +24 -24
  36. data/app/helpers/glib/json_ui/view_builder/charts.rb +33 -33
  37. data/app/helpers/glib/json_ui/view_builder/fields.rb +235 -235
  38. data/app/helpers/glib/json_ui/view_builder/panels.rb +250 -250
  39. data/app/helpers/glib/urls_helper.rb +7 -7
  40. data/app/models/glib/active_storage/attachment.rb +9 -9
  41. data/app/models/glib/active_storage/blob.rb +9 -9
  42. data/app/models/glib/application_record.rb +18 -18
  43. data/app/models/glib/dynamic_text_record.rb +9 -9
  44. data/app/models/glib/text.rb +95 -95
  45. data/app/policies/glib/application_policy.rb +161 -161
  46. data/app/validators/email_typo_validator.rb +38 -38
  47. data/app/validators/email_validator.rb +7 -7
  48. data/app/validators/url_validator.rb +20 -20
  49. data/app/views/json_ui/garage/_nav_menu.json.jbuilder +70 -70
  50. data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +104 -104
  51. data/app/views/json_ui/garage/actions/_http.json.jbuilder +24 -24
  52. data/app/views/json_ui/garage/actions/_reload.json.jbuilder +17 -17
  53. data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +18 -18
  54. data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +33 -33
  55. data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +18 -18
  56. data/app/views/json_ui/garage/actions/_windows.json.jbuilder +24 -24
  57. data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +6 -6
  58. data/app/views/json_ui/garage/actions/index.json.jbuilder +22 -22
  59. data/app/views/json_ui/garage/forms/_alert_post_data.json.jbuilder +6 -6
  60. data/app/views/json_ui/garage/forms/basic.json.jbuilder +21 -21
  61. data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +8 -8
  62. data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +43 -43
  63. data/app/views/json_ui/garage/forms/conditional_value.json.jbuilder +36 -36
  64. data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +56 -56
  65. data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +25 -25
  66. data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +38 -38
  67. data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +65 -65
  68. data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +31 -31
  69. data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +3 -3
  70. data/app/views/json_ui/garage/forms/get_request.json.jbuilder +28 -28
  71. data/app/views/json_ui/garage/forms/index.json.jbuilder +110 -110
  72. data/app/views/json_ui/garage/forms/new_rich_text.json.jbuilder +40 -40
  73. data/app/views/json_ui/garage/forms/pickers.json.jbuilder +48 -48
  74. data/app/views/json_ui/garage/forms/rich_text.json.jbuilder +40 -40
  75. data/app/views/json_ui/garage/forms/selects.json.jbuilder +70 -70
  76. data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +105 -105
  77. data/app/views/json_ui/garage/forms/styled_boxes.json.jbuilder +36 -36
  78. data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +17 -17
  79. data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +24 -24
  80. data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +63 -63
  81. data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +25 -25
  82. data/app/views/json_ui/garage/forms/text_validation.json.jbuilder +22 -22
  83. data/app/views/json_ui/garage/home/blank.json.jbuilder +11 -11
  84. data/app/views/json_ui/garage/home/index.json.jbuilder +32 -32
  85. data/app/views/json_ui/garage/home/slow.json.jbuilder +11 -11
  86. data/app/views/json_ui/garage/lists/_autoload_section.json.jbuilder +28 -28
  87. data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +32 -32
  88. data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +35 -35
  89. data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +93 -93
  90. data/app/views/json_ui/garage/lists/edit_actions.json.jbuilder +54 -54
  91. data/app/views/json_ui/garage/lists/fab.json.jbuilder +12 -12
  92. data/app/views/json_ui/garage/lists/index.json.jbuilder +32 -32
  93. data/app/views/json_ui/garage/lists/reordering.json.jbuilder +24 -24
  94. data/app/views/json_ui/garage/lists/templating.json.jbuilder +35 -35
  95. data/app/views/json_ui/garage/notifications/android_post.json.jbuilder +48 -48
  96. data/app/views/json_ui/garage/notifications/index.json.jbuilder +32 -32
  97. data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +60 -60
  98. data/app/views/json_ui/garage/pages/flat_centered.json.jbuilder +29 -29
  99. data/app/views/json_ui/garage/pages/full_width.json.jbuilder +29 -29
  100. data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +16 -16
  101. data/app/views/json_ui/garage/pages/index.json.jbuilder +58 -58
  102. data/app/views/json_ui/garage/pages/layout.json.jbuilder +18 -18
  103. data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +10 -10
  104. data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +21 -21
  105. data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +40 -40
  106. data/app/views/json_ui/garage/pages/tab_bar.json.jbuilder +27 -27
  107. data/app/views/json_ui/garage/panels/_styled.json.jbuilder +78 -78
  108. data/app/views/json_ui/garage/panels/card.json.jbuilder +4 -4
  109. data/app/views/json_ui/garage/panels/carousel.json.jbuilder +37 -37
  110. data/app/views/json_ui/garage/panels/custom.json.jbuilder +17 -17
  111. data/app/views/json_ui/garage/panels/flow.json.jbuilder +49 -49
  112. data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +91 -91
  113. data/app/views/json_ui/garage/panels/index.json.jbuilder +132 -132
  114. data/app/views/json_ui/garage/panels/outlined.json.jbuilder +4 -4
  115. data/app/views/json_ui/garage/panels/responsive.json.jbuilder +98 -98
  116. data/app/views/json_ui/garage/panels/split.json.jbuilder +182 -182
  117. data/app/views/json_ui/garage/panels/vertical.json.jbuilder +50 -50
  118. data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +13 -13
  119. data/app/views/json_ui/garage/services/image.json.jbuilder +47 -47
  120. data/app/views/json_ui/garage/services/index.json.jbuilder +17 -17
  121. data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +16 -16
  122. data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +43 -43
  123. data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +50 -50
  124. data/app/views/json_ui/garage/tables/export_import.json.jbuilder +29 -29
  125. data/app/views/json_ui/garage/tables/horizontal_scroll.json.jbuilder +26 -26
  126. data/app/views/json_ui/garage/tables/index.json.jbuilder +25 -25
  127. data/app/views/json_ui/garage/tables/layout.json.jbuilder +36 -36
  128. data/app/views/json_ui/garage/views/_chart_data.json.jbuilder +17 -17
  129. data/app/views/json_ui/garage/views/banners.json.jbuilder +63 -63
  130. data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +30 -30
  131. data/app/views/json_ui/garage/views/charts.json.jbuilder +115 -115
  132. data/app/views/json_ui/garage/views/icons.json.jbuilder +1450 -1450
  133. data/app/views/json_ui/garage/views/images.json.jbuilder +89 -89
  134. data/app/views/json_ui/garage/views/index.json.jbuilder +54 -54
  135. data/app/views/json_ui/garage/views/links.json.jbuilder +70 -70
  136. data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +41 -41
  137. data/app/views/json_ui/garage/views/map_data.json.jbuilder +51 -51
  138. data/app/views/json_ui/garage/views/maps.json.jbuilder +31 -31
  139. data/app/views/json_ui/garage/views/markdowns.json.jbuilder +41 -41
  140. data/app/views/json_ui/garage/views/misc.json.jbuilder +34 -34
  141. data/app/views/json_ui/garage/views/texts.json.jbuilder +41 -41
  142. data/app/views/layouts/json_ui/renderer.html.erb +35 -35
  143. data/config/routes.rb +7 -7
  144. data/lib/generators/glib/install_generator.rb +24 -24
  145. data/lib/generators/templates/20191017062519_create_texts.rb +12 -12
  146. data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +7 -7
  147. data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +7 -7
  148. data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +27 -27
  149. data/lib/generators/templates/database.yml +107 -107
  150. data/lib/generators/templates/dynamic_text.rb +2 -2
  151. data/lib/glib-web.rb +9 -9
  152. data/lib/glib/crypt/utils.rb +26 -26
  153. data/lib/glib/dynamic_text/config.rb +21 -21
  154. data/lib/glib/engine.rb +7 -7
  155. data/lib/glib/json_crawler.rb +11 -11
  156. data/lib/glib/json_crawler/action_crawler.rb +23 -23
  157. data/lib/glib/json_crawler/action_crawlers/action_http.rb +11 -11
  158. data/lib/glib/json_crawler/action_crawlers/forms_submit.rb +48 -48
  159. data/lib/glib/json_crawler/action_crawlers/menu.rb +12 -12
  160. data/lib/glib/json_crawler/action_crawlers/nav_initiate.rb +19 -19
  161. data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +13 -13
  162. data/lib/glib/json_crawler/action_crawlers/windows_open.rb +33 -33
  163. data/lib/glib/json_crawler/coverage.rb +20 -20
  164. data/lib/glib/json_crawler/http.rb +120 -120
  165. data/lib/glib/json_crawler/router.rb +96 -96
  166. data/lib/glib/mailer_tester.rb +36 -36
  167. data/lib/glib/test_helpers.rb +40 -40
  168. data/lib/glib/value.rb +7 -7
  169. data/lib/glib/version.rb +5 -5
  170. data/lib/tasks/db.rake +95 -95
  171. metadata +2 -3
@@ -1,21 +1,21 @@
1
- module Glib
2
- module DynamicText
3
- class Config
4
- @@redis = nil
5
- @@database_url = nil
6
-
7
- def self.redis
8
- if @@redis.nil?
9
- redis_url = ENV.fetch('DT_REDIS_URL', 'redis://localhost:6379')
10
- # Allow application to specify their own $dt_redis
11
- @@redis = $dt_redis || Redis.new(url: redis_url)
12
- end
13
- @@redis
14
- end
15
-
16
- def self.database_url
17
- @@database_url ||= ENV['DT_DATABASE_URL']
18
- end
19
- end
20
- end
21
- end
1
+ module Glib
2
+ module DynamicText
3
+ class Config
4
+ @@redis = nil
5
+ @@database_url = nil
6
+
7
+ def self.redis
8
+ if @@redis.nil?
9
+ redis_url = ENV.fetch('DT_REDIS_URL', 'redis://localhost:6379')
10
+ # Allow application to specify their own $dt_redis
11
+ @@redis = $dt_redis || Redis.new(url: redis_url)
12
+ end
13
+ @@redis
14
+ end
15
+
16
+ def self.database_url
17
+ @@database_url ||= ENV['DT_DATABASE_URL']
18
+ end
19
+ end
20
+ end
21
+ end
data/lib/glib/engine.rb CHANGED
@@ -1,7 +1,7 @@
1
- module Glib
2
- module Web
3
- class Engine < ::Rails::Engine
4
- # isolate_namespace Glib::Web
5
- end
6
- end
7
- end
1
+ module Glib
2
+ module Web
3
+ class Engine < ::Rails::Engine
4
+ # isolate_namespace Glib::Web
5
+ end
6
+ end
7
+ end
@@ -1,11 +1,11 @@
1
- require_relative './json_crawler/http'
2
- require_relative './json_crawler/router'
3
- require_relative './json_crawler/action_crawler'
4
- require_relative './json_crawler/coverage'
5
-
6
- require_relative './json_crawler/action_crawlers/nav_initiate'
7
- require_relative './json_crawler/action_crawlers/windows_open'
8
- require_relative './json_crawler/action_crawlers/action_http'
9
- require_relative './json_crawler/action_crawlers/forms_submit'
10
- require_relative './json_crawler/action_crawlers/menu'
11
- require_relative './json_crawler/action_crawlers/run_multiple'
1
+ require_relative './json_crawler/http'
2
+ require_relative './json_crawler/router'
3
+ require_relative './json_crawler/action_crawler'
4
+ require_relative './json_crawler/coverage'
5
+
6
+ require_relative './json_crawler/action_crawlers/nav_initiate'
7
+ require_relative './json_crawler/action_crawlers/windows_open'
8
+ require_relative './json_crawler/action_crawlers/action_http'
9
+ require_relative './json_crawler/action_crawlers/forms_submit'
10
+ require_relative './json_crawler/action_crawlers/menu'
11
+ require_relative './json_crawler/action_crawlers/run_multiple'
@@ -1,23 +1,23 @@
1
- module Glib
2
- module JsonCrawler
3
- class ActionCrawler
4
- def initialize(http)
5
- @http = http
6
- end
7
-
8
- def click(object)
9
- @http.router.step(@http, object)
10
- end
11
-
12
- def crawl(views)
13
- @http.router.crawl_multiple views, ->(view) do
14
- click view
15
- end
16
- end
17
-
18
- def perform(action)
19
- @http.router.process_action(@http, action)
20
- end
21
- end
22
- end
23
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class ActionCrawler
4
+ def initialize(http)
5
+ @http = http
6
+ end
7
+
8
+ def click(object)
9
+ @http.router.step(@http, object)
10
+ end
11
+
12
+ def crawl(views)
13
+ @http.router.crawl_multiple views, ->(view) do
14
+ click view
15
+ end
16
+ end
17
+
18
+ def perform(action)
19
+ @http.router.process_action(@http, action)
20
+ end
21
+ end
22
+ end
23
+ end
@@ -1,11 +1,11 @@
1
- module Glib
2
- module JsonCrawler
3
- class ActionHttp < ActionCrawler
4
- def initialize(method, http, args, controller)
5
- @http = http
6
- json = @http.send(method, args['url'], controller, args.fetch('formData', {}))
7
- perform(json['onResponse'])
8
- end
9
- end
10
- end
11
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class ActionHttp < ActionCrawler
4
+ def initialize(method, http, args, controller)
5
+ @http = http
6
+ json = @http.send(method, args['url'], controller, args.fetch('formData', {}))
7
+ perform(json['onResponse'])
8
+ end
9
+ end
10
+ end
11
+ end
@@ -1,48 +1,48 @@
1
- module Glib
2
- module JsonCrawler
3
- class FormsSubmit < ActionCrawler
4
- def initialize(http, form)
5
- super(http)
6
-
7
- raise 'Submit action needs to be inside a form' unless form
8
-
9
- @http = http
10
-
11
- method = form['method']
12
- action = "forms/#{method}"
13
-
14
- case method
15
- when 'patch', 'put'
16
- submit_update(form, action)
17
- else
18
- url = form['url']
19
- http.router.log action, url
20
- end
21
- end
22
-
23
- def submit_update(view, action)
24
- url = view['url']
25
- fields = []
26
- params = {}
27
- @http.router.crawl_multiple view['childViews'], ->(child) do
28
- name = child['view']
29
- if name.start_with?('fields/')
30
- fields << child
31
-
32
- include_params = case name
33
- when 'fields/check', 'fields/check-v1'
34
- child['checkValue'] == child['value']
35
- else
36
- true
37
- end
38
-
39
- params[child['name']] = child['value'] if include_params
40
- end
41
- end
42
-
43
- json = @http.patch url, action, params
44
- perform(json['onResponse'])
45
- end
46
- end
47
- end
48
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class FormsSubmit < ActionCrawler
4
+ def initialize(http, form)
5
+ super(http)
6
+
7
+ raise 'Submit action needs to be inside a form' unless form
8
+
9
+ @http = http
10
+
11
+ method = form['method']
12
+ action = "forms/#{method}"
13
+
14
+ case method
15
+ when 'patch', 'put'
16
+ submit_update(form, action)
17
+ else
18
+ url = form['url']
19
+ http.router.log action, url
20
+ end
21
+ end
22
+
23
+ def submit_update(view, action)
24
+ url = view['url']
25
+ fields = []
26
+ params = {}
27
+ @http.router.crawl_multiple view['childViews'], ->(child) do
28
+ name = child['view']
29
+ if name.start_with?('fields/')
30
+ fields << child
31
+
32
+ include_params = case name
33
+ when 'fields/check', 'fields/check-v1'
34
+ child['checkValue'] == child['value']
35
+ else
36
+ true
37
+ end
38
+
39
+ params[child['name']] = child['value'] if include_params
40
+ end
41
+ end
42
+
43
+ json = @http.patch url, action, params
44
+ perform(json['onResponse'])
45
+ end
46
+ end
47
+ end
48
+ end
@@ -1,12 +1,12 @@
1
- module Glib
2
- module JsonCrawler
3
- class Menu < ActionCrawler
4
- def initialize(http, args, action)
5
- super(http)
6
-
7
- @http.router.log action, nil
8
- crawl args['buttons']
9
- end
10
- end
11
- end
12
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class Menu < ActionCrawler
4
+ def initialize(http, args, action)
5
+ super(http)
6
+
7
+ @http.router.log action, nil
8
+ crawl args['buttons']
9
+ end
10
+ end
11
+ end
12
+ end
@@ -1,19 +1,19 @@
1
- module Glib
2
- module JsonCrawler
3
- class NavInitiate < ActionCrawler
4
- def initialize(http, args, action)
5
- super(http)
6
-
7
- @http = http
8
- if (json = (@http.get args['url'], action, args.except('url'))) && (left_drawer = json['leftDrawer'])
9
- crawl left_drawer['header']&.[]('childViews')
10
- crawl left_drawer['rows']
11
- end
12
-
13
- if (on_load = (args.fetch('onLoad', nil)))
14
- perform(on_load)
15
- end
16
- end
17
- end
18
- end
19
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class NavInitiate < ActionCrawler
4
+ def initialize(http, args, action)
5
+ super(http)
6
+
7
+ @http = http
8
+ if (json = (@http.get args['url'], action, args.except('url'))) && (left_drawer = json['leftDrawer'])
9
+ crawl left_drawer['header']&.[]('childViews')
10
+ crawl left_drawer['rows']
11
+ end
12
+
13
+ if (on_load = (args.fetch('onLoad', nil)))
14
+ perform(on_load)
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -1,13 +1,13 @@
1
- module Glib
2
- module JsonCrawler
3
- class RunMultiple < ActionCrawler
4
- def initialize(http, args, action)
5
- @http = http
6
-
7
- args['childActions']&.each do |button|
8
- perform(button)
9
- end
10
- end
11
- end
12
- end
13
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class RunMultiple < ActionCrawler
4
+ def initialize(http, args, action)
5
+ @http = http
6
+
7
+ args['childActions']&.each do |button|
8
+ perform(button)
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,33 +1,33 @@
1
- module Glib
2
- module JsonCrawler
3
- class WindowsOpen < ActionCrawler
4
- def initialize(http, args, action)
5
- @http = http
6
-
7
- if (url = args['url'])
8
- json = @http.get(url, action, args.except('url'))
9
-
10
- unless json.nil?
11
- crawl json['header']&.[]('childViews')
12
- crawl json['body']&.[]('childViews')
13
- crawl json['footer']&.[]('childViews')
14
-
15
- json['rightButtons']&.each do |button|
16
- if button['buttons'].present?
17
- button['buttons'].each do |inner_button|
18
- click inner_button
19
- end
20
- else
21
- click button
22
- end
23
- end
24
-
25
- if (on_load = (args.fetch('onLoad', nil)))
26
- perform(on_load)
27
- end
28
- end
29
- end
30
- end
31
- end
32
- end
33
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class WindowsOpen < ActionCrawler
4
+ def initialize(http, args, action)
5
+ @http = http
6
+
7
+ if (url = args['url'])
8
+ json = @http.get(url, action, args.except('url'))
9
+
10
+ unless json.nil?
11
+ crawl json['header']&.[]('childViews')
12
+ crawl json['body']&.[]('childViews')
13
+ crawl json['footer']&.[]('childViews')
14
+
15
+ json['rightButtons']&.each do |button|
16
+ if button['buttons'].present?
17
+ button['buttons'].each do |inner_button|
18
+ click inner_button
19
+ end
20
+ else
21
+ click button
22
+ end
23
+ end
24
+
25
+ if (on_load = (args.fetch('onLoad', nil)))
26
+ perform(on_load)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
@@ -1,20 +1,20 @@
1
- module Glib
2
- module JsonCrawler
3
- class Coverage
4
- @@files = []
5
- @@coverage_files = Set.new
6
-
7
- def self.files
8
- @@files
9
- end
10
-
11
- def self.files=(files)
12
- @@files = files
13
- end
14
-
15
- def self.coverage_files
16
- @@coverage_files
17
- end
18
- end
19
- end
20
- end
1
+ module Glib
2
+ module JsonCrawler
3
+ class Coverage
4
+ @@files = []
5
+ @@coverage_files = Set.new
6
+
7
+ def self.files
8
+ @@files
9
+ end
10
+
11
+ def self.files=(files)
12
+ @@files = files
13
+ end
14
+
15
+ def self.coverage_files
16
+ @@coverage_files
17
+ end
18
+ end
19
+ end
20
+ end