PageRenderTime 31ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/templates/requests/common/edit_samples.mako

https://bitbucket.org/cistrome/cistrome-harvard/
Mako | 145 lines | 132 code | 9 blank | 4 comment | 9 complexity | 5442fa6b9b814cba1ec008950bdc6c83 MD5 | raw file
  1. <%inherit file="/base.mako"/>
  2. <%namespace file="/message.mako" import="render_msg" />
  3. <%namespace file="/requests/common/common.mako" import="common_javascripts" />
  4. <%namespace file="/requests/common/common.mako" import="render_samples_grid" />
  5. <%namespace file="/requests/common/common.mako" import="render_request_type_sample_form_grids" />
  6. <%namespace file="/requests/common/common.mako" import="render_samples_messages" />
  7. <%def name="stylesheets()">
  8. ${parent.stylesheets()}
  9. ${h.css( "library" )}
  10. </%def>
  11. <%def name="javascripts()">
  12. ${parent.javascripts()}
  13. ${common_javascripts()}
  14. ${local_javascripts()}
  15. </%def>
  16. <%def name="local_javascripts()">
  17. <script type="text/javascript">
  18. // This function stops the form from getting submitted when return key is pressed
  19. // This is needed in this form as the barcode scanner (when in keyboard emulation mode)
  20. // may send a return key appended to the scanned barcode string.
  21. function stopRKey(evt) {
  22. var evt = (evt) ? evt : ((event) ? event : null);
  23. var node = (evt.target) ? evt.target : ((evt.srcElement) ? evt.srcElement : null);
  24. if ((evt.keyCode == 13) && (node.type=="text")) {return false;}
  25. }
  26. document.onkeypress = stopRKey
  27. </script>
  28. </%def>
  29. <%
  30. from galaxy.web.framework.helpers import time_ago
  31. is_admin = cntrller == 'requests_admin' and trans.user_is_admin()
  32. is_complete = request.is_complete
  33. is_submitted = request.is_submitted
  34. is_unsubmitted = request.is_unsubmitted
  35. if is_admin:
  36. can_add_samples = not is_complete
  37. else:
  38. can_add_samples = is_unsubmitted
  39. can_delete_samples = request.samples and not is_complete
  40. can_edit_request = ( is_admin and not request.is_complete ) or request.is_unsubmitted
  41. can_reject = is_admin and is_submitted
  42. can_submit = request.samples and is_unsubmitted
  43. %>
  44. <br/><br/>
  45. <ul class="manage-table-actions">
  46. %if can_add_samples:
  47. <li><a class="action-button" href="${h.url_for( controller='requests_common', action='add_sample', cntrller=cntrller, request_id=trans.security.encode_id( request.id ), add_sample_button='Add sample' )}">Add sample</a></li>
  48. %endif
  49. %if can_submit:
  50. <li><a class="action-button" confirm="More samples cannot be added to this request after it is submitted. Click OK to submit." href="${h.url_for( controller='requests_common', action='submit_request', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">Submit request</a></li>
  51. %endif
  52. <li><a class="action-button" id="request-${request.id}-popup" class="menubutton">Request Actions</a></li>
  53. <div popupmenu="request-${request.id}-popup">
  54. <a class="action-button" href="${h.url_for( controller='requests_common', action='view_request', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">Browse this request</a>
  55. %if can_edit_request:
  56. <a class="action-button" href="${h.url_for( controller='requests_common', action='edit_basic_request_info', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">Edit this request</a>
  57. %endif
  58. <a class="action-button" href="${h.url_for( controller='requests_common', action='view_request_history', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">View history</a>
  59. %if can_reject:
  60. <a class="action-button" href="${h.url_for( controller='requests_admin', action='reject_request', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}">Reject this request</a>
  61. %endif
  62. </div>
  63. </ul>
  64. ${render_samples_messages(request, is_admin, is_submitted, message, status)}
  65. <div class="toolFormBody">
  66. <form id="edit_samples" name="edit_samples" action="${h.url_for( controller='requests_common', action='edit_samples', cntrller=cntrller, id=trans.security.encode_id( request.id ) )}" method="post">
  67. %if displayable_sample_widgets:
  68. <%
  69. grid_header = '<h3>Edit Current Samples of Sequencing Request "%s"</h3>' % request.name
  70. %>
  71. ${render_samples_grid( cntrller, request, displayable_sample_widgets, action='edit_samples', encoded_selected_sample_ids=encoded_selected_sample_ids, render_buttons=False, grid_header=grid_header )}
  72. %if len( sample_operation_select_field.options ) > 1 and not is_unsubmitted:
  73. <div class="form-row" style="background-color:#FAFAFA;">
  74. For selected samples:
  75. ${sample_operation_select_field.get_html()}
  76. </div>
  77. <% sample_operation_selected_value = sample_operation_select_field.get_selected( return_value=True ) %>
  78. %if ( is_admin or not is_complete ) and sample_operation_selected_value != 'none' and encoded_selected_sample_ids:
  79. <div class="form-row" style="background-color:#FAFAFA;">
  80. %if sample_operation_selected_value == trans.model.Sample.bulk_operations.CHANGE_STATE:
  81. ## sample_operation_selected_value == 'Change state'
  82. <div class="form-row">
  83. <label>Change current state</label>
  84. ${sample_state_id_select_field.get_html()}
  85. <label>Comments</label>
  86. <input type="text" name="sample_event_comment" value=""/>
  87. <div class="toolParamHelp" style="clear: both;">
  88. Optional
  89. </div>
  90. </div>
  91. %elif sample_operation_selected_value == trans.app.model.Sample.bulk_operations.SELECT_LIBRARY:
  92. <% libraries_selected_value = libraries_select_field.get_selected( return_value=True ) %>
  93. <div class="form-row">
  94. <label>Select data library:</label>
  95. ${libraries_select_field.get_html()}
  96. </div>
  97. %if libraries_selected_value != 'none':
  98. <div class="form-row">
  99. <label>Select folder:</label>
  100. ${folders_select_field.get_html()}
  101. </div>
  102. %endif
  103. %endif
  104. </div>
  105. %endif
  106. %endif
  107. <div class="toolParamHelp" style="clear: both;">
  108. For each sample, select the data library and folder in which you would like the run datasets deposited.
  109. To automatically run a workflow on run datastets, select a history first and then the desired workflow.
  110. </div>
  111. ## Render the other grids
  112. <% trans.sa_session.refresh( request.type.sample_form ) %>
  113. %for grid_index, grid_name in enumerate( request.type.sample_form.layout ):
  114. ${render_request_type_sample_form_grids( grid_index, grid_name, request.type.sample_form.grid_fields( grid_index ), displayable_sample_widgets=displayable_sample_widgets, show_saved_samples_read_only=False )}
  115. %endfor
  116. %else:
  117. <label>There are no samples.</label>
  118. %endif
  119. <p/>
  120. <div class="form-row">
  121. ## hidden element to make twill work.
  122. ## Greg will fix this
  123. <input type="hidden" name="twill" value=""/>
  124. <input type="submit" name="save_samples_button" value="Save"/>
  125. <input type="submit" name="cancel_changes_button" value="Cancel"/>
  126. <div class="toolParamHelp" style="clear: both;">
  127. Click the <b>Save</b> button when you have finished editing the samples
  128. </div>
  129. %if request.samples and request.is_submitted:
  130. <script type="text/javascript">
  131. // Updater
  132. sample_state_updater( {${ ",".join( [ '"%s" : "%s"' % ( s.id, s.state.name ) for s in request.samples ] ) }});
  133. </script>
  134. %endif
  135. </form>
  136. </div>