Class: Milkode::PackageList

Inherits:
Object
  • Object
show all
Defined in:
lib/milkode/cdweb/lib/package_list.rb

Constant Summary collapse

VIEW_NUM =
7
ADD_NUM =
5
UPDATE_NUM =
5
FAV_NUM =
7
FAVORITE_LIST_NUM =
7
NEWS_ITEM_NUM =
20
EXCLUDE_UPDATE_SEC =
300

Instance Method Summary collapse

Constructor Details

#initialize(grndb, suburl) ⇒ PackageList

Returns a new instance of PackageList.



22
23
24
25
# File 'lib/milkode/cdweb/lib/package_list.rb', line 22

def initialize(grndb, suburl)
  @grndb  = grndb
  @suburl = suburl
end

Instance Method Details

#favorite_list(params) ⇒ Object



54
55
56
57
58
59
60
61
62
63
64
65
# File 'lib/milkode/cdweb/lib/package_list.rb', line 54

def favorite_list(params)
  names = @grndb.packages.favs.map{|r| r.name}[0..FAVORITE_LIST_NUM-1]

  list = names.map_with_index {|v, index|
    "<strong><a id='favorite_list_#{index}' href='#{Mkurl.new(@suburl + '/home/' + v, params).inherit_query_shead}' onclick='topic_path(\"favorite_list_#{index}\");'>#{v}</a></strong>"
  }.join("&nbsp;&nbsp;\n")

  <<EOF
#{list}&nbsp;&nbsp;
<a href="#{@suburl}/home?sort=favtime">...</a>
EOF
end

#favorite_list_sizeObject



50
51
52
# File 'lib/milkode/cdweb/lib/package_list.rb', line 50

def favorite_list_size
  @grndb.packages.favs.size
end

#news_items(locale) ⇒ Object



67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
# File 'lib/milkode/cdweb/lib/package_list.rb', line 67

def news_items(locale)
  updates = @grndb.packages.sort('updatetime')[0...NEWS_ITEM_NUM].map do |v|
    {
      kind: :update_news,
      package: v,
      timestamp: v.updatetime,
    }
  end

  adds = @grndb.packages.sort('addtime')[0...NEWS_ITEM_NUM].map do |v|
    {
      kind: :add_news,
      package: v,
      timestamp: v.addtime,
    }
  end

  items = (updates + adds).sort_by {|item|
    item[:timestamp]
  }.reverse
  .find_all {|v|
    if v[:kind] == :update_news &&
        v[:timestamp] - v[:package].addtime < EXCLUDE_UPDATE_SEC
      false
    else
      true
    end
  }[0...NEWS_ITEM_NUM]

  items.map {|item|
    v = item[:package]
    message = I18n.t(item[:kind], {package_name: "<a href=\"#{@suburl}/home/#{v.name}\">#{v.name}</a>", locale: locale})
    "<div class='news-item'>#{message} <span class='time'>#{news_time(item[:timestamp])}</span></div>"
  }.join("\n")
end

#top_addObject



37
38
39
# File 'lib/milkode/cdweb/lib/package_list.rb', line 37

def top_add
  grndb_list("addtime", ADD_NUM)
end

#top_favObject



45
46
47
48
# File 'lib/milkode/cdweb/lib/package_list.rb', line 45

def top_fav
  a = @grndb.packages.favs.map{|r| r.name}
  top_list(a[0...FAV_NUM], 'favtime')
end

#top_updateObject



41
42
43
# File 'lib/milkode/cdweb/lib/package_list.rb', line 41

def top_update
  grndb_list("updatetime", UPDATE_NUM)
end

#top_viewObject

topページへの表示数の調整は結構大切

view   .. 7
add    .. 5
update .. 5
fav    .. 5


33
34
35
# File 'lib/milkode/cdweb/lib/package_list.rb', line 33

def top_view
  grndb_list("viewtime", VIEW_NUM)
end