mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
new UI - volume page - implement Recurring Snapshot action.
This commit is contained in:
parent
5d0d69ce48
commit
67cfa3582e
@ -224,3 +224,312 @@
|
||||
Please confirm you want to create snapshot for this volume.</p>
|
||||
</div>
|
||||
<!-- Create Snapshot Dialog (end) -->
|
||||
|
||||
<!-- Recurring Snapshots Dialog (begin) -->
|
||||
<div id="dialog_recurring_snapshot" title="Recurring Snapshot" style="display:none;">
|
||||
<div class="dialog_snapshotcontainer">
|
||||
<div class="dialog_snapshotleft" id="dialog_snapshotleft">
|
||||
|
||||
<div class="dialog_snapshotleft_list">
|
||||
<div class="dialog_snapshotleft_label">
|
||||
Hourly:</div>
|
||||
<div class="dialog_snapshotleft_info" id="dialog_snapshot_hourly_info_unset">
|
||||
<p><i> Please click <b>'Edit'</b> to set your <b>hourly</b> recurring snapshot schedule</i></p>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_info" id="dialog_snapshot_hourly_info_set" style="display:none">
|
||||
<span id="read_hourly_minute">mm</span></span><span> Minute(s) Past the Hour</span><span id="read_hourly_timezone"></span>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_max">
|
||||
<p>Keeping:</p>
|
||||
<span id="read_hourly_max">N/A</span></div>
|
||||
<div class="dialog_snapshotleft_actions">
|
||||
<a id="hourly_edit_link" href="#">Edit</a> | <a id="hourly_delete_link" href="#"> Delete</a></div>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_list">
|
||||
<div class="dialog_snapshotleft_label">
|
||||
Daily:</div>
|
||||
<div class="dialog_snapshotleft_info" id="dialog_snapshot_daily_info_unset">
|
||||
<p><i> Please click <b>'Edit'</b> to set your <b>daily</b> recurring snapshot schedule</i></p>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_info" id="dialog_snapshot_daily_info_set" style="display:none">
|
||||
<span id="read_daily_hour">hh</span><span>:</span><span id="read_daily_minute">mm</span>
|
||||
<span id="read_daily_meridiem">AM</span><span id="read_daily_timezone"></span>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_max">
|
||||
<p>
|
||||
Keeping:</p>
|
||||
<span id="read_daily_max">N/A</span></div>
|
||||
<div class="dialog_snapshotleft_actions">
|
||||
<a id="daily_edit_link" href="#">Edit</a> | <a id="daily_delete_link" href="#"> Delete</a></div>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_list">
|
||||
<div class="dialog_snapshotleft_label">
|
||||
Weekly:</div>
|
||||
<div class="dialog_snapshotleft_info" id="dialog_snapshot_weekly_info_unset">
|
||||
<p><i> Please click <b>'Edit'</b> to set your <b>weekly</b> recurring snapshot schedule</i></p>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_info" id="dialog_snapshot_weekly_info_set" style="display:none">
|
||||
<span id="read_weekly_hour">hh</span><span>:</span><span id="read_weekly_minute">mm</span>
|
||||
<span id="read_weekly_meridiem">AM</span><span id="read_weekly_timezone"></span>
|
||||
<span id="read_weekly_day_of_week">day-of-week</span>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_max">
|
||||
<p>Keeping:</p>
|
||||
<span id="read_weekly_max">N/A</span></div>
|
||||
<div class="dialog_snapshotleft_actions">
|
||||
<a id="weekly_edit_link" href="#">Edit</a> | <a id="weekly_delete_link" href="#"> Delete</a></div>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_list">
|
||||
<div class="dialog_snapshotleft_label">
|
||||
Monthly:</div>
|
||||
<div class="dialog_snapshotleft_info" id="dialog_snapshot_monthly_info_unset">
|
||||
<p><i> Please click <b>'Edit'</b> to set your <b>monthly</b> recurring snapshot schedule</i></p>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_info" id="dialog_snapshot_monthly_info_set" style="display:none">
|
||||
<span id="read_monthly_hour">hh</span><span>:</span><span id="read_monthly_minute">mm</span>
|
||||
<span id="read_monthly_meridiem">AM</span><span id="read_monthly_timezone"></span>
|
||||
<span id="read_monthly_day_of_month">day-of-month</span>
|
||||
</div>
|
||||
<div class="dialog_snapshotleft_max">
|
||||
<p>Keeping:</p>
|
||||
<span id="read_monthly_max">N/A</span></div>
|
||||
<div class="dialog_snapshotleft_actions">
|
||||
<a id="monthly_edit_link" href="#">Edit</a> | <a id="monthly_delete_link" href="#"> Delete</a></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="dialog_snapshotright" id="dialog_snapshotright">
|
||||
<div class="dialog_snapshotright_infotext" style="display:none"> Cick Edit to Schedule</div>
|
||||
<div class="dialog_snapshots_editcontent" style="display:block;">
|
||||
<div class="dialog_snapshots_editcontent_title">
|
||||
<p> Edit:</p>
|
||||
<span id="edit_interval_type" style="text-decoration:underline">Interval Type</span>
|
||||
</div>
|
||||
<div class="dialog_formcontent">
|
||||
<form action="#" method="post" id="form4">
|
||||
<ol>
|
||||
<li>
|
||||
<label for="add_volume_name" style="width:75px">
|
||||
Time:</label>
|
||||
<span id="edit_hardcoding_hour" style="display:none">00</span>
|
||||
<span id="edit_hour_container">
|
||||
|
||||
<select class="snapselect" id="edit_hour">
|
||||
<option value="00">00</option>
|
||||
<option value="01">01</option>
|
||||
<option value="02">02</option>
|
||||
<option value="03">03</option>
|
||||
<option value="04">04</option>
|
||||
<option value="05">05</option>
|
||||
<option value="06">06</option>
|
||||
<option value="07">07</option>
|
||||
<option value="08">08</option>
|
||||
<option value="09">09</option>
|
||||
<option value="10">10</option>
|
||||
<option value="11">11</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<span id="edit_time_colon">:</span>
|
||||
|
||||
<span id="edit_minute_container">
|
||||
<select class="snapselect" id="edit_minute">
|
||||
<option value="00">00</option>
|
||||
<option value="01">01</option>
|
||||
<option value="02">02</option>
|
||||
<option value="03">03</option>
|
||||
<option value="04">04</option>
|
||||
<option value="05">05</option>
|
||||
<option value="06">06</option>
|
||||
<option value="07">07</option>
|
||||
<option value="08">08</option>
|
||||
<option value="09">09</option>
|
||||
<option value="10">10</option>
|
||||
<option value="11">11</option>
|
||||
<option value="12">12</option>
|
||||
<option value="13">13</option>
|
||||
<option value="14">14</option>
|
||||
<option value="15">15</option>
|
||||
<option value="16">16</option>
|
||||
<option value="17">17</option>
|
||||
<option value="18">18</option>
|
||||
<option value="19">19</option>
|
||||
<option value="20">20</option>
|
||||
<option value="21">21</option>
|
||||
<option value="22">22</option>
|
||||
<option value="23">23</option>
|
||||
<option value="24">24</option>
|
||||
<option value="25">25</option>
|
||||
<option value="26">26</option>
|
||||
<option value="27">27</option>
|
||||
<option value="28">28</option>
|
||||
<option value="29">29</option>
|
||||
<option value="30">30</option>
|
||||
<option value="31">31</option>
|
||||
<option value="32">32</option>
|
||||
<option value="33">33</option>
|
||||
<option value="34">34</option>
|
||||
<option value="35">35</option>
|
||||
<option value="36">36</option>
|
||||
<option value="37">37</option>
|
||||
<option value="38">38</option>
|
||||
<option value="39">39</option>
|
||||
<option value="40">40</option>
|
||||
<option value="41">41</option>
|
||||
<option value="42">42</option>
|
||||
<option value="43">43</option>
|
||||
<option value="44">44</option>
|
||||
<option value="45">45</option>
|
||||
<option value="46">46</option>
|
||||
<option value="47">47</option>
|
||||
<option value="48">48</option>
|
||||
<option value="49">49</option>
|
||||
<option value="50">50</option>
|
||||
<option value="51">51</option>
|
||||
<option value="52">52</option>
|
||||
<option value="53">53</option>
|
||||
<option value="54">54</option>
|
||||
<option value="55">55</option>
|
||||
<option value="56">56</option>
|
||||
<option value="57">57</option>
|
||||
<option value="58">58</option>
|
||||
<option value="59">59</option>
|
||||
</select>
|
||||
</span>
|
||||
|
||||
<span id="edit_past_the_hour" style="display:none"> Minute(s) Past the Hour</span>
|
||||
|
||||
<span id="edit_meridiem_container">
|
||||
<select class="snapselect"id="edit_meridiem">
|
||||
<option value="AM">AM</option>
|
||||
<option value="PM">PM</option>
|
||||
</select>
|
||||
</span>
|
||||
</li>
|
||||
<li style="margin-top:10px;" id="edit_day_of_week_container">
|
||||
<label for="filter" style="width:75px">
|
||||
Day of Week:</label>
|
||||
<select class="snapselect"id="edit_day_of_week">
|
||||
<option value="1">Sunday</option>
|
||||
<option value="2">Monday</option>
|
||||
<option value="3">Tuesday</option>
|
||||
<option value="4">Wednesday</option>
|
||||
<option value="5">Thursday</option>
|
||||
<option value="6">Friday</option>
|
||||
<option value="7">Saturday</option>
|
||||
</select>
|
||||
</li>
|
||||
<li style="margin-top:10px;" id="edit_day_of_month_container">
|
||||
<label for="filter" style="width:75px">
|
||||
Day of Month:</label>
|
||||
<select class="snapselect" id="edit_day_of_month">
|
||||
<option value="1">1</option>
|
||||
<option value="2">2</option>
|
||||
<option value="3">3</option>
|
||||
<option value="4">4</option>
|
||||
<option value="5">5</option>
|
||||
<option value="6">6</option>
|
||||
<option value="7">7</option>
|
||||
<option value="8">8</option>
|
||||
<option value="9">9</option>
|
||||
<option value="10">10</option>
|
||||
<option value="11">11</option>
|
||||
<option value="12">12</option>
|
||||
<option value="13">13</option>
|
||||
<option value="14">14</option>
|
||||
<option value="15">15</option>
|
||||
<option value="16">16</option>
|
||||
<option value="17">17</option>
|
||||
<option value="18">18</option>
|
||||
<option value="19">19</option>
|
||||
<option value="20">20</option>
|
||||
<option value="21">21</option>
|
||||
<option value="22">22</option>
|
||||
<option value="23">23</option>
|
||||
<option value="24">24</option>
|
||||
<option value="25">25</option>
|
||||
<option value="26">26</option>
|
||||
<option value="27">27</option>
|
||||
<option value="28">28</option>
|
||||
</select>
|
||||
</li>
|
||||
<li style="margin-top:10px;">
|
||||
<label for="edit_timezone" style="width:75px">
|
||||
Time Zone:</label>
|
||||
<select class="snapselect" id="edit_timezone" style="width:240px">
|
||||
<option value='Etc/GMT+12'>[UTC-12:00] GMT-12:00</option>
|
||||
<option value='Etc/GMT+11'>[UTC-11:00] GMT-11:00</option>
|
||||
<option value='Pacific/Samoa'>[UTC-11:00] Samoa Standard Time</option>
|
||||
<option value='Pacific/Honolulu'>[UTC-10:00] Hawaii Standard Time</option>
|
||||
<option value='US/Alaska'>[UTC-09:00] Alaska Standard Time</option>
|
||||
<option value='America/Los_Angeles'>[UTC-08:00] Pacific Standard Time</option>
|
||||
<option value='Mexico/BajaNorte'>[UTC-08:00] Baja California</option>
|
||||
<option value='US/Arizona'>[UTC-07:00] Arizona</option>
|
||||
<option value='US/Mountain'>[UTC-07:00] Mountain Standard Time</option>
|
||||
<option value='America/Chihuahua'>[UTC-07:00] Chihuahua, La Paz</option>
|
||||
<option value='America/Chicago'>[UTC-06:00] Central Standard Time</option>
|
||||
<option value='America/Costa_Rica'>[UTC-06:00] Central America</option>
|
||||
<option value='America/Mexico_City'>[UTC-06:00] Mexico City, Monterrey</option>
|
||||
<option value='Canada/Saskatchewan'>[UTC-06:00] Saskatchewan</option>
|
||||
<option value='America/Bogota'>[UTC-05:00] Bogota, Lima</option>
|
||||
<option value='America/New_York'>[UTC-05:00] Eastern Standard Time</option>
|
||||
<option value='America/Caracas'>[UTC-04:00] Venezuela Time</option>
|
||||
<option value='America/Asuncion'>[UTC-04:00] Paraguay Time</option>
|
||||
<option value='America/Cuiaba'>[UTC-04:00] Amazon Time</option>
|
||||
<option value='America/Halifax'>[UTC-04:00] Atlantic Standard Time</option>
|
||||
<option value='America/La_Paz'>[UTC-04:00] Bolivia Time</option>
|
||||
<option value='America/Santiago'>[UTC-04:00] Chile Time</option>
|
||||
<option value='America/St_Johns'>[UTC-03:30] Newfoundland Standard Time</option>
|
||||
<option value='America/Araguaina'>[UTC-03:00] Brasilia Time</option>
|
||||
<option value='America/Argentina/Buenos_Aires'>[UTC-03:00] Argentine Time</option>
|
||||
<option value='America/Cayenne'>[UTC-03:00] French Guiana Time</option>
|
||||
<option value='America/Godthab'>[UTC-03:00] Greenland Time</option>
|
||||
<option value='America/Montevideo'>[UTC-03:00] Uruguay Time]</option>
|
||||
<option value='Etc/GMT+2'>[UTC-02:00] GMT-02:00</option>
|
||||
<option value='Atlantic/Azores'>[UTC-01:00] Azores Time</option>
|
||||
<option value='Atlantic/Cape_Verde'>[UTC-01:00] Cape Verde Time</option>
|
||||
<option value='Africa/Casablanca'>[UTC] Casablanca</option>
|
||||
<option value='Etc/UTC'>[UTC] Coordinated Universal Time</option>
|
||||
<option value='Atlantic/Reykjavik'>[UTC] Reykjavik</option>
|
||||
<option value='Europe/London'>[UTC] Western European Time</option>
|
||||
<option value='CET'>[UTC+01:00] Central European Time</option>
|
||||
<option value='Europe/Bucharest'>[UTC+02:00] Eastern European Time</option>
|
||||
<option value='Africa/Johannesburg'>[UTC+02:00] South Africa Standard Time</option>
|
||||
<option value='Asia/Beirut'>[UTC+02:00] Beirut</option>
|
||||
<option value='Africa/Cairo'>[UTC+02:00] Cairo</option>
|
||||
<option value='Asia/Jerusalem'>[UTC+02:00] Israel Standard Time</option>
|
||||
<option value='Europe/Minsk'>[UTC+02:00] Minsk</option>
|
||||
<option value='Europe/Moscow'>[UTC+03:00] Moscow Standard Time</option>
|
||||
<option value='Africa/Nairobi'>[UTC+03:00] Eastern African Time</option>
|
||||
<option value='Asia/Karachi'>[UTC+05:00] Pakistan Time</option>
|
||||
<option value='Asia/Kolkata'>[UTC+05:30] India Standard Time</option>
|
||||
<option value='Asia/Bangkok'>[UTC+05:30] Indochina Time</option>
|
||||
<option value='Asia/Shanghai'>[UTC+08:00] China Standard Time</option>
|
||||
<option value='Asia/Kuala_Lumpur'>[UTC+08:00] Malaysia Time</option>
|
||||
<option value='Australia/Perth'>[UTC+08:00] Western Standard Time (Australia)</option>
|
||||
<option value='Asia/Taipei'>[UTC+08:00] Taiwan</option>
|
||||
<option value='Asia/Tokyo'>[UTC+09:00] Japan Standard Time</option>
|
||||
<option value='Asia/Seoul'>[UTC+09:00] Korea Standard Time</option>
|
||||
<option value='Australia/Adelaide'>[UTC+09:30] Central Standard Time (South Australia)</option>
|
||||
<option value='Australia/Darwin'>[UTC+09:30] Central Standard Time (Northern Territory)</option>
|
||||
<option value='Australia/Brisbane'>[UTC+10:00] Eastern Standard Time (Queensland)</option>
|
||||
<option value='Australia/Canberra'>[UTC+10:00] Eastern Standard Time (New South Wales)</option>
|
||||
<option value='Pacific/Guam'>[UTC+10:00] Chamorro Standard Time</option>
|
||||
<option value='Pacific/Auckland'>[UTC+12:00] New Zealand Standard Time</option>
|
||||
</select>
|
||||
</li>
|
||||
<li style="margin-top:10px;">
|
||||
<label for="edit_max" style="width:75px">
|
||||
Keep:</label>
|
||||
<input class="text" style="width: 68px;" type="text" id="edit_max"/>
|
||||
<span>Snapshot(s)</span>
|
||||
<div id="edit_max_errormsg" class="dialog_formcontent_errormsg" style="display:none;"></div>
|
||||
</li>
|
||||
</ol>
|
||||
<input class="ui-state-default" type="submit" id="apply_button" value="Apply Schedule" style="background-color:Yellow; width: 150px; height:20px; margin:15px 0 0 0;"/>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<!-- Take Snapshots Dialog (end) -->
|
||||
@ -33,7 +33,8 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap)
|
||||
$link.data("isAsyncJob", apiInfo.isAsyncJob);
|
||||
$link.data("asyncJobResponse", apiInfo.asyncJobResponse);
|
||||
$link.data("afterActionSeccessFn", apiInfo.afterActionSeccessFn);
|
||||
$link.data("dialogBeforeActionFn", apiInfo.dialogBeforeActionFn);
|
||||
$link.data("dialogBeforeActionFn", apiInfo.dialogBeforeActionFn);
|
||||
$link.data("customActionFn", apiInfo.customActionFn);
|
||||
|
||||
var $detailsTab = $("#right_panel_content #tab_content_details");
|
||||
var id = $detailsTab.data("jsonObj").id;
|
||||
@ -41,6 +42,13 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap)
|
||||
$link.bind("click", function(event) {
|
||||
$actionMenu.hide();
|
||||
var $actionLink = $(this);
|
||||
|
||||
var customActionFn = $actionLink.data("customActionFn");
|
||||
if(customActionFn != null) {
|
||||
customActionFn();
|
||||
return false;
|
||||
}
|
||||
|
||||
var dialogBeforeActionFn = $actionLink.data("dialogBeforeActionFn");
|
||||
if(dialogBeforeActionFn == null) {
|
||||
var apiCommand = "command="+$actionLink.data("api")+"&id="+id;
|
||||
@ -48,7 +56,7 @@ function buildActionLinkForDetailsTab(label, actionMap, $actionMenu, listAPIMap)
|
||||
}
|
||||
else {
|
||||
dialogBeforeActionFn($actionLink, listAPIMap, $detailsTab);
|
||||
}
|
||||
}
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
@ -10,9 +10,15 @@ function afterLoadVolumeJSP() {
|
||||
modal: true,
|
||||
zIndex: 2000
|
||||
}));
|
||||
|
||||
activateDialog($("#dialog_recurring_snapshot").dialog({
|
||||
width: 735,
|
||||
autoOpen: false,
|
||||
modal: true,
|
||||
zIndex: 2000
|
||||
}));
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=listOsTypes&response=json"),
|
||||
data: createURL("command=listOsTypes"),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
types = json.listostypesresponse.ostype;
|
||||
@ -23,7 +29,220 @@ function afterLoadVolumeJSP() {
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
// *** recurring snapshot dialog - event binding (begin) ******************************
|
||||
$("#dialog_recurring_snapshot").bind("click", function(event) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
|
||||
var target = event.target;
|
||||
var targetId = target.id;
|
||||
var thisDialog = $(this);
|
||||
var volumeId = thisDialog.data("volumeId");
|
||||
var topPanel = thisDialog.find("#dialog_snapshotleft");
|
||||
var bottomPanel = thisDialog.find("#dialog_snapshotright");
|
||||
|
||||
if(targetId.indexOf("_edit_link")!=-1) {
|
||||
clearBottomPanel();
|
||||
bottomPanel.animate({
|
||||
height: 200
|
||||
}, 1000, function() {}
|
||||
);
|
||||
}
|
||||
else if(targetId.indexOf("_delete_link")!=-1) {
|
||||
clearBottomPanel();
|
||||
var snapshotPolicyId = $("#"+targetId).data("snapshotPolicyId");
|
||||
if(snapshotPolicyId == null || snapshotPolicyId.length==0)
|
||||
return;
|
||||
$.ajax({
|
||||
data: createURL("command=deleteSnapshotPolicies&id="+snapshotPolicyId),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
clearTopPanel($("#"+targetId).data("intervalType"));
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
handleError(XMLHttpResponse);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
var thisLink;
|
||||
switch(targetId) {
|
||||
case "hourly_edit_link":
|
||||
$("#edit_interval_type").text("Hourly");
|
||||
$("#edit_time_colon, #edit_hour_container, #edit_meridiem_container, #edit_day_of_week_container, #edit_day_of_month_container").hide();
|
||||
$("#edit_past_the_hour, #edit_minute_container").show();
|
||||
thisLink = thisDialog.find("#hourly_edit_link");
|
||||
thisDialog.find("#edit_minute").val(thisLink.data("minute"));
|
||||
thisDialog.find("#edit_max").val(thisLink.data("max"));
|
||||
thisDialog.find("#edit_timezone").val(thisLink.data("timezone"));
|
||||
break;
|
||||
case "daily_edit_link":
|
||||
$("#edit_interval_type").text("Daily");
|
||||
$("#edit_past_the_hour, #edit_day_of_week_container, #edit_day_of_month_container").hide();
|
||||
$("#edit_minute_container, #edit_hour_container, #edit_meridiem_container").show();
|
||||
thisLink = thisDialog.find("#daily_edit_link");
|
||||
thisDialog.find("#edit_minute").val(thisLink.data("minute"));
|
||||
thisDialog.find("#edit_hour").val(thisLink.data("hour12"));
|
||||
thisDialog.find("#edit_meridiem").val(thisLink.data("meridiem"));
|
||||
thisDialog.find("#edit_max").val(thisLink.data("max"));
|
||||
thisDialog.find("#edit_timezone").val(thisLink.data("timezone"));
|
||||
break;
|
||||
case "weekly_edit_link":
|
||||
$("#edit_interval_type").text("Weekly");
|
||||
$("#edit_past_the_hour, #edit_day_of_month_container").hide();
|
||||
$("#edit_minute_container, #edit_hour_container, #edit_meridiem_container, #edit_day_of_week_container").show();
|
||||
thisLink = thisDialog.find("#weekly_edit_link");
|
||||
thisDialog.find("#edit_minute").val(thisLink.data("minute"));
|
||||
thisDialog.find("#edit_hour").val(thisLink.data("hour12"));
|
||||
thisDialog.find("#edit_meridiem").val(thisLink.data("meridiem"));
|
||||
thisDialog.find("#edit_day_of_week").val(thisLink.data("dayOfWeek"));
|
||||
thisDialog.find("#edit_max").val(thisLink.data("max"));
|
||||
thisDialog.find("#edit_timezone").val(thisLink.data("timezone"));
|
||||
break;
|
||||
case "monthly_edit_link":
|
||||
$("#edit_interval_type").text("Monthly");
|
||||
$("#edit_past_the_hour, #edit_day_of_week_container").hide();
|
||||
$("#edit_minute_container, #edit_hour_container, #edit_meridiem_container, #edit_day_of_month_container").show();
|
||||
thisLink = thisDialog.find("#monthly_edit_link");
|
||||
thisDialog.find("#edit_minute").val(thisLink.data("minute"));
|
||||
thisDialog.find("#edit_hour").val(thisLink.data("hour12"));
|
||||
thisDialog.find("#edit_meridiem").val(thisLink.data("meridiem"));
|
||||
thisDialog.find("#edit_day_of_month").val(thisLink.data("dayOfMonth"));
|
||||
thisDialog.find("#edit_max").val(thisLink.data("max"));
|
||||
thisDialog.find("#edit_timezone").val(thisLink.data("timezone"));
|
||||
break;
|
||||
case "apply_button":
|
||||
var intervalType = bottomPanel.find("#edit_interval_type").text().toLowerCase();
|
||||
var minute, hour12, hour24, meridiem, dayOfWeek, dayOfWeekString, dayOfMonth, schedule, max, timezone;
|
||||
switch(intervalType) {
|
||||
case "hourly":
|
||||
var isValid = true;
|
||||
isValid &= validateNumber("Keep # of snapshots", bottomPanel.find("#edit_max"), bottomPanel.find("#edit_max_errormsg"));
|
||||
if (!isValid) return;
|
||||
|
||||
minute = bottomPanel.find("#edit_minute").val();
|
||||
schedule = minute;
|
||||
max = bottomPanel.find("#edit_max").val();
|
||||
timezone = bottomPanel.find("#edit_timezone").val();
|
||||
break;
|
||||
|
||||
case "daily":
|
||||
var isValid = true;
|
||||
isValid &= validateNumber("Keep # of snapshots", bottomPanel.find("#edit_max"), bottomPanel.find("#edit_max_errormsg"));
|
||||
if (!isValid) return;
|
||||
|
||||
minute = bottomPanel.find("#edit_minute").val();
|
||||
hour12 = bottomPanel.find("#edit_hour").val();
|
||||
meridiem = bottomPanel.find("#edit_meridiem").val();
|
||||
if(meridiem=="AM")
|
||||
hour24 = hour12;
|
||||
else //meridiem=="PM"
|
||||
hour24 = (parseInt(hour12)+12).toString();
|
||||
schedule = minute + ":" + hour24;
|
||||
max = bottomPanel.find("#edit_max").val();
|
||||
timezone = bottomPanel.find("#edit_timezone").val();
|
||||
break;
|
||||
|
||||
case "weekly":
|
||||
var isValid = true;
|
||||
isValid &= validateNumber("Keep # of snapshots", bottomPanel.find("#edit_max"), bottomPanel.find("#edit_max_errormsg"));
|
||||
if (!isValid) return;
|
||||
|
||||
minute = bottomPanel.find("#edit_minute").val();
|
||||
hour12 = bottomPanel.find("#edit_hour").val();
|
||||
meridiem = bottomPanel.find("#edit_meridiem").val();
|
||||
if(meridiem=="AM")
|
||||
hour24 = hour12;
|
||||
else //meridiem=="PM"
|
||||
hour24 = (parseInt(hour12)+12).toString();
|
||||
dayOfWeek = bottomPanel.find("#edit_day_of_week").val();
|
||||
dayOfWeekString = bottomPanel.find("#edit_day_of_week option:selected").text();
|
||||
schedule = minute + ":" + hour24 + ":" + dayOfWeek;
|
||||
max = bottomPanel.find("#edit_max").val();
|
||||
timezone = bottomPanel.find("#edit_timezone").val();
|
||||
break;
|
||||
|
||||
case "monthly":
|
||||
var isValid = true;
|
||||
isValid &= validateNumber("Keep # of snapshots", bottomPanel.find("#edit_max"), bottomPanel.find("#edit_max_errormsg"));
|
||||
if (!isValid) return;
|
||||
|
||||
minute = bottomPanel.find("#edit_minute").val();
|
||||
hour12 = bottomPanel.find("#edit_hour").val();
|
||||
meridiem = bottomPanel.find("#edit_meridiem").val();
|
||||
if(meridiem=="AM")
|
||||
hour24 = hour12;
|
||||
else //meridiem=="PM"
|
||||
hour24 = (parseInt(hour12)+12).toString();
|
||||
dayOfMonth = bottomPanel.find("#edit_day_of_month").val();
|
||||
schedule = minute + ":" + hour24 + ":" + dayOfMonth;
|
||||
max = bottomPanel.find("#edit_max").val();
|
||||
timezone = bottomPanel.find("#edit_timezone").val();
|
||||
break;
|
||||
}
|
||||
|
||||
var thisLink;
|
||||
$.ajax({
|
||||
data: createURL("command=createSnapshotPolicy&intervaltype="+intervalType+"&schedule="+schedule+"&volumeid="+volumeId+"&maxsnaps="+max+"&timezone="+encodeURIComponent(timezone)),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
switch(intervalType) {
|
||||
case "hourly":
|
||||
topPanel.find("#dialog_snapshot_hourly_info_unset").hide();
|
||||
topPanel.find("#dialog_snapshot_hourly_info_set").show();
|
||||
topPanel.find("#read_hourly_minute").text(minute);
|
||||
topPanel.find("#read_hourly_timezone").text("("+timezones[timezone]+")");
|
||||
topPanel.find("#read_hourly_max").text(max);
|
||||
topPanel.find("#hourly_edit_link, #hourly_delete_link").data("intervalType", "hourly").data("snapshotPolicyId", json.createsnapshotpolicyresponse.id).data("max",max).data("timezone",timezone).data("minute", minute);
|
||||
break;
|
||||
case "daily":
|
||||
topPanel.find("#dialog_snapshot_daily_info_unset").hide();
|
||||
topPanel.find("#dialog_snapshot_daily_info_set").show();
|
||||
topPanel.find("#read_daily_minute").text(minute);
|
||||
topPanel.find("#read_daily_hour").text(hour12);
|
||||
topPanel.find("#read_daily_meridiem").text(meridiem);
|
||||
topPanel.find("#read_daily_timezone").text("("+timezones[timezone]+")");
|
||||
topPanel.find("#read_daily_max").text(max);
|
||||
topPanel.find("#daily_edit_link, #daily_delete_link").data("intervalType", "daily").data("snapshotPolicyId", json.createsnapshotpolicyresponse.id).data("max",max).data("timezone",timezone).data("minute", minute).data("hour12", hour12).data("meridiem", meridiem);
|
||||
break;
|
||||
case "weekly":
|
||||
topPanel.find("#dialog_snapshot_weekly_info_unset").hide();
|
||||
topPanel.find("#dialog_snapshot_weekly_info_set").show();
|
||||
topPanel.find("#read_weekly_minute").text(minute);
|
||||
topPanel.find("#read_weekly_hour").text(hour12);
|
||||
topPanel.find("#read_weekly_meridiem").text(meridiem);
|
||||
topPanel.find("#read_weekly_timezone").text("("+timezones[timezone]+")");
|
||||
topPanel.find("#read_weekly_day_of_week").text(dayOfWeekString);
|
||||
topPanel.find("#read_weekly_max").text(max);
|
||||
topPanel.find("#weekly_edit_link, #weekly_delete_link").data("intervalType", "weekly").data("snapshotPolicyId", json.createsnapshotpolicyresponse.id).data("max",max).data("timezone",timezone).data("minute", minute).data("hour12", hour12).data("meridiem", meridiem).data("dayOfWeek",dayOfWeek);
|
||||
break;
|
||||
case "monthly":
|
||||
topPanel.find("#dialog_snapshot_monthly_info_unset").hide();
|
||||
topPanel.find("#dialog_snapshot_monthly_info_set").show();
|
||||
topPanel.find("#read_monthly_minute").text(minute);
|
||||
topPanel.find("#read_monthly_hour").text(hour12);
|
||||
topPanel.find("#read_monthly_meridiem").text(meridiem);
|
||||
topPanel.find("#read_monthly_timezone").text("("+timezones[timezone]+")");
|
||||
topPanel.find("#read_monthly_day_of_month").text(toDayOfMonthDesp(dayOfMonth));
|
||||
topPanel.find("#read_monthly_max").text(max);
|
||||
topPanel.find("#monthly_edit_link, #monthly_delete_link").data("intervalType", "monthly").data("snapshotPolicyId", json.createsnapshotpolicyresponse.id).data("max",max).data("timezone",timezone).data("minute", minute).data("hour12", hour12).data("meridiem", meridiem).data("dayOfMonth",dayOfMonth);
|
||||
break;
|
||||
}
|
||||
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
handleError(XMLHttpResponse);
|
||||
}
|
||||
});
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
});
|
||||
// *** recurring snapshot dialog - event binding (end) ******************************
|
||||
|
||||
}
|
||||
|
||||
function volumeAfterDetailsTabAction(jsonObj) {
|
||||
@ -73,7 +292,7 @@ function volumeJsonToDetailsTab(jsonObj){
|
||||
$actionMenu.find("#action_list").empty();
|
||||
|
||||
buildActionLinkForDetailsTab("Take Snapshot", volumeActionMap, $actionMenu, volumeListAPIMap); //show take snapshot
|
||||
//buildActionLinkForDetailsTab("Recurring Snapshot", volumeActionMap, $actionMenu, volumeListAPIMap); //show Recurring Snapshot
|
||||
buildActionLinkForDetailsTab("Recurring Snapshot", volumeActionMap, $actionMenu, volumeListAPIMap); //show Recurring Snapshot
|
||||
|
||||
if(jsonObj.state != "Creating" && jsonObj.state != "Corrupted" && jsonObj.name != "attaching") {
|
||||
if(jsonObj.type=="ROOT") {
|
||||
@ -145,7 +364,10 @@ var volumeActionMap = {
|
||||
dialogBeforeActionFn : doTakeSnapshot,
|
||||
inProcessText: "Taking Snapshot....",
|
||||
afterActionSeccessFn: function(){}
|
||||
}
|
||||
},
|
||||
"Recurring Snapshot": {
|
||||
customActionFn : doRecurringSnapshot
|
||||
}
|
||||
}
|
||||
|
||||
var volumeListAPIMap = {
|
||||
@ -201,3 +423,169 @@ function doTakeSnapshot($actionLink, listAPIMap, $detailsTab) {
|
||||
}
|
||||
}).dialog("open");
|
||||
}
|
||||
|
||||
function clearTopPanel(target) { // "target == null" means target at all (hourly + daily + weekly + monthly)
|
||||
var dialogBox = $("#dialog_recurring_snapshot");
|
||||
if(target == "hourly" || target == null) {
|
||||
dialogBox.find("#dialog_snapshot_hourly_info_unset").show();
|
||||
dialogBox.find("#dialog_snapshot_hourly_info_set").hide();
|
||||
dialogBox.find("#read_hourly_max, #read_hourly_minute").text("N/A");
|
||||
dialogBox.find("#hourly_edit_link, #hourly_delete_link").data("intervalType", "hourly").data("max", "").data("timezone", (g_timezone==null)?"Etc/GMT+12":g_timezone).data("minute", "00");
|
||||
}
|
||||
if(target == "daily" || target == null) {
|
||||
dialogBox.find("#dialog_snapshot_daily_info_unset").show();
|
||||
dialogBox.find("#dialog_snapshot_daily_info_set").hide();
|
||||
dialogBox.find("#read_daily_max, #read_daily_minute, #read_daily_hour, #read_daily_meridiem").text("N/A");
|
||||
dialogBox.find("#daily_edit_link, #daily_delete_link").data("intervalType", "daily").data("max", "").data("timezone", (g_timezone==null)?"Etc/GMT+12":g_timezone).data("minute", "00").data("hour12", "00").data("meridiem", "AM");
|
||||
}
|
||||
if(target == "weekly" || target == null) {
|
||||
dialogBox.find("#dialog_snapshot_weekly_info_unset").show();
|
||||
dialogBox.find("#dialog_snapshot_weekly_info_set").hide();
|
||||
dialogBox.find("#read_weekly_max, #read_weekly_minute, #read_weekly_hour, #read_weekly_meridiem, #read_weekly_day_of_week").text("N/A");
|
||||
dialogBox.find("#weekly_edit_link, #weekly_delete_link").data("intervalType", "weekly").data("max", "").data("timezone", (g_timezone==null)?"Etc/GMT+12":g_timezone).data("minute", "00").data("hour12", "00").data("meridiem", "AM").data("dayOfWeek", "1");
|
||||
}
|
||||
if(target == "monthly" || target == null) {
|
||||
dialogBox.find("#dialog_snapshot_monthly_info_unset").show();
|
||||
dialogBox.find("#dialog_snapshot_monthly_info_set").hide();
|
||||
dialogBox.find("#read_monthly_max, #read_monthly_minute, #read_monthly_hour, #read_monthly_meridiem, #read_monthly_day_of_month").text("N/A");
|
||||
dialogBox.find("#monthly_edit_link, #monthly_delete_link").data("intervalType", "monthly").data("max", "").data("timezone", (g_timezone==null)?"Etc/GMT+12":g_timezone).data("minute", "00").data("hour12", "00").data("meridiem", "AM").data("dayOfMonth", "1");
|
||||
}
|
||||
}
|
||||
|
||||
function clearBottomPanel() {
|
||||
var dialogBox = $("#dialog_recurring_snapshot");
|
||||
|
||||
dialogBox.find("#edit_hour").val("00");
|
||||
cleanErrMsg(dialogBox.find("#edit_hour"), dialogBox.find("#edit_time_errormsg"));
|
||||
|
||||
dialogBox.find("#edit_minute").val("00");
|
||||
cleanErrMsg(dialogBox.find("#edit_minute"), dialogBox.find("#edit_time_errormsg"));
|
||||
|
||||
dialogBox.find("#edit_meridiem").val("AM");
|
||||
|
||||
dialogBox.find("#edit_max").val("");
|
||||
cleanErrMsg(dialogBox.find("#edit_max"), dialogBox.find("#edit_max_errormsg"));
|
||||
|
||||
dialogBox.find("#edit_timezone").val((g_timezone==null)?"Etc/GMT+12":g_timezone);
|
||||
cleanErrMsg(dialogBox.find("#edit_timezone"), dialogBox.find("#edit_timezone_errormsg"));
|
||||
|
||||
dialogBox.find("#edit_day_of_week").val("1");
|
||||
cleanErrMsg(dialogBox.find("#edit_day_of_week"), dialogBox.find("#edit_day_of_week_errormsg"));
|
||||
|
||||
dialogBox.find("#edit_day_of_month").val("1");
|
||||
cleanErrMsg(dialogBox.find("#edit_day_of_month"), dialogBox.find("#edit_day_of_month_errormsg"));
|
||||
}
|
||||
|
||||
function doRecurringSnapshot() {
|
||||
var $detailsTab = $("#right_panel_content #tab_content_details");
|
||||
var volumeId = $detailsTab.data("jsonObj").id;
|
||||
|
||||
var dialogBox = $("#dialog_recurring_snapshot");
|
||||
clearTopPanel();
|
||||
|
||||
$.ajax({
|
||||
data: createURL("command=listSnapshotPolicies&volumeid="+volumeId),
|
||||
dataType: "json",
|
||||
async: false,
|
||||
success: function(json) {
|
||||
var items = json.listsnapshotpoliciesresponse.snapshotpolicy;
|
||||
if(items!=null && items.length>0) {
|
||||
for(var i=0; i<items.length; i++) {
|
||||
var item = items[i];
|
||||
switch(item.intervaltype) {
|
||||
case "0": //hourly
|
||||
dialogBox.find("#dialog_snapshot_hourly_info_unset").hide();
|
||||
dialogBox.find("#dialog_snapshot_hourly_info_set").show();
|
||||
dialogBox.find("#read_hourly_max").text(item.maxsnaps);
|
||||
dialogBox.find("#read_hourly_minute").text(item.schedule);
|
||||
dialogBox.find("#read_hourly_timezone").text("("+timezones[item.timezone]+")");
|
||||
dialogBox.find("#hourly_edit_link, #hourly_delete_link").data("intervalType", "hourly").data("snapshotPolicyId", item.id).data("max",item.maxsnaps).data("timezone",item.timezone).data("minute", item.schedule);
|
||||
break;
|
||||
case "1": //daily
|
||||
dialogBox.find("#dialog_snapshot_daily_info_unset").hide();
|
||||
dialogBox.find("#dialog_snapshot_daily_info_set").show();
|
||||
dialogBox.find("#read_daily_max").text(item.maxsnaps);
|
||||
var parts = item.schedule.split(":");
|
||||
dialogBox.find("#read_daily_minute").text(parts[0]);
|
||||
var hour12, meridiem;
|
||||
var hour24 = parts[1];
|
||||
if(hour24 < 12) {
|
||||
hour12 = hour24;
|
||||
meridiem = "AM";
|
||||
}
|
||||
else {
|
||||
hour12 = hour24 - 12;
|
||||
meridiem = "PM"
|
||||
}
|
||||
if (hour12 < 10 && hour12.toString().length==1)
|
||||
hour12 = "0"+hour12.toString();
|
||||
dialogBox.find("#read_daily_hour").text(hour12);
|
||||
dialogBox.find("#read_daily_meridiem").text(meridiem);
|
||||
dialogBox.find("#read_daily_timezone").text("("+timezones[item.timezone]+")");
|
||||
dialogBox.find("#daily_edit_link, #daily_delete_link").data("intervalType", "daily").data("snapshotPolicyId", item.id).data("max",item.maxsnaps).data("timezone",item.timezone).data("minute", parts[0]).data("hour12", hour12).data("meridiem", meridiem);
|
||||
break;
|
||||
case "2": //weekly
|
||||
dialogBox.find("#dialog_snapshot_weekly_info_unset").hide();
|
||||
dialogBox.find("#dialog_snapshot_weekly_info_set").show();
|
||||
dialogBox.find("#read_weekly_max").text(item.maxsnaps);
|
||||
var parts = item.schedule.split(":");
|
||||
dialogBox.find("#read_weekly_minute").text(parts[0]);
|
||||
var hour12, meridiem;
|
||||
var hour24 = parts[1];
|
||||
if(hour24 < 12) {
|
||||
hour12 = hour24;
|
||||
meridiem = "AM";
|
||||
}
|
||||
else {
|
||||
hour12 = hour24 - 12;
|
||||
meridiem = "PM"
|
||||
}
|
||||
if (hour12 < 10 && hour12.toString().length==1)
|
||||
hour12 = "0"+hour12.toString();
|
||||
dialogBox.find("#read_weekly_hour").text(hour12);
|
||||
dialogBox.find("#read_weekly_meridiem").text(meridiem);
|
||||
dialogBox.find("#read_weekly_timezone").text("("+timezones[item.timezone]+")");
|
||||
dialogBox.find("#read_weekly_day_of_week").text(toDayOfWeekDesp(parts[2]));
|
||||
dialogBox.find("#weekly_edit_link, #weekly_delete_link").data("intervalType", "weekly").data("snapshotPolicyId", item.id).data("max",item.maxsnaps).data("timezone",item.timezone).data("minute", parts[0]).data("hour12", hour12).data("meridiem", meridiem).data("dayOfWeek",parts[2]);
|
||||
break;
|
||||
case "3": //monthly
|
||||
dialogBox.find("#dialog_snapshot_monthly_info_unset").hide();
|
||||
dialogBox.find("#dialog_snapshot_monthly_info_set").show();
|
||||
dialogBox.find("#read_monthly_max").text(item.maxsnaps);
|
||||
var parts = item.schedule.split(":");
|
||||
dialogBox.find("#read_monthly_minute").text(parts[0]);
|
||||
var hour12, meridiem;
|
||||
var hour24 = parts[1];
|
||||
if(hour24 < 12) {
|
||||
hour12 = hour24;
|
||||
meridiem = "AM";
|
||||
}
|
||||
else {
|
||||
hour12 = hour24 - 12;
|
||||
meridiem = "PM"
|
||||
}
|
||||
if (hour12 < 10 && hour12.toString().length==1)
|
||||
hour12 = "0"+hour12.toString();
|
||||
dialogBox.find("#read_monthly_hour").text(hour12);
|
||||
dialogBox.find("#read_monthly_meridiem").text(meridiem);
|
||||
dialogBox.find("#read_monthly_timezone").text("("+timezones[item.timezone]+")");
|
||||
dialogBox.find("#read_monthly_day_of_month").text(toDayOfMonthDesp(parts[2]));
|
||||
dialogBox.find("#monthly_edit_link, #monthly_delete_link").data("intervalType", "monthly").data("snapshotPolicyId", item.id).data("max",item.maxsnaps).data("timezone",item.timezone).data("minute", parts[0]).data("hour12", hour12).data("meridiem", meridiem).data("dayOfMonth",parts[2]);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
error: function(XMLHttpResponse) {
|
||||
handleError(XMLHttpResponse);
|
||||
}
|
||||
});
|
||||
|
||||
dialogBox
|
||||
.dialog('option', 'buttons', {
|
||||
"Close": function() {
|
||||
$("#dialog_snapshotright").hide(0, function() { $(this).height("0px");});
|
||||
$(this).dialog("close");
|
||||
}
|
||||
}).dialog("open").data("volumeId", volumeId);
|
||||
}
|
||||
@ -23,7 +23,7 @@ function showStorageTab(domainId, targetTab) {
|
||||
|
||||
var populateZoneField = function(isAdmin) {
|
||||
$.ajax({
|
||||
data: createURL("command=listZones&available=true&response=json"+maxPageSize),
|
||||
data: createURL("command=listZones&available=true&response=json"+maxPageSize),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var zones = json.listzonesresponse.zone;
|
||||
@ -50,7 +50,7 @@ function showStorageTab(domainId, targetTab) {
|
||||
|
||||
var populateDiskOfferingField = function() {
|
||||
$.ajax({
|
||||
data: createURL("command=listDiskOfferings&response=json"),
|
||||
data: createURL("command=listDiskOfferings&response=json"),
|
||||
dataType: "json",
|
||||
success: function(json) {
|
||||
var offerings = json.listdiskofferingsresponse.diskoffering;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user