$(document).ready(function() { // add version constraints, sorted by cookbook name var cookbook, versions, constraints = [], i = 0, max, row; if (document.getElementById('edit') != null) { versions = cookbook_versions(); for (cookbook in versions) { constraints.push([cookbook, versions[cookbook]["op"], versions[cookbook]["version"]]); } constraints.sort(); for (i = constraints.length - 1; i >= 0; i--) { row = constraints[i]; addTableRow(row[0], row[1], row[2]); } } }) function jQuerySuggest(timestamp){ $(".ac_results").remove(); // FIXME issue w/ jquery suggest var cb_name = retrieveCbName(timestamp); populateVersionBoxContent(timestamp, cb_name); $("#cookbook_version_" + timestamp)[0].value = "0.0.0"; } function populateVersionBoxContent(timestamp, cb_name){ // Ignore environments when editing the environments constraints $.getJSON('/cookbooks/'+cb_name+'?num_versions=all&ignore_environments=true', function(result){ var versions = $.map(result[cb_name], function(item, i) { return item["version"]; }); jQuery('#cookbook_version_' + timestamp).suggest(versions); }); } function clearVersionBox(box, timestamp){ populateVersionBoxContent(timestamp, retrieveCbName(timestamp)); $('#invalid_version_error_' + timestamp).remove(); } function validVersion(version) { var xyz_match = version.match(/^\d+\.\d+\.\d+$/); var xy_match = version.match(/^\d+\.\d+$/); return (xyz_match || xy_match); } function do_validateVersionBoxValue(box, timestamp) { var msg_class = 'invalid_version_error'; var msg_id = 'invalid_version_error_' + timestamp; if (!validVersion(box.value)) { if (box.value.length != 0 && $('.' + msg_class).length == 0) { var error_msg = $('
') .addClass(msg_class) .attr('id', msg_id).text("Version must be x.y.z or x.y"); $(box).parent().append(error_msg); } if (box.value.length == 0) { box.value = "0.0.0"; } return false; } return true; } function validateVersionBoxValue(box, timestamp) { // a short delay prevents validation from firing // when user clicks on one of the suggestions. setTimeout(function() { return do_validateVersionBoxValue(box, timestamp); }, 100); } function appendOperatorsOptions(default_operator, obj) { var ops = ["~>", ">=", ">", "=", "<", "<="]; for (i in ops) { var op = ops[i] var option = $('