ezframe 0.0.1 → 0.0.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.
Files changed (68) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/README.md +11 -4
  4. data/app_template/asset/image/favicon.ico +0 -0
  5. data/app_template/asset/js/ezframe.js +288 -0
  6. data/app_template/config/generic.yml +3 -0
  7. data/app_template/config/materialize.yml +5 -0
  8. data/{example/chat → app_template}/config.ru +2 -10
  9. data/app_template/pages/basic.rb +5 -0
  10. data/exe/create_table.rb +1 -0
  11. data/exe/setup.rb +15 -0
  12. data/ezframe.gemspec +3 -4
  13. data/lib/ezframe/auth.rb +15 -12
  14. data/lib/ezframe/column_set.rb +68 -28
  15. data/lib/ezframe/column_type.rb +231 -68
  16. data/lib/ezframe/config.rb +4 -0
  17. data/lib/ezframe/controller.rb +20 -10
  18. data/lib/ezframe/database.rb +10 -3
  19. data/lib/ezframe/ht.rb +167 -0
  20. data/lib/ezframe/html.rb +28 -4
  21. data/lib/ezframe/japanese_utils.rb +40 -0
  22. data/lib/ezframe/{pages.rb → loader.rb} +3 -0
  23. data/lib/ezframe/materialize.rb +55 -20
  24. data/lib/ezframe/model.rb +0 -2
  25. data/lib/ezframe/page_base.rb +18 -12
  26. data/lib/ezframe/page_kit.rb +12 -33
  27. data/lib/ezframe/template.rb +20 -15
  28. data/lib/ezframe/util.rb +5 -0
  29. data/lib/ezframe/version.rb +1 -1
  30. data/lib/ezframe.rb +5 -4
  31. metadata +27 -70
  32. data/example/auth/Gemfile +0 -8
  33. data/example/auth/asset/css/materialize.min.css +0 -13
  34. data/example/auth/asset/js/common.js +0 -200
  35. data/example/auth/asset/js/htmlgen.js +0 -79
  36. data/example/auth/columns/user.yml +0 -12
  37. data/example/auth/config/view_conf.yml +0 -3
  38. data/example/auth/config.ru +0 -26
  39. data/example/auth/pages/app.rb +0 -61
  40. data/example/auth/template/base.html +0 -12
  41. data/example/chat/Gemfile +0 -9
  42. data/example/chat/asset/css/materialize.min.css +0 -13
  43. data/example/chat/asset/js/common.js +0 -200
  44. data/example/chat/asset/js/htmlgen.js +0 -79
  45. data/example/chat/columns/belong.yml +0 -6
  46. data/example/chat/columns/channel.yml +0 -3
  47. data/example/chat/columns/talk.yml +0 -6
  48. data/example/chat/columns/user.yml +0 -12
  49. data/example/chat/config/view_conf.yml +0 -3
  50. data/example/chat/pages/app.rb +0 -59
  51. data/example/chat/template/base.html +0 -12
  52. data/example/todo/Gemfile +0 -8
  53. data/example/todo/asset/css/datatable.css +0 -54
  54. data/example/todo/asset/css/materialize.min.css +0 -13
  55. data/example/todo/asset/js/common.js +0 -135
  56. data/example/todo/asset/js/datatable.js +0 -1814
  57. data/example/todo/asset/js/htmlgen.js +0 -79
  58. data/example/todo/asset/js/init.js +0 -3
  59. data/example/todo/asset/js/materialize.min.js +0 -6
  60. data/example/todo/asset/js/mydatatable.js +0 -9
  61. data/example/todo/asset/js/mymaterialize.js +0 -22
  62. data/example/todo/columns/todo.yml +0 -9
  63. data/example/todo/config/view_conf.yml +0 -3
  64. data/example/todo/config.ru +0 -15
  65. data/example/todo/pages/app.rb +0 -93
  66. data/example/todo/template/base.html +0 -12
  67. data/exe/myrackup +0 -5
  68. data/lib/ezframe/hthash.rb +0 -116
