YUI(Yconfig).use( 'node', 'json', 'io', 'cookie', 'querystring-stringify-simple', 'linaro-overlay-utils', function (Y) { var checkName; // overwritten with a closure when we get the list of used names Y.io( globalConfig.jenkinsURL + "/api/json?tree=jobs[name]", { on: { success: function (e, response) { var jobs = Y.JSON.parse(response.responseText).jobs; var user_used_names = []; var official_used_names = []; var userRegexp = new RegExp('^' + globalConfig.userName + '_(.*)'); var officialRegexp = new RegExp('^linaro-android_(.*)'); for (var i = 0; i < jobs.length; i++) { var name = jobs[i].name; var match; if ((match = userRegexp.exec(name))) { user_used_names.push(match[1]); } else if ((match = officialRegexp.exec(name))) { official_used_names.push(match[1]); } } var j = 0; var tmp; var names = user_used_names; while (names.indexOf(tmp = 'testBuild-' + j.toString()) >= 0) { j++; } Y.one('#name').set('value', tmp); checkName = function (e) { var names = user_used_names; var curValue = Y.one('#name').get('value'); if (curValue.search(/^[a-z0-9][a-z0-9\+\.\-]*$/) < 0) { Y.one('#taken-warning').addClass('hidden'); Y.one('#invalid-name-warning').removeClass('hidden'); } else if (names.indexOf(curValue) >= 0) { Y.one('#taken-warning').removeClass('hidden'); Y.one('#invalid-name-warning').addClass('hidden'); } else { Y.one('#taken-warning').addClass('hidden'); Y.one('#invalid-name-warning').addClass('hidden'); } }; Y.on('keyup', checkName, '#name'); } } }); Y.io.header('X-CSRFToken', Y.Cookie.get("csrftoken")); function saveBuild(e, buildNow) { var data = { config: Y.one('#configuration').get('value'), name: Y.one('#name').get('value'), group: Y.one('#group').get('value') }; if (buildNow) { data.buildNow = true; } Y.io( 'api/new', { method: "POST", data: data, on: { failure: function (e, response) { Y.linaro.reportError( response.responseText, {header: 'Creating new build failed'}); }, success: function (e, response) { location.href += '/../builds/' + response.responseText; } } } ); } Y.on( 'click', function (e) { window.location.pathname += '/../index'; }, '#cancel'); Y.on('click', saveBuild, '#save', null, false); Y.on('click', saveBuild, '#save-build', null, true); } );