qwer 0.1.4 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9a049889a8c127dd590b21203a34431749253774
4
- data.tar.gz: fc0d9ee35aeed5287c9d2224562d25c83fa02738
3
+ metadata.gz: 21f2eacd42e7dcaa4021a2b55f282743600b9bad
4
+ data.tar.gz: fe6c3eb79af6eee3263fbe01cd6db70cbf8c4a97
5
5
  SHA512:
6
- metadata.gz: eab2bb0b69143658380a3ccf3863a49e3939826d0d42e0164667eaad9da8cf092c1fad10c0cc9c246784cb2bdf940b22011814ed8512ba81c861703e24342707
7
- data.tar.gz: 2c905049ad978b2b8b32db7a691d1e1295a31a0e58ea209ca65b7ed384616e98d952ac1324e2d0a535da3aa4b18ba0ba2fee264a7367e5ecf583b2bf9808fa22
6
+ metadata.gz: be881f80e2e17ae3dcc89c4996be8e52bada80bc3e58810adbbc63429cd2f835a2fdc34d7ce9d1dc8dc2c567fcd24ecd544a37ed2958877e114bb353a4e969e8
7
+ data.tar.gz: e7c5a955a88fa1edadc12cd22aa26fcce930f3735c74a09500967aba0d9c03746d07acde924453d9fa9b36d2d63c5f013fd7e1ec4f6d93e06dc92bad147fc52b
@@ -7,7 +7,9 @@ module Qwer
7
7
  # 初始化
8
8
  # page_size: 单页记录数
9
9
  # page: 当前页数
10
- def initialize(page_size, page)
10
+ # model: 当前业务model
11
+ def initialize(model, page_size, page)
12
+ @model = model
11
13
  @page_size = page_size
12
14
  @page = page
13
15
  end
@@ -21,7 +23,7 @@ module Qwer
21
23
  # data: 要查询的内容
22
24
  # args : 其他参数
23
25
  def table_seach(params, data,*args)
24
- html_str = Translater.table_search(params, data)
26
+ html_str = Translater.new.table_search(params, data, @model)
25
27
  html_str.html_safe
26
28
  end
27
29
 
@@ -30,8 +32,8 @@ module Qwer
30
32
  # datas: 数据
31
33
  # dname: 数据名称
32
34
  # args: 其他参数
33
- def table_data(table_head, dname, datas, *args)
34
- html_str = Translater.table_data(table_head, dname, datas, *args)
35
+ def table_data(table_head, opt, datas, *args)
36
+ html_str = Translater.new.table_data(table_head, @model, opt, datas, *args)
35
37
  html_str.html_safe
36
38
  end
37
39
 
@@ -3,26 +3,168 @@
3
3
  module Qwer
4
4
  require "qwer/version"
5
5
 
6
- module Qwer
7
- # Your code goes here...
8
- def self.sayhi
9
- puts "hello world"
10
- end
11
- module Helpers
12
- def table_seach
13
- '<h5 class="page-header">查询条件</h5>'
14
- '<div class="dataTables_wrapper form-inline">
15
- <div>
16
- <form class="pjax-form" id="user_search" action="/users" accept-charset="UTF-8" method="get"><input name="utf8" type="hidden" value="✓">
17
- <label class="control-label" for="q_邮箱:">邮箱:</label>
18
- <input class="form-control" type="search" name="q[email_cont]" id="q_email_cont">
19
- <a class="btn btn-success green" href="/users/new">新增</a>
20
- <button type="submit" class="btn btn-info" data-toggle="modal" data-target="#search_model">查询</button>
21
- </form>
22
- </div>
23
- </div>'
6
+ module Helper
7
+ class HelperMethod
8
+ MAX_LOOP_NUM = 10
9
+ DEFAULT_COL_NUM = 3
10
+
11
+ # 查询项布局初始化
12
+ # col_num : table的列数
13
+ # data_size : 查询项数量
14
+ def initialize(col_num, data_size)
15
+ @col_num = col_num
16
+ @data_size = data_size
17
+ end
18
+
19
+ def form_render data_params, form_params
20
+ html_str = ""
21
+ # 适配单行是都能显示 先暂时定位3 以后做适配
22
+ if data_params.size > DEFAULT_COL_NUM
23
+ html_str << form_table_render(form_params, data_params)
24
+ else
25
+
26
+ data_params.reject { |key, value|
27
+ if value.class.to_s.eql?('String')
28
+ html_str << "<div><label class='control-label'>#{value}:</label><input class='form-control' type='search' name='#{key}' id='q_#{key}'></div>"
29
+ else
30
+ html_str << "<div><label class='control-label'>#{value[:name]}:</label>"
31
+ if select? value
32
+ html_str << add_selector(key, value)
33
+ else
34
+ html_str << "<input class='#{value[:css] ||= 'form-control'}' type='search' name='#{key}' id='q_#{key}'>"
35
+ end
36
+ html_str << "</div>"
37
+ end
38
+
39
+ }
40
+ html_str << button_render(form_params)
41
+ end
42
+ html_str
43
+ end
44
+
45
+ private
46
+
47
+ def add_selector key, value
48
+ html_str = "<select class='form-control' name='#{key}' id='#{get_input_id key}'>"
49
+ if value[:data].present?
50
+ html_str << "<option value=''>全部</option>" if value[:data].include? 'all'
51
+ value[:data].each do |item|
52
+ html_str << "<option value='#{item[:k]}'>#{item[:v]}</option>" if item.class.to_s.eql? 'Hash'
53
+ end
54
+ end
55
+ html_str << "</select>"
24
56
  end
