Project

General

Profile

1
<?xml version="1.0"?>
2

    
3
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
4

    
5
	<xsl:output omit-xml-declaration="yes" method="html" encoding="UTF-8" standalone="no" />
6

    
7
	<xsl:param name="profileId" />
8
	<xsl:param name="ifaceId" />
9
	<xsl:param name="protocol" />
10
	<xsl:param name="baseUrl" />
11
	<xsl:param name="compliance" />
12
	<xsl:param name="overrideCompliance" />
13
	<xsl:param name="typology" />
14
	<xsl:param name="prefix" />
15

    
16
	<xsl:template match="/">
17
		<div class="row" style="margin-bottom:20px;">
18
			<div class="col-xs-12 col-md-offset-2 col-md-8" style="border: 1px solid #dddddd; border-radius: 4px; padding: 20px">
19
				<xsl:apply-templates select="//CONFIGURATION|//extra_info/parameters" />
20
			</div>
21
		</div>
22
	</xsl:template>
23

    
24
	<xsl:template match="CONFIGURATION">
25

    
26
		<xsl:variable name="country" select="normalize-space(./COUNTRY)" />
27

    
28
		<form class="form-horizontal">
29
			<wf-form-row-static name="Datasource name" value="{./OFFICIAL_NAME}" />
30
			<xsl:choose>
31
				<xsl:when test="$typology = ./DATASOURCE_TYPE">
32
					<wf-form-row-static name="Typology" value="{$typology}" />
33
				</xsl:when>
34
				<xsl:otherwise>
35
					<wf-form-row-static name="Typology" value="{./DATASOURCE_TYPE} (datasource), {$typology} (API)" style="color: #dd9900" />
36
				</xsl:otherwise>
37
			</xsl:choose>
38
			<wf-form-row-link name="Institution" value="{./REPOSITORY_INSTITUTION}" url="{./REPOSITORY_WEBPAGE}" />
39
			<wf-form-row-link name="Contact email" value="{./ADMIN_INFO}" url="{./ADMIN_INFO}" />
40
			<xsl:choose>
41
				<xsl:when test="string-length($country) = 2">
42
					<wf-form-row-static-img name="Country" value="{$country}" img="../resources/img/flags/{$country}.gif" />
43
				</xsl:when>
44
				<xsl:otherwise>
45
					<wf-form-row-static name="Country" value="-" />
46
				</xsl:otherwise>
47
			</xsl:choose>
48
			<wf-form-row-static name="Software typology" value="{./TYPOLOGY}" />
49
		
50
			<hr />
51

    
52
			<div class="form-group" ng-init="newCompatibilityLevel='{$overrideCompliance}'" ng-class="{{'has-warning': newCompatibilityLevel}}">
53
				<label class="col-sm-3 control-label">Level of compliance</label>
54
				<div class="col-sm-9">
55
					<select class="form-control" ng-model="newCompatibilityLevel" ng-change="updateCompatibilityLevel('{$profileId}', '{$ifaceId}', newCompatibilityLevel)">
56
						<xsl:for-each select="//extra_info/compatibilityLevels/level">
57
							<option value="{.}">
58
								<xsl:value-of select="concat(., ' (override)')" />
59
							</option>
60
						</xsl:for-each>
61
						<option disabled="disabled" style="border-top: 1px solid lightgrey; margin-top: 10px;"></option>
62
						<option value="">
63
							<xsl:value-of select="concat($compliance, ' (by validator)')" />
64
						</option>
65
					</select>
66
				</div>
67
			</div>
68
				
69
			<hr />
70

    
71
			<wf-form-row-static name="API id" value="{$ifaceId}" />
72
			<wf-form-row-static name="Datasource id" value="{./DATASOURCE_ORIGINAL_ID}" />
73
			<wf-form-row-static name="Datasource prefix" value="{$prefix}" />
74
			<wf-form-row-link name="Profile" value="[link]" url="isManager.do#/profile/{$profileId}" />
75
			
76
			<xsl:if test="//extra_info/extraFields/field[@name = 'last_collection_date'] and //extra_info/extraFields/field[@name = 'last_collection_mdId'] and //extra_info/extraFields/field[@name = 'last_collection_total']">
