javy_tool 0.0.2 → 0.1.4

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: c318bf216be32e4276137323bcc268089b284baaaaeb7cc29db8ea607a110232
4
+ data.tar.gz: 878fb92a64d8ae00fd26fe63b44f7964dc987992e048c8c9a8e8c61dd1219826
5
+ SHA512:
6
+ metadata.gz: f06b8d932d1a0a2b150a421575e4a5339198fcac195e6c0c6b0d2ee1bd11ccb91d709d6aed843c058db1d61f71a338788ce064bed992f39c1650f6a9a4b97fe1
7
+ data.tar.gz: 32dad23465b2ffc60f1bb60a6ff76f3bfa530d20259750aaf5162eaaa75a5efab5fdff47a0cd9b72e1c49cd0c759c428ffa62524a3fedf7920bb6e3c25f8ab16
data/.gitignore CHANGED
@@ -15,3 +15,4 @@ spec/reports
15
15
  test/tmp
16
16
  test/version_tmp
17
17
  tmp
18
+ *.swp
data/javy_tool.gemspec CHANGED
@@ -7,6 +7,7 @@ Gem::Specification.new do |gem|
7
7
  gem.name = "javy_tool"
8
8
  gem.version = JavyTool::VERSION
9
9
  gem.authors = ["javy_liu"]
10
+ gem.licenses = ["MIT"]
10
11
  gem.email = ["javy_liu@163.com"]
11
12
  gem.description = %q{pack some used methods}
12
13
  gem.summary = %q{some methods ofen used in my projects}
@@ -8,12 +8,12 @@ module JavyTool
8
8
  protected
9
9
 
10
10
  def set_breadcrumbs
11
- @breadcrumbs = ["#{I18n.t("common.index_icon")}<a href='/'>#{I18n.t("common.home")}</a>".html_safe]
11
+ #Rails.logger.info I18n.locale
12
+ @breadcrumbs = ["#{I18n.t('common.index_icon')}#{view_context.link_to(I18n.t('common.home'), root_path)}".html_safe]
12
13
  end
13
14
 
14
15
  def drop_breadcrumb(title=nil, url=nil)
15
16
  title ||= @page_title
16
- #url ||= url_for
17
17
  if title
18
18
  if url
19
19
  @breadcrumbs.push("<a href=\"#{url}\">#{title}</a>".html_safe)
@@ -48,25 +48,18 @@ module JavyTool
48
48
  def render_body_tag
49
49
  class_attribute = ["#{controller_name}-controller","#{action_name}-action"].join(" ")
50
50
  id_attribute = (@body_id)? " id=\"#{@body_id}-page\"" : ""
