glib-web 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/app/controllers/concerns/.keep +0 -0
- data/app/controllers/concerns/application/json/libs.rb +26 -0
- data/app/controllers/concerns/application/json/transformation.rb +11 -0
- data/app/controllers/concerns/application/json/ui.rb +61 -0
- data/app/controllers/concerns/application/json/validation.rb +13 -0
- data/app/helpers/glib/web/json_ui_helper.rb +58 -0
- data/lib/glib/engine.rb +6 -0
- data/lib/glib/version.rb +5 -0
- data/lib/glib-web.rb +2 -0
- metadata +51 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 9187e21e6dc23404a709478c99906553f56d04cd956096d42ff6663ab805856b
|
4
|
+
data.tar.gz: f7c91119a66ea42fe3073b77cf89f3705448dee70ebbe5f74ce91f604b2100d1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: b40412fdcf224f041a7937ca88e869e77738e4f533225b0119fab448f741c16a1029bec51e073816363efddb2bf408e9ff1e9f58b599c282281603cede1b005f
|
7
|
+
data.tar.gz: db3db6a11e5ad2f898a181277f4df99dda527ecf949dda0b61f45a5448069950ae78c317e9dfe2183486f253e5693b9d865f61919f4f7c3c976f805ca44c599e
|
File without changes
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Concerns::Application::Json::Libs
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
included do
|
5
|
+
extend ClassMethods
|
6
|
+
end
|
7
|
+
|
8
|
+
module ClassMethods
|
9
|
+
|
10
|
+
def json_libs_init(options)
|
11
|
+
include Concerns::Application::Json::Transformation
|
12
|
+
include Concerns::Application::Json::Validation
|
13
|
+
include Concerns::Application::Json::Ui
|
14
|
+
|
15
|
+
before_action :__json_ui_start
|
16
|
+
|
17
|
+
# Note that after_action gets executed in reverse
|
18
|
+
after_action do
|
19
|
+
__json_ui_commit(options[:renderer_path])
|
20
|
+
end
|
21
|
+
after_action :__json_transformation_commit
|
22
|
+
after_action :__json_validate_perform
|
23
|
+
end
|
24
|
+
|
25
|
+
end
|
26
|
+
end
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Concerns::Application::Json::Transformation
|
2
|
+
def json_transformation_start
|
3
|
+
if request.format == 'json'
|
4
|
+
@__transformed_json ||= JSON.parse(response.body) rescue nil
|
5
|
+
end
|
6
|
+
end
|
7
|
+
|
8
|
+
def __json_transformation_commit
|
9
|
+
response.body = @__transformed_json.to_json if @__transformed_json
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Concerns::Application::Json::Ui
|
2
|
+
extend ActiveSupport::Concern
|
3
|
+
|
4
|
+
# NOTE: Override default_url_options and call this method
|
5
|
+
def json_ui_url_options
|
6
|
+
options = {}
|
7
|
+
options[:_render] = params[:_render]
|
8
|
+
options[:format] = :json if request.format == :json
|
9
|
+
options
|
10
|
+
end
|
11
|
+
|
12
|
+
def json_ui_activated
|
13
|
+
@__json_ui_activated
|
14
|
+
end
|
15
|
+
|
16
|
+
def __json_ui_start
|
17
|
+
@__json_ui_activated = false
|
18
|
+
@__json_ui_rendering = false
|
19
|
+
if params[:_render].present?
|
20
|
+
@__json_ui_activated = true
|
21
|
+
request.variant = :ui
|
22
|
+
|
23
|
+
if request.format.html?
|
24
|
+
@__json_ui_rendering = true
|
25
|
+
request.format = 'json'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def __json_ui_commit(renderer_path)
|
31
|
+
if @__json_ui_rendering
|
32
|
+
if (hash = json_transformation_start).is_a?(Hash)
|
33
|
+
case params[:_render]
|
34
|
+
when 'v1'
|
35
|
+
__json_ui_vue(hash, renderer_path)
|
36
|
+
when 'mdc'
|
37
|
+
__json_ui_mdc(hash)
|
38
|
+
when 'vue'
|
39
|
+
__json_ui_vue(hash)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
# TODO: Remove. Deprecated
|
48
|
+
def __json_ui_mdc(hash)
|
49
|
+
prepend_view_path 'app/views/json_ui/mdc'
|
50
|
+
if (next_action = hash['onResponse']).is_a?(Hash)
|
51
|
+
response.body = render_to_string(file: 'renderer.js', layout: false, content_type: 'text/javascript', locals: { response: next_action })
|
52
|
+
else
|
53
|
+
response.body = render_to_string(file: 'renderer.html', layout: false, content_type: 'text/html', locals: { page: hash })
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def __json_ui_vue(hash, renderer_path)
|
58
|
+
@__json_ui_orig_page = response.body
|
59
|
+
response.body = render_to_string(file: renderer_path, layout: false, content_type: 'text/html', locals: { page: hash })
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module Concerns::Application::Json::Validation
|
2
|
+
def __json_validate_perform
|
3
|
+
if Rails.env.development? && params[:_validate] == 'true'
|
4
|
+
if (hash = json_transformation_start).is_a?(Hash)
|
5
|
+
json_validate = JSONValidate.new(hash)
|
6
|
+
response_message = json_validate.valid?
|
7
|
+
hash[:_json] = {
|
8
|
+
validationErrors: response_message
|
9
|
+
}
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module Glib
|
2
|
+
module Web
|
3
|
+
module JsonUiHelper
|
4
|
+
def json_body_with_list(json, header = nil, footer = nil, options = {})
|
5
|
+
json.header header
|
6
|
+
json.content do
|
7
|
+
json.subviews [1] do
|
8
|
+
json.view 'panels/list-v1'
|
9
|
+
json.width 'matchParent'
|
10
|
+
json.nextPage options[:nextPage]
|
11
|
+
json.sections [1] do
|
12
|
+
yield
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
json.footer footer
|
17
|
+
end
|
18
|
+
|
19
|
+
def json_body_with_scroll(json, header = nil, footer = nil, options = {})
|
20
|
+
json.header header
|
21
|
+
json.content do
|
22
|
+
json.subviews [1] do
|
23
|
+
json.view 'panels/scroll-v1'
|
24
|
+
json.width 'matchParent'
|
25
|
+
json.padding options[:padding]
|
26
|
+
json.subviews do
|
27
|
+
yield
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
json.footer footer
|
32
|
+
end
|
33
|
+
|
34
|
+
def json_body_with_form(json, header = nil, footer = nil, options = {})
|
35
|
+
json.header header
|
36
|
+
json_body_with_scroll json do
|
37
|
+
json.child! do
|
38
|
+
json.view 'panels/form-v1'
|
39
|
+
json.width 'matchParent'
|
40
|
+
json.(options, :url, :method)
|
41
|
+
json.padding options[:padding]
|
42
|
+
json.local options[:local]
|
43
|
+
json.subviews do
|
44
|
+
json.child! do
|
45
|
+
json.view 'fields/hidden-v1'
|
46
|
+
json.name 'authenticity_token'
|
47
|
+
json.value form_authenticity_token
|
48
|
+
end
|
49
|
+
|
50
|
+
yield
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
json.footer footer
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/glib/engine.rb
ADDED
data/lib/glib/version.rb
ADDED
data/lib/glib-web.rb
ADDED
metadata
ADDED
@@ -0,0 +1,51 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: glib-web
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- ''
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-03-15 00:00:00.000000000 Z
|
12
|
+
dependencies: []
|
13
|
+
description:
|
14
|
+
email: ''
|
15
|
+
executables: []
|
16
|
+
extensions: []
|
17
|
+
extra_rdoc_files: []
|
18
|
+
files:
|
19
|
+
- app/controllers/concerns/.keep
|
20
|
+
- app/controllers/concerns/application/json/libs.rb
|
21
|
+
- app/controllers/concerns/application/json/transformation.rb
|
22
|
+
- app/controllers/concerns/application/json/ui.rb
|
23
|
+
- app/controllers/concerns/application/json/validation.rb
|
24
|
+
- app/helpers/glib/web/json_ui_helper.rb
|
25
|
+
- lib/glib-web.rb
|
26
|
+
- lib/glib/engine.rb
|
27
|
+
- lib/glib/version.rb
|
28
|
+
homepage:
|
29
|
+
licenses: []
|
30
|
+
metadata: {}
|
31
|
+
post_install_message:
|
32
|
+
rdoc_options: []
|
33
|
+
require_paths:
|
34
|
+
- lib
|
35
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ">="
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
45
|
+
requirements: []
|
46
|
+
rubyforge_project:
|
47
|
+
rubygems_version: 2.7.6
|
48
|
+
signing_key:
|
49
|
+
specification_version: 4
|
50
|
+
summary: ''
|
51
|
+
test_files: []
|