77
				<hr />
78
				<wf-form-row-store-link name="Last collection" 
79
					date="{//extra_info/extraFields/field[@name = 'last_collection_date']}" 
80
					total="{//extra_info/extraFields/field[@name = 'last_collection_total']}" 
81
					url="../inspector/mdstore.do?id={//extra_info/extraFields/field[@name = 'last_collection_mdId']}" />
82
			</xsl:if>
83
		
84
			<xsl:if test="//extra_info/extraFields/field[@name = 'last_aggregation_date'] and //extra_info/extraFields/field[@name = 'last_aggregation_mdId'] and //extra_info/extraFields/field[@name = 'last_aggregation_total']">
85
				<hr />
86
				<wf-form-row-store-link name="Last aggregation" 
87
					date="{//extra_info/extraFields/field[@name = 'last_aggregation_date']}" 
88
					total="{//extra_info/extraFields/field[@name = 'last_aggregation_total']}" 
89
					url="../inspector/mdstore.do?id={//extra_info/extraFields/field[@name = 'last_aggregation_mdId']}" />
90
			</xsl:if>
91
			
92
			<xsl:if test="//extra_info/extraFields/field[@name = 'last_download_date'] and //extra_info/extraFields/field[@name = 'last_download_objId'] and //extra_info/extraFields/field[@name = 'last_download_total']">
93
				<hr />
94
				<wf-form-row-store-link name="Last download" 
95
					date="{//extra_info/extraFields/field[@name = 'last_download_date']}" 
96
					total="{//extra_info/extraFields/field[@name = 'last_download_total']}" 
97
					url="objectstoreInspector.do#/inspect.do/{//extra_info/extraFields/field[@name = 'last_download_objId']}" />
98
			</xsl:if>
99
			
100
			<hr />
101

    
102
			<div class="form-group">
103
				<label class="col-sm-3 control-label">Access Protocol</label>
104
				<div class="col-sm-9">
105
					<p class="form-control-static">
106
						<table class="table table-condensed table-striped">
107
							<tr>
108
								<th colspan="2">Protocol</th>
109
								<td class="col-xs-9">
110
									<xsl:value-of select="$protocol" />
111
									<xsl:if test="$protocol = 'oai' or $protocol = 'OAI'">
112
										<a href="oaiExplorer.do?oaiBaseUrl={$baseUrl}" class="btn btn-xs btn-primary pull-right">verify</a>
113
									</xsl:if>
114
								</td>
115
							</tr>
116
							<tr>
117
								<th colspan="2">Base URL</th>
118
								<td>
119
									<a href="{$baseUrl}">
120
										<xsl:value-of select="$baseUrl" />
121
									</a>
122
								</td>
123
							</tr>
124

    
125
							<xsl:variable name="countParams" select="count(//extra_info/parameters/param)" />
126
							<xsl:for-each select="//extra_info/parameters/param">
127
								<tr>
128
									<xsl:if test="position() = 1">
129
										<th rowspan="{$countParams}" class="col-xs-2">Parameters</th>
130
									</xsl:if>
131
									<td class="col-xs-2">
132
										<i>
133
											<xsl:value-of select="@name" />
134
										</i>
135
									</td>
136
									<td class="col-xs-8">
137
										<xsl:value-of select="." />
138
									</td>
139
								</tr>
140
							</xsl:for-each>
141
						</table>
142

    
143
					</p>
144
				</div>
145
			</div>
146
			<div class="form-group">
147
				<div class="col-sm-offset-3 col-sm-9">
148
					<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#editAccessParamsModal">configure</button>
149
				</div>
150
			</div>
151
	
152
			<hr />
153
	
154
			<div class="form-group">
155
				<label class="col-sm-3 control-label">API Extra fields</label>
156
				<div class="col-sm-9">
157
					<p class="form-control-static">
158
						<table class="table table-condensed table-striped">
159
							<xsl:for-each select="//extra_info/extraFields/field[not(starts-with(@name, 'last_collection_') or starts-with(@name, 'last_aggregation_') or starts-with(@name, 'last_download_'))]">
