glib-web 4.1.1 → 4.1.3
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 +4 -4
- data/app/controllers/concerns/glib/json/new_dynamic_text.rb +0 -0
- data/app/helpers/glib/app_feature_support_helper.rb +0 -0
- data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
- data/app/helpers/glib/json_ui/action_builder/sheets.rb +0 -0
- data/app/helpers/glib/json_ui/analytics_helper.rb +0 -0
- data/app/helpers/glib/json_ui/generic_builders.rb +0 -0
- data/app/helpers/glib/json_ui/view_builder/fields.rb +5 -1
- data/app/models/glib/active_storage/attachment.rb +0 -0
- data/app/models/glib/active_storage/blob.rb +0 -0
- data/app/models/glib/dynamic_text_record.rb +0 -0
- data/app/models/glib/text.rb +0 -0
- data/app/validators/email_typo_validator.rb +0 -0
- data/app/validators/email_validator.rb +0 -0
- data/app/validators/url_validator.rb +0 -0
- data/app/views/json_ui/garage/_nav_menu.json.jbuilder +5 -1
- data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/dynamic_select_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/file_upload.json.jbuilder +1 -0
- data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/show_hide.json.jbuilder +2 -2
- data/app/views/json_ui/garage/forms/submission_flow.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_flow_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_indicator.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/submission_indicator_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/home/blank.json.jbuilder +0 -0
- data/app/views/json_ui/garage/home/slow.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/autoload_all.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/autoload_as_needed.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/chat_ui.json.jbuilder +0 -0
- data/app/views/json_ui/garage/lists/fab.json.jbuilder +0 -0
- data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/custom_style_class.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/full_width.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/full_width_height.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/layout.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/redirect_onload.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/_styled.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/card.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/outlined.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/dynamic_text.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/image.json.jbuilder +0 -0
- data/app/views/json_ui/garage/services/index.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/_autoload_section.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/autoload_all.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/autoload_as_needed.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/export_import.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/index.json.jbuilder +0 -0
- data/app/views/json_ui/garage/test_page/index.json.jbuilder +112 -0
- data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/links.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/multimedia.json.jbuilder +0 -0
- data/app/views/layouts/json_ui/no_custom.html.erb +0 -0
- data/lib/generators/glib/install_generator.rb +0 -0
- data/lib/generators/templates/20191017062519_create_texts.rb +0 -0
- data/lib/generators/templates/20191024063257_add_scope_to_texts.rb +0 -0
- data/lib/generators/templates/20191112095018_add_lang_to_texts.rb +0 -0
- data/lib/generators/templates/20191126071051_create_active_storage_tables.active_storage.rb +0 -0
- data/lib/generators/templates/database.yml +0 -0
- data/lib/generators/templates/dynamic_text.rb +0 -0
- data/lib/glib/blob.rb +11 -3
- data/lib/glib/direct_uploads_controller.rb +1 -1
- data/lib/glib/dynamic_text/config.rb +0 -0
- data/lib/glib/dynamic_text.rb +0 -0
- data/lib/glib/engine.rb +2 -1
- data/lib/glib/json_crawler/action_crawler.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/action_http.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/dialogs_alert.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/menu.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/run_multiple.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/windows_open.rb +0 -0
- data/lib/glib/json_crawler/coverage.rb +0 -0
- data/lib/glib/s3_service.rb +30 -0
- data/lib/glib/value.rb +0 -0
- data/lib/glib/version.rb +0 -0
- metadata +4 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 59ce4822a2cbafa2933d7bf884df8eb63af65ebcd4046e4484a652fda583b5c6
|
|
4
|
+
data.tar.gz: f652bfbdb23e198af85cd46f0afef1f753da089a196ff18a13c4cbc57bf834b2
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: ed0d06a31f63ab5fe4deffdf1995f1a673d751595da56fbbc2e1e8b3e3c55d7466957945cbf17f6aa78f094130480ea9c41d29c092b17f45aa6f4c5b90df60e5
|
|
7
|
+
data.tar.gz: 3ffb43696bb3c525282eead1ecd4232078acddc578091d056964b3c774e35e4c3be464a0ddb2230176a08d1a4578c53118d1cfe61893c6f802133d8cceecd7f2
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -257,6 +257,10 @@ class Glib::JsonUi::ViewBuilder
|
|
|
257
257
|
action :onClick
|
|
258
258
|
string :offIcon
|
|
259
259
|
string :onIcon
|
|
260
|
+
string :imageUrl
|
|
261
|
+
string :icon
|
|
262
|
+
string :iconColor
|
|
263
|
+
string :iconSize
|
|
260
264
|
|
|
261
265
|
views :childViews
|
|
262
266
|
end
|
|
@@ -321,7 +325,7 @@ class Glib::JsonUi::ViewBuilder
|
|
|
321
325
|
|
|
322
326
|
string :storagePrefix
|
|
323
327
|
hash :metadata
|
|
324
|
-
|
|
328
|
+
string :tagging
|
|
325
329
|
|
|
326
330
|
required :accepts, :directUploadUrl
|
|
327
331
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/app/models/glib/text.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -10,7 +10,7 @@ end
|
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
if local_assigns[:top_nav] || json_ui_app_is_web?
|
|
13
|
-
page.leftDrawer styleClasses:['maxi'], content: ->(drawer) do
|
|
13
|
+
page.leftDrawer styleClasses: ['maxi'], content: ->(drawer) do
|
|
14
14
|
drawer.header childViews: ->(header) do
|
|
15
15
|
header.button text: 'App', styleClasses: ['link', 'logo'], onClick: ->(action) do
|
|
16
16
|
action.windows_open url: root_url
|
|
@@ -51,6 +51,10 @@ if local_assigns[:top_nav] || json_ui_app_is_web?
|
|
|
51
51
|
action.windows_open url: json_ui_garage_url(path: 'services/index')
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
+
menu.button text: 'Test Page', onClick: ->(action) do
|
|
55
|
+
action.windows_open url: json_ui_garage_url(path: 'test_page/index')
|
|
56
|
+
end
|
|
57
|
+
|
|
54
58
|
menu.divider
|
|
55
59
|
menu.label text: 'Misc Menu'
|
|
56
60
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -106,8 +106,8 @@ page.form \
|
|
|
106
106
|
end
|
|
107
107
|
end,
|
|
108
108
|
childViews: ->(group) do
|
|
109
|
-
group.fields_radio value: 'show', label: 'Show'
|
|
110
|
-
group.fields_radio value: 'hide', label: 'Hide'
|
|
109
|
+
group.fields_radio value: 'show', label: 'Show', icon: 'edit', iconSize: 40
|
|
110
|
+
group.fields_radio value: 'hide', label: 'Hide', imageUrl: 'https://cdn.pixabay.com/photo/2020/08/05/13/12/eco-5465432_1280.png'
|
|
111
111
|
group.fields_radio value: '', label: 'Empty'
|
|
112
112
|
end
|
|
113
113
|
form.spacer height: 10
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
json.title 'Test Page'
|
|
2
|
+
|
|
3
|
+
page = json_ui_page json
|
|
4
|
+
|
|
5
|
+
page.body childViews: ->(body) do
|
|
6
|
+
body.panels_responsive padding: glib_json_padding_body, childViews: ->(res) do
|
|
7
|
+
res.panels_column lg: { cols: 6 }, childViews: ->(col) do
|
|
8
|
+
res.h2 text: 'Reactivity'
|
|
9
|
+
res.spacer height: 8
|
|
10
|
+
res.panels_form \
|
|
11
|
+
url: json_ui_garage_url(path: 'forms/generic_post'),
|
|
12
|
+
method: 'post',
|
|
13
|
+
childViews: ->(form) do
|
|
14
|
+
form.panels_horizontal childViews: ->(hori) do
|
|
15
|
+
hori.button text: 'components/set', onClick: ->(action) do
|
|
16
|
+
action.runMultiple childActions: ->(saction) do
|
|
17
|
+
saction.components_set targetId: 'text', data: { value: 'Doe John' }
|
|
18
|
+
saction.components_set targetId: 'textarea', data: { value: 'The quick brown fox jumps over the lazy dog' }
|
|
19
|
+
new_options = [{ text: 'Option99', value: 'option99' }]
|
|
20
|
+
['select', 'chip_group'].each do |id|
|
|
21
|
+
saction.components_set targetId: id, data: { options: new_options, value: ['option99'] }
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
hori.spacer width: 4
|
|
26
|
+
hori.button text: 'logics/set', onClick: ->(action) do
|
|
27
|
+
action.logics_set targetId: 'date', conditionalData: { value: { "+": [{ "var": ['user[date]'] }, 60 * 60 * 24 * 3] } }
|
|
28
|
+
end
|
|
29
|
+
hori.spacer width: 4
|
|
30
|
+
hori.button text: 'components/replace', onClick: ->(action) do
|
|
31
|
+
action.runMultiple childActions: ->(saction) do
|
|
32
|
+
saction.components_replace targetId: 'radio_group', newView: ->(view) do
|
|
33
|
+
view.fields_radioGroup value: '', childViews: ->(sview) do
|
|
34
|
+
sview.fields_radio label: 'Option99', value: 'option99'
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
saction.components_replace targetId: 'check_group', newView: ->(view) do
|
|
39
|
+
view.fields_checkGroup value: '', childViews: ->(sview) do
|
|
40
|
+
sview.fields_check label: 'Option99', value: nil, checkValue: 'option99'
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
form.spacer height: 8
|
|
48
|
+
form.hr width: 'matchParent'
|
|
49
|
+
form.spacer height: 8
|
|
50
|
+
|
|
51
|
+
validation = { required: { message: 'Required' } }
|
|
52
|
+
options = ['option1', 'option2', 'option3', 'option4'].map { |option| { 'text'=> option.humanize, 'value' => option } }
|
|
53
|
+
|
|
54
|
+
form.fields_date width: 'matchParent', name: 'user[date]', id: 'date', value: Date.new(2024, 7, 24), validation: validation
|
|
55
|
+
form.hr width: 'matchParent'
|
|
56
|
+
form.fields_select multiple: true, width: 'matchParent', name: 'user[select]', id: 'select', options: options, value: ['option1', 'option2'], validation: validation
|
|
57
|
+
form.hr width: 'matchParent'
|
|
58
|
+
form.fields_chipGroup width: 'matchParent', name: 'user[chip_group]', id: 'chip_group', options: options, value: ['option2'], validation: validation
|
|
59
|
+
form.hr width: 'matchParent'
|
|
60
|
+
form.fields_radioGroup width: 'matchParent', name: 'user[radio_group]', id: 'radio_group', value: 'option3', validation: validation, childViews: ->(radio) do
|
|
61
|
+
options.each do |option|
|
|
62
|
+
radio.fields_radio label: option['text'], value: option['value']
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
form.hr width: 'matchParent'
|
|
66
|
+
check_group_value = ['option3', 'option1']
|
|
67
|
+
form.fields_checkGroup width: 'matchParent', name: 'user[check_group]', id: 'check_group', value: check_group_value, validation: validation, childViews: ->(radio) do
|
|
68
|
+
options.each do |option|
|
|
69
|
+
radio.fields_check label: option['text'], value: check_group_value.include?(option['value']) ? option['value'] : nil, checkValue: option['value']
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
form.hr width: 'matchParent'
|
|
73
|
+
form.fields_text width: 'matchParent', name: 'user[text]', id: 'text', value: 'John Doe', validation: validation
|
|
74
|
+
|
|
75
|
+
form.hr width: 'matchParent'
|
|
76
|
+
|
|
77
|
+
form.fields_textarea width: 'matchParent', name: 'user[textarea]', id: 'textarea', value: 'Lorem ipsum et dumet bla bla bla...'
|
|
78
|
+
|
|
79
|
+
form.hr width: 'matchParent'
|
|
80
|
+
form.fields_submit text: 'submit'
|
|
81
|
+
form.spacer height: 2
|
|
82
|
+
form.fields_submit text: 'submit (if form valid)', disableIfFormInvalid: true
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
res.spacer height: 16
|
|
87
|
+
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
|
|
91
|
+
res.panels_column lg: { cols: 6 }, childViews: ->(col) do
|
|
92
|
+
res.h2 text: 'Dialog'
|
|
93
|
+
res.spacer height: 8
|
|
94
|
+
res.button text: 'Dialog updateExisting', onClick: ->(action) do
|
|
95
|
+
action.runMultiple childActions: ->(saction) do
|
|
96
|
+
saction.dialogs_show updateExisting: true, content: ->(dialog) do
|
|
97
|
+
dialog.body padding: glib_json_padding_body, childViews: ->(sbody) do
|
|
98
|
+
sbody.h1 text: 'Hello world'
|
|
99
|
+
sbody.button text: 'change dialog content', onClick: ->(ssaction) do
|
|
100
|
+
ssaction.dialogs_show updateExisting: true, disableCloseButton: true, content: ->(sdialog) do
|
|
101
|
+
sdialog.body padding: glib_json_padding_body, childViews: ->(ssbody) do
|
|
102
|
+
ssbody.h1 text: 'Hello world (updated)'
|
|
103
|
+
end
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
end
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
data/lib/glib/blob.rb
CHANGED
|
@@ -1,15 +1,23 @@
|
|
|
1
1
|
::ActiveStorage::Blob.class_eval do
|
|
2
|
+
attr_accessor :tagging
|
|
3
|
+
|
|
4
|
+
# removing custom_metadata and add tagging
|
|
2
5
|
def service_headers_for_direct_upload
|
|
3
|
-
service.headers_for_direct_upload key, filename: filename, content_type: content_type, content_length: byte_size, checksum: checksum
|
|
6
|
+
service.headers_for_direct_upload key, filename: filename, content_type: content_type, content_length: byte_size, checksum: checksum, tagging: tagging
|
|
7
|
+
end
|
|
8
|
+
def service_url_for_direct_upload(expires_in: ActiveStorage.service_urls_expire_in)
|
|
9
|
+
service.url_for_direct_upload key, expires_in: expires_in, content_type: content_type, content_length: byte_size, checksum: checksum, custom_metadata: custom_metadata, tagging: tagging
|
|
4
10
|
end
|
|
5
11
|
|
|
6
12
|
class << self
|
|
7
|
-
def create_before_direct_upload!(key: nil, filename:, byte_size:, checksum:, content_type: nil, metadata: nil, service_name: nil, record: nil, prefix: nil)
|
|
13
|
+
def create_before_direct_upload!(key: nil, filename:, byte_size:, checksum:, content_type: nil, metadata: nil, service_name: nil, record: nil, prefix: nil, tagging: nil)
|
|
8
14
|
key_name = key || generate_unique_secure_token
|
|
9
15
|
if prefix.present?
|
|
10
16
|
key_name = "#{prefix}/#{key_name}"
|
|
11
17
|
end
|
|
12
|
-
create! key: key_name, filename: filename, byte_size: byte_size, checksum: checksum, content_type: content_type, metadata: metadata, service_name: service_name
|
|
18
|
+
blob = create! key: key_name, filename: filename, byte_size: byte_size, checksum: checksum, content_type: content_type, metadata: metadata, service_name: service_name
|
|
19
|
+
blob.tagging = tagging
|
|
20
|
+
blob
|
|
13
21
|
end
|
|
14
22
|
end
|
|
15
23
|
end
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
|
|
20
20
|
private
|
|
21
21
|
def blob_args
|
|
22
|
-
params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type, :prefix, metadata: {}).to_h.symbolize_keys
|
|
22
|
+
params.require(:blob).permit(:filename, :byte_size, :checksum, :content_type, :prefix, :tagging, metadata: {}).to_h.symbolize_keys
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def authenticate_user!
|
|
File without changes
|
data/lib/glib/dynamic_text.rb
CHANGED
|
File without changes
|
data/lib/glib/engine.rb
CHANGED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require 'active_storage/service/s3_service'
|
|
2
|
+
|
|
3
|
+
::ActiveStorage::Service::S3Service.class_eval do
|
|
4
|
+
attr_reader :headers_for_request
|
|
5
|
+
|
|
6
|
+
# Change presigned_url to presigned_request
|
|
7
|
+
# appearently presigned_url hoist all header `x-amz-` to query params.
|
|
8
|
+
# This is cause problem because S3 server ignore `x-amz-tagging` query params so it fails to tagging an object
|
|
9
|
+
# API: https://docs.aws.amazon.com/sdk-for-ruby/v3/api/Aws/S3/Presigner.html#presigned_request-instance_method
|
|
10
|
+
# Detail about problem: https://github.com/aws/aws-sdk/issues/782
|
|
11
|
+
def url_for_direct_upload(key, expires_in:, content_type:, content_length:, checksum:, tagging: nil, custom_metadata: {})
|
|
12
|
+
instrument :url, key: key do |payload|
|
|
13
|
+
generated_url, headers = object_for(key).presigned_request :put, expires_in: expires_in.to_i,
|
|
14
|
+
content_type: content_type, content_length: content_length, content_md5: checksum,
|
|
15
|
+
metadata: custom_metadata, whitelist_headers: ['content-length'], tagging: tagging, **upload_options
|
|
16
|
+
|
|
17
|
+
payload[:url] = generated_url
|
|
18
|
+
@headers_for_request = headers
|
|
19
|
+
|
|
20
|
+
generated_url
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def headers_for_direct_upload(key, content_type:, checksum:, filename: nil, disposition: nil, tagging: nil, custom_metadata: {}, **)
|
|
25
|
+
content_disposition = content_disposition_with(type: disposition, filename: filename) if filename
|
|
26
|
+
|
|
27
|
+
headers = { 'Content-Type' => content_type, 'Content-MD5' => checksum, 'Content-Disposition' => content_disposition, **custom_metadata_headers(custom_metadata) }
|
|
28
|
+
headers.merge(headers_for_request)
|
|
29
|
+
end
|
|
30
|
+
end
|
data/lib/glib/value.rb
CHANGED
|
File without changes
|
data/lib/glib/version.rb
CHANGED
|
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: 4.1.
|
|
4
|
+
version: 4.1.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ''
|
|
@@ -271,6 +271,7 @@ files:
|
|
|
271
271
|
- app/views/json_ui/garage/tables/index.json.jbuilder
|
|
272
272
|
- app/views/json_ui/garage/tables/layout.json.jbuilder
|
|
273
273
|
- app/views/json_ui/garage/tables/panel_content.json.jbuilder
|
|
274
|
+
- app/views/json_ui/garage/test_page/index.json.jbuilder
|
|
274
275
|
- app/views/json_ui/garage/views/_chart_data.json.jbuilder
|
|
275
276
|
- app/views/json_ui/garage/views/banners.json.jbuilder
|
|
276
277
|
- app/views/json_ui/garage/views/calendar_data.json.jbuilder
|
|
@@ -328,6 +329,7 @@ files:
|
|
|
328
329
|
- lib/glib/json_crawler/http.rb
|
|
329
330
|
- lib/glib/json_crawler/router.rb
|
|
330
331
|
- lib/glib/mailer_tester.rb
|
|
332
|
+
- lib/glib/s3_service.rb
|
|
331
333
|
- lib/glib/test_helpers.rb
|
|
332
334
|
- lib/glib/time_freezable_mailer.rb
|
|
333
335
|
- lib/glib/time_returning_mailer.rb
|
|
@@ -352,8 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
352
354
|
- !ruby/object:Gem::Version
|
|
353
355
|
version: '0'
|
|
354
356
|
requirements: []
|
|
355
|
-
|
|
356
|
-
rubygems_version: 2.7.6
|
|
357
|
+
rubygems_version: 3.4.6
|
|
357
358
|
signing_key:
|
|
358
359
|
specification_version: 4
|
|
359
360
|
summary: ''
|