mirror of
https://github.com/apache/cloudstack.git
synced 2025-10-26 08:42:29 +01:00
209 lines
7.2 KiB
JavaScript
209 lines
7.2 KiB
JavaScript
// Copyright 2012 Citrix Systems, Inc. Licensed under the
|
|
// Apache License, Version 2.0 (the "License"); you may not use this
|
|
// file except in compliance with the License. Citrix Systems, Inc.
|
|
// reserves all rights not expressly granted by 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.
|
|
//
|
|
// Automatically generated by addcopyright.py at 04/03/2012
|
|
(function(cloudStack, $) {
|
|
cloudStack.uiCustom.recurringSnapshots = function(args) {
|
|
var desc = args.desc;
|
|
var selects = args.selects;
|
|
var actions = args.actions;
|
|
var dataProvider = args.dataProvider;
|
|
|
|
return function(args) {
|
|
var $snapshots = $('#template').find('.recurring-snapshots').clone();
|
|
var context = args.context;
|
|
|
|
// Update labels
|
|
$snapshots.find('.forms ul li.hourly a').html(_l('label.hourly'));
|
|
$snapshots.find('.forms ul li.daily a').html(_l('label.daily'));
|
|
$snapshots.find('.forms ul li.weekly a').html(_l('label.weekly'));
|
|
$snapshots.find('.forms ul li.monthly a').html(_l('label.monthly'));
|
|
$snapshots.find('.field.timezone .name').html(_l('label.timezone'));
|
|
$snapshots.find('.field.time .name').html(_l('label.time'));
|
|
$snapshots.find('.field.time .value label').html(_l('label.minute.past.hour'));
|
|
$snapshots.find('.add-snapshot-action.add').html(_l('label.add'));
|
|
|
|
// Get description
|
|
$snapshots.find('.desc').html(_l(desc));
|
|
|
|
// Snapshot type tabs
|
|
$snapshots.find('.forms').tabs();
|
|
|
|
// Populate selects
|
|
$snapshots.find('form select').each(function() {
|
|
var $select = $(this);
|
|
var selectData = selects[$select.attr('name')];
|
|
|
|
if (selectData) {
|
|
selectData({
|
|
response: {
|
|
success: function(args) {
|
|
$(args.data).each(function() {
|
|
var $option = $('<option>').appendTo($select);
|
|
|
|
$option.val(this.id).html(_l(this.name));
|
|
});
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
|
|
// Form validation
|
|
$snapshots.find('form').validate();
|
|
|
|
// Add snapshot
|
|
$snapshots.find('.add-snapshot-action.add').click(function() {
|
|
var $form = $snapshots.find('form:visible');
|
|
|
|
if (!$form.valid()) return false;
|
|
|
|
var formData = cloudStack.serializeForm($form);
|
|
|
|
actions.add({
|
|
context: context,
|
|
snapshot: formData,
|
|
response: {
|
|
success: function(args) {
|
|
var $snapshotRow = $snapshots.find('.scheduled-snapshots tr').filter(function() {
|
|
return $(this).index() == args.data.type;
|
|
}).addClass('active').show();
|
|
|
|
$snapshotRow.data('json-obj', args.data);
|
|
|
|
// Update fields
|
|
$snapshotRow.find('td.time span').html(args.data.time);
|
|
$snapshotRow.find('td.day-of-week span').html(_l(
|
|
args.data['day-of-week'] ?
|
|
$snapshots.find('select[name=day-of-week] option').filter(function() {
|
|
return $(this).val() == args.data['day-of-week'];
|
|
}).html() :
|
|
args.data['day-of-month']
|
|
));
|
|
$snapshotRow.find('td.timezone span').html(
|
|
$snapshots.find('select[name=timezone] option').filter(function() {
|
|
return $(this).val() == args.data['timezone'];
|
|
}).html()
|
|
);
|
|
$snapshotRow.find('td.keep span').html(args.data.keep);
|
|
|
|
$(':ui-dialog').dialog('option', 'position', 'center');
|
|
|
|
refreshSnapshotTabs();
|
|
}
|
|
}
|
|
});
|
|
|
|
return true;
|
|
});
|
|
|
|
// Enable/disable snapshot tabs based on table contents;
|
|
var refreshSnapshotTabs = function() {
|
|
$snapshots.find('li').each(function() {
|
|
var index = $(this).index();
|
|
var $tr = $snapshots.find('tr').filter(function() {
|
|
return $(this).index() == index;
|
|
});
|
|
|
|
if ($tr.size() && $tr.hasClass('active')) { $(this).addClass('disabled ui-state-disabled'); }
|
|
else { $(this).removeClass('disabled ui-state-disabled'); }
|
|
|
|
if ($(this).is('.ui-tabs-selected.ui-state-disabled')) {
|
|
$snapshots.find('form').show();
|
|
|
|
if ($snapshots.find('li.ui-state-disabled').size() == $snapshots.find('li').size()) {
|
|
$snapshots.find('form').hide();
|
|
} else {
|
|
$snapshots.find('li:not(.ui-state-disabled):first a').click();
|
|
}
|
|
}
|
|
});
|
|
};
|
|
|
|
// Remove snapshot
|
|
$snapshots.find('.action.destroy').click(function() {
|
|
var $tr = $(this).closest('tr');
|
|
actions.remove({
|
|
context: context,
|
|
snapshot: $tr.data('json-obj'),
|
|
response: {
|
|
success: function(args) {
|
|
$tr.hide().removeClass('active');
|
|
$(':ui-dialog').dialog('option', 'position', 'center');
|
|
|
|
refreshSnapshotTabs();
|
|
}
|
|
}
|
|
});
|
|
});
|
|
|
|
// Get existing data
|
|
dataProvider({
|
|
context: context,
|
|
response: {
|
|
success: function(args) {
|
|
$(args.data).each(function() {
|
|
var snapshot = this;
|
|
|
|
// Get matching table row
|
|
var $tr = $snapshots.find('tr').filter(function() {
|
|
return $(this).index() == snapshot.type;
|
|
}).addClass('active').show();
|
|
|
|
$tr.data('json-obj', snapshot);
|
|
|
|
$tr.find('td.time span').html(snapshot.time);
|
|
$tr.find('td.timezone span').html(
|
|
$snapshots.find('select[name=timezone] option').filter(function() {
|
|
return $(this).val() == snapshot['timezone'];
|
|
}).html()
|
|
);
|
|
$tr.find('td.keep span').html(snapshot.keep);
|
|
$tr.find('td.day-of-week span').html(
|
|
snapshot['day-of-week'] ?
|
|
$snapshots.find('select[name=day-of-week] option').filter(function() {
|
|
return $(this).val() == snapshot['day-of-week'];
|
|
}).html() :
|
|
snapshot['day-of-month']
|
|
);
|
|
});
|
|
|
|
refreshSnapshotTabs();
|
|
}
|
|
}
|
|
});
|
|
|
|
// Create dialog
|
|
var $dialog = $snapshots.dialog({
|
|
title: _l('label.action.recurring.snapshot'),
|
|
dialogClass: 'recurring-snapshots',
|
|
width: 600,
|
|
buttons: [
|
|
{
|
|
text: _l('label.done'),
|
|
'class': 'ok',
|
|
click: function() {
|
|
$dialog.fadeOut(function() {
|
|
$dialog.remove();
|
|
});
|
|
|
|
$('div.overlay').fadeOut(function() {
|
|
$('div.overlay').remove();
|
|
});
|
|
}
|
|
}
|
|
]
|
|
}).closest('.ui-dialog').overlay();
|
|
|
|
return $dialog;
|
|
};
|
|
};
|
|
}(cloudStack, jQuery)); |