1*4882a593Smuzhiyun{% extends "base.html" %} 2*4882a593Smuzhiyun{% load projecttags %} 3*4882a593Smuzhiyun{% load humanize %} 4*4882a593Smuzhiyun 5*4882a593Smuzhiyun{% block title %} Create a new project - Toaster {% endblock %} 6*4882a593Smuzhiyun 7*4882a593Smuzhiyun{% block pagecontent %} 8*4882a593Smuzhiyun<div class="row"> 9*4882a593Smuzhiyun <div class="col-md-12"> 10*4882a593Smuzhiyun <div class="page-header"> 11*4882a593Smuzhiyun <h1>Create a new project</h1> 12*4882a593Smuzhiyun </div> 13*4882a593Smuzhiyun {% if alert %} 14*4882a593Smuzhiyun <div class="alert alert-danger" role="alert">{{alert}}</div> 15*4882a593Smuzhiyun {% endif %} 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun <form method="POST">{% csrf_token %} 18*4882a593Smuzhiyun <div class="form-group" id="validate-project-name"> 19*4882a593Smuzhiyun <label class="control-label">Project name <span class="text-muted">(required)</span></label> 20*4882a593Smuzhiyun <input type="text" class="form-control" required id="new-project-name" name="projectname"> 21*4882a593Smuzhiyun </div> 22*4882a593Smuzhiyun <p class="help-block text-danger" style="display: none;" id="hint-error-project-name">A project with this name exists. Project names must be unique.</p> 23*4882a593Smuzhiyun 24*4882a593Smuzhiyun <label class="project-form">Project type:</label> 25*4882a593Smuzhiyun {% if releases.count > 0 %} 26*4882a593Smuzhiyun <label class="project-form radio" style="padding-left: 35px;"><input id='type-new' type="radio" name="ptype" value="new"/> New project</label> 27*4882a593Smuzhiyun {% endif %} 28*4882a593Smuzhiyun <label class="project-form radio" style="padding-left: 35px;"><input id='type-import' type="radio" name="ptype" value="import"/> Import command line project</label> 29*4882a593Smuzhiyun 30*4882a593Smuzhiyun {% if releases.count > 0 %} 31*4882a593Smuzhiyun <div class="release form-group"> 32*4882a593Smuzhiyun {% if releases.count > 1 %} 33*4882a593Smuzhiyun <label class="control-label"> 34*4882a593Smuzhiyun Release 35*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="The version of the build system you want to use for this project"></span> 36*4882a593Smuzhiyun </label> 37*4882a593Smuzhiyun <select name="projectversion" id="projectversion" class="form-control"> 38*4882a593Smuzhiyun {% for release in releases %} 39*4882a593Smuzhiyun <option value="{{release.id}}" 40*4882a593Smuzhiyun {%if defaultbranch == release.name %} 41*4882a593Smuzhiyun selected 42*4882a593Smuzhiyun {%endif%} 43*4882a593Smuzhiyun >{{release.description}}</option> 44*4882a593Smuzhiyun {% endfor %} 45*4882a593Smuzhiyun </select> 46*4882a593Smuzhiyun <div class="row"> 47*4882a593Smuzhiyun <div class="col-md-4"> 48*4882a593Smuzhiyun {% for release in releases %} 49*4882a593Smuzhiyun <div class="helptext" id="description-{{release.id}}" style="display: none"> 50*4882a593Smuzhiyun <span class="help-block">{{release.helptext|safe}}</span> 51*4882a593Smuzhiyun </div> 52*4882a593Smuzhiyun {% endfor %} 53*4882a593Smuzhiyun </div> 54*4882a593Smuzhiyun </div> 55*4882a593Smuzhiyun {% else %} 56*4882a593Smuzhiyun <input type="hidden" name="projectversion" value="{{releases.0.id}}"/> 57*4882a593Smuzhiyun {% endif %} 58*4882a593Smuzhiyun 59*4882a593Smuzhiyun <input type="checkbox" class="checkbox-mergeattr" name="mergeattr" value="mergeattr"> Merged Toaster settings (Command line user compatibility) 60*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="Place the Toaster settings into the standard 'local.conf' and 'bblayers.conf' instead of 'toaster_bblayers.conf' and 'toaster.conf'"></span> 61*4882a593Smuzhiyun 62*4882a593Smuzhiyun </div> 63*4882a593Smuzhiyun {% endif %} 64*4882a593Smuzhiyun 65*4882a593Smuzhiyun <div class="build-import form-group" id="import-project"> 66*4882a593Smuzhiyun <label class="control-label">Import existing project directory 67*4882a593Smuzhiyun <span class="glyphicon glyphicon-question-sign get-help" title="Enter a path to an existing build directory, import the existing settings, and create a Toaster Project for it."></span> 68*4882a593Smuzhiyun </label> 69*4882a593Smuzhiyun <input style="width: 33%;"type="text" class="form-control" required id="import-project-dir" name="importdir"> 70*4882a593Smuzhiyun </div> 71*4882a593Smuzhiyun 72*4882a593Smuzhiyun <div class="top-air"> 73*4882a593Smuzhiyun <input type="submit" id="create-project-button" class="btn btn-primary btn-lg" value="Create project"/> 74*4882a593Smuzhiyun <span class="help-inline" style="vertical-align:middle;">To create a project, you need to enter a project name</span> 75*4882a593Smuzhiyun </div> 76*4882a593Smuzhiyun 77*4882a593Smuzhiyun </form> 78*4882a593Smuzhiyun </div> 79*4882a593Smuzhiyun </div> 80*4882a593Smuzhiyun 81*4882a593Smuzhiyun <script type="text/javascript"> 82*4882a593Smuzhiyun $(document).ready(function () { 83*4882a593Smuzhiyun // hide the new project button 84*4882a593Smuzhiyun $("#new-project-button").hide(); 85*4882a593Smuzhiyun $('.btn-primary').attr('disabled', 'disabled'); 86*4882a593Smuzhiyun $('#type-new').attr('checked', 'checked'); 87*4882a593Smuzhiyun 88*4882a593Smuzhiyun // enable submit button when all required fields are populated 89*4882a593Smuzhiyun $("input#new-project-name").on('input', function() { 90*4882a593Smuzhiyun if ($("input#new-project-name").val().length > 0 ){ 91*4882a593Smuzhiyun $('.btn-primary').removeAttr('disabled'); 92*4882a593Smuzhiyun $(".help-inline").css('visibility','hidden'); 93*4882a593Smuzhiyun } 94*4882a593Smuzhiyun else { 95*4882a593Smuzhiyun $('.btn-primary').attr('disabled', 'disabled'); 96*4882a593Smuzhiyun $(".help-inline").css('visibility','visible'); 97*4882a593Smuzhiyun } 98*4882a593Smuzhiyun }); 99*4882a593Smuzhiyun 100*4882a593Smuzhiyun // show relevant help text for the selected release 101*4882a593Smuzhiyun var selected_release = $('select').val(); 102*4882a593Smuzhiyun $("#description-" + selected_release).show(); 103*4882a593Smuzhiyun 104*4882a593Smuzhiyun 105*4882a593Smuzhiyun $('select').change(function(){ 106*4882a593Smuzhiyun var new_release = $('select').val(); 107*4882a593Smuzhiyun $(".helptext").hide(); 108*4882a593Smuzhiyun $('#description-' + new_release).fadeIn(); 109*4882a593Smuzhiyun }); 110*4882a593Smuzhiyun 111*4882a593Smuzhiyun libtoaster.makeProjectNameValidation($("#new-project-name"), 112*4882a593Smuzhiyun $("#hint-error-project-name"), $("#validate-project-name"), 113*4882a593Smuzhiyun $(".btn-primary")); 114*4882a593Smuzhiyun 115*4882a593Smuzhiyun 116*4882a593Smuzhiyun // Hide the project release when you select an analysis project 117*4882a593Smuzhiyun function projectType() { 118*4882a593Smuzhiyun if ($("input[type='radio']:checked").val() == 'new') { 119*4882a593Smuzhiyun $('.build-import').fadeOut(); 120*4882a593Smuzhiyun $('.release').fadeIn(); 121*4882a593Smuzhiyun $('#import-project-dir').removeAttr('required'); 122*4882a593Smuzhiyun } 123*4882a593Smuzhiyun else { 124*4882a593Smuzhiyun $('.release').fadeOut(); 125*4882a593Smuzhiyun $('.build-import').fadeIn(); 126*4882a593Smuzhiyun $('#import-project-dir').attr('required', 'required'); 127*4882a593Smuzhiyun } 128*4882a593Smuzhiyun } 129*4882a593Smuzhiyun projectType(); 130*4882a593Smuzhiyun 131*4882a593Smuzhiyun $('input:radio').change(function(){ 132*4882a593Smuzhiyun projectType(); 133*4882a593Smuzhiyun }); 134*4882a593Smuzhiyun }); 135*4882a593Smuzhiyun </script> 136*4882a593Smuzhiyun 137*4882a593Smuzhiyun{% endblock %} 138