X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fresources%2Fstatic%2Fjavascript%2Fsone.js;h=9c99bb248eea6aac2bc5ebd61f684c545a3d604c;hb=63bd3117470b16325bd808b1b68d5d922a0fe156;hp=66f12af2eab00848051879e4324009056a75c41a;hpb=3d9651b5ce6a935bd027c42e8c530f8d87921797;p=Sone.git
diff --git a/src/main/resources/static/javascript/sone.js b/src/main/resources/static/javascript/sone.js
index 66f12af..9c99bb2 100644
--- a/src/main/resources/static/javascript/sone.js
+++ b/src/main/resources/static/javascript/sone.js
@@ -1,8 +1,8 @@
/* Sone JavaScript functions. */
-function registerInputTextareaSwap(inputSelector, defaultText) {
+function registerInputTextareaSwap(inputSelector, defaultText, inputFieldName, optional) {
$(inputSelector).each(function() {
- textarea = $("").blur(function() {
+ textarea = $("").blur(function() {
if ($(this).val() == "") {
$(this).hide();
$(this).data("inputField").show().removeAttr("disabled");
@@ -13,12 +13,16 @@ function registerInputTextareaSwap(inputSelector, defaultText) {
$(inputField).focus(function() {
$(this).hide().attr("disabled", "disabled");
textarea.show().focus();
- }).addClass("default").val(defaultText);
+ }).addClass("default");
+ (function(inputField) {
+ $.getJSON("ajax/getTranslation.ajax", {"key": defaultText}, function(data, textStatus) {
+ $(inputField).val(data.value);
+ });
+ })(inputField);
$(inputField.form).submit(function() {
- if (textarea.val() == "") {
+ if (!optional && (textarea.val() == "")) {
return false;
}
- $(inputField).val(textarea.val());
});
})(this, textarea);
});
@@ -52,3 +56,68 @@ function addCommentLinks() {
});
});
}
+
+/**
+ * Fires off an AJAX request to retrieve the current status of a Sone.
+ *
+ * @param soneId
+ * The ID of the Sone
+ */
+function getSoneStatus(soneId) {
+ $.getJSON("ajax/getSoneStatus.ajax", {"sone": soneId}, function(data, textStatus) {
+ updateSoneStatus(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() {
+ getSoneStatus(soneId);
+ }, updateInterval * 1000);
+ });
+}
+
+/**
+ * Updates the status of the given Sone.
+ *
+ * @param soneId
+ * The ID of the Sone to update
+ * @param status
+ * The status of the Sone (âidleâ, âunknownâ, âinsertingâ,
+ * âdownloadingâ)
+ * @param modified
+ * Whether the Sone is modified
+ * @param lastUpdated
+ * The date and time of the last update (formatted for display)
+ */
+function updateSoneStatus(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);
+}
+
+var watchedSones = {};
+
+/**
+ * Watches this Sone for updates to its status.
+ *
+ * @param soneId
+ * The ID of the Sone to watch
+ */
+function watchSone(soneId) {
+ if (watchedSones[soneId]) {
+ return;
+ }
+ watchedSones[soneId] = true;
+ (function(soneId) {
+ setTimeout(function() {
+ getSoneStatus(soneId);
+ }, 5000);
+ })(soneId);
+}