fix timeout error for too many album

This commit is contained in:
chiu 2020-02-04 16:18:36 +08:00
parent 3e813a73b5
commit 576b763046
6 changed files with 121 additions and 48 deletions

View File

@ -111,6 +111,14 @@ $(function () {
}); });
} }
}); });
Array.prototype.uniq = function(){
var attr = this
attr = $.grep(attr, function(v, k){
return $.inArray(v ,attr) === k;
});
return attr;
}
function batch_crop(){ function batch_crop(){
var check_li = $('#imgholder').find("input[type='checkbox']:checked").parents('li'); var check_li = $('#imgholder').find("input[type='checkbox']:checked").parents('li');
var image_ids =[]; var image_ids =[];
@ -372,11 +380,13 @@ $(function() {
$container.sortable("enable"); $container.sortable("enable");
$(".order-edit-notification").slideDown(); $(".order-edit-notification").slideDown();
images_order = $container.sortable( "toArray", { attribute: "data-image-id" }); images_order = $container.sortable( "toArray", { attribute: "data-image-id" });
images_order = images_order.uniq();
$container.data("order-edit","1"); $container.data("order-edit","1");
translate(el,'','gallery.save_order',false) translate(el,'','gallery.save_order',false)
}else{ }else{
var temp = $container.sortable( "toArray", { attribute: "data-image-id" }), var temp = $container.sortable( "toArray", { attribute: "data-image-id" }),
type = $container.attr("id"); type = $container.attr("id");
temp = temp.uniq()
if(images_order.toString() != temp.toString()){ if(images_order.toString() != temp.toString()){
$.ajax({ $.ajax({
url : "/admin/galleries/order", url : "/admin/galleries/order",

View File

@ -4,6 +4,7 @@ class Admin::GalleriesController < OrbitAdminController
before_filter :setup_vars before_filter :setup_vars
before_action :authenticate_user, :except => "imgs" before_action :authenticate_user, :except => "imgs"
before_action :log_user_action before_action :log_user_action
layout :compute_layout
find_tag = Tag.all.select{|value| value.name==I18n.t('gallery.not_show_desc')} find_tag = Tag.all.select{|value| value.name==I18n.t('gallery.not_show_desc')}
if find_tag.length==0 if find_tag.length==0
module_app_id = ModuleApp.where(:key=>"gallery").first[:_id] module_app_id = ModuleApp.where(:key=>"gallery").first[:_id]
@ -38,7 +39,13 @@ class Admin::GalleriesController < OrbitAdminController
end end
end end
end end
def compute_layout
if action_name== 'index' && !params['page_no'].nil?
false
else
'back_end'
end
end
def rotate_images def rotate_images
begin begin
image_ids = params['image_ids'].split(',') image_ids = params['image_ids'].split(',')
@ -250,27 +257,42 @@ class Admin::GalleriesController < OrbitAdminController
finish = AlbumVariable.first.finish rescue false finish = AlbumVariable.first.finish rescue false
render :json => {'percent' => progress_percent, 'filename' => progress_filename, 'finish' => finish }.to_json render :json => {'percent' => progress_percent, 'filename' => progress_filename, 'finish' => finish }.to_json
end end
def index def filter_album
Album.each do |album|
if album.album_colors.first.nil?
album.album_colors.create('color' => 'transparent')
end
end
@tags = @module_app.tags @tags = @module_app.tags
categories = @module_app.categories.enabled categories = @module_app.categories.enabled
@filter_fields = filter_fields(categories, @tags) @filter_fields = filter_fields(categories, @tags)
@filter_fields.delete(:status) @filter_fields.delete(:status)
@albums = Album.where(:order => -1).desc(:created_at).with_categories(filters("category")).with_tags(filters("tag")) albums1 = Album.where(:order => -1).desc(:created_at).with_categories(filters("category")).with_tags(filters("tag"))
@albums = search_data(@albums,[:name]) albums1 = search_data(albums1,[:name])
albums = Album.where(:order.gt => -1).asc(:order).with_categories(filters("category")).with_tags(filters("tag")) albums2 = Album.where(:order.gt => -1).asc(:order).with_categories(filters("category")).with_tags(filters("tag"))
albums = search_data(albums,[:name]) albums2 = search_data(albums2,[:name])
@albums = @albums.concat(albums) @fiter_albums = albums1.concat(albums2)
if AlbumColor.count!=0 end
if AlbumColor.all.desc('updated_at').first[:color] == 'transparent' def index
@color_save = '' album_length = Album.all.count
else album_sort = Album.all.asc(:created_at)
@color_save = AlbumColor.desc('updated_at').first[:color] if album_sort.first.album_colors.first.nil?
album_sort.each_with_index do |album|
if album.album_colors.first.nil?
album.album_colors.create('color' => 'transparent')
end end
end
end
@url = request.original_fullpath
if params['page_no'].nil?
@show_script = true
@albums = filter_album.take 50
else
@show_script = false
start = (params['page_no'].to_i - 1)*50
@albums = filter_album[start...start+50]
end
if AlbumColor.count!=0
if AlbumColor.all.desc('updated_at').first[:color] == 'transparent'
@color_save = ''
else
@color_save = AlbumColor.desc('updated_at').first[:color]
end
else else
@color_save = 'transparent' @color_save = 'transparent'
end end

View File

@ -1,31 +1,67 @@
<%= stylesheet_link_tag "gallery" %> <% if @show_script %>
<%= stylesheet_link_tag "lib/tags-groups" %> <%= stylesheet_link_tag "gallery" %>
<% content_for :page_specific_javascript do %> <%= stylesheet_link_tag "lib/tags-groups" %>
<%= javascript_include_tag "lib/jquery-ui-1.10.0.custom.min" %> <% content_for :page_specific_javascript do %>
<%= javascript_include_tag "jquery.masonry.min.js" %> <%= javascript_include_tag "lib/jquery-ui-1.10.0.custom.min" %>
<%= javascript_include_tag "jquery.lite.image.resize.js" %> <%= javascript_include_tag "jquery.masonry.min.js" %>
<%= javascript_include_tag "gallery" %> <%= javascript_include_tag "jquery.lite.image.resize.js" %>
<% end %> <%= javascript_include_tag "gallery" %>
<%= render_filter @filter_fields, "orbit_gallery" %> <script type="text/javascript">
<div class="order-edit-notification">Albums re-ordering enabled.</div> var page_no = 2
<%= render 'recreate_thumb' %> var catch_flag = true
<div class="rgbody" style='float: left;'> var max_page = <%= (@fiter_albums.length/50).ceil %>
<ul id="orbit_gallery" class="gallery clearfix" data-gallery-id="gallery" $('.bottomnav').ready(function(){
style='display: inline-flex;flex-wrap: wrap;'> function load_html_func(){
<%= render :partial => "album", :collection => @albums %> $('#load_html').text("<%= t('gallery.wait_time') %>")
</ul> if (catch_flag){
</div> catch_flag = true;
<div class="bottomnav clearfix"> $.ajax({
<div class="action pull-right"> type : "get",
<% if can_edit_or_delete?(nil) %> url : "<%= @url %>",
<a href="#" class="btn btn-small btn-info order-btn-class" id="edit-order-btn"><%= t('gallery.edit_order') %></a> dataType : "text",
<% end %> data:{page_no: page_no},
global:false,
success: function(data)
{
$('#orbit_gallery').append(data)
page_no++
catch_flag = true
if (max_page < page_no){
$('#load_html').hide()
}
$('#load_html').text("<%= t('gallery.load_html') %>")
},
error : function(data){
catch_flag = true
alert('please try again later.')
}
});
}
}
$('#load_html').click(load_html_func)
})
</script>
<% end %>
<%= render_filter @filter_fields, "orbit_gallery" %>
<div class="order-edit-notification">Albums re-ordering enabled.</div>
<%= render 'recreate_thumb' %>
<div class="rgbody" style='float: left;'>
<ul id="orbit_gallery" class="gallery clearfix" data-gallery-id="gallery"
style='display: inline-flex;flex-wrap: wrap;'>
<%= render :partial => "album", :collection => @albums %>
</ul>
</div> </div>
</div> <div class="bottomnav clearfix">
<div class="action pull-right">
<% if can_edit_or_delete?(nil) %>
<a href="#" class="btn btn-small btn-info order-btn-class" id="edit-order-btn"><%= t('gallery.edit_order') %></a>
<% end %>
<% if @fiter_albums.length > 50 %>
<button class="btn btn-small btn-info" id="load_html"><%= t('gallery.load_html') %></button>
<% end %>
</div>
</div>
<% else %>
<%= render :partial => "album", :collection => @albums %>
<% end %>

View File

@ -1 +1,2 @@
<%= render_view %> <%= render_view %>

View File

@ -1,6 +1,8 @@
en: en:
gallery: gallery:
load_html: Load next 50 data
wait_time: please wait a minute
show_desc: Show the album description show_desc: Show the album description
not_show_desc: Don't show the album description not_show_desc: Don't show the album description
show_original_image: Show the original picture show_original_image: Show the original picture

View File

@ -1,6 +1,8 @@
zh_tw: zh_tw:
gallery: gallery:
load_html: 存取下50筆
wait_time: 請稍等
show_desc: 顯示相簿描述 show_desc: 顯示相簿描述
not_show_desc: 不顯示相簿描述 not_show_desc: 不顯示相簿描述
show_original_image: 顯示原始圖片 show_original_image: 顯示原始圖片