/**
* Copyright JS Foundation and other contributors, http://js.foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
**/
RED.projects = (function() {
var dialog;
var dialogBody;
var activeProject;
var screens = {};
function initScreens() {
screens = {
'welcome': {
content: function() {
var container = $('
');
var buttons = $('').appendTo(container);
var createNew = $('').appendTo(buttons);
createNew.click(function(e) {
e.preventDefault();
show('create');
});
var openExisting = $('').appendTo(buttons);
openExisting.click(function(e) {
e.preventDefault();
show('open')
});
return container;
},
buttons: [
]
},
'create': (function() {
var projectNameInput;
var projectSummaryInput;
var projectFlowFileInput;
var projectSecretInput;
var projectSecretSelect;
var copyProject;
var projectRepoInput;
var emptyProjectCredentialInput;
return {
title: "Create a new project", // TODO: NLS
content: function() {
var container = $('');
var row;
var validateForm = function() {
var projectName = projectNameInput.val();
var valid = true;
if (!/^[a-zA-Z0-9\-_]+$/.test(projectName)) {
if (projectNameInputChanged) {
projectNameInput.addClass("input-error");
}
valid = false;
} else {
projectNameInput.removeClass("input-error");
}
var projectType = $(".projects-dialog-screen-create-type.selected").data('type');
if (projectType === 'copy') {
if (!copyProject) {
valid = false;
}
} else if (projectType === 'clone') {
var repo = projectRepoInput.val();
if (repo.trim() === '') {
// TODO: could do more url regex checking...
if (projectRepoChanged) {
projectRepoInput.addClass("input-error");
}
valid = false;
} else {
projectRepoInput.removeClass("input-error");
}
} else if (projectType === 'empty') {
projectFlowFileInput.toggleClass("input-error",projectFlowFileInput.val()==='')
valid = valid && projectFlowFileInput.val()!=='';
var encryptionState = $("input[name=projects-encryption-type]:checked").val();
if (encryptionState === 'enabled') {
var encryptionKeyType = $("input[name=projects-encryption-key]:checked").val();
if (encryptionKeyType === 'custom') {
valid = valid && emptyProjectCredentialInput.val()!==''
}
}
}
$("#projects-dialog-create").prop('disabled',!valid).toggleClass('disabled ui-button-disabled ui-state-disabled',!valid);
}
row = $('').appendTo(container);
var createAsEmpty = $('').appendTo(row);
var createAsCopy = $('').appendTo(row);
var createAsClone = $('').appendTo(row);
row.find(".projects-dialog-screen-create-type").click(function(evt) {
evt.preventDefault();
$(".projects-dialog-screen-create-type").removeClass('selected');
$(this).addClass('selected');
$(".projects-dialog-screen-create-row").hide();
$(".projects-dialog-screen-create-row-"+$(this).data('type')).show();
validateForm();
})
row = $('').appendTo(container);
$('').appendTo(row);
projectNameInput = $('').appendTo(row);
var projectNameInputChanged = false;
projectNameInput.on("change keyup paste",function() { projectNameInputChanged = true; validateForm(); });
$('').appendTo(row);
// Empty Project
row = $('').appendTo(container);
$('').appendTo(row);
projectSummaryInput = $('').appendTo(row);
$('').appendTo(row);
row = $('').appendTo(container);
$('').appendTo(row);
projectFlowFileInput = $('').val("flow.json")
.on("change keyup paste",validateForm)
.appendTo(row);
$('').appendTo(row);
row = $('').appendTo(container);
$('').appendTo(row);
var credentialsBox = $('
').appendTo(row);
var credentialsRightBox = $('
').appendTo(credentialsBox);
var credentialsLeftBox = $('