fix order for feed

This commit is contained in:
chiu 2021-09-08 12:59:27 +08:00
parent c04c906eb4
commit 0d1645f101
2 changed files with 6 additions and 6 deletions

View File

@ -164,7 +164,7 @@ class AnnouncementsController < ApplicationController
else else
cats = ["all"] + cats cats = ["all"] + cats
end end
anns = anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 1 : 0, tmp ? nil : a["postdate"].to_time] } anns = anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse
end end
cats = cats.uniq cats = cats.uniq
tags = tags.uniq tags = tags.uniq
@ -502,13 +502,13 @@ class AnnouncementsController < ApplicationController
if devide_flag if devide_flag
feeds_anns = get_feed_announcements("widget") feeds_anns = get_feed_announcements("widget")
top_anns = top_anns + feeds_anns.select{|v| v['is_top']} top_anns = top_anns + feeds_anns.select{|v| v['is_top']}
top_anns = top_anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 1 : 0, tmp ? nil : a["postdate"].to_time] } top_anns = top_anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse
rest_count = widget_data_count - top_anns.count rest_count = widget_data_count - top_anns.count
if rest_count <= 0 if rest_count <= 0
anns = top_anns.take(widget_data_count) anns = top_anns.take(widget_data_count)
else else
rest_all_anns = feeds_anns.select{|v| v['is_top'] != true} + not_top_anns.take(rest_count) rest_all_anns = feeds_anns.select{|v| v['is_top'] != true} + not_top_anns.take(rest_count)
rest_anns = rest_all_anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 1 : 0, tmp ? nil : a["postdate"].to_time] }.take(rest_count) rest_anns = rest_all_anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse.take(rest_count)
anns = top_anns + rest_anns anns = top_anns + rest_anns
end end
end end

View File

@ -243,10 +243,10 @@ module AnnouncementsHelper
if announcements.count != 0 if announcements.count != 0
top_anns = announcements.select{|v| v.is_top} + feeds_anns.select{|v| v['is_top']} top_anns = announcements.select{|v| v.is_top} + feeds_anns.select{|v| v['is_top']}
rest_all_anns = feeds_anns.select{|v| v['is_top'] != true} + announcements.select{|v| !v.is_top} rest_all_anns = feeds_anns.select{|v| v['is_top'] != true} + announcements.select{|v| !v.is_top}
rest_anns = rest_all_anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 1 : 0, tmp ? nil : a["postdate"].to_time] } rest_anns = rest_all_anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse
all_sorted = top_anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 1 : 0, tmp ? nil : a["postdate"].to_time] } + rest_anns all_sorted = top_anns.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse + rest_anns
else else
all_sorted = feeds_anns.select{|v| v['is_top']}.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 1 : 0, tmp ? nil : a["postdate"].to_time] } + feeds_anns.select{|v| v['is_top'] != true}.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 1 : 0, tmp ? nil : a["postdate"].to_time] } all_sorted = feeds_anns.select{|v| v['is_top']}.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse + feeds_anns.select{|v| v['is_top'] != true}.sort_by { |a| tmp=a["postdate"].blank?;[tmp ? 0 : 1, tmp ? nil : a["postdate"].to_time] }.reverse
end end
all_filter = filter_by_keywords(all_sorted,params[:keywords],params[:stime],params[:etime]) all_filter = filter_by_keywords(all_sorted,params[:keywords],params[:stime],params[:etime])
else else