Просмотр исходного кода

Changement du rafraichissement manuel des flux

Au lieu de lancer un rafraichissement sur l'ensemble des flux, le rafraichissement se fait sur 10 flux simultanément. Quand un flux est rafraichit, il lance le rafraichissement d'un autre flux jusqu'à épuisement des flux disponibles.
Alexis Degrugillier 12 лет назад
Родитель
Сommit
ed61f9346f
1 измененных файлов с 28 добавлено и 17 удалено
  1. 28 17
      app/views/javascript/actualize.phtml

+ 28 - 17
app/views/javascript/actualize.phtml

@@ -3,12 +3,14 @@ var feeds = [];
 <?php foreach ($this->feeds as $feed) { ?>
 feeds.push("<?php echo Minz_Url::display (array ('c' => 'feed', 'a' => 'actualize', 'params' => array ('id' => $feed->id (), 'ajax' => '1')), 'php'); ?>");
 <?php } ?>
+var feed_count = feeds.length;
+var feed_processed = 0;
 
 function initProgressBar(init) {
 	if (init) {
 		$("body").after("\<div id=\"actualizeProgress\" class=\"actualizeProgress\">\
-			<?php echo Minz_Translate::t ('refresh'); ?> <span class=\"progress\">0 / " + feeds.length + "</span><br />\
-			<progress id=\"actualizeProgressBar\" value=\"0\" max=\"" + feeds.length + "\"></progress>\
+			<?php echo Minz_Translate::t ('refresh'); ?> <span class=\"progress\">0 / " + feed_count + "</span><br />\
+			<progress id=\"actualizeProgressBar\" value=\"0\" max=\"" + feed_count + "\"></progress>\
 		</div>");
 	} else {
 		window.location.reload();
@@ -16,27 +18,36 @@ function initProgressBar(init) {
 }
 function updateProgressBar(i) {
 	$("#actualizeProgressBar").val(i);
-	$("#actualizeProgress .progress").html(i + " / " + feeds.length);
+	$("#actualizeProgress .progress").html(i + " / " + feed_count);
 }
 
 function updateFeeds() {
-	if (feeds.length === 0) {
+	if (feed_count === 0) {
 		return;
 	}
 	initProgressBar(true);
 
-	var i = 0;
-	for (var f in feeds) {
-		$.ajax({
-			type: 'POST',
-			url: feeds[f],
-		}).done(function (data) {
-			i++;
-			updateProgressBar(i);
-
-			if (i === feeds.length) {
-				initProgressBar(false);
-			}
-		});
+	for (var i = 0; i < 10; i++) {
+		updateFeed();
 	}
 }
+
+function updateFeed() {
+	if (feeds.length === 0) {
+		return;
+	}
+	var feed = feeds.pop();
+	$.ajax({
+		type: 'POST',
+		url: feed,
+	}).done(function (data) {
+		feed_processed++;
+		updateProgressBar(feed_processed);
+
+		if (feed_processed === feed_count) {
+			initProgressBar(false);
+		} else {
+			updateFeed();
+		}
+	});
+}