Merge branch 'master' of git://git.onelab.eu/myslice
authorLoic Baron <loic.baron@lip6.fr>
Thu, 26 Sep 2013 10:10:16 +0000 (12:10 +0200)
committerLoic Baron <loic.baron@lip6.fr>
Thu, 26 Sep 2013 10:10:16 +0000 (12:10 +0200)
Conflicts:
portal/templates/registration_view.html

1  2 
manifold/manifoldproxy.py
plugins/query_editor/__init__.py
plugins/query_editor/static/js/query_editor.js
portal/registrationview.py
portal/slicerequestview.py
portal/sliceview.py
portal/templates/registration_view.html
unfold/static/js/unfold-helper.js

@@@ -1,14 -1,15 +1,16 @@@
  import json
+ import os.path
  # this is for django objects only
  #from django.core import serializers
 -from django.http import HttpResponse, HttpResponseForbidden
 +from django.http                import HttpResponse, HttpResponseForbidden
  
  #from manifold.manifoldquery import ManifoldQuery
 -from manifold.core.query import Query
 +from manifold.core.query        import Query
  from manifold.core.result_value import ResultValue
 -from manifold.manifoldapi import ManifoldAPI
 -from manifold.manifoldresult import ManifoldException
 +from manifold.manifoldapi       import ManifoldAPI
 +from manifold.manifoldresult    import ManifoldException
 +from manifold.util.log          import Log
  
  debug=False
  debug=True
@@@ -17,7 -17,7 +17,7 @@@ class QueryEditor(Plugin)
              ] ,
              'css_files': [
                  'css/query_editor.css',
--#                'css/jquery-ui.css',
++                'css/jquery-ui.css',
  #                'css/demo_page.css',
  #                'css/demo_table.css',
              ]
          event_filter_added: function(op, suffix) {
              suffix = (typeof suffix === 'undefined') ? '' : manifold.separator + suffix;
              var self = this;
--            return function(e) {
++            return function(e, ui) {
                  var array = self.array_from_id(e.target.id);
                  var key   = self.field_from_id(array); // No need to remove suffix...
--                var value = e.target.value;
++
++                // using autocomplete ui
++                if(typeof(ui) != "undefined"){
++                    var value = ui.item.value;
++                }else{
++                    var value = e.target.value;
++                }
  
                  if (value) {
                      // XXX This should be handled by manifold
@@@ -34,7 -34,7 +40,7 @@@
  
          init: function(options, element) {
              this._super(options, element);
--
++            console.log("init Query_Editor");
              this.listen_query(options.query_uuid);
  
              this.elts('queryeditor-auto-filter').change(this.event_filter_added('='));
@@@ -82,7 -82,7 +88,6 @@@
                  ]
              });
  
--            var self = this;
              // Actions on the newly added fields
              this.elmt('table tbody td span').on('click', function() {
                  var nTr = this.parentNode.parentNode;
                  'padding-top'   : '0em',
                  'padding-bottom': '0em'
              });
++            
++            // autocomplete list of tags
++            this.availableTags = {};
  
          }, // init
  
  
          on_field_added: function(field)
          {
++            console.log("on_field_added : "+field);
              this.check_field(field);
          },
  
              this.uncheck_field(field);
          },
  
++        /* RECORD HANDLERS */
++        on_query_done: function()
++        {
++            //console.log("Query_Editor: query_done!");
++            //console.log(this.availableTags);
++        },
++        on_new_record: function(record)
++        {
++            //console.log("Query_Editor: new_record!");
++            //console.log(record);
++            availableTags = this.availableTags;           
++            jQuery.each(record,function(key,value){
++                value = get_value(value);
++                if(!availableTags.hasOwnProperty(key)){availableTags[key]=new Array();}
++                //availableTags[key].push(value);
++                var currentArray = availableTags[key];
++                if(value!=null){
++                    if(jQuery.inArray(value,currentArray)==-1){availableTags[key].push(value);}
++                }
++           });
++           this.availableTags = availableTags;
++           this.update_autocomplete(availableTags);
++        },
++
          /* Former code not used at the moment */
  
          print_field_description: function(field_header, div_id) 
              return output;
          },
  
