glib-web 0.5.27 → 0.5.33

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ea41ac28d859ba289f5ef9781c78b459c286d55c612c452ca987a914100452c9
4
- data.tar.gz: 19736a98ceb869ddadf5dbf9f2fe9372e0f815e768fb999084ce6aad8fd9a2e6
3
+ metadata.gz: df63c10f723594d82a2f1074082b307b0723bb8c5ce5a2cd967db0d9bf8c2015
4
+ data.tar.gz: 1a1c04881aa9fc5a402986d0494219c33040c832af5a1f4b8ff85186bd11219f
5
5
  SHA512:
6
- metadata.gz: 35c89e2d188d08b60520e041ac950c7f342dc03256a65b6447ab1efc0904107b7532314baf6be7a0e61efcdc736dd339b593c6e8ea37f451b93ea3be09cbb399
7
- data.tar.gz: a828533e753302756df4cf9297abff18c39ca768c09fdafd22fdafb3d59ba831d153420d24125572532c42416bd39fc7960c5c967eec78a1a0855336cb849af6
6
+ metadata.gz: 2efe0df7f6dad19507816d0e9b0d9fe9507c9eddcadd947fc5d4eb8fdb0f8c20f86cced131073edec69b1ea14998e6f900fada9731d89e030928148f05e8efe6
7
+ data.tar.gz: f3556cf3d1dab58de728b8b0d0af12c1aff9a038ae474c75c7d6c303bf2f1d962b95af93b16d1a99dee2a70b327cba9509392608a53777d651a8e14379072154
@@ -112,7 +112,7 @@ module Glib::Json::NewDynamicText
112
112
  def substitute_image_with(images)
