diff options
Diffstat (limited to 'winery/org.eclipse.winery.topologymodeler/src/main/webapp/js/artifacttemplateselection.js')
-rw-r--r-- | winery/org.eclipse.winery.topologymodeler/src/main/webapp/js/artifacttemplateselection.js | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/winery/org.eclipse.winery.topologymodeler/src/main/webapp/js/artifacttemplateselection.js b/winery/org.eclipse.winery.topologymodeler/src/main/webapp/js/artifacttemplateselection.js new file mode 100644 index 0000000..7b7f20b --- /dev/null +++ b/winery/org.eclipse.winery.topologymodeler/src/main/webapp/js/artifacttemplateselection.js @@ -0,0 +1,82 @@ +/******************************************************************************* + * Copyright (c) 2012-2013 University of Stuttgart. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * and the Apache License 2.0 which both accompany this distribution, + * and are available at http://www.eclipse.org/legal/epl-v10.html + * and http://www.apache.org/licenses/LICENSE-2.0 + * + * Contributors: + * Oliver Kopp - initial API and implementation and/or initial documentation + *******************************************************************************/ + + // also loaded from the repository + +// TODO: winery-common should be required -> encodeID; typing could be required (but that is no AMD module) +define([], function() { + $("#artifactTemplateName").typing({ + start: function(event, $elem) { + flagArtifactTemplateNameAsUpdating(); + }, + stop: function(event, $elem) { + checkArtifactTemplateName(); + } + }); + + $("#artifactTemplateNS").on("blur", checkArtifactTemplateName).on("change", checkArtifactTemplateName).on("focus", flagArtifactTemplateNameAsUpdating); + + var repositoryURL; + + return { + setRepositoryURL: function(url) { + repositoryURL = url; + }, + checkArtifactTemplateName: checkArtifactTemplateName, + flagArtifactTemplateNameAsUpdating: flagArtifactTemplateNameAsUpdating + }; + + function checkArtifactTemplateName() { + var ns = $("#artifactTemplateNS").val(); + var name = $("#artifactTemplateName").val(); + var url = repositoryURL + "/artifacttemplates/" + encodeID(ns) + "/" + encodeID(name) + "/"; + if (name == "") { + var valid = false; + var invalidReason = "No name provided"; + setValidityStatus(valid, invalidReason); + } else { + $.ajax(url, { + type: 'HEAD', + dataType: 'html', + error: function(jqXHR, textStatus, errorThrown) { + if (jqXHR.status == 404) { + // artifact template does not exist: everything is allright + setValidityStatus(true, null); + } else { + setValidityStatus(false, textStatus); + } + }, + success: function(data, textStatus, jqXHR) { + setValidityStatus(false, "artifact template already exists"); + } + }); + } + } + + function flagArtifactTemplateNameAsUpdating() { + $("#artifactTemplateNameIsValid").removeClass("invalid").removeClass("valid").addClass("unknown"); + $("#artifactTemplateNameIsInvalidReason").text(""); + } + + function setValidityStatus(valid, invalidReason) { + $("#artifactTemplateNameIsValid").removeClass("unknown"); + if (valid) { + $("#artifactTemplateNameIsValid").addClass("valid"); + $("#artifactTemplateNameIsInvalidReason").text("Ok"); + } else { + $("#artifactTemplateNameIsValid").addClass("invalid"); + $("#artifactTemplateNameIsInvalidReason").text(invalidReason); + } + } + + +});
\ No newline at end of file |