1 {% extends "layout.html" %}
4 <script src="{{ STATIC_URL }}js/jquery-ui.js"></script>
5 <script src="{{ STATIC_URL }}js/jquery-ui-combobox.js"></script>
6 <link rel='stylesheet' type='text/css' href="//code.jquery.com/ui/1.11.2/themes/smoothness/jquery-ui.css">
7 <link rel="stylesheet" type="text/css" href="{{ STATIC_URL }}css/jquery.ui.combobox.css">
11 <div class="col-md-12">
12 <div class="breadcrumbs" style="line-height: 3;">
13 Experiment > Create or join a Project
18 <div class="col-md-12">
19 <ul class="nav nav-tabs nav-section">
20 <li class="active"><a href="#new">Create new Project</a></li>
21 <li><a href="#existing">Join existing Project</a></li>
29 <div class="col-md-12">
31 {% for error in errors %}
39 <div class="container tab-content">
41 <div class="tab-pane active" id="new">
44 <div class="col-sm-6 col-sm-offset-3">
45 <form role="form" method="post" action="/portal/project_request">
48 Please insert a name for your project under which you will be able to create slices <br />
49 <span class="sublabel">
50 The project name should only contain letters, numbers and the underscore "_" (10 max length)<br />
53 <div class="form-group">
54 <input type="text" name="project_name" value="" class="form-control" maxlength="10" style="width:100%;" title="The project name should not contain spaces but only letters, numbers and the underscore character" placeholder="Project name" required>
58 The authority under which your project will be managed <br />
59 <span class="sublabel">
60 Before you can access your project a manager of this authority should approve the request
63 <div class="form-group">
64 <select id="org_name" name="authority_name" class="form-control" style="width:100%" value="{{ organization }}" required>
66 {% for authority in authorities %}
67 {% if authority.name %}
68 <option value="{{ authority.authority_hrn }}" {% if authority.authority_hrn == authority_hrn %}selected{% endif %}>{{authority.name}}</option>
70 <option value="{{ authority.authority_hrn }}" {% if authority.authority_hrn == authority_hrn %}selected{% endif %}>{{authority.authority_hrn}}</option>
76 <div class="form-group">
78 Provide an URL for your project (not required)
80 <input type="text" class="form-control" name="url" id="url" style="width:100%" placeholder="Experiment URL (if one exists)"
81 title="Please provide the url of your project" value="{{url}}">
84 Please provide a description of the purpose for your project
86 <div class="form-group">
87 <textarea id="purpose" name="purpose" class="form-control" rows="6" placeholder="Project description" style="width:100%" title="Purpose of your project (informative)" required="required"></textarea>
89 <button type="submit" class="btn btn-onelab"><span class="glyphicon glyphicon-plus"></span> Send Request</button>
96 <div class="tab-pane" id="existing">
98 <div class="col-md-6">
99 <h3>Join an existing Project</h3>
101 <div class="col-md-6">
102 <h3>List of projects you are part of</h3>
106 <div class="col-md-6">
107 <form role="form" method="post" action="/portal/project_request">
109 <div id="project_loading" style="display:inline;"><img src="{{ STATIC_URL }}img/loading.gif" alt="Loading projects" /></div>
110 <select id="projects" name="project_name" style="display:none;"></select>
111 <div style="display:none;" id="projects_button">
112 <input type="submit" id="join" name="join" value="Join" class="btn"/>
116 <div class="col-md-6">
117 <table class="table project-list">
118 {% for pending in pending_projects %}
119 <tr><td>(PENDING) {{ pending.project_name }}</td><td>{{ pending.authority_hrn }}</td><td>{{ pending.created|date:"d/m/Y" }}</td></tr>
121 {% for pending in pending_join_projects %}
122 <tr><td>(PENDING JOIN) {{ pending.project_name }}</td><td> </td><td>{{ pending.created|date:"d/m/Y" }}</td></tr>
132 $(document).ready(function() {
133 var myprojects = JSON.parse(localStorage.getItem('projects'));
135 $.each(myprojects, function (i, val){
136 $('.project-list').append('<tr><td>'+ val +'</td></tr>');
139 $('.project-list').html('<tr><td>no projects</td></tr>');
142 $('.nav-tabs a').click(function (e) {
146 $.post("/rest/myslice:authority/",{'fields':['authority_hrn','pi_users'],'filters':{'authority_hrn':'CONTAINS{{ root_authority_hrn }}' }}, function( data ) {
149 project_row = "<option value=''> - </option>";
150 projects.push(project_row);
152 $.each( data, function( key, val ) {
153 if(val.authority_hrn.split('.').length > 2){
154 if($.inArray(val.authority_hrn, myprojects)==-1){
155 project_row = "<option value='"+val.authority_hrn+"'>"+val.authority_hrn+"</option>";
156 projects.push(project_row);
160 $("#projects").show();
161 $("#projects_button").css('margin-left', '50px');
162 $("#projects_button").css('display', 'inline-block');
163 $("#project_loading").hide();
164 $("#projects").html(projects.join( "" ));
165 $("#projects").combobox();
166 var $s = jQuery("#projects").next().attr('id','listProjects');
167 jQuery('#listProjects').bind("click",function(){
168 // show all items click
169 this.childNodes[1].click();
175 $("#authority_hrn").load("/rest/myslice:user/", {"fields" : ["parent_authority"], "filters": {"user_hrn": "{{ user_hrn }}"}}, function(data) {
176 var jsonData = JSON.parse(data);
177 $(this).attr("value", jsonData[0]['parent_authority']);
179 $("#authority_hrn").val("{{authority_name}}");
180 var availableTags = [
182 {% for authority in authorities %}
183 {% if authority.name %}
184 {value:"{{ authority.name }}",label:"{{authority.name}}"},
185 // to show only full name
187 {value:"{{ authority.authority_hrn }}",label:"{{authority.authority_hrn}}"},
191 {value:"",label:"No authority found !!!"}
195 availableTags.sort(function(a,b){
196 var nameA=a.value.toLowerCase(), nameB=b.value.toLowerCase();
205 $( "#authority_hrn" ).autocomplete({
206 source: availableTags,
208 select: function( event, ui ) {console.log(jQuery(this));}
211 $("#submit_pi").click(function() {
212 localStorage.clear();
214 // auto-complete the form
215 jQuery("#org_name").combobox();
217 $('input[name=project_name]').keyup(function(){
218 this.value = this.value.toLowerCase();