@@ -1,9 +0,0 @@
1
- - key: issue
2
- type: string
3
- label: やること
4
- - key: status
5
- type: select
6
- label: 状態
7
- items:
8
- 1: Active
9
- 2: Completed
@@ -1,3 +0,0 @@
1
- default_page_class: App
2
- default_page_method: index
3
- template_file: base.html
@@ -1,15 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'logger'
4
- require 'rack'
5
- require 'warden'
6
-
7
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), 'lib'))
8
- require 'ezframe'
9
-
10
- use Rack::Session::Pool, secret: Digest::SHA256.hexdigest(rand.to_s)
11
-
12
- use Rack::Static, urls: ['/image', '/js', '/css'], root: 'asset'
13
- use Rack::ShowExceptions
14
-
15
- run Ezframe::Server
@@ -1,93 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Ezframe
4
- class App < PageBase
5
- def initialize(request, model)
6
- super(request, model)
7
- mylog "request=#{request.inspect}"
8
- @column_set = @model.column_sets[:todo]
9
- @dataset = @column_set.dataset
10
- end
11
-
12
- def public_index_page
13
- @params[:list]
14
-
15
- # add todo form
16
- button = Ht.button(type: "button", class: %w[btn], child: "send", event: "on=click:cmd=add_todo:with=form")
17
- form = Ht.form(class: %w[row], id: "add-form", child: [
18
- Ht.div(class: "col s3 offset-s4", child: @column_set[:issue].form),
19
- Ht.div(class: "col s2", child: button)
20
- ])
21
- form = Ht.div(class: "container", child: form)
22
-
23
- # radio buttons for filter
24
- status_list = @column_set[:status].attribute[:items]
25
- mylog("status_list=#{status_list.inspect}")
26
- radio_a = status_list.keys.map do |key|
27
- value = status_list[key]
28
- event = "on=change:cmd=change_filter:value=#{value}:with=self"
29
- Ht.radio(name: "status", value: key, label: value, event: event)
30
- end
31
- event = "on=change:cmd=change_filter:value=0:with=self"
32
- radio_a.unshift(Ht.radio(name: "status", value: "0", label: "All", event: event, checked: "checked"))
33
-
34
- # join all
35
- tb = make_table.to_hash
36
- contents = Ht.div(class: %w[container], child: [
37
- Ht.div(class: %w[row], child: form),
38
- Ht.div(class: %w[row], id: "filter-buttons", child: radio_a),
39
- Ht.div(class: %w[row], id: "main-table", child: tb.to_hash)
40
- ])
41
- common_page(title: "Todos", body: Html.convert(Materialize.convert(contents)))
42
- end
43
-
44
- def make_table
45
- data_a = @dataset.all
46
- tb = Ht::Table.new
47
- tb.header = [ "ID", "issue" ]
48
- data_a.map do |data|
49
- @column_set.values = data
50
- delete_event = "on=click:cmd=delete_todo:id=#{data[:id]}"
51
- checkbox = Ht.checkbox(name: "status", value: data[:id]) # @column_set[:status].form
52
- checkbox[:checked] = "checked" if "2" == @column_set[:status].value.to_s
53
- checkbox[:event] = "on=change:cmd=change_status:id=#{data[:id]}:cur_stat=#{@column_set[:status].value}"
54
- # mylog "checkbox=#{checkbox}"
55
- tb.add_row([
56
- checkbox, [
57
- Ht.span(child: @column_set[:issue].view),
58
- Ht.button(type: "button", child: Ht.icon(name: "clear"), event: delete_event )
59
- ]])
60
- end
61
- return tb
62
- end
63
-
64
- def public_index_post
65
- mylog "public_index_post: #{@json}"
66
- opts={}
67
- event = @json[:event]
68
- case event[:cmd]
69
- when "add_todo"
70
- mylog "add_todo"
71
- @column_set.values = event[:form]
72
- @column_set[:status].value = 1
73
- @column_set.save
74
- opts[:reset] = "#add-form"
75
- when "delete_todo"
76
- id = event[:id]
77
- @dataset.where(id: id).delete
78
- when "change_status"
79
- new_stat = [ 0, 2, 1 ][event[:cur_stat].to_i]
80
- id = event[:id]
81
- @dataset.where(id: id).update(status: new_stat)
82
- when "change_filter"
83
- @session["filter"] = event[:value]
84
- end
85
- return_value = { inject: "#main-table", body: Materialize.convert(make_table.to_hash) }
86
- return_value.update(opts)
87
- return return_value
88
- end
89
-
90
- alias_method :public_default_page, :public_index_page
91
- alias_method :public_default_post, :public_index_post
92
- end
93
- end
@@ -1,12 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang=ja>
3
- <head>
4
- <meta charset="utf8" />
5
- <title>#{title}</title>
6
- #{into_html_header}
7
- </head>
8
- <body>
9
- #{body}
10
- #{into_bottom_of_body}
11
- </body>
12
- </html>
data/exe/myrackup DELETED
@@ -1,5 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require "rack"
4
- require "digest/sha2"
5
- Rack::Server.start
@@ -1,116 +0,0 @@
1
- module Ezframe
2
- module Ht
3
- class << self
4
- def wrap_tag(opts = {})
5
- h = opts.dup
6
- raise "Ht.wrap_tag: value must be a hash: #{h}" unless h.is_a?(Hash)
7
- h[:tag] = __callee__.to_s
8
- h
9
- end
10
-
11
- alias_method :h1, :wrap_tag
12
- alias_method :h2, :wrap_tag
13
- alias_method :h3, :wrap_tag
14
- alias_method :h4, :wrap_tag
15
- alias_method :h5, :wrap_tag
16
- alias_method :h6, :wrap_tag
17
- alias_method :p, :wrap_tag
18
- alias_method :br, :wrap_tag
19
- alias_method :hr, :wrap_tag
20
- alias_method :div, :wrap_tag
21
- alias_method :span, :wrap_tag
22
- alias_method :i, :wrap_tag
23
- alias_method :strong, :wrap_tag
24
- alias_method :ul, :wrap_tag
25
- alias_method :ol, :wrap_tag
26
- alias_method :li, :wrap_tag
27
- alias_method :table, :wrap_tag
28
- alias_method :thead, :wrap_tag
29
- alias_method :tbody, :wrap_tag
30
- alias_method :tr, :wrap_tag
31
- alias_method :th, :wrap_tag
32
- alias_method :td, :wrap_tag
33
- alias_method :img, :wrap_tag
34
- alias_method :a, :wrap_tag
35
- alias_method :form, :wrap_tag
36
- alias_method :button, :wrap_tag
37
- alias_method :input, :wrap_tag
38
- alias_method :select, :wrap_tag
39
- alias_method :textarea, :wrap_tag
40
- alias_method :label, :wrap_tag
41
- alias_method :fieldset, :wrap_tag
42
-
43
- alias_method :icon, :wrap_tag
44
- alias_method :checkbox, :wrap_tag
45
- alias_method :radio, :wrap_tag
46
-
47
- def multi_wrap(class_a, child)
48
- class_a.reverse.each do |klass|
49
- child = Ht.div(class: klass, child: child)
50
- end
51
- return child
52
- end
53
- end
54
-
55
- class List
56
- attr_accessor :array
57
-
58
- def initialize(tag: "ul", array: [])
59
- @tag = tag
60
- @array = array.dup
61
- end
62
-
63
- def to_hash
64
- return nil if @list.nil? || @list.empty?
65
- child = @array.map do |elem|
66
- { tag: "li", child: elem }
67
- end
68
- { tag: @tag, child: child }
69
- end
70
- end
71
-
72
- class Ul < List
73
- def initialize(array: [])
74
- super(tag: "ul", array: array)
75
- end
76
- end
77
-
78
- class Ol < List
79
- def initialize(array: [])
80
- super(tag: "ol", array: array)
81
- end
82
- end
83
-
84
- class Table
85
- attr_accessor :class_a, :header
86
-
87
- def initialize(matrix = nil)
88
- set(matrix) if matrix
89
- @matrix ||= []
90
- end
91
-
92
- def set(matrix)
93
- @matrix = matrix
94
- end
95
-
96
- def add_row(row)
97
- @matrix.push(row)
98
- end
99
-
100
- def to_hash
101
- table_class, tr_class, td_class = @class_a
102
- max_col = 0
103
- @matrix.each { |row| max_col = row.length if max_col < row.length }
104
- tr_a = @matrix.map do |row|
105
- add_attr = nil
106
- add_attr = { colspan: max_col - row.length + 1 } if row.length < max_col
107
- td_a = row.map { |v| Ht.td(class: td_class, child: v) }
108
- td_a[0].update(add_attr) if add_attr
109
- Ht.tr(class: tr_class, child: td_a)
110
- end
111
- tr_a.unshift( Ht.thead(child: Ht.tr(child: @header.map {|v| Ht.th(child: v) }) )) if @header
112
- Ht.table(class: table_class, child: tr_a)
113
- end
114
- end
115
- end
116
- end