FELIX-1988 Apply 20.obr_plugin.patch by Valentin Valchev (thanks) (fixed license header of BundleRepositoryRender)
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@912369 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/webconsole/src/main/resources/res/ui/obr.js b/webconsole/src/main/resources/res/ui/obr.js
new file mode 100644
index 0000000..53e532b
--- /dev/null
+++ b/webconsole/src/main/resources/res/ui/obr.js
@@ -0,0 +1,125 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+var repoTable = false;
+var repoTableTemplate = false;
+var addRepoUri = false;
+var resTable = false;
+var searchField = false;
+
+/* displays a date in the user's local timezone */
+function localTm(time) {
+ return (time ? new Date(time) : new Date()).toLocaleString();
+}
+
+function doRepoAction(action, url) {
+ if ( !url ) {
+ Xalert('Invalid URI: ' + url, 'Error');
+ } else {
+ $.post(pluginRoot, {
+ 'action' : action,
+ 'url' : url
+ }, renderData, 'json');
+ }
+}
+
+function renderResource(res) {
+ // aply filtering
+ var match = searchField.val();
+ if (match) {
+ match = new RegExp( match );
+ if ( !match.test(res.presentationname) ) return;
+ }
+
+ // proceed with resource
+ var _id = res.symbolicname.replace(/\./g, '_');
+ var _tr = resTable.find('#' + _id);
+
+ if (_tr.length == 0) { // not created yet, create it
+ var _select = createElement('select', null, { name : 'bundle' }, [
+ createElement( 'option', null, { value : '-' }, [
+ text( i18n.selectVersion)
+ ]),
+ createElement( 'option', null, { value : res.id }, [
+ text( res.version + (res.installed ? ' *' : '') )
+ ])
+ ]);
+ _tr = tr( null, { 'id' : _id } , [
+ td( null, null, [ _select ] ),
+ td( null, null, [ text(res.presentationname) ] ),
+ td( null, null, [ text(res.installed ? res.version : '') ] )
+ ]);
+ resTable.append( _tr );
+ } else { // append the additional version
+ _tr.find( 'select' ).append (
+ createElement( 'option', null, { value : res.id }, [
+ text( res.version + (res.installed ? ' *' : '') )
+ ])
+ );
+ if (res.installed) _tr.find( 'td:eq(2)' ).text( res.version );
+ }
+}
+
+function renderRepository(repo) {
+ var _tr = repoTableTemplate.clone();
+ _tr.find('td:eq(0)').text( repo.name );
+ _tr.find('td:eq(1)').text( repo.url );
+ _tr.find('td:eq(2)').text( localTm(repo.lastModified) );
+ _tr.find('li:eq(0)').click(function() {
+ doRepoAction('refresh', repo.url);
+ });
+ _tr.find('li:eq(1)').click(function() {
+ doRepoAction('delete', repo.url);
+ });
+ repoTable.append(_tr);
+
+ for(var i in repo.resources) {
+ renderResource( repo.resources[i] );
+ }
+}
+
+function renderData(data) {
+ obrData = data;
+ repoTable.empty();
+ resTable.empty();
+ if ( data.status ) {
+ $('.statline').html(i18n.status_ok);
+ for (var i in data.repositories ) {
+ renderRepository( data.repositories[i] );
+ }
+ } else {
+ $('.statline').html(i18n.status_no);
+ }
+}
+
+$(document).ready( function() {
+ repoTable = $('#repoTable tbody');
+ repoTableTemplate = repoTable.find('tr').clone();
+ addRepoUri = $('#addRepoUri');
+ resTable = $('#resTable tbody').empty();
+ searchField = $('#searchField');
+
+ $('#addRepoBtn').click(function() {
+ doRepoAction('add', addRepoUri.val());
+ });
+ $('#searchBtn').click(function() {
+ renderData(obrData);
+ return false;
+ });
+
+ renderData(obrData);
+});
\ No newline at end of file