++        update_autocomplete: function(availableTags)
++        {
++            var self = this;
++            var domid = this.options.plugin_uuid;
++            
++            jQuery.each(availableTags, function(key, value){
++                value.sort();
++                jQuery("#"+domid+"__field__"+key).autocomplete({
++                            source: value,
++                            selectFirst: true,
++                            minLength: 0, // allows to browse items with no value typed in
++                            select: self.event_filter_added('=')
++                });
++            });                
++        }, // update_autocomplete     
++
++/*
          update_autocomplete: function(e, rows, current_query)
          {
              var d = data;
                  });
              });                
          }, // update_autocomplete     
--
++*/
          fnFormatDetails: function( metaTable, nTr, div_id ) 
          {
              var aData = metaTable.fnGetData( nTr );
Simple merge
Simple merge
@@@ -24,7 -24,7 +24,8 @@@ from plugins.messages                im
  tmp_default_slice='ple.upmc.myslicedemo'
  
  # temporary : turn off the users part to speed things up
--do_query_users=True
++#do_query_users=True
++do_query_users=False
  
  class SliceView (LoginRequiredAutoLogoutView):
  
@@@ -32,6 -32,6 +33,7 @@@
      
          page = Page(request)
          page.add_css_files ('css/slice-view.css')
++        page.add_js_files  ( [ "js/common.functions.js" ] )
          page.add_js_chunks ('$(function() { console.log("sliceview: jQuery version " + $.fn.jquery); });')
          page.add_js_chunks ('$(function() { console.log("sliceview: users turned %s"); });'%("on" if do_query_users else "off"))
          page.expose_js_metadata()
  
          resources_query_editor = QueryEditor(
              page  = page,
--            query = sq_resource,
++            query = query_resource_all,
              title = "Select Columns",
              )
          resources_active_filters = ActiveFilters(
    {% endfor %}
  </ul>
  {% endif %}
- <div class="onelab-title well well-lg">
-   <h2>OneLab Experimenter Registration</h2>
-   <h4>For First Line Support please <a href="/portal/contact" >Contact Support</a></h3>
- </div>
     
  <div class="well">
- <form class="cmxform" id="commentForm" method="post" action="" enctype="multipart/form-data" >
- {% csrf_token %}
-  <fieldset>
-    <div class="field">
-      <label for="cname">First Name</label>
-      <input type="text" id="firstname" name="firstname" size="25" class="required" minlength="2" value="{{ firstname}}" /> 
-      <p class="hint">Enter your first name</p>
-      <?php echo $errfName;?>
-    </div>
-    <div class="field">
-      <label for="lname">Last Name</label>
-      <input type="text" id="lastname" name="lastname" size="25" class="required" minlength="2" value="{{ lastname }}"/> 
-      <p class="hint">Enter your last name</p>
-      <?php echo $errlName;?>
-    </div>
-    <!-- DEPRECATED
-       <div class="field">
-      <label for="aff_list">Affiliation</label>
-      <input type="text" id="aff_list" name="affiliation" size="25" class="required"  value="{{ affiliation }}"/> 
-      <p class="hint">Enter your Institution name</p>
-      <?php echo $erraffiliation;?>
-    </div>
-       -->
-     <div class="field">
-       <label for="auth_list">Authority</label>
-       <select id="auth_list" name="authority_hrn" size="1" class="required">
-         {% for authority in authorities %}
-         <option value="{{ authority.authority_hrn }}"/>{{authority.authority_hrn}}</option>
-         {% endfor %}
-      </select>
-      <p class="hint">Please select an authority responsible for vetting your account</p>
-    </div>
-    <div class="field">
-      <label for="cemail">Email</label>
-      <input type="text" id="email" name="email" size="25"  class="required email" value="{{ email }}"/> 
-      <p class="hint">Enter a valid email address</p>
-      <?php echo $errEmail; ?>
-    </div>
-    <div class="field">
-      <label for="password">Password</label>
-      <input type="password"  id="password" name="password"   class="required" minlength="4" value="{{ password }}"/> 
-      <p class="hint">Enter password</p>
-      <?php //echo $errPass;?>
-    </div>
-    <div class="field">
-      <label for="password">Confirm Password</label>
-      <input type="password"  id="confirmpassword" name="confirmpassword"   minlength="4" class="required" value=""/>
-      <p class="hint">Retype the password</p>
-    </div>
-    <div class="field">
-       <label for="question">My Keys</label>
-       <select name="question" class="required" id="question">        
-         <option value="generate">Generate key pairs for me </option>
-         <option value="upload">Upload my public key </option>
-       </select>
-               <p class="hint">Genkey: Account Delegation Automatic (Recommended)</p> 
-       <?php echo $errFile; ?>
-    </div>
-    <div class="field" style="display:none;" id="upload_key">
-       <label for="file">Upload public key</label>
-       <input type="file" name="user_public_key" class="required" id="user_public_key"/>
-       <p class="hint">Account Delegation: Manual (Advanced Users)</p>
-         <p class="warning" id="pkey_del_msg">Once your account is validated, you will have to delegate your credentials manually using SFA [Advanced users only]</p>
-    </div>
-    <div class="field" id="register">
-      <input class="submit btn" type="submit"  name="submit" value="Register"/>
-    </div>
-  </fieldset>
- </form>
 -  <form class="cmxform form-horizontal" id="registrationForm" method="post" action="" enctype="multipart/form-data" role="form">
++ <form class="cmxform form-horizontal" id="registrationForm" method="post" action="" enctype="multipart/form-data" role="form">
+     <fieldset>
+     {% csrf_token %}
+     <div class="form-group">
+       <label for="firstname" class="col-md-4 control-label">First Name</label>
+       <div class="col-md-4">
+       <input type="text" name="firstname" class="form-control" minlength="2" value="{{ firstname }}" placeholder="First Name" required />
+       </div>
+       <div class="col-md-4"> <p class="form-hint">Enter your first name</p> </div>
+     </div>
+     <div class="form-group">
+       <label for="lastname" class="col-md-4 control-label">Last Name</label>
+       <div class="col-md-4">
+       <input type="text" name="lastname" size="25" class="form-control" minlength="2" value="{{ lastname }}" placeholder="Last Name" required />
+       </div>
+       <div class="col-md-4"><p class="form-hint">Enter your last name</p></div>
+     </div>
+     <div class="form-group">
+       <label for="auth_list" class="col-md-4 control-label">Authority</label>
+       <div class="col-md-4">
+       <select id="auth_list" name="authority_hrn" size="1" class="form-control" required>
+         {% if authorities %}
+         {% for authority in authorities %}
 -        <option value="{{ authority.authority_hrn }}">{{authority.name}} ({{authority.authority_hrn}})</option>
++      <option value="{{ authority.authority_hrn }}"/>{{authority.authority_hrn}}</option>
++        <!-- <option value="{{ authority.authority_hrn }}">{{authority.name}} ({{authority.authority_hrn}})</option> -->
+         {% endfor %}
+         {% else %} <!-- should not happen -->
+         <option value="test">No authority found !!! </option>
+         {% endif %}
+       </select>
+       </div>
+       <div class="col-md-4"><p class="form-hint">Please select an authority responsible for vetting your account</p></div>
+     </div>
+     
+     <div class="form-group">
+       <label for="email" class="col-md-4 control-label">Email</label>
+       <div class="col-md-4">
+       <input type="email" name="email" size="25"  class="form-control" value="{{ email }}" required/> 
+       </div>
+       <div class="col-md-4"><p class="form-hint">Enter a valid email address</p></div>
+     </div>
+     <div class="form-group">
+       <label for="password" class="col-md-4 control-label">Password</label>
+       <div class="col-md-4">
+       <input type="password"  id="password" name="password"   class="form-control" minlength="4" value="{{ password }}" required/> 
+       </div>
+       <div class="col-md-4"><p class="form-hint">Enter password</p></div>
+     </div>
+     <div class="form-group">
+       <label for="password" class="col-md-4 control-label">Confirm Password</label>
+       <div class="col-md-4">
+       <input type="password"  id="confirmpassword" name="confirmpassword"   minlength="4" class="form-control" 
+              value="" placeholder="Confirm Password" required/>
+       </div>
+       <div class="col-md-4"><p class="form-hint">Retype the password</p></div>
+     </div>
+     <div class="form-group">
+       <label for="question" class="col-md-4 control-label">My Keys</label>
+       <div class="col-md-4">
+       <select name="question" class="form-control" id="key-policy" required>        
+         <option value="generate">Generate key pairs for me </option>
+         <option value="upload">Upload my public key </option>
+       </select>
+       </div>
+       <div class="col-md-4"><p class="form-hint">Genkey: Account Delegation Automatic (Recommended)</p> </div>
+     </div>
+     <div class="form-group" style="display:none;" id="upload_key">
+       <label for="file" class="col-md-4 control-label">Upload public key</label>
+       <div class="col-md-4">
+       <input type="file" name="user_public_key" class="form-control" id="user_public_key" required/>
+       <p class="warning" id="pkey_del_msg">Once your account is validated, you will have to delegate your credentials manually using SFA [Advanced users only]</p>
+       </div>
+       <div class="col-md-4"><p class="form-hint">Account Delegation: Manual (Advanced Users)</p></div>
+     </div>
+     <div class="form-group" id="register">
+       <div class="col-md-offset-4 col-md-4">
+       <button class="submit btn btn-default" type="submit">Register</button>
+       </div>
+     </div>
+   </fieldset>
+   </form>  
++>>>>>>> abb43f86edd5a2888cb96ca92a58350db9e32fcf
  </div>
  
  {% endblock %}
@@@ -34,7 -34,7 +34,11 @@@ var unfold = 
      },
  
      escape_id: function(id) {
--        return id.replace( /(:|\.|\[|\])/g, "\\$1" );
++        if(typeof id != 'undefined'){
++            return id.replace( /(:|\.|\[|\])/g, "\\$1" );
++        }else{
++            return "fake-id";
++        }
      }
  
  } // global unfold