547 lines
13 KiB
JavaScript
547 lines
13 KiB
JavaScript
var indexInspectorControllers = angular.module('indexInspectorControllers', ['LocalStorageModule']);
|
|
|
|
function common_init($scope, $http, $sce, $location) {
|
|
initSpinner();
|
|
$scope.showError = function (error) {
|
|
show_notification("error", error);
|
|
}
|
|
$scope.showNotification = function (message) {
|
|
show_notification("info", message);
|
|
}
|
|
$scope.showSpinner = function () {
|
|
showSpinner();
|
|
}
|
|
$scope.hideSpinner = function () {
|
|
hideSpinner();
|
|
}
|
|
$scope.to_trusted = function (html) {
|
|
return $sce.trustAsHtml(html);
|
|
}
|
|
$scope.go = function (path) {
|
|
$location.path(path);
|
|
}
|
|
$scope.encodeValue = function (val) {
|
|
return val;
|
|
}
|
|
}
|
|
|
|
indexInspectorControllers.directive('compileTemplate', function ($compile, $parse) {
|
|
return {
|
|
link: function (scope, element, attr) {
|
|
var parsed = $parse(attr.ngBindHtml);
|
|
|
|
function getStringValue() {
|
|
return (parsed(scope) || '').toString();
|
|
}
|
|
|
|
//Recompile if the template changes
|
|
scope.$watch(getStringValue, function () {
|
|
$compile(element, null, -9999)(scope); //The -9999 makes it skip directives so that we do not recompile ourselves
|
|
});
|
|
}
|
|
}
|
|
});
|
|
|
|
|
|
indexInspectorControllers.controller('indexmanageController', [
|
|
'$scope', '$http', '$sce', '$location',
|
|
function ($scope, $http, $sce, $location) {
|
|
common_init($scope, $http, $sce, $location);
|
|
|
|
|
|
}]);
|
|
|
|
indexInspectorControllers.controller('indexdbqController', ['$scope',
|
|
'$http', '$sce', '$location', function ($scope, $http, $sce, $location) {
|
|
common_init($scope, $http, $sce, $location);
|
|
$scope.mdFormats = []
|
|
$scope.backends = []
|
|
$scope.indices = []
|
|
$scope.query = '*=*'
|
|
$scope.from = 0
|
|
$scope.size = 10
|
|
$scope.error = null;
|
|
|
|
$scope.showSpinner();
|
|
|
|
$scope.to_trusted = function (html_code) {
|
|
return $sce.trustAsHtml(html_code);
|
|
}
|
|
|
|
|
|
$http.get('index/indexMetadataFormats.do').success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.mdFormats = data;
|
|
}).error(function () {
|
|
$scope.showError('Error listing xmldb collections');
|
|
$scope.hideSpinner();
|
|
});
|
|
|
|
$http.get('index/backend.do').success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.backends = data;
|
|
}).error(function (error) {
|
|
$scope.showError(error.message);
|
|
$scope.hideSpinner();
|
|
});
|
|
|
|
$scope.backendSelected = function (index) {
|
|
|
|
if ($scope.selectedbackend != null) {
|
|
$http.get('index/indexDatastructures.do', {
|
|
params: {
|
|
backend: $scope.selectedbackend
|
|
}
|
|
}).success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.indices = data
|
|
|
|
}).error(function () {
|
|
$scope.showError('Error listing xmldb collections');
|
|
$scope.hideSpinner();
|
|
});
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$scope.hideSpinner();
|
|
|
|
$scope.startDelete = function () {
|
|
$scope.from = 0;
|
|
$scope.size = 10
|
|
$scope.deleteByQuery()
|
|
}
|
|
|
|
|
|
$scope.deleteByQuery = function () {
|
|
|
|
if (($scope.selectedMdref == null) || ($scope.selectedbackend == null)) {
|
|
alert("You must select a metadata format and a backend identifier")
|
|
return;
|
|
}
|
|
|
|
$scope.showSpinner();
|
|
$scope.error = null;
|
|
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8";
|
|
var selectedId = null;
|
|
if ($scope.selectedIndex != null)
|
|
selectedId = $scope.selectedIndex.id
|
|
$http.post('index/delete.do', $.param({
|
|
|
|
'backend': $scope.selectedbackend,
|
|
'format': $scope.selectedMdref.format,
|
|
'layout': $scope.selectedMdref.layout,
|
|
'interpretation': $scope.selectedMdref.interpretation,
|
|
'query': $scope.query,
|
|
'indexidentifier': selectedId
|
|
|
|
}))
|
|
.success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.searchResult = data
|
|
console.log(data)
|
|
}).error(function (error) {
|
|
$scope.error = error;
|
|
$scope.hideSpinner();
|
|
});
|
|
}
|
|
|
|
$scope.nextPage = function () {
|
|
if ($scope.searchResult == null)
|
|
return;
|
|
if ($scope.from > $scope.searchResult.total)
|
|
return;
|
|
$scope.from += 10;
|
|
$scope.size = $scope.from + 10
|
|
$scope.search()
|
|
}
|
|
|
|
$scope.prevPage = function () {
|
|
if ($scope.from <= 0) {
|
|
return;
|
|
}
|
|
|
|
$scope.from -= 10;
|
|
$scope.size -= 10
|
|
$scope.search()
|
|
}
|
|
|
|
$scope.range = function (n) {
|
|
return new Array(n);
|
|
};
|
|
|
|
|
|
}]);
|
|
|
|
|
|
indexInspectorControllers.controller('indexBrowseController', [
|
|
'$scope', '$http', '$sce', '$location',
|
|
function ($scope, $http, $sce, $location) {
|
|
common_init($scope, $http, $sce, $location);
|
|
$scope.showSpinner();
|
|
$scope.mdFormats = []
|
|
$scope.backends = []
|
|
$scope.indices = []
|
|
$scope.query = '*=*'
|
|
$scope.error = null;
|
|
|
|
$scope.browseFields = [];
|
|
$scope.addedBrowseFields = [];
|
|
$scope.selectedMdref = "";
|
|
|
|
$http.get('index/indexMetadataFormats.do').success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.mdFormats = data;
|
|
}).error(function () {
|
|
$scope.showError('Error listing xmldb collections');
|
|
$scope.hideSpinner();
|
|
});
|
|
|
|
$http.get('index/backend.do').success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.backends = data;
|
|
}).error(function (error) {
|
|
$scope.showError(error.message);
|
|
$scope.hideSpinner();
|
|
});
|
|
|
|
$scope.backendSelected = function (index) {
|
|
|
|
if ($scope.selectedbackend != null) {
|
|
$http.get('index/indexDatastructures.do', {
|
|
params: {
|
|
backend: $scope.selectedbackend
|
|
}
|
|
}).success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.indices = data
|
|
|
|
}).error(function () {
|
|
$scope.showError('Error listing xmldb collections');
|
|
$scope.hideSpinner();
|
|
});
|
|
}
|
|
|
|
|
|
}
|
|
|
|
$scope.metadataFormatSelected = function (index) {
|
|
if ($scope.selectedMdref == null) {
|
|
$scope.addedBrowseFields = [];
|
|
$scope.browseFields = []
|
|
return;
|
|
}
|
|
|
|
$http.get('index/mdFormatInfo.do', {
|
|
params: {
|
|
id: $scope.selectedMdref.id,
|
|
layout: $scope.selectedMdref.layout
|
|
}
|
|
}).success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.browseFields = data;
|
|
$scope.browseFields.sort()
|
|
$scope.addedBrowseFields = [];
|
|
$scope.selectedBrowser = '--- Add Field --'
|
|
}).error(function () {
|
|
$scope.showError('Error listing xmldb collections');
|
|
$scope.hideSpinner();
|
|
});
|
|
};
|
|
|
|
$scope.startBrowse = function () {
|
|
|
|
if (($scope.selectedMdref == null) || ($scope.selectedbackend == null)) {
|
|
alert("You must select a metadata format and a backend identifier")
|
|
return;
|
|
}
|
|
if ($scope.addedBrowseFields.length == 0) {
|
|
alert("You must select at least one browse field")
|
|
return;
|
|
}
|
|
$scope.showSpinner();
|
|
$scope.error = null;
|
|
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8";
|
|
$http.post('index/browse.do', $.param({
|
|
|
|
'backend': $scope.selectedbackend,
|
|
'format': $scope.selectedMdref.format,
|
|
'layout': $scope.selectedMdref.layout,
|
|
'interpretation': $scope.selectedMdref.interpretation,
|
|
'fields': JSON.stringify($scope.addedBrowseFields),
|
|
'query': $scope.query
|
|
}))
|
|
.success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.browseResult = data
|
|
}).error(function (error) {
|
|
$scope.error = error;
|
|
$scope.hideSpinner();
|
|
});
|
|
}
|
|
|
|
|
|
$scope.deleteBrowseField = function (item) {
|
|
var i = 0
|
|
|
|
for (; i < $scope.addedBrowseFields.length; i++) {
|
|
if ($scope.addedBrowseFields[i] == item)
|
|
break;
|
|
}
|
|
$scope.addedBrowseFields.splice(i, 1)
|
|
$scope.browseFields = $scope.browseFields.concat(item)
|
|
$scope.browseFields.sort();
|
|
|
|
}
|
|
|
|
$scope.browseFieldAdded = function () {
|
|
for (i = 0; i < $scope.browseFields.length; i++) {
|
|
if ($scope.browseFields[i] == $scope.selectedBrowser) {
|
|
var data = $scope.browseFields[i];
|
|
$scope.addedBrowseFields = $scope.addedBrowseFields.concat(data)
|
|
$scope.browseFields.splice(i, 1)
|
|
return;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
}]);
|
|
|
|
function replaceText(str) {
|
|
var str1 = String(str);
|
|
|
|
return str1.replace(/\n/g, "<br/>");
|
|
}
|
|
|
|
|
|
function constructMDREFfromString(input) {
|
|
if (input == null || input.length == 0)
|
|
return null;
|
|
var mdrefArr = input.split('-');
|
|
if (3 == mdrefArr.length) {
|
|
var x = [];
|
|
x['format'] = mdrefArr[0];
|
|
x['layout'] = mdrefArr[1];
|
|
x['interpretation'] = mdrefArr[2];
|
|
return x;
|
|
}
|
|
}
|
|
|
|
|
|
function counstructStringMDREF(item) {
|
|
if (item != null && item.hasOwnProperty('format') && item.hasOwnProperty('layout') && item.hasOwnProperty('interpretation'))
|
|
return item.format + '-' + item.layout + '-' + item.interpretation;
|
|
|
|
return null;
|
|
}
|
|
|
|
|
|
indexInspectorControllers.controller('indexQueryController', [
|
|
'$scope', '$http', '$sce', '$location', '$routeParams',
|
|
function ($scope, $http, $sce, $location, $routeParams) {
|
|
common_init($scope, $http, $sce, $location);
|
|
|
|
$scope.mdFormats = []
|
|
$scope.backends = []
|
|
$scope.indices = []
|
|
$scope.query = '*=*'
|
|
$scope.from = 0
|
|
$scope.size = 10
|
|
$scope.error = null;
|
|
console.log("Valore location");
|
|
|
|
|
|
if ($routeParams['backend'] != null && $routeParams['backend'].length > 0) {
|
|
$scope.selectedbackend_param = $routeParams['backend'];
|
|
$scope.selectedIndex_param = $routeParams['index'];
|
|
$scope.selectedMdref_param = constructMDREFfromString( $routeParams['mdformat']);
|
|
var selectedMdref_param = $routeParams['mdformat'];
|
|
$scope.start_param = $routeParams['start'];
|
|
$scope.query_param = $routeParams['query'];
|
|
|
|
$scope.query = $scope.query_param
|
|
|
|
$scope.showSpinner();
|
|
$scope.error = null;
|
|
$scope.size = 10;
|
|
$scope.from = $scope.start_param;
|
|
|
|
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8";
|
|
var selectedId = null;
|
|
if ($scope.selectedIndex != null)
|
|
selectedId = $scope.selectedIndex.id
|
|
$http.post('index/search.do', $.param({
|
|
|
|
'backend': $scope.selectedbackend_param,
|
|
'format': $scope.selectedMdref_param.format,
|
|
'layout': $scope.selectedMdref_param.layout,
|
|
'interpretation': $scope.selectedMdref_param.interpretation,
|
|
'query': $scope.query_param,
|
|
'from': $scope.start_param,
|
|
'number': $scope.size,
|
|
'indexidentifier': ""
|
|
}))
|
|
.success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.searchResult = data
|
|
console.log(data)
|
|
}).error(function (error) {
|
|
$scope.error = error;
|
|
$scope.hideSpinner();
|
|
});
|
|
}
|
|
|
|
console.log(selectedMdref_param);
|
|
|
|
$scope.showSpinner();
|
|
|
|
$scope.to_trusted = function (html_code) {
|
|
return $sce.trustAsHtml(html_code);
|
|
}
|
|
|
|
|
|
$http.get('index/indexMetadataFormats.do').success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.mdFormats = data;
|
|
|
|
if (selectedMdref_param != null) {
|
|
$scope.mdFormats.forEach(function (item) {
|
|
var mdref = counstructStringMDREF(item);
|
|
|
|
if (mdref === selectedMdref_param) {
|
|
$scope.selectedMdref = item;
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
}).error(function () {
|
|
$scope.showError('Error listing xmldb collections');
|
|
$scope.hideSpinner();
|
|
});
|
|
|
|
$http.get('index/backend.do').success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.backends = data;
|
|
if ($scope.selectedbackend_param != null) {
|
|
$scope.backends.forEach(function (item) {
|
|
if (item === $scope.selectedbackend_param) {
|
|
$scope.selectedbackend = item;
|
|
}
|
|
})
|
|
}
|
|
|
|
|
|
|
|
}).error(function (error) {
|
|
$scope.showError(error.message);
|
|
$scope.hideSpinner();
|
|
});
|
|
|
|
$scope.backendSelected = function (index) {
|
|
|
|
if ($scope.selectedbackend != null) {
|
|
$http.get('index/indexDatastructures.do', {
|
|
params: {
|
|
backend: $scope.selectedbackend
|
|
}
|
|
}).success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.indices = data
|
|
|
|
}).error(function () {
|
|
$scope.showError('Error listing xmldb collections');
|
|
$scope.hideSpinner();
|
|
});
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
$scope.hideSpinner();
|
|
|
|
$scope.startSearch = function () {
|
|
$scope.from = 0;
|
|
$scope.size = 10
|
|
$scope.search()
|
|
}
|
|
|
|
|
|
$scope.share = function () {
|
|
var currentUrl = $location.$$absUrl;
|
|
console.log(currentUrl);
|
|
var path = $location.$$path;
|
|
currentUrl = currentUrl.replace(path, "");
|
|
if ($scope.selectedIndex != null)
|
|
selectedId = $scope.selectedIndex.id
|
|
else
|
|
selectedId = "ALL"
|
|
var shareUrl = currentUrl + "/query/" + counstructStringMDREF($scope.selectedMdref) + "/" + $scope.selectedbackend + "/" + selectedId + "/" + $scope.from + "/" + $scope.query;
|
|
window.prompt("Copy to clipboard: Ctrl+C, Enter", shareUrl);
|
|
}
|
|
|
|
|
|
$scope.search = function () {
|
|
if (($scope.selectedMdref == null) || ($scope.selectedbackend == null)) {
|
|
alert("You must select a metadata format and a backend identifier")
|
|
return;
|
|
}
|
|
|
|
$scope.showSpinner();
|
|
$scope.error = null;
|
|
$http.defaults.headers.post["Content-Type"] = "application/x-www-form-urlencoded; charset=UTF-8";
|
|
var selectedId = null;
|
|
if ($scope.selectedIndex != null)
|
|
selectedId = $scope.selectedIndex.id
|
|
$http.post('index/search.do', $.param({
|
|
|
|
'backend': $scope.selectedbackend,
|
|
'format': $scope.selectedMdref.format,
|
|
'layout': $scope.selectedMdref.layout,
|
|
'interpretation': $scope.selectedMdref.interpretation,
|
|
'query': $scope.query,
|
|
'from': $scope.from,
|
|
'number': $scope.size,
|
|
'indexidentifier': selectedId
|
|
}))
|
|
.success(function (data) {
|
|
$scope.hideSpinner();
|
|
$scope.searchResult = data
|
|
}).error(function (error) {
|
|
$scope.error = error;
|
|
$scope.hideSpinner();
|
|
});
|
|
}
|
|
|
|
$scope.nextPage = function () {
|
|
if ($scope.searchResult == null)
|
|
return;
|
|
if ($scope.from > $scope.searchResult.total)
|
|
return;
|
|
$scope.from += 10;
|
|
$scope.size = $scope.from + 10
|
|
$scope.search()
|
|
}
|
|
|
|
$scope.prevPage = function () {
|
|
if ($scope.from <= 0) {
|
|
return;
|
|
}
|
|
|
|
$scope.from -= 10;
|
|
$scope.size -= 10
|
|
$scope.search()
|
|
}
|
|
|
|
$scope.range = function (n) {
|
|
return new Array(n);
|
|
};
|
|
|
|
|
|
}]);
|
|
|