2 ~ Licensed to the Apache Software Foundation (ASF) under one
3 ~ or more contributor license agreements. See the NOTICE file
4 ~ distributed with this work for additional information
5 ~ regarding copyright ownership. The ASF licenses this file
6 ~ to you under the Apache License, Version 2.0 (the
7 ~ "License"); you may not use this file except in compliance
8 ~ with the License. You may obtain a copy of the License at
10 ~ http://www.apache.org/licenses/LICENSE-2.0
12 ~ Unless required by applicable law or agreed to in writing,
13 ~ software distributed under the License is distributed on an
14 ~ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15 ~ KIND, either express or implied. See the License for the
16 ~ specific language governing permissions and limitations
19 <script id="legacy-artifact-path-main" type="text/html">
20 <div id="legacy-artifact-path-screen">
21 <div class="page-header">
22 <h2>${$.i18n.prop('legacy-artifact-paths.list')}</h2>
25 <ul id="legacy-artifact-paths-view-tabs" class="nav nav-tabs">
26 <li id="legacy-artifact-paths-view-tabs-li-grid">
27 <a data-toggle="tab" href="#legacy-artifact-paths-view" id="legacy-artifact-paths-view-tabs-a-grid">${$.i18n.prop('legacy-artifact-paths.grid.tab.title')}</a>
29 <li id="legacy-artifact-paths-view-tabs-li-edit">
30 <a data-toggle="tab" href="#legacy-artifact-paths-edit">${$.i18n.prop('add')}</a>
33 <div id="legacy-artifact-paths-view-tabs-content" class="tab-content">
34 <div id="legacy-artifact-paths-view" class="tab-pane">
35 <table class="table table-striped table-bordered" id="legacy-artifact-paths-table"
36 data-bind="simpleGrid: gridViewModel,simpleGridTemplate:'ko-legacy-artifact-paths-grid',pageLinksId:'legacy-artifact-pathsPagination'">
38 <div id="legacy-artifact-pathsPagination"></div>
40 <div id="legacy-artifact-paths-edit" class="tab-pane" data-bind='template: {name:"legacy-artifact-paths-edit-tmpl"}'></div>
45 <script id='ko-legacy-artifact-paths-grid' type='text/x-jquery-tmpl'>
48 {{each(i, columnDefinition) columns}}
49 <th>${ columnDefinition.headerText }</th>
51 <th>${$.i18n.prop('delete')}</th>
55 {{each(i, row) itemsOnCurrentPage()}}
56 <tr data-bind="css:{ 'modified': row.modified()}">
57 {{each(j, columnDefinition) columns}}
58 {{var val = (typeof columnDefinition.rowText == 'function' ? columnDefinition.rowText(row) : row[columnDefinition.rowText])}}
64 <a href="#" data-bind="click: function(){ removeLegacyArtifactPath(row) }">
65 <img src="images/edit-cut.png" title="${$.i18n.prop('delete')}"/>
74 <script id="legacy-artifact-paths-edit-tmpl" type="text/html">
75 <form id="legacy-artifact-paths-edit-form" class="well form-horizontal">
76 <fieldset id="legacy-artifact-paths-edit-fieldset">
77 <div class="control-group">
78 <label class="control-label" for="groupId">${$.i18n.prop('legacy-artifact-paths.groupId')}</label>
79 <div class="controls">
80 <input type="text" class="xlarge required" id="groupId" name="groupId" size="8"
81 data-bind="value: legacyArtifactPath.groupId"/>
84 <div class="control-group">
85 <label class="control-label" for="artifactId">${$.i18n.prop('legacy-artifact-paths.artifactId')}</label>
86 <div class="controls">
87 <input type="text" class="xlarge required" id="artifactId" name="artifactId" size="8"
88 data-bind="value: legacyArtifactPath.artifactId"/>
91 <div class="control-group">
92 <label class="control-label" for="version">${$.i18n.prop('legacy-artifact-paths.version')}</label>
93 <div class="controls">
94 <input type="text" class="xlarge required" id="version" name="version" size="8"
95 data-bind="value: legacyArtifactPath.version"/>
98 <div class="control-group">
99 <label class="control-label" for="classifier">${$.i18n.prop('legacy-artifact-paths.classifier')}</label>
100 <div class="controls">
101 <input type="text" class="xlarge" id="classifier" name="classifier" size="8"
102 data-bind="value: legacyArtifactPath.classifier"/>
105 <div class="control-group">
106 <label class="control-label" for="type">${$.i18n.prop('legacy-artifact-paths.type')}</label>
107 <div class="controls">
108 <input type="text" class="xlarge required" id="type" name="type" size="8"
109 data-bind="value: legacyArtifactPath.type"/>
112 <div class="control-group">
113 <label class="control-label" for="path">${$.i18n.prop('legacy-artifact-paths.path')}</label>
114 <div class="controls">
115 <input type="text" class="xlarge required" id="path" name="path" size="8"
116 data-bind="value: legacyArtifactPath.path"/>
119 <div class="control-group">
120 <label class="control-label" for="artifact">${$.i18n.prop('legacy-artifact-paths.artifact')}</label>
121 <div class="controls">
122 <span title="calculated from values" class="uneditable-input"
123 id="artifact" data-bind="text: legacyArtifactPath.artifact"></span>
128 <button id="network-proxy-btn-save" data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
129 <button id="network-proxy-btn-cancel" data-bind="click: displayGrid" class="btn">${$.i18n.prop('cancel')}</button>
130 <button id="network-proxy-btn-calculate-path" data-bind="click: calculatePath" class="btn btn-success">${$.i18n.prop('legacy-artifact-paths.calculatePath')}</button>
134 <script id="legacy-artifact-path-delete-warning-tmpl" type="text/html">
136 <span class="label label-warning">${$.i18n.prop('warning.not.undone.operation')}</span>
140 <script id="repository-scanning-main" type="text/html">
141 <div id="repository-scanning-screen">
142 <div class="page-header">
143 <h2>${$.i18n.prop('repository-scanning.head')}</h2>
147 <ul id="repositories-tabs" class="nav nav-tabs">
149 <a data-toggle="tab" href="#file-types-content">${$.i18n.prop('repository-scanning.file-types.head')}</a>
152 <a data-toggle="tab" href="#consumers-content">${$.i18n.prop('repository-scanning.consumers.head')}</a>
156 <div class="tab-content">
157 <div id="file-types-content" class="tab-pane active" data-bind='template: {name:"file-types-tmpl"}'>
159 <div id="consumers-content" class="tab-pane">
160 <div id="consumers-known-content" data-bind='template: {name:"consumers-known-content-tmpl"}'></div>
161 <div id="consumers-invalid-content" data-bind='template: {name:"consumers-invalid-content-tmpl"}'></div>
167 <script id="file-types-tmpl" type="text/html">
168 <div class="accordion" id="accordion-file-types">
170 {{each(i, fileType) fileTypes}}
171 <div class="accordion-group">
172 <div class="accordion-heading">
173 <a class="accordion-toggle" href="#collapse-pattern-${fileType.id}"
174 data-parent="#accordion-file-types" data-toggle="collapse">${fileType.id} <i class="icon-resize-vertical"/></a>
176 <div id="collapse-pattern-${fileType.id}" class="accordion-body collapse">
177 <table class="table table-condensed">
178 {{each(j,pattern) fileType.patterns}}
182 <a href="#" data-bind="click: function(){ removeFileTypePattern(fileType.id(),pattern) }">
183 <img src="images/edit-cut-22-22.png" title="${$.i18n.prop('delete')}"/>
189 <td><input type="text" id="pattern-${fileType.id}"/></td>
191 <a href="#" data-bind="click: function(){addFileTypePattern(fileType.id())}">
192 <img src="images/list-add-22-22.png" title="${$.i18n.prop('add')}"/>
204 <script id="consumers-known-content-tmpl" type="text/html">
205 <div class="page-header">
206 <h4>${$.i18n.prop('repository-scanning.consumers.know-content.head')}</h4>
208 <table class="table table-condensed">
211 <th>${$.i18n.prop('repository-scanning.consumers.grid.enabled')}</th>
212 <th>${$.i18n.prop('repository-scanning.consumers.grid.id')}</th>
213 <th>${$.i18n.prop('repository-scanning.consumers.grid.description')}</th>
217 {{each(i,knownAdminRepositoryConsumer) knownAdminRepositoryConsumers}}
219 {{if knownAdminRepositoryConsumer.enabled()==true}}
221 <a href="#" data-bind="click: function(){ disableKnowContentConsumer(knownAdminRepositoryConsumer) }">
222 <img src="images/weather-clear-22-22.png"/>
227 <a href="#" data-bind="click: function(){ enableKnowContentConsumer(knownAdminRepositoryConsumer) }">
228 <img src="images/dialog-error-22-22.png"/>
233 <td>${knownAdminRepositoryConsumer.id}</td>
234 <td>${knownAdminRepositoryConsumer.description}</td>
241 <script id="consumers-invalid-content-tmpl" type="text/html">
242 <div class="page-header">
243 <h4>${$.i18n.prop('repository-scanning.consumers.invalid-content.head')}</h4>
245 <table class="table table-condensed">
248 <th>${$.i18n.prop('repository-scanning.consumers.grid.enabled')}</th>
249 <th>${$.i18n.prop('repository-scanning.consumers.grid.id')}</th>
250 <th>${$.i18n.prop('repository-scanning.consumers.grid.description')}</th>
254 {{each(i,invalidAdminRepositoryConsumer) invalidAdminRepositoryConsumers}}
256 {{if invalidAdminRepositoryConsumer.enabled()==true}}
258 <a href="#" data-bind="click: function(){ disableInvalidContentConsumer(invalidAdminRepositoryConsumer) }">
259 <img src="images/weather-clear-22-22.png"/>
264 <a href="#" data-bind="click: function(){ enableInvalidContentConsumer(invalidAdminRepositoryConsumer) }">
265 <img src="images/dialog-error-22-22.png"/>
269 <td>${invalidAdminRepositoryConsumer.id}</td>
270 <td>${invalidAdminRepositoryConsumer.description}</td>
277 <script id="network-configuration-screen" type="text/html">
278 <div class="page-header">
279 <h3>${$.i18n.prop('network-configuration.header')}</h3>
281 <div id="network-configuration-form" data-bind='template: {name:"network-configuration-form-tmpl"}'></div>
284 <script id="network-configuration-form-tmpl" type="text/html">
285 <form id="network-proxy-edit-form" class="well form-horizontal">
286 <fieldset id="network-proxy-edit-fieldset">
287 <div class="control-group">
288 <label class="control-label" for="maxTotal">${$.i18n.prop('network-configuration.maxTotal')}</label>
289 <div class="controls">
290 <input type="text" class="xlarge required digits" id="maxTotal" name="maxTotal" size="8"
291 data-bind="value: networkConfiguration().maxTotal"/>
294 <div class="control-group">
295 <label class="control-label" for="maxTotal">${$.i18n.prop('network-configuration.maxTotalPerHost')}</label>
296 <div class="controls">
297 <input type="text" class="xlarge required digits" id="maxTotalPerHost" name="maxTotalPerHost" size="8"
298 data-bind="value: networkConfiguration().maxTotalPerHost"/>
301 <div class="control-group">
302 <label class="control-label" for="usePooling">${$.i18n.prop('network-configuration.usePooling')}</label>
303 <div class="controls">
304 <input type="checkbox" id="usePooling" name="usePooling" data-bind="checked: networkConfiguration().usePooling"/>
308 <button id="network-configuration-btn-save" data-bind="click: save" class="btn">${$.i18n.prop('save')}</button>
312 <script id="system-status-main" type="text/html">
314 <div class="page-header">
315 <h3>${$.i18n.prop('system-status.header.main')} <a href="#" onclick="refreshSystemStatus()"><img src="images/view-refresh-22-22.png"/></a></h3>
317 <div class="page-header">
318 <h4>${$.i18n.prop('system-status.header.queues')}</h4>
320 <div id="status_queues">
321 <img src="images/small-spinner.gif"/>
324 <div class="page-header">
325 <h4>${$.i18n.prop('system-status.header.scanning')} <a href="#" onclick="displayScanningStats()"><img src="images/view-refresh.png"/></a></h4>
327 <div id="status_scanning">
328 <img src="images/small-spinner.gif"/>
331 <div class="page-header">
332 <h4>${$.i18n.prop('system-status.header.caches')} <a href="#" onclick="displayCacheEntries()"><img src="images/view-refresh.png"/></a></h4>
334 <div id="status_caches">
335 <img src="images/small-spinner.gif"/>
338 <div class="page-header">
339 <h4>${$.i18n.prop('system-status.header.memory')} <a href="#" onclick="displayMemoryUsage()"><img src="images/view-refresh.png"/></a></h4>
341 <div id="status_memory_info">
342 <img src="images/small-spinner.gif"/>
345 <div class="page-header">
346 <h4>${$.i18n.prop('system-status.header.current.time')}</h4>
348 <div id="status_current_time">
349 <img src="images/small-spinner.gif"/>
352 <div class="page-header">
353 <h4>${$.i18n.prop('system-status.header.version.info')}</h4>
355 <div id="status_version_info">
356 <img src="images/small-spinner.gif"/>
361 <script id="status_caches_tmpl" type="text/html">
362 <a href="#" class="btn btn-warning" onclick="flushAllCaches()">
363 ${$.i18n.prop('system-status.caches.flushAll')}
365 <table class="table table-condensed">
368 <th>${$.i18n.prop('system-status.caches.grid.header.key')}</th>
369 <th>${$.i18n.prop('system-status.caches.grid.header.size')}</th>
370 <th>${$.i18n.prop('system-status.caches.grid.header.cacheHits')}</th>
371 <th>${$.i18n.prop('system-status.caches.grid.header.cacheMiss')}</th>
372 <th>${$.i18n.prop('system-status.caches.grid.header.cacheHitRate')}</th>
373 <th>${$.i18n.prop('system-status.caches.grid.header.flush')}</th>
377 {{each(i,cacheEntry) cacheEntries}}
379 <td>${cacheEntry.key}</td>
380 <td>${cacheEntry.size}</td>
381 <td>${cacheEntry.cacheHits}</td>
382 <td>${cacheEntry.cacheMiss}</td>
383 <td>${cacheEntry.cacheHitRate}</td>
385 <a href="#" onclick="flushCache('${cacheEntry.key}')">
386 {{if cacheEntry.size > 0 }}
387 <img src="images/user-trash-full.png"/>
389 <img src="images/user-trash.png"/>
400 <script id="status_queues_tmpl" type="text/html">
401 <table class="table table-condensed">
404 <th>${$.i18n.prop('system-status.queues.grid.header.key')}</th>
405 <th>${$.i18n.prop('system-status.queues.grid.header.size')}</th>
409 {{each(i,queueEntry) queueEntries}}
411 <td>${queueEntry.key}</td>
412 <td>${queueEntry.entriesNumber}</td>
419 <script id="status_scanning_tmpl" type="text/html">
420 {{if repositoryScannerStatisticsList.length == 0}}
421 <h5>No scans in progress.</h5>
423 <table class="table table-condensed">
426 <th>${$.i18n.prop('system-status.scanning.grid.header.repository')}</th>
427 <th>${$.i18n.prop('system-status.scanning.grid.header.files.processed')}</th>
428 <th>${$.i18n.prop('system-status.scanning.grid.header.files.new')}</th>
429 <th>${$.i18n.prop('system-status.scanning.grid.header.stats')}</th>
433 {{each(i,repositoryScannerStatistics) repositoryScannerStatisticsList}}
435 <td>${repositoryScannerStatistics.managedRepository.name()}</td>
436 <td>${repositoryScannerStatistics.totalFileCount}</td>
437 <td>${repositoryScannerStatistics.newFileCount}</td>
443 <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.name')}</th>
444 <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.total')}</th>
445 <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.average')} ms</th>
446 <th>${$.i18n.prop('system-status.scanning.consumers.grid.header.invocations.time')}</th>
450 {{each(j,consumerScanningStatistics) repositoryScannerStatistics.consumerScanningStatisticsList}}
452 <td>${consumerScanningStatistics.consumerKey}</td>
453 <td>${consumerScanningStatistics.count}</td>
454 <td>${consumerScanningStatistics.average}ms</td>
455 <td>${consumerScanningStatistics.time}ms</td>