').addClass('loading-overlay');
var onRemoveItem = function($item, data) {
$loading.appendTo($container);
actions.remove({
context: $.extend(true, {}, context, {
tagItems: [data]
}),
response: {
success: function(args) {
var notification = $.extend(true, {}, args.notification, {
interval: 500,
_custom: args._custom
});
cloudStack.ui.notifications.add(
notification,
// Success
function() {
$loading.remove();
$item.remove();
}, {},
// Error
function() {
$loading.remove();
}, {}
);
},
error: function(message) {
$loading.remove();
cloudStack.dialog.notice({
message: message
});
}
}
});
};
var $inputArea = elems.inputArea({
isAsyncSubmit: true,
onSubmit: function(args) {
var data = args.data;
var success = args.response.success;
var error = args.response.error;
var title = data.key + ' = ' + data.value;
$loading.appendTo($container);
actions.add({
data: data,
context: context,
response: {
success: function(args) {
var notification = $.extend(true, {}, args.notification, {
interval: 500,
_custom: args._custom
});
cloudStack.ui.notifications.add(
notification,
// Success
function() {
$loading.remove();
elems.tagItem(title, onRemoveItem, data).appendTo($tagArea);
success();
}, {},
// Error
function() {
$loading.remove();
error();
}, {}
);
},
error: function(message) {
$loading.remove();
error();
cloudStack.dialog.notice({
message: message
});
}
}
});
}
});
$container.append($title, $inputArea, $tagArea);
// Get data
$loading.appendTo($container);
dataProvider({
context: context,
jsonObj: jsonObj,
response: {
success: function(args) {
var data = args.data;
$loading.remove();
$(data).map(function(index, item) {
var key = item.key;
var value = item.value;
var data = {
key: key,
value: value
};
elems.tagItem(key + ' = ' + value, onRemoveItem, data).appendTo($tagArea);
});
},
error: function(message) {
$loading.remove();
$container.find('ul').html(message);
}
}
});
}
});
$.widget('cloudStack.taggerInForm', {
_init: function(args) {
var $container = this.element.addClass('tagger');
var $tagArea = $('
').addClass('tags');
var $title = elems.info(_l('label.tags')).addClass('title inside-form');
var $loading = $('').addClass('loading-overlay');
var $tags = {};
var onRemoveItem = function($item, data) {
$item.remove();
if ($tags[data.key]) delete $tags[data.key];
else {
cloudStack.dialog.notice({
message: "Unexpected error occured in attempting deletion"
});
}
};
var $inputArea = elems.inputArea({
isAsyncSubmit: false,
onSubmit: function(args) {
var data = args.data;
if ($tags[data.key]) {
cloudStack.dialog.notice({
message: "Key already present. Please delete previous and add again."
});
} else {
var success = args.response.success;
var title = data.key + ' = ' + data.value;
elems.tagItem(title, onRemoveItem, data).appendTo($tagArea);
success();
$tags[data.key] = data.value;
}
}
});
$container.append($title, $inputArea, $tagArea);
}
});
cloudStack.getTagsFromForm = function($form) {
var tagLabels = $($form).find('.tagger .tags .label');
var tags = [];
$(tagLabels).each(function() {
tags.push({'key' : $(this).attr('cloudstack_tag_key'), 'value' : $(this).attr('cloudstack_tag_value')});
});
return tags;
};
}(jQuery, cloudStack));