160
								<tr>
161
									<th class="col-xs-4">
162
										<xsl:value-of select="@name" />
163
									</th>
164
									<td class="col-xs-8">
165
										<xsl:value-of select="." />
166
									</td>
167
								</tr>
168
							</xsl:for-each>
169
						</table>
170
					</p>
171
				</div>
172
			</div>
173
		
174
			<hr />
175

    
176
			<div class="form-group">
177
				<label class="col-sm-3 control-label">Related workflows</label>
178
				<div class="col-sm-9">
179
					<p class="form-control-static">
180
						<xsl:choose>
181
							<xsl:when test="count(//workflows/workflow) = 0">
182
								No workflows							
183
							</xsl:when>
184
							<xsl:otherwise>
185
								<xsl:for-each select="//workflows/workflow">
186
									<a href="workflows.do#/wf/{@id}"><xsl:value-of select="@name" /></a><br />
187
									<xsl:if test="@description">
188
										<span class="small text-muted">
189
											<xsl:value-of select="@description"/>
190
										</span>
191
									</xsl:if>
192
									<hr />
193
								</xsl:for-each>
194
							</xsl:otherwise>
195
						</xsl:choose>
196
					</p>
197
				</div>
198
			</div>
199
			
200
			<div class="form-group">
201
				<div class="col-sm-offset-3 col-sm-9">
202
					<xsl:variable name="definitiveCompliance">
203
						<xsl:choose>
204
							<xsl:when test="$overrideCompliance">
205
								<xsl:value-of select="$overrideCompliance" />
206
							</xsl:when>
207
							<xsl:otherwise>
208
								<xsl:value-of select="$compliance" />
209
							</xsl:otherwise>
210
						</xsl:choose>
211
					</xsl:variable>
212
					<button type="button" class="btn btn-sm btn-primary" data-toggle="modal" data-target="#addWorkflowModal"
213
						ng-click="findRepoHiWorkflows('{normalize-space($definitiveCompliance)}', '{normalize-space($typology)}')">
214
						add workflow
215
					</button>
216
					<button type="button" class="btn btn-sm btn-default pull-right" ng-click="refresh()">
217
						<span class="glyphicon glyphicon-refresh"></span>
218
					</button>
219
				</div>
220
			</div>
221
		</form>
222
		
223
		<wf-process-modal proc-id="currentProcId" visible="showProcModal"></wf-process-modal>
224
				
225
		<div id="addWorkflowModal" class="modal fade" tabindex="-1" role="dialog">
226
			<div class="modal-dialog modal-lg">
227
				<div class="modal-content">
228
					<div class="modal-header">
229
						<button type="button" class="close" data-dismiss="modal">
230
							<xsl:text disable-output-escaping="yes"><![CDATA[&times;]]></xsl:text>
231
						</button>
232
						<h4 class="modal-title">Select workflow</h4>
233
					</div>
234
					<div class="modal-body">
235
						<div ng-repeat="e in availableRepohiWfs" class="panel panel-default">
236
							<div class="panel-heading">
237
								<a ng-click="newRepoWorkflow('{$profileId}', '{$ifaceId}', e.id)" data-dismiss="modal" href="javascript:void(0)">{{e.name}}</a>
238
								<a href="isManager.do#/profile/{{{{e.id}}}}" class="pull-right">[link]</a>
239
								<br /><span class="text-muted small">{{e.description}}</span>
240
							</div>
241
							<table class="table table-striped table-condensed small">
242
								<tr>
243
									<th class="col-xs-3 text-right">Typology prefixes</th>
244
									<td>{{e.ifaceTypes.join()}}</td>
245
								</tr><tr>
246
									<th class="col-xs-3 text-right">Compliance prefixes</th>
247
									<td>{{e.compliances.join()}}</td>
248
								</tr><tr ng-repeat="f in e.fields">
249
									<th class="col-xs-3 text-right">{{f.k}}</th>
250
									<td>{{f.v}}</td>
251
								</tr>
252
							</table>
