ezframe 0.0.1 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
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