ezframe 0.0.1 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/README.md +11 -4
- data/app_template/asset/image/favicon.ico +0 -0
- data/app_template/asset/js/ezframe.js +288 -0
- data/app_template/config/generic.yml +3 -0
- data/app_template/config/materialize.yml +5 -0
- data/{example/chat → app_template}/config.ru +2 -10
- data/app_template/pages/basic.rb +5 -0
- data/exe/create_table.rb +1 -0
- data/exe/setup.rb +15 -0
- data/ezframe.gemspec +3 -4
- data/lib/ezframe/auth.rb +15 -12
- data/lib/ezframe/column_set.rb +68 -28
- data/lib/ezframe/column_type.rb +231 -68
- data/lib/ezframe/config.rb +4 -0
- data/lib/ezframe/controller.rb +20 -10
- data/lib/ezframe/database.rb +10 -3
- data/lib/ezframe/ht.rb +167 -0
- data/lib/ezframe/html.rb +28 -4
- data/lib/ezframe/japanese_utils.rb +40 -0
- data/lib/ezframe/{pages.rb → loader.rb} +3 -0
- data/lib/ezframe/materialize.rb +55 -20
- data/lib/ezframe/model.rb +0 -2
- data/lib/ezframe/page_base.rb +18 -12
- data/lib/ezframe/page_kit.rb +12 -33
- data/lib/ezframe/template.rb +20 -15
- data/lib/ezframe/util.rb +5 -0
- data/lib/ezframe/version.rb +1 -1
- data/lib/ezframe.rb +5 -4
- metadata +27 -70
- data/example/auth/Gemfile +0 -8
- data/example/auth/asset/css/materialize.min.css +0 -13
- data/example/auth/asset/js/common.js +0 -200
- data/example/auth/asset/js/htmlgen.js +0 -79
- data/example/auth/columns/user.yml +0 -12
- data/example/auth/config/view_conf.yml +0 -3
- data/example/auth/config.ru +0 -26
- data/example/auth/pages/app.rb +0 -61
- data/example/auth/template/base.html +0 -12
- data/example/chat/Gemfile +0 -9
- data/example/chat/asset/css/materialize.min.css +0 -13
- data/example/chat/asset/js/common.js +0 -200
- data/example/chat/asset/js/htmlgen.js +0 -79
- data/example/chat/columns/belong.yml +0 -6
- data/example/chat/columns/channel.yml +0 -3
- data/example/chat/columns/talk.yml +0 -6
- data/example/chat/columns/user.yml +0 -12
- data/example/chat/config/view_conf.yml +0 -3
- data/example/chat/pages/app.rb +0 -59
- data/example/chat/template/base.html +0 -12
- data/example/todo/Gemfile +0 -8
- data/example/todo/asset/css/datatable.css +0 -54
- data/example/todo/asset/css/materialize.min.css +0 -13
- data/example/todo/asset/js/common.js +0 -135
- data/example/todo/asset/js/datatable.js +0 -1814
- data/example/todo/asset/js/htmlgen.js +0 -79
- data/example/todo/asset/js/init.js +0 -3
- data/example/todo/asset/js/materialize.min.js +0 -6
- data/example/todo/asset/js/mydatatable.js +0 -9
- data/example/todo/asset/js/mymaterialize.js +0 -22
- data/example/todo/columns/todo.yml +0 -9
- data/example/todo/config/view_conf.yml +0 -3
- data/example/todo/config.ru +0 -15
- data/example/todo/pages/app.rb +0 -93
- data/example/todo/template/base.html +0 -12
- data/exe/myrackup +0 -5
- data/lib/ezframe/hthash.rb +0 -116
data/example/todo/config.ru
DELETED
@@ -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
|
data/example/todo/pages/app.rb
DELETED
@@ -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
|
data/exe/myrackup
DELETED
data/lib/ezframe/hthash.rb
DELETED
@@ -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
|