| <!DOCTYPE html> |
| <!-- |
| |
| Licensed under the Apache License, Version 2.0 (the "License"); you may not use |
| this file except in compliance with the License. You may obtain a copy of the |
| License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software distributed |
| under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR |
| CONDITIONS OF ANY KIND, either express or implied. See the License for the |
| specific language governing permissions and limitations under the License. |
| |
| --> |
| <html lang="en"> |
| <head> |
| <title>Replicator</title> |
| <meta http-equiv="Content-Type" content="text/html;charset=utf-8"> |
| <link rel="stylesheet" href="style/layout.css?0.11.0" type="text/css"> |
| <link rel="stylesheet" href="style/jquery-ui-1.8.11.custom.css" type="text/css"> |
| <script src="script/json2.js"></script> |
| <script src="script/sha1.js"></script> |
| <script src="script/jquery.js"></script> |
| <script src="script/jquery.couch.js"></script> |
| <script src="script/jquery.dialog.js"></script> |
| <script src="script/futon.js"></script> |
| <script src="script/jquery-ui-1.9.2.custom.min.js"></script> |
| <script> |
| $(document).ready(function() { |
| var allDatabases; |
| |
| $("fieldset input[type=radio]").click(function() { |
| var radio = this; |
| var fieldset = $(this).parents("fieldset").get(0); |
| $("input[type=text]", fieldset).each(function() { |
| this.disabled = radio.value == "local"; |
| if (!this.disabled) this.focus(); |
| }); |
| $('.local', fieldset).each(function() { |
| this.disabled = radio.value == "remote"; |
| if (!this.disabled) this.focus(); |
| }); |
| }); |
| |
| var getDatabases = function() { |
| $.couch.allDbs({ |
| success: function(dbs) { |
| allDatabases = dbs.sort(); |
| |
| $("fieldset select").each(function() { |
| var select = this; |
| $.each(dbs, function(idx, dbName) { |
| $("<option></option>").text(dbName).appendTo(select); |
| }); |
| select.selectedIndex = 0; |
| }); |
| |
| $('#to_name').autocomplete({ source: dbs }); |
| } |
| }); |
| }; |
| getDatabases(); |
| |
| $("button#swap").click(function() { |
| var fromName = $("#source select").val(); |
| $("#source select").val($("#target select").val()); |
| $("#target select").val(fromName); |
| |
| var fromUrl = $("#source input[type=text]").val(); |
| $("#source input[type=text]").val($("#target input[type=text]").val()); |
| $("#target input[type=text]").val(fromUrl); |
| |
| var fromType = $("#source input[type=radio]").filter(function() { |
| return this.checked; |
| }).val(); |
| var toType = $("#target input[type=radio]").filter(function() { |
| return this.checked; |
| }).val(); |
| $("#source input[value=" + toType + "]").click(); |
| $("#target input[value=" + fromType + "]").click(); |
| |
| $("#replicate").get(0).focus(); |
| return false; |
| }); |
| |
| $("button#replicate").click(function() { |
| $("#records tbody.content").empty(); |
| var targetIsLocal = $('#to_local:checked').length > 0; |
| var source = $("#from_local")[0].checked ? $("#from_name").val() : $("#from_url").val(); |
| var target = targetIsLocal ? $("#to_name").val() : $("#to_url").val(); |
| var repOpts = {}; |
| |
| if (targetIsLocal && $.inArray(target, allDatabases) < 0) { |
| if(!confirm('This will create a database named '+target+'. Ok?')) { |
| return; |
| } |
| else { |
| repOpts.create_target = true; |
| } |
| } |
| |
| if ($("#continuous")[0].checked) { |
| repOpts.continuous = true; |
| } |
| |
| if ($("#doc_ids").val()){ |
| try { |
| var doc_ids = JSON.parse($("#doc_ids").val()); |
| if ($.isArray(doc_ids)) { |
| repOpts.doc_ids = doc_ids; |
| } else { |
| $("#records tbody.footer td") |
| .text('Invalid format! Should be: ["doc1", "doc2", ...]'); |
| return false; |
| } |
| } catch (e) { |
| $("#records tbody.footer td") |
| .text('Invalid format! Should be: ["doc1", "doc2", ...]'); |
| return false; |
| } |
| } |
| $.couch.replicate(source, target, { |
| success: function(resp) { |
| if ( resp.history == null || resp._local_id) { |
| $("<tr><th></th></tr>") |
| .find("th").text(JSON.stringify(resp)).end() |
| .appendTo("#records tbody.content"); |
| $("#records tbody tr").removeClass("odd").filter(":odd").addClass("odd"); |
| $("#records tbody.footer td") |
| .text((resp._local_id)? "Continuous replication" : |
| "Named document replication"); |
| } else { |
| $.each(resp.history, function(idx, record) { |
| $("<tr><th></th></tr>") |
| .find("th").text(JSON.stringify(record)).end() |
| .appendTo("#records tbody.content"); |
| }); |
| $("#records tbody tr").removeClass("odd").filter(":odd").addClass("odd"); |
| $("#records tbody.footer td").text("Replication session " + resp.session_id); |
| |
| if (repOpts.create_target) { |
| getDatabases(); |
| } |
| } |
| } |
| }, repOpts); |
| }); |
| }); |
| </script> |
| </head> |
| <body><div id="wrap"> |
| <h1> |
| <a href="index.html">Overview</a> |
| <strong>Replicator</strong> |
| </h1> |
| <div id="content"> |
| |
| <form id="replicator"> |
| <fieldset id="source"> |
| <legend>Replicate changes from:</legend> |
| <p> |
| <input type="radio" id="from_local" name="from_type" value="local" checked> |
| <label for="from_local">Local Database: </label> |
| <select id="from_name" name="from_name" class="local"></select> |
| </p><p> |
| <input type="radio" id="from_to_remote" name="from_type" value="remote"> |
| <label for="from_to_remote">Remote database: </label> |
| <input type="text" id="from_url" name="from_url" size="30" value="http://" disabled> |
| </p> |
| </fieldset> |
| <p class="swap"><button id="swap" tabindex="99">⇄</button></p> |
| <fieldset id="target"> |
| <legend>to:</legend> |
| <p> |
| <input type="radio" id="to_local" name="to_type" value="local" checked> |
| <label for="to_local">Local database: </label> |
| <input type="text" id="to_name" name="to_name" class="local"></select> |
| </p><p> |
| <input type="radio" id="to_remote" name="to_type" value="remote"> |
| <label for="to_remote">Remote database: </label> |
| <input type="text" id="to_url" name="to_url" size="30" value="http://" disabled> |
| </p> |
| </fieldset> |
| <p class="actions"> |
| <label style="float: left; padding-left: 5px">Document IDs: <input type="text" id="doc_ids" name="doc_ids" size="25" value=""></label> |
| <label><input type="checkbox" name="continuous" value="continuous" id="continuous"> Continuous</label> |
| <button id="replicate" type="button">Replicate</button> |
| </p> |
| </form> |
| |
| <table id="records" class="listing" cellspacing="0"> |
| <caption>Replication History</caption> |
| <thead><tr> |
| <th>Event</th> |
| </tr></thead> |
| <tbody class="content"></tbody> |
| <tbody class="footer"><tr> |
| <td colspan="4">No replication</td> |
| </tr></tbody> |
| </table> |
| |
| </div> |
| </div></body> |
| </html> |