1 | <% _=n_ %> |
---|
2 | ## Render the dataset `data` as history item, using `hid` as the displayed id |
---|
3 | <%def name="render_dataset( data, hid, show_deleted_on_refresh = False, for_editing = True )"> |
---|
4 | <a name="${trans.security.encode_id( data.id )}"></a> |
---|
5 | <% |
---|
6 | if data.state in ['no state','',None]: |
---|
7 | data_state = "queued" |
---|
8 | else: |
---|
9 | data_state = data.state |
---|
10 | current_user_roles = trans.get_current_user_roles() |
---|
11 | %> |
---|
12 | %if not trans.user_is_admin() and not trans.app.security_agent.can_access_dataset( current_user_roles, data.dataset ): |
---|
13 | <div class="historyItemWrapper historyItem historyItem-${data_state} historyItem-noPermission" id="historyItem-${data.id}"> |
---|
14 | %else: |
---|
15 | <div class="historyItemWrapper historyItem historyItem-${data_state}" id="historyItem-${data.id}"> |
---|
16 | %endif |
---|
17 | |
---|
18 | %if data.deleted: |
---|
19 | <div class="warningmessagesmall"> |
---|
20 | <strong>This dataset has been deleted. Click <a href="${h.url_for( controller='dataset', action='undelete', id=data.id )}" class="historyItemUndelete" id="historyItemUndeleter-${data.id}" target="galaxy_history">here</a> to undelete.</strong> |
---|
21 | </div> |
---|
22 | %endif |
---|
23 | |
---|
24 | %if data.visible is False: |
---|
25 | <div class="warningmessagesmall"> |
---|
26 | <strong>This dataset has been hidden. Click <a href="${h.url_for( controller='dataset', action='unhide', id=data.id )}" class="historyItemUnhide" id="historyItemUnhider-${data.id}" target="galaxy_history">here</a> to unhide.</strong> |
---|
27 | </div> |
---|
28 | %endif |
---|
29 | |
---|
30 | |
---|
31 | ## Header row for history items (name, state, action buttons) |
---|
32 | <div style="overflow: hidden;" class="historyItemTitleBar"> |
---|
33 | <div class="historyItemButtons"> |
---|
34 | %if data_state == "upload": |
---|
35 | ## TODO: Make these CSS, just adding a "disabled" class to the normal |
---|
36 | ## links should be enough. However the number of datasets being uploaded |
---|
37 | ## at a time is usually small so the impact of these images is also small. |
---|
38 | <img title='Display Data' class='icon-button display_disabled' /> |
---|
39 | %if for_editing: |
---|
40 | <img title='Edit Attributes' class='icon-button edit_disabled' /> |
---|
41 | %endif |
---|
42 | %else: |
---|
43 | <% |
---|
44 | dataset_id = trans.security.encode_id( data.id ) |
---|
45 | if for_editing: |
---|
46 | display_url = h.url_for( controller='dataset', action='display', dataset_id=dataset_id, preview=True, filename='' ) |
---|
47 | else: |
---|
48 | # Get URL for display only. |
---|
49 | if data.history.user and data.history.user.username: |
---|
50 | display_url = h.url_for( controller='dataset', action='display_by_username_and_slug', |
---|
51 | username=data.history.user.username, slug=dataset_id ) |
---|
52 | else: |
---|
53 | # HACK: revert to for_editing display URL when there is no user/username. This should only happen when |
---|
54 | # there's no user/username because dataset is being displayed by history/view after error reported. |
---|
55 | # There are no security concerns here because both dataset/display and dataset/display_by_username_and_slug |
---|
56 | # check user permissions (to the same degree) before displaying. |
---|
57 | display_url = h.url_for( controller='dataset', action='display', dataset_id=dataset_id, preview=True, filename='' ) |
---|
58 | %> |
---|
59 | <a class="icon-button display tooltip" title="Display data in browser" href="${display_url}" |
---|
60 | %if for_editing: |
---|
61 | target="galaxy_main" |
---|
62 | %endif |
---|
63 | ></a> |
---|
64 | %if for_editing: |
---|
65 | <a class="icon-button edit tooltip" title="Edit attributes" href="${h.url_for( controller='root', action='edit', id=data.id )}" target="galaxy_main"></a> |
---|
66 | %endif |
---|
67 | %endif |
---|
68 | %if for_editing: |
---|
69 | <a class="icon-button delete tooltip" title="Delete" href="${h.url_for( action='delete', id=data.id, show_deleted_on_refresh=show_deleted_on_refresh )}" id="historyItemDeleter-${data.id}"></a> |
---|
70 | %endif |
---|
71 | </div> |
---|
72 | <span class="state-icon"></span> |
---|
73 | <span class="historyItemTitle">${hid}: ${data.display_name()}</span> |
---|
74 | </div> |
---|
75 | |
---|
76 | ## Body for history items, extra info and actions, data "peek" |
---|
77 | |
---|
78 | <div id="info${data.id}" class="historyItemBody"> |
---|
79 | %if not trans.user_is_admin() and not trans.app.security_agent.can_access_dataset( current_user_roles, data.dataset ): |
---|
80 | <div>You do not have permission to view this dataset.</div> |
---|
81 | %elif data_state == "upload": |
---|
82 | <div>Dataset is uploading</div> |
---|
83 | %elif data_state == "queued": |
---|
84 | <div>${_('Job is waiting to run')}</div> |
---|
85 | %elif data_state == "running": |
---|
86 | <div>${_('Job is currently running')}</div> |
---|
87 | %elif data_state == "error": |
---|
88 | <div> |
---|
89 | An error occurred running this job: <i>${data.display_info().strip()}</i> |
---|
90 | </div> |
---|
91 | <div> |
---|
92 | <a href="${h.url_for( controller='dataset', action='errors', id=data.id )}" target="galaxy_main" title="View or report this error" class="icon-button bug tooltip"></a> |
---|
93 | <a href="${h.url_for( controller='tool_runner', action='rerun', id=data.id )}" target="galaxy_main" title="Run this job again" class="icon-button arrow-circle tooltip"></a> |
---|
94 | </div> |
---|
95 | %elif data_state == "discarded": |
---|
96 | <div> |
---|
97 | The job creating this dataset was cancelled before completion. |
---|
98 | </div> |
---|
99 | %elif data_state == 'setting_metadata': |
---|
100 | <div>${_('Metadata is being Auto-Detected.')}</div> |
---|
101 | %elif data_state == "empty": |
---|
102 | <div>${_('No data: ')}<i>${data.display_info()}</i></div> |
---|
103 | %elif data_state in [ "ok", "failed_metadata" ]: |
---|
104 | %if data_state == "failed_metadata": |
---|
105 | <div class="warningmessagesmall" style="margin: 4px 0 4px 0"> |
---|
106 | An error occurred setting the metadata for this dataset. You may be able to <a href="${h.url_for( controller='root', action='edit', id=data.id )}" target="galaxy_main">set it manually or retry auto-detection</a>. |
---|
107 | </div> |
---|
108 | %endif |
---|
109 | <div> |
---|
110 | ${data.blurb}, |
---|
111 | format: <span class="${data.ext}">${data.ext}</span>, |
---|
112 | database: |
---|
113 | %if data.dbkey == '?': |
---|
114 | <a href="${h.url_for( controller='root', action='edit', id=data.id )}" target="galaxy_main">${_(data.dbkey)}</a> |
---|
115 | %else: |
---|
116 | <span class="${data.dbkey}">${_(data.dbkey)}</span> |
---|
117 | %endif |
---|
118 | </div> |
---|
119 | <div class="info">${_('Info: ')}${data.display_info()}</div> |
---|
120 | <div> |
---|
121 | <% dataset_id=trans.security.encode_id( data.id ) %> |
---|
122 | %if data.has_data(): |
---|
123 | <a href="${h.url_for( controller='dataset', action='display', dataset_id=dataset_id, to_ext=data.ext )}" title="Save" class="icon-button disk tooltip"></a> |
---|
124 | %if for_editing: |
---|
125 | <a href="${h.url_for( controller='tool_runner', action='rerun', id=data.id )}" target="galaxy_main" title="Run this job again" class="icon-button arrow-circle tooltip"></a> |
---|
126 | %if app.config.get_bool( 'enable_tracks', False ) and data.ext in app.datatypes_registry.get_available_tracks(): |
---|
127 | <a data-url="${h.url_for( controller='tracks', action='list_tracks' )}" class="icon-button vis-chart tooltip trackster-add" |
---|
128 | action-url="${h.url_for( controller='tracks', action='browser', dataset_id=dataset_id)}" |
---|
129 | new-url="${h.url_for( controller='tracks', action='index', dataset_id=dataset_id, default_dbkey=data.dbkey)}" title="Visualize in Trackster"></a> |
---|
130 | %endif |
---|
131 | %if trans.user: |
---|
132 | <div style="float: right"> |
---|
133 | <a href="${h.url_for( controller='tag', action='retag', item_class=data.__class__.__name__, item_id=dataset_id )}" target="galaxy_main" title="Edit dataset tags" class="icon-button tags tooltip"></a> |
---|
134 | <a href="${h.url_for( controller='dataset', action='annotate', id=dataset_id )}" target="galaxy_main" title="Edit dataset annotation" class="icon-button annotate tooltip"></a> |
---|
135 | </div> |
---|
136 | <div style="clear: both"></div> |
---|
137 | <div class="tag-area" style="display: none"> |
---|
138 | <strong>Tags:</strong> |
---|
139 | <div class="tag-elt"></div> |
---|
140 | </div> |
---|
141 | <div id="${dataset_id}-annotation-area" class="annotation-area" style="display: none"> |
---|
142 | <strong>Annotation:</strong> |
---|
143 | <div id="${dataset_id}-annotation-elt" style="margin: 1px 0px 1px 0px" class="annotation-elt tooltip editable-text" title="Edit dataset annotation"></div> |
---|
144 | </div> |
---|
145 | |
---|
146 | %endif |
---|
147 | %else: |
---|
148 | ## When displaying datasets for viewing, this is often needed to prevent peek from overlapping |
---|
149 | ## icons. |
---|
150 | <div style="clear: both"></div> |
---|
151 | %endif |
---|
152 | <div style="clear: both"></div> |
---|
153 | %for display_app in data.datatype.get_display_types(): |
---|
154 | <% target_frame, display_links = data.datatype.get_display_links( data, display_app, app, request.base ) %> |
---|
155 | %if len( display_links ) > 0: |
---|
156 | | ${data.datatype.get_display_label(display_app)} |
---|
157 | %for display_name, display_link in display_links: |
---|
158 | <a target="${target_frame}" href="${display_link}">${_(display_name)}</a> |
---|
159 | %endfor |
---|
160 | %endif |
---|
161 | %endfor |
---|
162 | %for display_app in data.get_display_applications( trans ).itervalues(): |
---|
163 | | ${display_app.name} |
---|
164 | %for link_app in display_app.links.itervalues(): |
---|
165 | <a target="${link_app.url.get( 'target_frame', '_blank' )}" href="${link_app.get_display_url( data, trans )}">${_(link_app.name)}</a> |
---|
166 | %endfor |
---|
167 | %endfor |
---|
168 | %elif for_editing: |
---|
169 | <a href="${h.url_for( controller='tool_runner', action='rerun', id=data.id )}" target="galaxy_main" title="Run this job again" class="icon-button arrow-circle tooltip"></a> |
---|
170 | %endif |
---|
171 | |
---|
172 | </div> |
---|
173 | %if data.peek != "no peek": |
---|
174 | <div><pre id="peek${data.id}" class="peek">${_(data.display_peek())}</pre></div> |
---|
175 | %endif |
---|
176 | %else: |
---|
177 | <div>${_('Error: unknown dataset state "%s".') % data_state}</div> |
---|
178 | %endif |
---|
179 | |
---|
180 | ## Recurse for child datasets |
---|
181 | |
---|
182 | %if len( data.children ) > 0: |
---|
183 | ## FIXME: This should not be in the template, there should |
---|
184 | ## be a 'visible_children' method on dataset. |
---|
185 | <% |
---|
186 | children = [] |
---|
187 | for child in data.children: |
---|
188 | if child.visible: |
---|
189 | children.append( child ) |
---|
190 | %> |
---|
191 | %if len( children ) > 0: |
---|
192 | <div> |
---|
193 | There are ${len( children )} secondary datasets. |
---|
194 | %for idx, child in enumerate(children): |
---|
195 | ${render_dataset( child, idx + 1, show_deleted_on_refresh = show_deleted_on_refresh )} |
---|
196 | %endfor |
---|
197 | </div> |
---|
198 | %endif |
---|
199 | %endif |
---|
200 | |
---|
201 | <div style="clear: both;"></div> |
---|
202 | |
---|
203 | </div> |
---|
204 | |
---|
205 | |
---|
206 | </div> |
---|
207 | |
---|
208 | </%def> |
---|