57
+
58
+ # 得到查询项,table
59
+ def form_table_render form_param, data_params
60
+ conter = 1
61
+ total = 1
62
+ html_str = "<table class='table text-left'>"
63
+ data_params.reject { |key, value|
64
+ html_str << "<tr>" if tr_start? conter
65
+ html_str << "<td style='border: none'>"
66
+ html_str << "<div class='form-group'>"
67
+ if value.class.to_s.eql? 'String'
68
+ html_str << "<label class='control-label'>#{value}:</label><input class='#{'form-control'}' type='search' name='#{key}' id='#{get_input_id key}'></div>"
69
+ else
70
+ html_str << "<label class='control-label'>#{value[:name]}:</label>"
71
+ if select? value
72
+ html_str << add_selector(key, value)
73
+ else
74
+ html_str << "<input class='#{value[:css] ||= 'form-control'}' type='search' name='#{key}' id='#{get_input_id key}'>"
75
+ end
76
+ end
77
+ html_str << "</div>"
78
+
79
+ html_str << "</td>"
80
+
81
+ if !tr_end? conter
82
+ # 一行tr 还没有结束 需要填补td
83
+ html_str << add_td_or_blank_td(form_param, conter, total)
84
+ end
85
+ html_str << "</tr>" if tr_end? conter
86
+ conter = 0 if tr_end? conter
87
+ conter += 1
88
+ total += 1
89
+ }
90
+ # 查询项 正好占满整行,需要另起一个tr,添加 button
91
+ html_str << add_new_btn_tr(form_param)
92
+ html_str << "</table>"
93
+ end
94
+
95
+ # 添加空td,或button td
96
+ def add_td_or_blank_td form_params, counter, total
97
+ html_str = ""
98
+ return html_str if has_any_td? total
99
+ # 循环添加td,直至填满tr,在最后添加button
100
+ while true
101
+ break if tr_end?(counter + 1) || counter > MAX_LOOP_NUM
102
+ html_str << "<td style='border: none;'></td>"
103
+ counter += 1
104
+ end
105
+ html_str << "<td style='border:none;text-align:center;'>"
106
+ html_str << button_render(form_params)
107
+ html_str << "</td>"
108
+ end
109
+
110
+ def button_render form_params
111
+ html_str = "<a class='btn btn-success green' href='#{form_params[:new]}'>新增</a>" if form_params[:new]
112
+ html_str << "<button type='submit' class='btn btn-info' data-toggle='modal' data-target='#search_model'>查询</button>"
113
+ end
114
+
115
+ # 单行tr 开始
116
+ def tr_start? counter
117
+ counter == 1
118
+ end
119
+
120
+ # 单行tr 结束
121
+ def tr_end? counter
122
+ counter == @col_num
123
+ end
124
+
125
+ # 有剩余td 没有添加
126
+ def has_any_td? total
127
+ total < @data_size
128
+ end
129
+
130
+ # 是否是下拉栏
131
+ def select? value
132
+ value[:type] == 'select'
133
+ end
134
+
135
+ def data? value
136
+ value[:type] == 'date'
137
+ end
138
+
139
+ def data_time? value
140
+ value[:type] == 'data_time'
141
+ end
142
+
143
+ def get_input_id key
144
+ k = key.to_s
145
+ k['['] = "_"
146
+ k[']'] = ""
147
+ k
148
+ end
149
+
150
+ # 添加一行新的tr(有必要的话)
151
+ def add_new_btn_tr params
152
+ html_str = ""
153
+ result = @data_size % @col_num
154
+ if result.zero?
155
+ html_str << "<tr>"
156
+ (@col_num-1).times{
157
+ html_str << "<td style='border:none;'>"
158
+ html_str << "</td>"
159
+ }
160
+ html_str << "<td style='border:none;text-align: center;'>"
161
+ html_str << button_render(params)
162
+ html_str << "</td>"
163
+ html_str << "</tr>"
164
+ end
165
+ html_str
166
+ end
167
+
25
168
  end