113
113
  view[prop] = view[prop].gsub(/\{\{image(\d)\}\}/) {
114
114
  if image = images[$1.to_i - 1]
115
- ApplicationController.helpers.dynamic_image_url(image.blob.key)
115
+ ApplicationController.helpers.glib_dynamic_image_url(image.blob.key)
116
116
  else
117
117
  "{{image#{$1}}}"
118
118
  end
@@ -17,7 +17,7 @@ module Glib
17
17
  if text_object.images.attached?
18
18
  content = content.gsub(/\{\{image(\d)\}\}/) {
19
19
  if image = text_object.images[$1.to_i - 1]
20
- dynamic_image_url(image.blob.key)
20
+ glib_dynamic_image_url(image.blob.key)
21
21
  else
22
22
  "{{image#{$1}}}"
23
23
  end
@@ -68,6 +68,14 @@ module Glib
68
68
 
69
69
  class Restart < Action
70
70
  end
71
+
72
+ class CreditCard < Action
73
+ string :publicKey
74
+ string :clientSecret
75
+ action :onSuccess
76
+ action :onFailure
77
+ bool :setupOnly
78
+ end
71
79
  end
72
80
 
73
81
  module Devices
@@ -1,18 +1,38 @@
1
1
  class Glib::JsonUi::ActionBuilder
2
2
  module Http
3
- class Post < Action
3
+ class AbstractHttp < Action
4
4
  string :url, cache: true
5
- hash :formData
5
+
6
+ def formData(hash)
7
+ form_data = {}
8
+ hash.each do |key, value|
9
+ flatten_nested_params(form_data, key, value)
10
+ end
11
+ json.formData form_data
12
+ end
13
+
14
+ def flatten_nested_params(form_data, key, value)
15
+ if value.is_a?(Hash)
16
+ value.each do |nested_key, nested_value|
17
+ flatten_nested_params(form_data, "#{key}[#{nested_key}]", nested_value)
18
+ end
19
+ else
20
+ form_data[key] = value
21
+ end
22
+ end
6
23
  end
7
24
 
8
- class Patch < Action
9
- string :url, cache: true
10
- hash :formData
25
+ class Post < AbstractHttp
11
26
  end
12
27
 
13
- class Delete < Action
14
- string :url, cache: true
15
- hash :formData
28
+ class Patch < AbstractHttp
29
+ # string :url, cache: true
30
+ # hash :formData
31
+ end
32
+
33
+ class Delete < AbstractHttp
34
+ # string :url, cache: true
35
+ # hash :formData
16
36
  end
17
37
 
18
38
  end
@@ -27,6 +27,7 @@ module Glib
27
27
  end
28
28
 
29
29
  class Standard < AbstractTemplate
30
+ string :id
30
31
  string :title
31
32
  string :subtitle
32
33
  string :subsubtitle
@@ -104,6 +104,9 @@ module Glib
104
104
  bool :previewVideo
105
105
  end
106
106
 
107
+ class Html < AbstractText
108
+ end
109
+
107
110
  class Label < AbstractText
108
111
  # string :format
109
112
  action :onClick
@@ -217,5 +217,8 @@ class Glib::JsonUi::ViewBuilder
217
217
  string :publicKey
218
218
  end
219
219
 
220
+ class CreditCard < AbstractField
221
+ string :publicKey
222
+ end
220
223
  end
221
224
  end
@@ -97,7 +97,9 @@ class Glib::JsonUi::ViewBuilder
97
97
  end
98
98
 
99
99
  class List < View
100
- hash :ws
100
+ hash :phoenixSocket
101
+ hash :actionCable
102
+
101
103
  hash :nextPage
102
104
  action :onScrollToTop
103
105
  action :onScrollToBottom
@@ -6,7 +6,7 @@ end
6
6
  section.rows builder: ->(template) do
7
7
  template.thumbnail title: 'http/post', onClick: ->(action) do
8
8
  action.auth_saveCsrfToken token: form_authenticity_token, onSave: ->(subaction) do
9
- subaction.http_post url: json_ui_garage_url(path: 'forms/basic_post'), formData: { 'user[name]' => 'New Joe' }
9
+ subaction.http_post url: json_ui_garage_url(path: 'forms/basic_post'), formData: { user: { name: { first: 'New', last: 'Joe' } } }
10
10
  end
11
11
  end
12
12
 
@@ -76,6 +76,12 @@ json_ui_page json do |page|
76
76
  template.thumbnail title: 'Rich Text Editor', onClick: ->(action) do
77
77
  action.windows_open url: json_ui_garage_url(path: 'forms/rich_text')
78
78
  end
79
+ end
80
+
81
+ section.rows builder: ->(template) do
82
+ template.thumbnail title: 'New Rich Text Editor', onClick: ->(action) do
83
+ action.windows_open url: json_ui_garage_url(path: 'forms/new_rich_text')
84
+ end
79
85
 
80
86
  end
81
87
  end, ->(section) do
@@ -0,0 +1,40 @@
1
+ json.title 'Forms'
2
+
3
+ json_ui_page json do |page|
4
+ render "#{@path_prefix}/nav_menu", json: json, page: page
5
+
6
+ page.form url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
7
+ form.fields_text name: 'user[name]', width: 'matchParent', label: 'Name'
8
+
9
+ # images = [
10
+ # {
11
+ # value: "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4",
12
+ # fileUrl: "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
13
+ # }
14
+ # ]
15
+ # form.fields_richText name: 'user[bio]', width: 'matchParent', label: 'Content', images: images, value: '<p>Test {{image1}}</p>'
16
+
17
+ json.child! do
18
+ json.view 'fields/newRichText-v1'
19
+ json.width 'matchParent'
20
+ json.label 'Content'
21
+ json.name 'user[bio]'
22
+ json.value '<p>Test {{image1}}</p>'
23
+
24
+ json.images do
25
+ json.child! do
26
+ json.value "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4"
27
+ # json.fileTitle "hita i hanom hg.jpg"
28
+ json.fileUrl "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
29
+ end
30
+ end
31
+
32
+ json.imageUploader do
33
+ json.accepts(fileType: "image/*", maxFileSize: 5000)
34
+ json.directUploadUrl rails_direct_uploads_url
35
+ end
36
+ end
37
+
38
+ form.button text: 'Submit', onClick: ->(action) { action.forms_submit }
39
+ end
40
+ end
@@ -2,12 +2,12 @@ json.title 'Forms'
2
2
 
3
3
  json_ui_page json do |page|
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page
5
-
5
+
6
6
  page.form url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: { top: 12, left: 20, right: 20, bottom: 12 }, childViews: ->(form) do
7
7
  form.fields_text name: 'user[name]', width: 'matchParent', label: 'Name'
8
8
 
9
9
  # images = [
10
- # {
10
+ # {
11
11
  # value: "eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBFQT09IiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--193dc0d939b9558fc4973fafbba91d989cbb04d4",
12
12
  # fileUrl: "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
13
13
  # }
@@ -28,7 +28,7 @@ json_ui_page json do |page|
28
28
  json.fileUrl "https://imageserver-demo.herokuapp.com/image/itinerarybuilder-demo/o6CKzNt67PWnkPdUEnWMt7pr?h=100&w=100"
29
29
  end
30
30
  end
31
-
31
+
32
32
  json.imageUploader do
33
33
  json.accepts(fileType: "image/*", maxFileSize: 5000)
34
34
  json.directUploadUrl rails_direct_uploads_url
@@ -12,21 +12,22 @@ json_ui_page json do |page|
12
12
  form.spacer height: 14
13
13
  form.fields_textarea name: 'user[bio]', width: 'matchParent', label: 'Bio', placeholder: 'Enter your bio', styleClasses: ['outlined']
14
14
 
15
+ # form.spacer height: 14
16
+ # form.fields_stripeToken name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
17
+
18
+ # form.spacer height: 14
19
+ # form.fields_stripeToken name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
20
+
15
21
  form.spacer height: 14
16
- form.fields_stripeToken name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
22
+ form.fields_creditCard name: 'user[stripe_token_outlined]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'outlined'
17
23
 
18
24
  form.spacer height: 14
19
- form.fields_stripeToken name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
25
+ form.fields_creditCard name: 'user[stripe_token_individual]', width: 'matchParent', publicKey: 'pk_test_TYooMQauvdEDq54NiTphI7jx', styleClass: 'individual'
20
26
 
21
27
  form.spacer height: 14
22
28
  form.panels_split width: 'matchParent', content: ->(split) do
23
- # split.left childViews: ->(left) do
24
- # if params[:mode] == 'dialog'
25
- # left.button styleClass: 'link', text: 'cancel', onClick: ->(action) { action.dialogs_close }
26
- # end
27
- # end
28
29
  split.right childViews: ->(right) do
29
- right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
30
+ right.fields_submit text: 'Submit'
30
31
  end
31
32
  end
32
33
 
@@ -5,7 +5,7 @@ liked = params[:liked] == 'true'
5
5
  page = json_ui_page json
6
6
  render "#{@path_prefix}/nav_menu", json: json, page: page
7
7
 
8
- json.ws({
8
+ json.phoenixSocket({
9
9
  "socket" => {
10
10
  "endpoint" => "/socket/websocket",
11
11
  "params" => {
@@ -24,7 +24,7 @@ json.ws({
24
24
  })
25
25
 
26
26
  list_ws = { topic: 'rooms', events: ['comments_updated'] }
27
- page.list ws: list_ws, firstSection: ->(section) do
27
+ page.list phoenixSocket: list_ws, firstSection: ->(section) do
28
28
  section.header padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(header) do
29
29
  header.h3 text: 'Chat with John Doe'
30
30
  end
@@ -71,25 +71,6 @@ page.list ws: list_ws, firstSection: ->(section) do
71
71
  end
72
72
 
73
73
  page.footer padding: { top: 12, left: 16, right: 16, bottom: 12 }, childViews: ->(footer) do
74
- # json.ws({
75
- # "socket" => {
76
- # "endpoint" => "/socket/websocket",
77
- # "params" => {
78
- # vsn: '2.0.0',
79
- # token: 'TOKEN'
80
- # }
81
- # },
82
- # # "topic" => "room:30",
83
- # # "event" => "comments_updated",
84
- # "topic" => "links",
85
- # "events" => ["new_link_added"],
86
- # "header" => {
87
- # "user_id" => 2,
88
- # "prev_item_id" => nil,
89
- # "last_item_id" => nil
90
- # }
91
- # })
92
-
93
74
  footer.panels_form width: 'matchParent', url: json_ui_garage_url(path: 'forms/basic_post'), method: 'post', padding: glib_json_padding_body, paramNameForFormData: 'formData', onSubmit: ->(action) do
94
75
  json.action "ws/push"
95
76
  json.topic "rooms"
@@ -3,7 +3,7 @@ json.title 'Forms'
3
3
  page = json_ui_page json
4
4
  render "#{@path_prefix}/nav_menu", json: json, page: page
5
5
 
6
- json.ws({
6
+ json.phoenixSocket({
7
7
  "socket" => {
8
8
  "endpoint" => "/socket/websocket",
9
9
  "params" => {
@@ -43,7 +43,7 @@ end, childViews: ->(form) do
43
43
 
44
44
  # TODO: Change this to radio for selecting alert vs reload response
45
45
  form.fields_password name: 'user[password]', width: 'matchParent', label: 'Password'
46
-
46
+
47
47
  form.fields_hidden name: 'baseUrl', width: 'matchParent', value: json_ui_garage_url(path: 'notifications/web_socket')
48
48
 
49
49
  form.panels_split width: 'matchParent', content: ->(split) do
@@ -56,5 +56,5 @@ end, childViews: ->(form) do
56
56
  right.button text: 'Submit', onClick: ->(action) { action.forms_submit }
57
57
  end
58
58
  end
59
-
59
+
60
60
  end
@@ -6,3 +6,4 @@ require 'glib/json_crawler'
6
6
  require 'glib/dynamic_text'
7
7
  require 'glib/crypt'
8
8
  require 'glib/test_helpers'
9
+ require 'glib/mailer_tester'
@@ -81,6 +81,9 @@ module Glib
81
81
  end
82
82
 
83
83
  def tear_down
84
+ # NOTE: Experimental, to address issue where sometimes changes don't get saved.
85
+ @logger.flush
86
+
84
87
  @logger.close
85
88
  end
86
89
 
@@ -0,0 +1,36 @@
1
+ module Glib
2
+ module MailerTester
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ project_root = Rails.root
7
+ paths = Dir.glob(project_root + 'test/mailers/previews/*')
8
+ paths.each do |file|
9
+ require file
10
+ end
11
+
12
+ ActionMailer::Preview.subclasses.each do |preview_class|
13
+ preview = preview_class.new
14
+
15
+ preview_class.instance_methods(false).each do |mailer_method|
16
+ test "mailer for #{preview_class}##{mailer_method}" do
17
+ preview.send(mailer_method).deliver_now
18
+
19
+ logfile = File.join(log_dir, "#{preview_class.name.underscore}##{mailer_method}.txt")
20
+
21
+ # Use rstrip to avoid trailing space issues
22
+ expected = File.exist?(logfile) ? File.read(logfile).rstrip : ''
23
+ last_delivery = ActionMailer::Base.deliveries.last
24
+ result = last_delivery.html_part.body.raw_source.rstrip
25
+
26
+ logger = File.open(logfile, 'w')
27
+ logger.puts result
28
+ logger.close
29
+
30
+ assert_equal expected, result, "Result mismatch! #{logfile.sub(/\.txt$/, '')}"
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
File without changes
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: glib-web
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.27
4
+ version: 0.5.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - ''
@@ -131,6 +131,7 @@ files:
131
131
  - app/views/json_ui/garage/forms/generic_post.json.jbuilder
132
132
  - app/views/json_ui/garage/forms/get_request.json.jbuilder
133
133
  - app/views/json_ui/garage/forms/index.json.jbuilder
134
+ - app/views/json_ui/garage/forms/new_rich_text.json.jbuilder
134
135
  - app/views/json_ui/garage/forms/pickers.json.jbuilder
135
136
  - app/views/json_ui/garage/forms/rich_text.json.jbuilder
136
137
  - app/views/json_ui/garage/forms/selects.json.jbuilder
@@ -224,6 +225,7 @@ files:
224
225
  - lib/glib/json_crawler/coverage.rb
225
226
  - lib/glib/json_crawler/http.rb
226
227
  - lib/glib/json_crawler/router.rb
228
+ - lib/glib/mailer_tester.rb
227
229
  - lib/glib/test_helpers.rb
228
230
  - lib/glib/value.rb
229
231
  - lib/glib/version.rb