glib-web 0.5.71 → 0.5.76
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/analytics/funnel.rb +0 -0
- data/app/controllers/concerns/glib/auth/policy.rb +0 -0
- 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_images_helper.rb +0 -0
- data/app/helpers/glib/dynamic_texts_helper.rb +0 -0
- data/app/helpers/glib/enum_helper.rb +10 -0
- data/app/helpers/glib/forms_helper.rb +0 -0
- data/app/helpers/glib/json_ui/abstract_builder.rb +1 -1
- data/app/helpers/glib/json_ui/action_builder/dialogs.rb +0 -0
- data/app/helpers/glib/json_ui/action_builder/http.rb +0 -0
- data/app/helpers/glib/json_ui/action_builder/panels.rb +0 -0
- data/app/helpers/glib/json_ui/action_builder/sheets.rb +0 -0
- data/app/helpers/glib/json_ui/action_builder/snackbars.rb +0 -0
- data/app/helpers/glib/json_ui/action_builder/windows.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/menu_builder.rb +0 -0
- data/app/helpers/glib/json_ui/split_builders.rb +0 -0
- data/app/helpers/glib/json_ui/styling_helper.rb +0 -0
- data/app/helpers/glib/json_ui/table_builders.rb +0 -0
- data/app/helpers/glib/json_ui/view_builder/fields.rb +11 -12
- data/app/helpers/glib/urls_helper.rb +0 -0
- data/app/models/concerns/glib/soft_deletable.rb +68 -0
- data/app/models/glib/active_storage/attachment.rb +0 -0
- data/app/models/glib/active_storage/blob.rb +0 -0
- data/app/models/glib/application_record.rb +0 -0
- data/app/models/glib/dynamic_text_record.rb +0 -0
- data/app/models/glib/text.rb +0 -0
- data/app/policies/glib/application_policy.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 +0 -0
- data/app/views/json_ui/garage/actions/_dialogs.json.jbuilder +0 -0
- data/app/views/json_ui/garage/actions/_http.json.jbuilder +0 -0
- data/app/views/json_ui/garage/actions/_panels.json.jbuilder +0 -0
- data/app/views/json_ui/garage/actions/_reload.json.jbuilder +0 -0
- data/app/views/json_ui/garage/actions/_sheets.json.jbuilder +0 -0
- data/app/views/json_ui/garage/actions/_snackbars.json.jbuilder +0 -0
- data/app/views/json_ui/garage/actions/_timeouts.json.jbuilder +0 -0
- data/app/views/json_ui/garage/actions/dialogs_oauth_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/basic.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/basic_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/checkboxes.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/dynamic_group.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/dynamic_select.json.jbuilder +2 -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 +0 -5
- data/app/views/json_ui/garage/forms/floating_submit.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/generic_post.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/get_request.json.jbuilder +0 -0
- data/app/views/json_ui/garage/forms/selects.json.jbuilder +7 -0
- 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/lists/templating.json.jbuilder +0 -0
- data/app/views/json_ui/garage/notifications/web_socket.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/flat_centered.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/index.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/layout.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/lifecycle_hooks.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/loading_indicator.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/nav_buttons.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/nested_scroll.json.jbuilder +0 -0
- data/app/views/json_ui/garage/pages/tab_bar.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/carousel.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/custom.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/flow.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/horizontal.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/index.json.jbuilder +4 -0
- data/app/views/json_ui/garage/panels/outlined.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/responsive.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/split.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/ul.json.jbuilder +33 -0
- data/app/views/json_ui/garage/panels/vertical.json.jbuilder +0 -0
- data/app/views/json_ui/garage/panels/web.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/horizontal_scroll.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/index.json.jbuilder +0 -0
- data/app/views/json_ui/garage/tables/layout.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/banners.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/calendar_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/charts.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/controls.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/icon_names.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/icons.json.jbuilder +1 -0
- data/app/views/json_ui/garage/views/images.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/index.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/links.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/map_cluster_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/map_data.json.jbuilder +0 -0
- data/app/views/json_ui/garage/views/misc.json.jbuilder +8 -8
- data/app/views/json_ui/garage/views/texts.json.jbuilder +0 -0
- data/config/routes.rb +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/crypt/utils.rb +0 -0
- data/lib/glib/crypt.rb +0 -0
- data/lib/glib/dynamic_text/config.rb +0 -0
- data/lib/glib/dynamic_text.rb +0 -0
- data/lib/glib/engine.rb +0 -0
- 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/forms_submit.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/menu.rb +0 -0
- data/lib/glib/json_crawler/action_crawlers/nav_initiate.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/json_crawler/http.rb +0 -0
- data/lib/glib/json_crawler/router.rb +5 -13
- data/lib/glib/json_crawler.rb +0 -0
- data/lib/glib/mailer_tester.rb +0 -0
- data/lib/glib/value.rb +0 -0
- data/lib/glib/version.rb +0 -0
- data/lib/glib-web.rb +0 -0
- data/lib/tasks/db.rake +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: e195cf56a4e446bc732f67732bd213af40b14bb6fb5d04eee102d28a2e552de4
|
|
4
|
+
data.tar.gz: fce259c689b6eb4e886f132f396dd2f4b0c93bbf9d5665442dd6950bbcf90a2e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b9f97af017b745de55389d63b6d8bdfef4ab479c1eca98287e00464ef8fad0a617c7ad4121a6da0905f13579ff81662dc056dd53df926010eb0c67b866cfdd5c
|
|
7
|
+
data.tar.gz: 0042d88e51f14d8e52f859f27592aa81b3c594e4463845a067c84541495ff46055df363f0713b97222f01d37f91fbcae478ecddc7aaeeec704c09dd59571c724
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -4,5 +4,15 @@ module Glib
|
|
|
4
4
|
keys ||= clazz.send("#{enum_field}s").keys
|
|
5
5
|
keys.map { |i| { text: clazz.glib_enum_humanize(enum_field, i), value: i } }
|
|
6
6
|
end
|
|
7
|
+
|
|
8
|
+
# See https://en.wikipedia.org/wiki/List_of_tz_database_time_zones and description
|
|
9
|
+
def glib_time_zone_options
|
|
10
|
+
ActiveSupport::TimeZone.all.sort { |a, b|
|
|
11
|
+
a.utc_offset <=> b.utc_offset
|
|
12
|
+
}.collect { |tz|
|
|
13
|
+
utc_offset = "#{tz.utc_offset >= 0 ? '+' : ''}#{tz.utc_offset / 60 / 60}h"
|
|
14
|
+
{ value: tz.tzinfo.identifier, text: "#{utc_offset} #{tz.name}" }
|
|
15
|
+
}
|
|
16
|
+
end
|
|
7
17
|
end
|
|
8
18
|
end
|
|
File without changes
|
|
@@ -117,7 +117,7 @@ module Glib
|
|
|
117
117
|
define_method(propName) do |value|
|
|
118
118
|
if (value = value&.to_s)
|
|
119
119
|
if !Rails.env.production?
|
|
120
|
-
if !value.match /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/i
|
|
120
|
+
if !value.match /^#([A-Fa-f0-9]{8}|[A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/i
|
|
121
121
|
raise "Invalid color: #{value}"
|
|
122
122
|
end
|
|
123
123
|
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
|
|
@@ -152,6 +152,17 @@ class Glib::JsonUi::ViewBuilder
|
|
|
152
152
|
hash :append
|
|
153
153
|
end
|
|
154
154
|
|
|
155
|
+
class TimeZone < AbstractField
|
|
156
|
+
include Glib::EnumHelper
|
|
157
|
+
|
|
158
|
+
# Override
|
|
159
|
+
def created
|
|
160
|
+
super
|
|
161
|
+
|
|
162
|
+
json.options glib_time_zone_options
|
|
163
|
+
end
|
|
164
|
+
end
|
|
165
|
+
|
|
155
166
|
# TODO: Remove (deprecated)
|
|
156
167
|
class Autocomplete < AbstractField
|
|
157
168
|
array :options
|
|
@@ -214,18 +225,6 @@ class Glib::JsonUi::ViewBuilder
|
|
|
214
225
|
hash :placeholderView
|
|
215
226
|
end
|
|
216
227
|
|
|
217
|
-
class MultiImage < Text
|
|
218
|
-
# file_rules = { fileType: 'image/*', maxFileSize: 5000 }
|
|
219
|
-
# file_rules = { fileType: 'video/*', maxFileSize: 50000 }
|
|
220
|
-
# file_rules = { fileType: 'application/pdf', maxFileSize: 5000 }
|
|
221
|
-
# hash :accepts
|
|
222
|
-
|
|
223
|
-
string :directUploadUrl
|
|
224
|
-
# string :fileUrl
|
|
225
|
-
# string :fileTitle
|
|
226
|
-
hash :placeholderView
|
|
227
|
-
end
|
|
228
|
-
|
|
229
228
|
class Date < AbstractField
|
|
230
229
|
date :min
|
|
231
230
|
date :max
|
|
File without changes
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
module Glib
|
|
2
|
+
module SoftDeletable
|
|
3
|
+
extend ActiveSupport::Concern
|
|
4
|
+
|
|
5
|
+
included do
|
|
6
|
+
default_scope { where(deleted_at: nil) }
|
|
7
|
+
scope :with_deleted, -> { unscope(where: :deleted_at) }
|
|
8
|
+
|
|
9
|
+
# "Soft delete" - set deleted_at if it is nil, actually destroy the record
|
|
10
|
+
# if forced.
|
|
11
|
+
#
|
|
12
|
+
# @param force [Boolean]
|
|
13
|
+
def destroy(force = nil)
|
|
14
|
+
return force_destroy_record if force == :force
|
|
15
|
+
return self if deleted?
|
|
16
|
+
|
|
17
|
+
soft_destroy_record
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
# Revive a soft-deleted record and associated records if soft-deleted,
|
|
21
|
+
# otherwise return self
|
|
22
|
+
def revive
|
|
23
|
+
return self unless deleted?
|
|
24
|
+
|
|
25
|
+
ActiveRecord::Base.transaction do
|
|
26
|
+
update(deleted_at: nil)
|
|
27
|
+
revive_associated_records
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# Whether or not a record is deleted
|
|
32
|
+
def deleted?
|
|
33
|
+
deleted_at.present?
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
def force_destroy_record
|
|
38
|
+
ActiveRecord::Base.transaction do
|
|
39
|
+
destroy_associated_records(:force)
|
|
40
|
+
method(:destroy).super_method.call
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def soft_destroy_record
|
|
45
|
+
ActiveRecord::Base.transaction do
|
|
46
|
+
destroy_associated_records
|
|
47
|
+
update(deleted_at: Time.zone.now)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def destroy_associated_records(force = nil)
|
|
52
|
+
associated_records.each { |r| r.destroy(force) }
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
def revive_associated_records
|
|
56
|
+
associated_records.each(&:revive)
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# This should return an array of all associated records of an object that
|
|
60
|
+
# should be soft deleted with it (i.e. those that have dependent: :destroy
|
|
61
|
+
# set). In principle we could figure this out automatically but in the
|
|
62
|
+
# interest of simplicity we'll just define it manually for each class.
|
|
63
|
+
def associated_records
|
|
64
|
+
[]
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
end
|
|
File without changes
|
|
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
|
|
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
|
|
@@ -6,6 +6,8 @@ render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
|
6
6
|
page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', padding: glib_json_padding_body, childViews: ->(form) do
|
|
7
7
|
form.h2 text: 'Dynamic Select'
|
|
8
8
|
form.spacer height: 6
|
|
9
|
+
form.label text: 'Dynamically loads options from the server. Useful for a huge list (e.g. 1000+ items)'
|
|
10
|
+
form.spacer height: 14
|
|
9
11
|
|
|
10
12
|
form.fields_dynamicSelect name: 'user[primary_language]', width: 'matchParent', label: 'Primary Language',
|
|
11
13
|
selectedOptions: [ { value: 'id3', text: 'Item 3' } ],
|
|
File without changes
|
|
@@ -28,10 +28,5 @@ page.form options.merge(childViews: ->(form) do
|
|
|
28
28
|
rules = { fileType: 'pdf', maxFileSize: 5000 }
|
|
29
29
|
form.fields_file name: 'user[pdf2][]', width: 'matchParent', label: 'PDF Document', accepts: rules, directUploadUrl: rails_direct_uploads_url
|
|
30
30
|
|
|
31
|
-
# TODO
|
|
32
|
-
# rules = { fileType: 'image/*', maxFileSize: 1, fileTypeErrorText: 'Invalid!', maxFileSizeErrorText: 'Too big!' }
|
|
33
|
-
# form.fields_multiImage name: 'user[photos][]', width: 'matchParent', label: 'Avatar', accepts: rules, directUploadUrl: rails_direct_uploads_url,
|
|
34
|
-
# placeholderView: { type: 'avatar', width: 100, height: 100, url: 'data:image/jpeg;base64,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' }
|
|
35
|
-
|
|
36
31
|
form.fields_submit text: 'Submit'
|
|
37
32
|
end)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -71,6 +71,13 @@ page.form url: json_ui_garage_url(path: 'forms/generic_post'), method: 'post', p
|
|
|
71
71
|
form.fields_select name: 'user[nil_default]', width: 'matchParent', label: 'Nil Default', options: languages.map { |k, v| { value: k, text: v } }
|
|
72
72
|
form.fields_select name: 'user[mixed_default][]', width: 'matchParent', label: 'Mixed Default', options: languages.map { |k, v| { value: k, text: v } }, value: ['', 'specified', nil], multiple: true
|
|
73
73
|
|
|
74
|
+
form.spacer height: 20
|
|
75
|
+
form.h2 text: 'Timezone selection'
|
|
76
|
+
form.spacer height: 6
|
|
77
|
+
form.label text: 'The select field defaults to the device\'s time zone.'
|
|
78
|
+
form.spacer height: 6
|
|
79
|
+
form.fields_timeZone name: 'user[time_zone]', width: 'matchParent', label: 'Time Zone'
|
|
80
|
+
|
|
74
81
|
# TODO: Remove
|
|
75
82
|
form.spacer height: 20
|
|
76
83
|
form.h2 text: 'Autocomplete (select with manual entry) -- DEPRECATED: Confusing UX, promote bad backend design'
|
|
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
|
|
@@ -27,6 +27,10 @@ json_ui_page json do |page|
|
|
|
27
27
|
template.thumbnail title: 'Responsive', subtitle: 'Arrange *column panels* horizontally using flex', onClick: ->(action) do
|
|
28
28
|
action.windows_open url: json_ui_garage_url(path: 'panels/responsive')
|
|
29
29
|
end
|
|
30
|
+
template.thumbnail title: 'Unordered List', subtitle: 'Bullet points similar to HTML\'s <ul> tag', onClick: ->(action) do
|
|
31
|
+
action.windows_open url: json_ui_garage_url(path: 'panels/ul')
|
|
32
|
+
end
|
|
33
|
+
|
|
30
34
|
|
|
31
35
|
end
|
|
32
36
|
end, ->(section) do
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
json.title 'Unordered List'
|
|
2
|
+
|
|
3
|
+
page = json_ui_page json
|
|
4
|
+
render "#{@path_prefix}/nav_menu", json: json, page: page
|
|
5
|
+
|
|
6
|
+
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
7
|
+
scroll.h2 text: 'Standard Usage'
|
|
8
|
+
scroll.spacer height: 6
|
|
9
|
+
scroll.panels_ul childViews: ->(ul) do
|
|
10
|
+
ul.button text: 'Button', styleClass: 'link', onClick: ->(action) do
|
|
11
|
+
action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
|
12
|
+
end
|
|
13
|
+
ul.label text: 'Label'
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
scroll.spacer height: 14
|
|
17
|
+
scroll.h2 text: 'Breadcrumbs'
|
|
18
|
+
scroll.spacer height: 6
|
|
19
|
+
scroll.panels_ul \
|
|
20
|
+
width: 'matchParent',
|
|
21
|
+
backgroundColor: '#eeeeee',
|
|
22
|
+
padding: { top: 10, right: 20, bottom: 10, left: 20 },
|
|
23
|
+
styleClass: 'breadcrumbs',
|
|
24
|
+
childViews: ->(ul) do
|
|
25
|
+
ul.button text: 'Level 1', styleClass: 'link', onClick: ->(action) do
|
|
26
|
+
action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
|
27
|
+
end
|
|
28
|
+
ul.button text: 'Level 2', styleClass: 'link', onClick: ->(action) do
|
|
29
|
+
action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
|
30
|
+
end
|
|
31
|
+
ul.label text: 'Level 3'
|
|
32
|
+
end
|
|
33
|
+
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
|
|
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
|
|
@@ -5,14 +5,14 @@ json_ui_page json do |page|
|
|
|
5
5
|
|
|
6
6
|
page.scroll padding: glib_json_padding_body, childViews: ->(scroll) do
|
|
7
7
|
|
|
8
|
-
scroll.h2 text: 'Unordered List'
|
|
9
|
-
scroll.spacer height: 6
|
|
10
|
-
scroll.panels_ul childViews: ->(ul) do
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
end
|
|
8
|
+
# scroll.h2 text: 'Unordered List'
|
|
9
|
+
# scroll.spacer height: 6
|
|
10
|
+
# scroll.panels_ul childViews: ->(ul) do
|
|
11
|
+
# ul.button text: 'Button', styleClass: 'link', onClick: ->(action) do
|
|
12
|
+
# action.windows_open url: json_ui_garage_url(path: 'home/blank')
|
|
13
|
+
# end
|
|
14
|
+
# ul.label text: 'Label'
|
|
15
|
+
# end
|
|
16
16
|
|
|
17
17
|
scroll.spacer height: 20
|
|
18
18
|
scroll.h2 text: 'Time'
|
|
File without changes
|
data/config/routes.rb
CHANGED
|
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/crypt/utils.rb
CHANGED
|
File without changes
|
data/lib/glib/crypt.rb
CHANGED
|
File without changes
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
module Glib
|
|
2
2
|
module JsonCrawler
|
|
3
3
|
class Router
|
|
4
|
-
attr_reader :read_only_actions
|
|
4
|
+
attr_reader :read_only_actions, :logger
|
|
5
5
|
|
|
6
6
|
def log(action, url, response = nil)
|
|
7
|
-
@logger
|
|
7
|
+
@logger +=' ' * @depth + [
|
|
8
8
|
action,
|
|
9
9
|
response.present? ? response.code : nil,
|
|
10
10
|
url
|
|
11
|
-
].compact.join(' :: ')
|
|
11
|
+
].compact.join(' :: ') + "\n"
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
-
def initialize
|
|
14
|
+
def initialize
|
|
15
15
|
@depth = -1
|
|
16
|
-
@logger =
|
|
16
|
+
@logger = ''
|
|
17
17
|
@visitor = Glib::Json::Traversal::Visitor.new
|
|
18
18
|
@read_only_actions = Set.new
|
|
19
19
|
end
|
|
@@ -82,14 +82,6 @@ module Glib
|
|
|
82
82
|
end
|
|
83
83
|
end
|
|
84
84
|
|
|
85
|
-
def tear_down
|
|
86
|
-
# NOTE: Experimental, to address issue where sometimes changes don't get saved.
|
|
87
|
-
# FINDING: Doesn't work
|
|
88
|
-
# @logger.flush
|
|
89
|
-
|
|
90
|
-
@logger.close
|
|
91
|
-
end
|
|
92
|
-
|
|
93
85
|
def crawl_multiple(views, block)
|
|
94
86
|
@visitor.traverse_multiple views, block
|
|
95
87
|
end
|
data/lib/glib/json_crawler.rb
CHANGED
|
File without changes
|
data/lib/glib/mailer_tester.rb
CHANGED
|
File without changes
|
data/lib/glib/value.rb
CHANGED
|
File without changes
|
data/lib/glib/version.rb
CHANGED
|
File without changes
|
data/lib/glib-web.rb
CHANGED
|
File without changes
|
data/lib/tasks/db.rake
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: 0.5.
|
|
4
|
+
version: 0.5.76
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- ''
|
|
@@ -113,6 +113,7 @@ files:
|
|
|
113
113
|
- app/helpers/glib/json_ui/view_builder/fields.rb
|
|
114
114
|
- app/helpers/glib/json_ui/view_builder/panels.rb
|
|
115
115
|
- app/helpers/glib/urls_helper.rb
|
|
116
|
+
- app/models/concerns/glib/soft_deletable.rb
|
|
116
117
|
- app/models/glib/active_storage/attachment.rb
|
|
117
118
|
- app/models/glib/active_storage/blob.rb
|
|
118
119
|
- app/models/glib/application_record.rb
|
|
@@ -197,6 +198,7 @@ files:
|
|
|
197
198
|
- app/views/json_ui/garage/panels/outlined.json.jbuilder
|
|
198
199
|
- app/views/json_ui/garage/panels/responsive.json.jbuilder
|
|
199
200
|
- app/views/json_ui/garage/panels/split.json.jbuilder
|
|
201
|
+
- app/views/json_ui/garage/panels/ul.json.jbuilder
|
|
200
202
|
- app/views/json_ui/garage/panels/vertical.json.jbuilder
|
|
201
203
|
- app/views/json_ui/garage/panels/web.json.jbuilder
|
|
202
204
|
- app/views/json_ui/garage/services/dynamic_text.json.jbuilder
|
|
@@ -274,8 +276,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
274
276
|
- !ruby/object:Gem::Version
|
|
275
277
|
version: '0'
|
|
276
278
|
requirements: []
|
|
277
|
-
|
|
278
|
-
rubygems_version: 2.7.6
|
|
279
|
+
rubygems_version: 3.1.4
|
|
279
280
|
signing_key:
|
|
280
281
|
specification_version: 4
|
|
281
282
|
summary: ''
|