253
						</div>
254
					</div>
255
					<div class="modal-footer">
256
						<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
257
					</div>
258
				</div>
259
			</div>
260
		</div>
261
	</xsl:template>
262

    
263
	<xsl:template match="parameters">
264
		<div id="editAccessParamsModal" class="modal fade" tabindex="-1" role="dialog">
265
			<div class="modal-dialog modal-lg">
266
				<div class="modal-content">
267
					<div class="modal-header">
268
						<button type="button" class="close" data-dismiss="modal">
269
							<xsl:text disable-output-escaping="yes"><![CDATA[&times;]]></xsl:text>
270
						</button>
271
						<h4 class="modal-title">
272
							<xsl:value-of select="concat('Protocol: ', $protocol)" />
273
						</h4>
274
					</div>
275
					<div class="modal-body">
276
							<form class="form-horizontal" role="form" ng-init="params.baseUrl = '{$baseUrl}'">
277
			
278
								<div class="form-group">
279
									<wf-form-row-text name="Base URL" mandatory="true" regex="^(http|https|ftp|ftps|sftp|file):\/\/" init-value="{$baseUrl}"
280
										ng-model="params.baseUrl" ng-original-model="originalParams.baseUrl" />
281

    
282
									<xsl:for-each select="./param">
283
										<xsl:choose>
284
											<xsl:when test="@functionPopulated = 'true' and @type = 'LIST'">
285
												<wf-form-row-multi-select name="{@name}" init-value="{.}" ng-model="params.{@name}" ng-original-model="originalParams.{@name}" values-function="obtainValues('listProtocolFieldValues',  {{ 'baseUrl': '{{{{params.baseUrl}}}}', 'protocol': '{$protocol}', 'field' : '{@name}' }} )">
286
													<xsl:if test="not(@optional) or @optional != 'true'">
287
														<xsl:attribute name="mandatory">true</xsl:attribute>
288
													</xsl:if>
289
													<xsl:if test="@regex">
290
														<xsl:attribute name="regex"><xsl:value-of select="@regex" /></xsl:attribute>
291
													</xsl:if>
292
												</wf-form-row-multi-select>
293
											</xsl:when>
294
											<xsl:when test="@functionPopulated = 'true' and @type != 'LIST'">
295
												<wf-form-row-select name="{@name}" init-value="{.}" ng-model="params.{@name}" ng-original-model="originalParams.{@name}" values-function="obtainValues('listProtocolFieldValues',  {{ 'baseUrl': '{{{{params.baseUrl}}}}', 'protocol': '{$protocol}', 'field' : '{@name}' }} )">
296
													<xsl:if test="not(@optional) or @optional != 'true'">
297
														<xsl:attribute name="mandatory">true</xsl:attribute>
298
													</xsl:if>
299
													<xsl:if test="@regex">
300
														<xsl:attribute name="regex"><xsl:value-of select="@regex" /></xsl:attribute>
301
													</xsl:if>
302
												</wf-form-row-select>
303
											</xsl:when>
304
											<xsl:otherwise>
305
												<wf-form-row-text name="{@name}" init-value="{.}" ng-model="params.{@name}" ng-original-model="originalParams.{@name}">
306
													<xsl:if test="not(@optional) or @optional != 'true'">
307
														<xsl:attribute name="mandatory">true</xsl:attribute>
308
													</xsl:if>
309
													<xsl:if test="@regex">
310
														<xsl:attribute name="regex"><xsl:value-of select="@regex" /></xsl:attribute>
311
													</xsl:if>
312
												</wf-form-row-text>
313
											</xsl:otherwise>
314
										</xsl:choose>
315
									</xsl:for-each>
316
								</div>
317
							</form>
318
					</div>
319
					<div class="modal-footer">
320
						<button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
321
						<button type="button" class="btn btn-primary" data-dismiss="modal" ng-click="updateRepoApi('{$profileId}', '{$ifaceId}', params)">Save</button>
322
					</div>
323
				</div>
324
			</div>
325
		</div>
326
	</xsl:template>
327

    
328
</xsl:stylesheet>
(1-1/2)