51
-
52
- raw(%Q|<!--[if lt IE 7 ]>
53
- <body class="#{class_attribute} ie6"><![endif]-->
54
- <!--[if gte IE 7 ]>
55
- <body class="#{class_attribute} ie"><![endif]-->
56
- <!--[if !IE]>-->
57
- <body#{id_attribute} class="#{class_attribute}">
58
- <!--<![endif]-->|)
59
-
51
+ raw(%Q[ <body#{id_attribute} class="#{class_attribute}"> ])
60
52
  end
61
53
 
62
54
 
63
- # display the flash messages
64
- def notice_message
55
+ # display the flash messages using foundation
56
+ def notice_message(cls: 'alert-box')
65
57
  flash_messages = []
66
58
  flash.each do |type, message|
67
- type = :success if type == :notice
59
+ next if message.nil?
60
+ type = :info if type == :notice
68
61
  type = :alert if type == :error
69
- text = content_tag(:div, message, :class => "alert-box #{type}")
62
+ text = content_tag(:div, message.html_safe, class: "#{cls} #{type}")
70
63
  flash_messages << text if message
71
64
  end
72
65
  flash_messages.join("\n").html_safe
@@ -79,20 +72,15 @@ module JavyTool
79
72
  def render_breadcrumb
80
73
  return "" if @breadcrumbs.nil? || @breadcrumbs.size <= 0
81
74
  prefix = "".html_safe
82
- crumb = "".html_safe
75
+ crumb = []#.html_safe
83
76
 
84
77
  @breadcrumbs.each_with_index do |c, i|
85
78
  breadcrumb_class = []
86
- breadcrumb_class << "active" if i == (@breadcrumbs.length - 1)
87
- if i == (@breadcrumbs.length - 1)
88
- breadcrumb_content = c
89
- else
90
- breadcrumb_content = c + content_tag(:span, ">", :class => "divider")
91
- end
79
+ breadcrumb_class << "current" if i == (@breadcrumbs.length - 1)
92
80
 
93
- crumb += content_tag(:li, breadcrumb_content ,:class => breadcrumb_class )
81
+ crumb.push content_tag(:li, c ,:class => breadcrumb_class )
94
82
  end
95
- return prefix + content_tag(:ul, crumb, :class => "breadcrumb")
83
+ return prefix + content_tag(:ul, crumb.join("").html_safe, :class => "breadcrumbs")
96
84
  end
97
85
 
98
86
  # add nested object to the parent form by ajax
@@ -130,12 +118,45 @@ module JavyTool
130
118
  # }
131
119
  #
132
120
  # deprecated in rails4 need to fix the link_to_founction
133
- def link_to_add_fields(name, f, association,new_object=nil)
121
+ # Fixed:
122
+ ### Need change the association_fields like following:
123
+ #
124
+ # <div class="fields" rel="need_upload">
125
+ # <p>
126
+ # <%= f.label :img_src %><br />
127
+ # <%= f.hidden_field :img_src,:class=>"web_img_src" %>
128
+ # <%= f.hidden_field :item_type %>
129
+ # <%= f.hidden_field :position %>
130
+ # <%= f.hidden_field :_destroy %>
131
+ # <%= link_to "remove_fields", "#" %>
132
+ # </p>
133
+ # </div>
134
+ #
135
+ ### Need add code to application.js like following:
136
+ #
137
+ # $(document).bind("click",".add_fields",function(e){
138
+ # e.preventDefault();
139
+ # var _this = $(this);
140
+ # var new_id = new Date().getTime();
141
+ # var regexp = new RegExp("new_" + _this.data("association"), "g");
142
+ # var con = _this.data("content").replace(regexp, new_id);
143
+ # $(this).parent().before(con);
144
+ # }).bind("click",".remove_fields",function(e){
145
+ # e.preventDefault();
146
+ # var _this = $(this);
147
+ # _this.prev("input[type=hidden]").val("1");
148
+ # _this.closest(".fields").hide();
149
+ #
150
+ # });
151
+ #
152
+ #
153
+ def link_to_add_fields(name, f, association,new_object=nil,options={})
134
154
  new_object ||= f.object.class.reflect_on_association(association).klass.new()
135
- fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
155
+ fields = f.fields_for(association, new_object, child_index: "new_#{association}") do |builder|
136
156
  render(association.to_s.singularize + "_fields", :f => builder)
137
157
  end
138
- link_to_function(name, "add_fields(this, \"#{association}\", \"#{escape_javascript(fields.html_safe)}\")")
158
+ options.merge!(data: {association: association,content: escape_javascript(fields.html_safe)},class: "add_fields")
159
+ link_to(name,"#",options)
139
160
  end
140
161
 
141
162
 
@@ -165,10 +186,10 @@ module JavyTool
165
186
  end
166
187
 
167
188
  def self.included(receiver)
168
- receiver.extend ClassMethods
189
+ #receiver.extend ClassMethods
169
190
  receiver.send :include, InstanceMethods
170
191
  receiver.send :helper, Helpers
171
- receiver.send :before_filter, :set_breadcrumbs
192
+ receiver.send (Rails::VERSION::MAJOR > 3 ? :before_action : :before_filter), :set_breadcrumbs
172
193
  end
173
194
  end
174
195
  end
@@ -0,0 +1,49 @@
1
+ module JavyTool
2
+ module ConstructQuery
3
+ protected
4
+
5
+ #like_ary:需要作like查询的字段,数组类型
6
+ #model_class: 查询的类名,字符串类型
7
+ #param: 查询参数,为空的话默认用model_class参数的underscore版本
8
+ #返回数组 [普通条件,like条件]
9
+ def construct_condition(model_class,like_ary: [],left_like:[],right_like:[],param: nil,gt:[],lt:[])
10
+ model_class = model_class.to_s
11
+ _class = model_class.classify.constantize
12
+ param = param || model_class.underscore
13
+ #instance variable need to be remove
14
+ #_obj = _class.send(:new,params[param])
15
+ #self.instance_variable_set("@#{param}", _obj)
16
+
17
+ if params[param]
18
+
19
+ con_hash = params[param].permit!.to_hash.select{|_,value|value.present?}
20
+ if con_hash.present?
21
+ _like_con = con_hash.extract!(*(like_ary.collect{|item| item.to_s} & con_hash.keys)).map{|k,v| ["#{k} like ?","%#{v}%"] } if like_ary.present?
22
+ _left_like_con = con_hash.extract!(*(left_like.collect{|item| item.to_s} & con_hash.keys)).map{|k,v| ["#{k} like ?","#{v}%"] } if left_like.present?
23
+ _right_like_con = con_hash.extract!(*(right_like.collect{|item| item.to_s} & con_hash.keys)).map{|k,v| ["#{k} like ?","#{v}%"] } if right_like.present?
24
+
25
+ if gt.present?
26
+ gt.collect!(&:to_s)
27
+ gt = (gt + gt.map{|item| "gt_#{item}"}) & con_hash.keys
28
+ _gt_con=con_hash.extract!(*gt).map{|k,v| ["#{k.sub(/^gt_/,'')} >= ?",v] }
29
+ end
30
+ if lt.present?
31
+ lt.collect!(&:to_s)
32
+ lt = (lt + lt.map{|item| "lt_#{item}"}) & con_hash.keys
33
+ _lt_con= con_hash.extract!(*lt).map{|k,v| ["#{k.sub(/^lt_/,'')} <= ?",v] }
34
+ end
35
+
36
+ all_ary_con = ((_left_like_con || [])+(_right_like_con || [])+(_like_con || [])+(_gt_con||[])+(_lt_con||[])).transpose
37
+ all_ary_con = [all_ary_con.first.join(" and "),all_ary_con.last].flatten if all_ary_con.present?
38
+ #适用于查询字段为空的情况
39
+ con_hash.each{|k,v|con_hash[k] = nil if v == 'null'}
40
+
41
+ #Rails.logger.info(con_hash.inspect)
42
+ end
43
+ end
44
+ [con_hash.presence || nil,all_ary_con]
45
+ end
46
+
47
+
48
+ end
49
+ end
@@ -0,0 +1,36 @@
1
+ module JavyTool
2
+ module Csv
3
+ module ClassMethods
4
+ require 'csv'
5
+ #used to export xls or csv file
6
+ #need to extend in model
7
+ #use like following:
8
+ # format.xls {send_data @checkinouts.to_csv(col_sep: "\t")}
9
+ # or
10
+ # select_columns = "id,name,user_id"
11
+ # format.xls {send_data @checkinouts.select(_select_columns).to_csv(select: _select_columns)}
12
+ def to_csv(options = {},&block)
13
+ select_values = options.delete(:select)
14
+ objs = options.delete(:objs) # model instances list
15
+ select_values = select_values.split(",").collect{|e| e.split(/\s+|\./).last} if select_values.kind_of?(String)
16
+ options[:col_sep] ||= "\t"
17
+ CSV.generate(options) do |csv|
18
+ cols = select_values.presence || column_names
19
+ csv << cols
20
+ (objs || all).each do |item|
21
+ if block_given?
22
+ csv << yield(item,cols)
23
+ else
24
+ csv << item.attributes.values_at(*cols)
25
+ end
26
+ end
27
+ end
28
+ end
29
+ end
30
+
31
+
32
+ def self.included(receiver)
33
+ receiver.extend ClassMethods
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,22 @@
1
+ module JavyTool
2
+ module CustomError
3
+ class Error < StandardError; end
4
+
5
+ class AccessDenied < Error
6
+ attr_reader :action, :subject
7
+ attr_writer :default_message
8
+
9
+ def initialize(message = nil, action = nil, subject = nil)
10
+ @message = message
11
+ @action = action
12
+ @subject = subject
13
+ @default_message = I18n.t(:"custom_error.default", :default => "Access this page error.")
14
+ end
15
+
16
+ def to_s
17
+ @message || @default_message
18
+ end
19
+ end
20
+ end
21
+ end
22
+
@@ -1,6 +1,7 @@
1
1
  module JavyTool
2
2
  module Utils
3
3
  require "ostruct"
4
+ require "active_support"
4
5
  module_function
5
6
 
6
7
  #get user agent
@@ -71,6 +72,38 @@ module JavyTool
71
72
  Iconv.conv("utf8","gb2312",text)
72
73
  end
73
74
 
75
+
76
+ #用于抽奖
77
+ #传入代表中奖概率的数组如 1,10,20,30,40
78
+ #返回数组的索引
79
+ # 真实场景
80
+ # 奖项数组
81
+ # prize_arr =[
82
+ # ['id'=>1,'prize'=>'平板电脑','v'=>1],
83
+ # ['id'=>2,'prize'=>'数码相机','v'=>5],
84
+ # ['id'=>3,'prize'=>'音箱设备','v'=>10],
85
+ # ['id'=>4,'prize'=>'4G优盘','v'=>12],
86
+ # ['id'=>5,'prize'=>'10Q币','v'=>22],
87
+ # ['id'=>6,'prize'=>'下次没准就能中哦','v'=>50],
88
+ # ]
89
+ #
90
+ # 传给loggery的数组应为 1,5,10,12,22,50
91
+ # 返回的索引值即代表奖品的索引值
92
+
93
+ def lottery(*args)
94
+ args.extract_options!
95
+ total = args.inject{|sum,item|sum+=item}
96
+
97
+ args.flatten.each_with_index do |item,index|
98
+ rand_num = rand(1..total)#.tap{|it|puts ".#{item}.#{index}..#{it}.#{total}-------"}
99
+ if rand_num <= item
100
+ return index
101
+ else
102
+ total -= item
103
+ end
104
+ end
105
+ end
106
+
74
107
  # upload file,default to /tmp
75
108
  # return filename
76
109
  def upload_file(file,path=nil)
@@ -80,9 +113,6 @@ module JavyTool
80
113
  yield file.original_filename
81
114
  else
82
115
  Time.now.strftime("%Y%m%d%H%M%S") + rand(10000).to_s + File.extname(file.original_filename)
83
- # if File.extname(file.original_filename).downcase == ".apk"
84
- # file.original_filename.gsub(/[^\w]/,'') #
85
- # end
86
116
  end
87
117
  File.open(path+filename, "wb") { |f| f.write(file.read) }
88
118
  filename
@@ -1,3 +1,3 @@
1
1
  module JavyTool
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.4"
3
3
  end
data/lib/javy_tool.rb CHANGED
@@ -3,6 +3,9 @@ require "javy_tool/version"
3
3
  module JavyTool
4
4
  autoload :Utils, "javy_tool/utils"
5
5
  autoload :Breadcrumb, "javy_tool/breadcrumb"
6
+ autoload :Csv, "javy_tool/csv"
7
+ autoload :ConstructQuery, "javy_tool/construct_query"
8
+ autoload :CustomError, "javy_tool/custom_error"
6
9
  mattr_accessor :tool_config
7
10
  mattr_accessor :upload_path
8
11
  @@upload_path = "/tmp"
metadata CHANGED
@@ -1,34 +1,23 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: javy_tool
3
- version: !ruby/object:Gem::Version
4
- hash: 27
5
- prerelease:
6
- segments:
7
- - 0
8
- - 0
9
- - 2
10
- version: 0.0.2
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.4
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - javy_liu
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2014-01-02 00:00:00 Z
11
+ date: 2021-10-13 00:00:00.000000000 Z
19
12
  dependencies: []
20
-
21
13
  description: pack some used methods
22
- email:
14
+ email:
23
15
  - javy_liu@163.com
24
16
  executables: []
25
-
26
17
  extensions: []
27
-
28
18
  extra_rdoc_files: []
29
-
30
- files:
31
- - .gitignore
19
+ files:
20
+ - ".gitignore"
32
21
  - Gemfile
33
22
  - LICENSE.md
34
23
  - README.md
@@ -36,41 +25,32 @@ files:
36
25
  - javy_tool.gemspec
37
26
  - lib/javy_tool.rb
38
27
  - lib/javy_tool/breadcrumb.rb
28
+ - lib/javy_tool/construct_query.rb
29
+ - lib/javy_tool/csv.rb
30
+ - lib/javy_tool/custom_error.rb
39
31
  - lib/javy_tool/utils.rb
40
32
  - lib/javy_tool/version.rb
41
33
  homepage: https://github.com/javyliu/javy_tool
42
- licenses: []
43
-
34
+ licenses:
35
+ - MIT
36
+ metadata: {}
44
37
  post_install_message:
45
38
  rdoc_options: []
46
-
47
- require_paths:
39
+ require_paths:
48
40
  - lib
49
- required_ruby_version: !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
41
+ required_ruby_version: !ruby/object:Gem::Requirement
42
+ requirements:
52
43
  - - ">="
53
- - !ruby/object:Gem::Version
54
- hash: 3
55
- segments:
56
- - 0
57
- version: "0"
58
- required_rubygems_version: !ruby/object:Gem::Requirement
59
- none: false
60
- requirements:
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
46
+ required_rubygems_version: !ruby/object:Gem::Requirement
47
+ requirements:
61
48
  - - ">="
62
- - !ruby/object:Gem::Version
63
- hash: 3
64
- segments:
65
- - 0
66
- version: "0"
49
+ - !ruby/object:Gem::Version
50
+ version: '0'
67
51
  requirements: []
68
-
69
- rubyforge_project:
70
- rubygems_version: 1.8.24
52
+ rubygems_version: 3.0.6
71
53
  signing_key:
72
- specification_version: 3
54
+ specification_version: 4
73
55
  summary: some methods ofen used in my projects
74
56
  test_files: []
75
-
76
- has_rdoc: