Make update interval depend on the age of the Sone.
[Sone.git] / src / main / resources / templates / include / viewSone.html
index dbcfa4d..0cf4545 100644 (file)
@@ -1,37 +1,87 @@
-<div class="sone <% sone.status><%if sone.modified> modified<%/if>">
+<script language="javascript">
+
+       function getStatus(soneId) {
+               $.getJSON("ajax/getSoneStatus.ajax", {"sone": soneId}, function(data, textStatus) {
+                       updateStatus(soneId, data.status, data.modified, data.lastUpdated);
+                       /* seconds! */
+                       updateInterval = 60;
+                       if (data.age < 600) {
+                               updateInterval = 5;
+                       } else if (data.age < 86400) {
+                               updateInterval = 30;
+                       }
+                       setTimeout(function() {
+                               getStatus(soneId);
+                       }, updateInterval * 1000);
+               });
+       }
+
+       function updateStatus(soneId, status, modified, lastUpdated) {
+               $("#sone .sone#" + soneId).
+                       toggleClass("unknown", status == "unknown").
+                       toggleClass("idle", status == "idle").
+                       toggleClass("inserting", status == "inserting").
+                       toggleClass("downloading", status == "downloading").
+                       toggleClass("modified", modified);
+               $("#sone .sone#" + soneId + " .last-update span.time").text(lastUpdated);
+       }
+
+       registeredSones = {};
+
+       $(document).ready(function() {
+               $("#sone .sone").each(function() {
+                       soneId = $(this).attr("id");
+                       if (registeredSones[soneId]) {
+                               return;
+                       }
+                       registeredSones[soneId] = true;
+                       (function(soneId) {
+                               setTimeout(function() {
+                                       getStatus(soneId);
+                               }, 5000);
+                       })(soneId);
+               });
+       });
+</script>
+
+<div id="<% sone.id|html>" class="sone <% sone.status|html><%if sone.modified> modified<%/if>">
        <div class="unknown-marker" title="<%= View.Sone.Status.Unknown|l10n|html>">?</div>
        <div class="modified-marker" title="<%= View.Sone.Status.Modified|l10n|html>">!</div>
        <div class="download-marker" title="<%= View.Sone.Status.Downloading|l10n|html>">⬊</div>
        <div class="insert-marker" title="<%= View.Sone.Status.Inserting|l10n|html>">⬈</div>
        <div class="idle-marker" title="<%= View.Sone.Status.Idle|l10n|html>">✔</div>
-       <div class="last-update"><%= View.Sone.Label.LastUpdate|l10n|html> <% sone.time|date format="MMM d, yyyy, HH:mm:ss"></div>
-       <div class="profile-link"><a href="viewSone.html?sone=<% sone.id>" title="<% sone.requestUri|html>"><% sone.niceName|html></a></div>
+       <div class="last-update"><%= View.Sone.Label.LastUpdate|l10n|html> <span class="time"><% sone.time|date format="MMM d, yyyy, HH:mm:ss"></span></div>
+       <div class="profile-link"><a href="viewSone.html?sone=<% sone.id|html>" title="<% sone.requestUri|html>"><% sone.niceName|html></a></div>
        <div class="short-request-uri"><% sone.requestUri|substring start=4 length=43|html></div>
        <%ifnull ! currentSone>
                <%if ! sone.current>
                        <%if sone.friend>
                                <form class="unfollow" action="unfollowSone.html" method="post">
                                        <input type="hidden" name="formPassword" value="<% formPassword|html>" />
-                                       <input type="hidden" name="sone" value="<% sone.id>" />
+                                       <input type="hidden" name="sone" value="<% sone.id|html>" />
+                                       <input type="hidden" name="returnPage" value="<% request.uri|html>" />
                                        <button type="submit"><%= View.Sone.Button.UnfollowSone|l10n|html></button>
                                </form>
                        <%else>
                                <form class="follow" action="followSone.html" method="post">
                                        <input type="hidden" name="formPassword" value="<% formPassword|html>" />
-                                       <input type="hidden" name="sone" value="<% sone.id>" />
+                                       <input type="hidden" name="sone" value="<% sone.id|html>" />
+                                       <input type="hidden" name="returnPage" value="<% request.uri|html>" />
                                        <button type="submit"><%= View.Sone.Button.FollowSone|l10n|html></button>
                                </form>
                        <%/if>
                        <%if sone.blocked>
                                <form class="unblock" action="unblockSone.html" method="post">
                                        <input type="hidden" name="formPassword" value="<% formPassword|html>" />
-                                       <input type="hidden" name="sone" value="<% sone.id>" />
+                                       <input type="hidden" name="sone" value="<% sone.id|html>" />
+                                       <input type="hidden" name="returnPage" value="<% request.uri|html>" />
                                        <button type="submit"><%= View.Sone.Button.UnblockSone|l10n|html></button>
                                </form>
                        <%else>
                                <form class="block" action="blockSone.html" method="post">
                                        <input type="hidden" name="formPassword" value="<% formPassword|html>" />
-                                       <input type="hidden" name="sone" value="<% sone.id>" />
+                                       <input type="hidden" name="sone" value="<% sone.id|html>" />
+                                       <input type="hidden" name="returnPage" value="<% request.uri|html>" />
                                        <button type="submit"><%= View.Sone.Button.BlockSone|l10n|html></button>
                                </form>
                        <%/if>