26
169
  end
27
-
28
170
  end
@@ -1,15 +1,20 @@
1
+ require 'qwer/layout_helper'
2
+
1
3
  module Qwer
2
4
  class Translater
3
- def self.table_search(form_params, data_params, model)
5
+ DEFAULT_COL_NUM = 3
6
+ INIT_CONTER = 1
7
+
8
+ def table_search(form_params, data_params, model)
9
+ col_num = form_params[:col_num] ||= DEFAULT_COL_NUM
10
+ conter ||= INIT_CONTER
4
11
  html_str = "<form class='#{form_params[:form_class] ||= 'pjax-form'}' id='' action='#{form_params[:action] ||= model}' accept-charset='#{form_params[:charset] ||= 'UTF-8' }' method='#{form_params[:method] ||= 'get'}'>"
5
12
  html_str << "<input name='utf8' type='hidden' value='✓'>"
6
- data_params.reject { |key, value| html_str << "<div class='form-group'><label class='control-label'>#{value}:</label><input class='form-control' type='search' name='#{key}' id='q_#{key}'></div>" }
7
- html_str << "<a class='btn btn-success green' href='#{form_params[:new]}'>新增</a>" if form_params[:new]
8
- html_str << "<button type='submit' class='btn btn-info' data-toggle='modal' data-target='#search_model'>查询</button>"
13
+ html_str << Qwer::Helper::HelperMethod.new(col_num, data_params.size).form_render(data_params, form_params).to_s
9
14
  html_str << "</form>"
10
15
  end
11
16
 
12
- def self.table_data(table_head, dname, opt, datas, *args)
17
+ def table_data(table_head, dname, opt, datas, *args)
13
18
  html_str = "<table class='table table-striped table-hover' id='editable-sample'><thead><tr><th>#</th>"
14
19
  table_head.reject { |key, value| html_str << "<th>#{value}</th>" }
15
20
  html_str << "<th>操作</th></tr></thead><tbody>"
@@ -30,28 +35,30 @@ module Qwer
30
35
 
31
36
  private
32
37
 
33
- def self.sequence(index)
38
+ # 设置数据表格序号
39
+ def sequence(index)
34
40
  (@page.to_i - 1) * @page_size.to_i + index + 1
35
41
  end
36
42
 
37
- def self.edit?(opt)
43
+ # 判断是否是编辑方法
44
+ def edit?(opt)
38
45
  opt == "edit"
39
46
 
40
47
  end
41
48
 
42
- def self.delete?(opt)
49
+ # 判断是否是删除方法
50
+ def delete?(opt)
43
51
  opt == "del"
44
52
  end
45
53
 
46
- def self.send_keys data, key
54
+ # 获取给定的params的key的值
55
+ def send_keys data, key
47
56
  keys = key.to_s.split '.'
48
- keys.each do |item|
49
- data = data.send item if data.present?
50
- end
51
- data
57
+ keys.inject(data){|result, item| result.send item if result.present? }
52
58
  end
53
59
 
54
- def self.opt_btns key, value, dname, data
60
+ # 操作列
61
+ def opt_btns key, value, dname, data
55
62
  if edit? key.to_s
56
63
  return "<a class='#{value[:css] ||= 'label label-success'}' href='/#{dname}/#{data.id.to_s}/edit'>#{value[:name] ||= '编辑'}</a>"
57
64
  elsif delete? key.to_s
@@ -1,3 +1,3 @@
1
1
  module Qwer
2
- VERSION = "0.1.4"
2
+ VERSION = "0.1.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qwer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - lidejian@skio.cn
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-02-15 00:00:00.000000000 Z
11
+ date: 2017-02-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -105,7 +105,6 @@ files:
105
105
  - lib/qwer/layout_helper.rb
106
106
  - lib/qwer/translater.rb
107
107
  - lib/qwer/version.rb
108
- - lib/temp/test.png
109
108
  - qwer-0.1.1.gem
110
109
  - qwer.gemspec
111
110
  homepage: https://www.baidu.com
Binary file