').addClass('range-edit').appendTo($value)
);
$input.wrap($('
').addClass('range-item'));
$input.addClass("disallowSpecialCharacters");
} else { //text field
$input = $('
').attr({
name: key,
type: field.password || field.isPassword ? 'password' : 'text'
}).appendTo($value);
if (field.defaultValue) {
$input.val(field.defaultValue);
}
if (field.id) {
$input.attr('id', field.id);
}
$input.addClass("disallowSpecialCharacters");
}
if (field.validation != null)
$input.data('validation-rules', field.validation);
else
$input.data('validation-rules', {});
var fieldLabel = field.label;
var inputId = $input.attr('id') ? $input.attr('id') : fieldLabel.replace(/\./g, '_');
$input.attr('id', inputId);
$name.find('label').attr('for', inputId);
if (field.isDisabled)
$input.attr("disabled", "disabled");
// Tooltip
if (field.docID) {
$input.toolTip({
docID: field.docID,
tooltip: '.tooltip-box',
mode: 'focus',
attachTo: '.form-item'
});
}
/* $input.blur(function() {
console.log('tooltip remove->' + $input.attr('name'));
});*/
});
var getFormValues = function() {
var formValues = {};
$.each(args.form.fields, function(key) {});
};
// Setup form validation
$formContainer.find('form').validate();
$formContainer.find('input, select').each(function() {
if ($(this).data('validation-rules')) {
$(this).rules('add', $(this).data('validation-rules'));
} else {
$(this).rules('add', {});
}
});
$form.find('select').trigger('change');
var complete = function($formContainer) {
var $form = $formContainer.find('form');
var data = cloudStack.serializeForm($form);
if (!$formContainer.find('form').valid()) {
// Ignore hidden field validation
if ($formContainer.find('input.error:visible, select.error:visible').size()) {
return false;
}
}
args.after({
data: data,
ref: args.ref, // For backwards compatibility; use context
context: args.context,
$form: $form
});
return true;
};
if (args.noDialog) {
return {
$formContainer: $formContainer,
completeAction: complete
};
} else if (!isAsync) {
return ret();
}
},
// Dialog with list view selector
listView: function(args) {
var listView = args.listView;
var after = args.after;
var context = args.context;
var $listView = $('
');
listView.actions = {
select: {
label: _l('label.select.instance'),
type: listView.type,
action: {
uiCustom: function(args) {
var $item = args.$item;
var $input = $item.find('td.actions input:visible');
if ($input.attr('type') == 'checkbox') {
if ($input.is(':checked'))
$item.addClass('multi-edit-selected');
else
$item.removeClass('multi-edit-selected');
} else {
$item.siblings().removeClass('multi-edit-selected');
$item.addClass('multi-edit-selected');
}
}
}
}
};
// Init list view
$listView = $('
').listView({
context: context,
uiCustom: true,
listView: listView
});
// Change action label
$listView.find('th.actions').html(_l('label.select'));
$listView.dialog({
dialogClass: 'multi-edit-add-list panel',
width: 825,
title: _l('Select VM'),
buttons: [{
text: _l('label.apply'),
'class': 'ok',
click: function() {
if (!$listView.find(
'input[type=radio]:checked, input[type=checkbox]:checked'
).size()) {
cloudStack.dialog.notice({
message: _l('message.select.instance')
});
return false;
}
after({
context: $.extend(true, {}, context, {
instances: $listView.find('tr.multi-edit-selected').map(function(index, row) {
var $row = $(row);
return $row.data('json-obj');
})
})
});
$listView.remove();
$('div.overlay').remove();
}
}, {
text: _l('label.cancel'),
'class': 'cancel',
click: function() {
$listView.fadeOut(function() {
$listView.remove();
});
$('div.overlay').fadeOut(function() {
$('div.overlay').remove();
});
}
}]
}).parent('.ui-dialog').overlay();
},
/**
* to change a property(e.g. validation) of a createForm field after a createForm is rendered
*/
createFormField: {
validation: {
required: {
add: function($formField) {
var $input = $formField.find('input, select');
var validationRules = $input.data('validation-rules');
if (validationRules == null || validationRules.required == null || validationRules.required == false) {
$formField.find('.name').find('label').find('span.field-required').css('display', 'inline'); //show red asterisk
if (validationRules == null)
validationRules = {};
validationRules.required = true;
$input.data('validation-rules', validationRules);
$input.rules('add', {
required: true
});
}
},
remove: function($formField) {
var $input = $formField.find('input, select');
var validationRules = $input.data('validation-rules');
if (validationRules != null && validationRules.required != null && validationRules.required == true) {
$formField.find('.name').find('label').find('span.field-required').hide(); //hide red asterisk
delete validationRules.required;
$input.data('validation-rules', validationRules);
$input.rules('remove', 'required');
$formField.find('.value').find('label.error').hide();
}
}
}
}
},
/**
* Confirmation dialog
*/
confirm: function(args) {
return $(
$('').addClass('message').html(
_l(args.message)
)
).dialog({
title: _l('label.confirmation'),
dialogClass: 'confirm',
closeOnEscape: false,
zIndex: 5000,
buttons: [{
text: _l('label.no'),
'class': 'cancel',
click: function() {
$(this).dialog('destroy');
$('div.overlay').remove();
if (args.cancelAction) {
args.cancelAction();
}
$('.hovered-elem').hide();
}
}, {
text: _l('label.yes'),
'class': 'ok',
click: function() {
args.action();
$(this).dialog('destroy');
$('div.overlay').remove();
$('.hovered-elem').hide();
}
}]
}).closest('.ui-dialog').overlay();
},
/**
* Notice dialog
*/
notice: function(args) {
if (args.message) {
return $(
$('').addClass('message').html(
_l(args.message)
)
).dialog({
title: _l('label.status'),
dialogClass: 'notice',
closeOnEscape: false,
zIndex: 5000,
buttons: [{
text: _l('Close'),
'class': 'close',
click: function() {
$(this).dialog('destroy');
if (args.clickAction) args.clickAction();
$('.hovered-elem').hide();
}
}]
});
}
return false;
}
};
})(window.jQuery, window.cloudStack, _l);