From 6a9213da642d7a7d1c6c9f499e79ca1002d0cdf9 Mon Sep 17 00:00:00 2001 From: Nick O'Leary Date: Wed, 24 Jan 2018 21:21:01 +0000 Subject: [PATCH] Add project-exists checks on first-run dialog --- editor/js/ui/projects/projects.js | 28 ++++++++++++++++++++++++++-- 1 file changed, 26 insertions(+), 2 deletions(-) diff --git a/editor/js/ui/projects/projects.js b/editor/js/ui/projects/projects.js index be3324873..8357c9738 100644 --- a/editor/js/ui/projects/projects.js +++ b/editor/js/ui/projects/projects.js @@ -143,7 +143,20 @@ RED.projects = (function() { var projectSummaryInput; return { content: function(options) { + var projectList = null; + var projectNameValid; + var pendingFormValidation = false; + $.getJSON("projects", function(data) { + projectList = {}; + data.projects.forEach(function(p) { + projectList[p] = true; + if (pendingFormValidation) { + pendingFormValidation = false; + validateForm(); + } + }) + }); var container = $('
'); migrateProjectHeader.appendTo(container); var body = $('
').appendTo(container); @@ -156,16 +169,27 @@ RED.projects = (function() { var validateForm = function() { var projectName = projectNameInput.val(); var valid = true; - var projectNameValid = /^[a-zA-Z0-9\-_]+$/.test(projectName); if (projectNameInputChanged) { + if (projectList === null) { + pendingFormValidation = true; + return; + } projectNameStatus.empty(); - if (!projectNameValid) { + if (!/^[a-zA-Z0-9\-_]+$/.test(projectName) || projectList[projectName]) { projectNameInput.addClass("input-error"); $('').appendTo(projectNameStatus); + projectNameValid = false; valid = false; + if (projectList[projectName]) { + projectNameSublabel.text("Project already exists"); + } else { + projectNameSublabel.text("Must contain only A-Z 0-9 _ -"); + } } else { projectNameInput.removeClass("input-error"); $('').appendTo(projectNameStatus); + projectNameSublabel.text("Must contain only A-Z 0-9 _ -"); + projectNameValid = true; } projectNameLastChecked = projectName; }