summaryrefslogtreecommitdiffhomepage
path: root/applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm
diff options
context:
space:
mode:
Diffstat (limited to 'applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm')
-rw-r--r--applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm208
1 files changed, 208 insertions, 0 deletions
diff --git a/applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm b/applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm
new file mode 100644
index 0000000000..37c54be25f
--- /dev/null
+++ b/applications/luci-app-ddns/luasrc/view/ddns/overview_status.htm
@@ -0,0 +1,208 @@
+
+<!-- ++ BEGIN ++ Dynamic DNS ++ overview_status.htm ++ -->
+<script type="text/javascript">//<![CDATA[
+
+ // variables to store version information
+ var luci_version
+ var luci_build
+ var ddns_version
+ var ddns_required
+
+ // helper to extract section from objects id
+ // cbi.ddns.SECTION._xyz
+ function _id2section(id) {
+ var x = id.split(".");
+ return x[2];
+ }
+
+ // helper to move status data to the relevant
+ // screen objects
+ // called by XHR.poll and onclick_startstop
+ function _data2elements(data) {
+ // DDNS Service
+ // fill Version informations
+ luci_version = data[0].luci_ver
+ luci_build = data[0].luci_build
+ ddns_version = data[0].script_ver
+ ddns_required = data[0].script_min
+
+ // Service sections
+ for( i = 1; i < data.length; i++ )
+ {
+ var section = data[i].section // Section to handle
+ var cbx = document.getElementById("cbid.ddns." + section + ".enabled"); // Enabled
+ var btn = document.getElementById("cbid.ddns." + section + "._startstop"); // Start/Stop button
+ var rip = document.getElementById("cbid.ddns." + section + "._domainIP.two"); // Registered IP
+ var lup = document.getElementById("cbid.ddns." + section + "._update.one"); // Last Update
+ var nup = document.getElementById("cbid.ddns." + section + "._update.two"); // Next Update
+ if ( !(cbx && btn && rip && lup && nup) ) { return; } // security check
+
+ // process id
+ if (data[i].pid > 0) {
+ // stop always possible if process running
+ btn.value = "PID: " + data[i].pid;
+ btn.className = "cbi-button cbi-input-reset";
+ } else {
+ // default Start / enabled
+ btn.value = "<%:Start%>";
+ btn.className = "cbi-button cbi-input-apply";
+ }
+ btn.disabled = false; // button enabled
+
+ // last update
+ switch (data[i].datelast) {
+ case "_empty_":
+ lup.innerHTML = '<em><%:Unknown error%></em>' ;
+ break;
+ case "_never_":
+ lup.innerHTML = '<em><%:Never%></em>' ;
+ break;
+ default:
+ lup.innerHTML = data[i].datelast;
+ break;
+ }
+
+ // next update
+ switch (data[i].datenext) {
+ case "_empty_":
+ nup.innerHTML = '<em><%:Unknown error%></em>' ;
+ break;
+ case "_verify_":
+ nup.innerHTML = '<em><%:Verify%></em>';
+ break;
+ case "_runonce_":
+ case "_stopped_":
+ case "_disabled_":
+ if (cbx.checked && data[i].datenext == "_runonce_") {
+ nup.innerHTML = '<em><%:Run once%></em>';
+ } else if (cbx.checked) {
+ nup.innerHTML = '<em><%:Stopped%></em>';
+ } else {
+ nup.innerHTML = '<em><%:Disabled%></em>';
+ btn.value = '----------';
+ btn.className = "cbi-button cbi-input-button"; // no image
+ btn.disabled = true; // disabled
+ }
+ break;
+ default:
+ nup.innerHTML = data[i].datenext;
+ break;
+ }
+
+ // domain
+ // (data[i].domain ignored here
+
+ // registered IP
+ // rip.innerHTML = "Registered IP";
+ if (data[i].domain == "_nodomain_")
+ rip.innerHTML = '';
+ else if (data[i].reg_ip == "_nodata_")
+ rip.innerHTML = '<em><%:No data%></em>';
+ else
+ rip.innerHTML = data[i].reg_ip;
+
+ // monitored interfacce
+ // data[i].iface ignored here
+ }
+ }
+
+ // event handler for enabled checkbox
+ function onchange_enabled(id) {
+ // run original function in cbi.js
+ // whatever is done there
+ cbi_d_update(id);
+
+ var section = _id2section(id);
+ var cbx = document.getElementById("cbid.ddns." + section + ".enabled");
+ var btn = document.getElementById("cbid.ddns." + section + "._startstop");
+ if ( !(cbx && btn) ) { return; } // security check
+
+ var pid_txt = btn.value;
+ var pid_found = ( pid_txt.search("PID") >= 0 ) ? true : false;
+
+ if (pid_found) {
+ // btn.value = "PID: 0000";
+ btn.className = "cbi-button cbi-button-reset";
+ btn.disabled = false;
+ } else if (cbx.checked) {
+ btn.value = "<%:Start%>";
+ btn.className = "cbi-button cbi-button-apply";
+ btn.disabled = false;
+ } else {
+ btn.value = '----------';
+ btn.className = "cbi-button cbi-input-button"; // no image
+ btn.disabled = true; // disabled
+ }
+ }
+
+ // event handler for map.title link
+ function onclick_maptitle() {
+ var str = "<%:Version Information%>";
+ str += "\n\nluci-app-ddns:";
+ str += "\n\t<%:Version%>:\t" + luci_version;
+ str += "\n\t<%:Build%>:\t" + luci_build;
+ str += "\n\nddns-scripts <%:required%>:";
+ str += "\n\t<%:Version%>:\t" + ddns_required + " <%:or greater%>";
+ str += "\n\nddns-scripts <%:installed%>:";
+ str += "\n\t<%:Version%>:\t" + ddns_version;
+ str += "\n\n"
+ alert(str);
+ }
+
+ // event handler for start/stop button
+ function onclick_startstop(id) {
+ // extract section
+ var section = _id2section(id);
+ // get elements
+ var cbx = document.getElementById("cbid.ddns." + section + ".enabled"); // Enabled
+ var obj = document.getElementById("cbi-ddns-overview-status-legend"); // objext defined below to make in-/visible
+ if ( !(obj && cbx) ) { return; } // security check
+
+ // make me visible
+ obj.parentNode.style.display = "block";
+
+ // do start/stop
+ var btnXHR = new XHR();
+ btnXHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "startstop")%>/' + section + '/' + cbx.checked, null,
+ function(x, data) {
+ if (x.responseText == "_uncommited_") {
+ // we need a trick to display Ampersand "&" in stead of "&#38;" or "&amp;"
+ // after translation
+ txt="<%:Please [Save & Apply] your changes first%>";
+ alert( txt.replace(new RegExp("<%:&%>", "g"), "&") );
+ } else {
+ // should have data because status changed
+ // so update screen
+ if (data)
+ _data2elements(data);
+ }
+ // make me invisible
+ obj.parentNode.style.display = "none";
+ }
+ );
+ }
+
+ // force to immediate show status on page load (not waiting for XHR.poll)
+ XHR.get('<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
+ function(x, data) {
+ _data2elements(data);
+ }
+ );
+
+ // define only ONE XHR.poll in a page because if one is running it blocks the other one
+ // optimum is to define on Map or Section Level from here you can reach all elements
+ // we need update every 15 seconds only
+ XHR.poll(15, '<%=luci.dispatcher.build_url("admin", "services", "ddns", "status")%>', null,
+ function(x, data) {
+ _data2elements(data);
+ }
+ );
+
+//]]></script>
+
+<fieldset class="cbi-section" style="display:none">
+ <legend id="cbi-ddns-overview-status-legend"><%:Applying changes%></legend>
+ <img src="<%=resource%>/icons/loading.gif" alt="<%:Loading%>" style="vertical-align:middle" />
+ <span id="cbi-ddns-overview-status-text"><%:Waiting for changes to be applied...%></span>
+</fieldset>
+<!-- ++ END ++ Dynamic DNS ++ overview_status.htm ++ -->