moved code under new packages/folders

This commit is contained in:
Michele Artini 2023-01-13 11:39:49 +01:00
parent 5b681ed9e8
commit f5ff6f0601
57 changed files with 670 additions and 676 deletions

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm;
package eu.dnetlib.dsm;
import java.util.List;
import java.util.stream.Collectors;
@ -17,10 +17,10 @@ import org.springframework.web.bind.annotation.ResponseStatus;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import eu.dnetlib.common.controller.AbstractDnetController;
import eu.dnetlib.dsm.domain.Response;
import eu.dnetlib.is.errors.DsmException;
import eu.dnetlib.is.errors.DsmForbiddenException;
import eu.dnetlib.is.errors.DsmNotFoundException;
import eu.dnetlib.openaire.dsm.domain.Response;
/**
* Created by claudio on 18/07/2017.

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm;
package eu.dnetlib.dsm;
import java.util.Arrays;
import java.util.LinkedHashMap;
@ -21,9 +21,9 @@ import eu.dnetlib.data.is.vocabulary.repository.VocabularyTermRepository;
import eu.dnetlib.data.openaire.dsm.model.Api;
import eu.dnetlib.data.openaire.dsm.model.BrowseTerm;
import eu.dnetlib.data.openaire.dsm.model.view.SimpleDsWithApis;
import eu.dnetlib.dsm.utils.DsmBrowsableFields;
import eu.dnetlib.is.errors.DsmException;
import eu.dnetlib.is.info.KeyValue;
import eu.dnetlib.openaire.dsm.utils.DsmBrowsableFields;
@RestController
@RequestMapping("/ajax/dsm")

View File

@ -1,8 +1,8 @@
package eu.dnetlib.openaire.dsm;
package eu.dnetlib.dsm;
import static eu.dnetlib.openaire.dsm.utils.DsmMappingUtils.asDbEntry;
import static eu.dnetlib.openaire.dsm.utils.DsmMappingUtils.copyNonNullProperties;
import static eu.dnetlib.openaire.dsm.utils.DsmMappingUtils.createId;
import static eu.dnetlib.dsm.utils.DsmMappingUtils.asDbEntry;
import static eu.dnetlib.dsm.utils.DsmMappingUtils.copyNonNullProperties;
import static eu.dnetlib.dsm.utils.DsmMappingUtils.createId;
import java.util.Collection;
import java.util.HashSet;
@ -33,27 +33,27 @@ import org.springframework.web.bind.annotation.RestController;
import eu.dnetlib.data.openaire.dsm.model.Api;
import eu.dnetlib.data.openaire.dsm.model.Datasource;
import eu.dnetlib.data.openaire.dsm.model.Identity;
import eu.dnetlib.dsm.domain.AggregationHistoryResponse;
import eu.dnetlib.dsm.domain.AggregationInfo;
import eu.dnetlib.dsm.domain.ApiDetails;
import eu.dnetlib.dsm.domain.ApiDetailsResponse;
import eu.dnetlib.dsm.domain.Country;
import eu.dnetlib.dsm.domain.DatasourceDetailResponse;
import eu.dnetlib.dsm.domain.DatasourceDetails;
import eu.dnetlib.dsm.domain.DatasourceDetailsUpdate;
import eu.dnetlib.dsm.domain.DatasourceDetailsWithApis;
import eu.dnetlib.dsm.domain.DatasourceSnippetResponse;
import eu.dnetlib.dsm.domain.RegisteredDatasourceInfo;
import eu.dnetlib.dsm.domain.RequestFilter;
import eu.dnetlib.dsm.domain.RequestSort;
import eu.dnetlib.dsm.domain.RequestSortOrder;
import eu.dnetlib.dsm.domain.SimpleResponse;
import eu.dnetlib.dsm.utils.DsmMappingUtils;
import eu.dnetlib.dsm.utils.ResponseUtils;
import eu.dnetlib.dsm.utils.WfLoggerClient;
import eu.dnetlib.is.errors.DsmException;
import eu.dnetlib.is.errors.DsmForbiddenException;
import eu.dnetlib.is.errors.DsmNotFoundException;
import eu.dnetlib.openaire.dsm.domain.AggregationHistoryResponse;
import eu.dnetlib.openaire.dsm.domain.AggregationInfo;
import eu.dnetlib.openaire.dsm.domain.ApiDetails;
import eu.dnetlib.openaire.dsm.domain.ApiDetailsResponse;
import eu.dnetlib.openaire.dsm.domain.Country;
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailResponse;
import eu.dnetlib.openaire.dsm.domain.DatasourceDetails;
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsUpdate;
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsWithApis;
import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetResponse;
import eu.dnetlib.openaire.dsm.domain.RegisteredDatasourceInfo;
import eu.dnetlib.openaire.dsm.domain.RequestFilter;
import eu.dnetlib.openaire.dsm.domain.RequestSort;
import eu.dnetlib.openaire.dsm.domain.RequestSortOrder;
import eu.dnetlib.openaire.dsm.domain.SimpleResponse;
import eu.dnetlib.openaire.dsm.utils.DsmMappingUtils;
import eu.dnetlib.openaire.dsm.utils.ResponseUtils;
import eu.dnetlib.openaire.dsm.utils.WfLoggerClient;
import io.swagger.v3.oas.annotations.responses.ApiResponse;
import io.swagger.v3.oas.annotations.responses.ApiResponses;
import io.swagger.v3.oas.annotations.tags.Tag;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm;
package eu.dnetlib.dsm;
import java.util.List;
@ -11,9 +11,9 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import eu.dnetlib.openaire.dsm.domain.SimpleDatasourceInfo;
import eu.dnetlib.openaire.dsm.domain.SimpleResponse;
import eu.dnetlib.openaire.dsm.utils.ResponseUtils;
import eu.dnetlib.dsm.domain.SimpleDatasourceInfo;
import eu.dnetlib.dsm.domain.SimpleResponse;
import eu.dnetlib.dsm.utils.ResponseUtils;
import io.swagger.v3.oas.annotations.tags.Tag;
@RestController

View File

@ -1,10 +1,10 @@
package eu.dnetlib.openaire.dsm;
package eu.dnetlib.dsm;
import static eu.dnetlib.openaire.dsm.utils.DatasourceSpecs.apiSpec;
import static eu.dnetlib.openaire.dsm.utils.DatasourceSpecs.dsRegisteredbyNotNullSpec;
import static eu.dnetlib.openaire.dsm.utils.DatasourceSpecs.dsSpec;
import static eu.dnetlib.openaire.dsm.utils.DsmMappingUtils.asDbEntry;
import static eu.dnetlib.openaire.dsm.utils.DsmMappingUtils.createId;
import static eu.dnetlib.dsm.utils.DatasourceSpecs.apiSpec;
import static eu.dnetlib.dsm.utils.DatasourceSpecs.dsRegisteredbyNotNullSpec;
import static eu.dnetlib.dsm.utils.DatasourceSpecs.dsSpec;
import static eu.dnetlib.dsm.utils.DsmMappingUtils.asDbEntry;
import static eu.dnetlib.dsm.utils.DsmMappingUtils.createId;
import java.io.IOException;
import java.nio.charset.Charset;
@ -48,23 +48,23 @@ import eu.dnetlib.data.openaire.dsm.repository.ApiRepository;
import eu.dnetlib.data.openaire.dsm.repository.ApiWithAdditionalInfoRepository;
import eu.dnetlib.data.openaire.dsm.repository.DatasourceRepository;
import eu.dnetlib.data.openaire.dsm.repository.SimpleDsWithApisRepository;
import eu.dnetlib.dsm.domain.ApiDetails;
import eu.dnetlib.dsm.domain.Country;
import eu.dnetlib.dsm.domain.DatasourceDetailResponse;
import eu.dnetlib.dsm.domain.DatasourceSnippetResponse;
import eu.dnetlib.dsm.domain.RegisteredDatasourceInfo;
import eu.dnetlib.dsm.domain.RequestFilter;
import eu.dnetlib.dsm.domain.RequestSort;
import eu.dnetlib.dsm.domain.RequestSortOrder;
import eu.dnetlib.dsm.domain.SimpleDatasourceInfo;
import eu.dnetlib.dsm.domain.SimpleResponse;
import eu.dnetlib.dsm.utils.DsmBrowsableFields;
import eu.dnetlib.dsm.utils.DsmMappingUtils;
import eu.dnetlib.dsm.utils.ResponseUtils;
import eu.dnetlib.dsm.utils.VocabularyClient;
import eu.dnetlib.is.errors.DsmException;
import eu.dnetlib.is.errors.DsmForbiddenException;
import eu.dnetlib.is.errors.DsmNotFoundException;
import eu.dnetlib.openaire.dsm.domain.ApiDetails;
import eu.dnetlib.openaire.dsm.domain.Country;
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailResponse;
import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetResponse;
import eu.dnetlib.openaire.dsm.domain.RegisteredDatasourceInfo;
import eu.dnetlib.openaire.dsm.domain.RequestFilter;
import eu.dnetlib.openaire.dsm.domain.RequestSort;
import eu.dnetlib.openaire.dsm.domain.RequestSortOrder;
import eu.dnetlib.openaire.dsm.domain.SimpleDatasourceInfo;
import eu.dnetlib.openaire.dsm.domain.SimpleResponse;
import eu.dnetlib.openaire.dsm.utils.DsmBrowsableFields;
import eu.dnetlib.openaire.dsm.utils.DsmMappingUtils;
import eu.dnetlib.openaire.dsm.utils.ResponseUtils;
import eu.dnetlib.openaire.dsm.utils.VocabularyClient;
@Service
@ConditionalOnProperty(value = "openaire.api.enable.dsm", havingValue = "true")

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
public abstract class AggregationInfo {

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
public enum AggregationStage {

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.sql.Date;
import java.util.Set;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.util.List;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import com.fasterxml.jackson.annotation.JsonIgnore;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
public class ApiParamDetails {

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import com.fasterxml.jackson.annotation.JsonAutoDetect;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import com.fasterxml.jackson.annotation.JsonAutoDetect;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
public class Country {

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.sql.Date;
import java.util.Set;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.sql.Date;
import java.util.Set;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.util.ArrayList;
import java.util.List;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.util.List;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.util.List;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import javax.validation.constraints.NotBlank;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.util.Date;
import java.util.Set;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import com.fasterxml.jackson.annotation.JsonAutoDetect;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
public enum FilterType {
exact,

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.util.List;
import java.util.Queue;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import com.fasterxml.jackson.annotation.JsonAutoDetect;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import javax.validation.constraints.NotBlank;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.util.Date;
import java.util.Set;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
public class RegisteredDatasourceInfo {

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.util.HashMap;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import com.fasterxml.jackson.annotation.JsonAutoDetect;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import com.fasterxml.jackson.annotation.JsonAutoDetect;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import com.fasterxml.jackson.annotation.JsonAutoDetect;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.util.LinkedHashMap;
import java.util.Map;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import java.util.List;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.domain;
package eu.dnetlib.dsm.domain;
import com.fasterxml.jackson.annotation.JsonAutoDetect;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.utils;
package eu.dnetlib.dsm.utils;
import java.util.Arrays;
import java.util.List;
@ -18,10 +18,10 @@ import org.springframework.data.jpa.domain.Specification;
import eu.dnetlib.data.openaire.dsm.model.Datasource;
import eu.dnetlib.data.openaire.dsm.model.view.ApiWithAdditionalInfo;
import eu.dnetlib.openaire.dsm.domain.FilterName;
import eu.dnetlib.openaire.dsm.domain.RequestFilter;
import eu.dnetlib.openaire.dsm.domain.RequestSort;
import eu.dnetlib.openaire.dsm.domain.RequestSortOrder;
import eu.dnetlib.dsm.domain.FilterName;
import eu.dnetlib.dsm.domain.RequestFilter;
import eu.dnetlib.dsm.domain.RequestSort;
import eu.dnetlib.dsm.domain.RequestSortOrder;
public class DatasourceSpecs {

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.utils;
package eu.dnetlib.dsm.utils;
public enum DsmBrowsableFields {

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.utils;
package eu.dnetlib.dsm.utils;
import java.sql.Date;
import java.util.HashSet;
@ -17,11 +17,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import eu.dnetlib.data.openaire.dsm.model.Api;
import eu.dnetlib.data.openaire.dsm.model.Datasource;
import eu.dnetlib.data.openaire.dsm.model.Organization;
import eu.dnetlib.openaire.dsm.domain.ApiDetails;
import eu.dnetlib.openaire.dsm.domain.DatasourceDetails;
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailsUpdate;
import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetExtended;
import eu.dnetlib.openaire.dsm.domain.OrganizationDetails;
import eu.dnetlib.dsm.domain.ApiDetails;
import eu.dnetlib.dsm.domain.DatasourceDetails;
import eu.dnetlib.dsm.domain.DatasourceDetailsUpdate;
import eu.dnetlib.dsm.domain.DatasourceSnippetExtended;
import eu.dnetlib.dsm.domain.OrganizationDetails;
public class DsmMappingUtils {

View File

@ -1,20 +1,20 @@
package eu.dnetlib.openaire.dsm.utils;
package eu.dnetlib.dsm.utils;
import java.util.List;
import java.util.Queue;
import com.google.common.collect.Lists;
import eu.dnetlib.openaire.dsm.domain.ApiDetails;
import eu.dnetlib.openaire.dsm.domain.ApiDetailsResponse;
import eu.dnetlib.openaire.dsm.domain.DatasourceDetailResponse;
import eu.dnetlib.openaire.dsm.domain.DatasourceDetails;
import eu.dnetlib.openaire.dsm.domain.DatasourceInfo;
import eu.dnetlib.openaire.dsm.domain.DatasourceSearchResponse;
import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetExtended;
import eu.dnetlib.openaire.dsm.domain.DatasourceSnippetResponse;
import eu.dnetlib.openaire.dsm.domain.Header;
import eu.dnetlib.openaire.dsm.domain.SimpleResponse;
import eu.dnetlib.dsm.domain.ApiDetails;
import eu.dnetlib.dsm.domain.ApiDetailsResponse;
import eu.dnetlib.dsm.domain.DatasourceDetailResponse;
import eu.dnetlib.dsm.domain.DatasourceDetails;
import eu.dnetlib.dsm.domain.DatasourceInfo;
import eu.dnetlib.dsm.domain.DatasourceSearchResponse;
import eu.dnetlib.dsm.domain.DatasourceSnippetExtended;
import eu.dnetlib.dsm.domain.DatasourceSnippetResponse;
import eu.dnetlib.dsm.domain.Header;
import eu.dnetlib.dsm.domain.SimpleResponse;
public class ResponseUtils {

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.utils;
package eu.dnetlib.dsm.utils;
import org.springframework.stereotype.Component;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.openaire.dsm.utils;
package eu.dnetlib.dsm.utils;
import java.util.List;
@ -7,8 +7,8 @@ import org.apache.commons.logging.LogFactory;
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.stereotype.Component;
import eu.dnetlib.dsm.domain.AggregationInfo;
import eu.dnetlib.is.errors.DsmException;
import eu.dnetlib.openaire.dsm.domain.AggregationInfo;
/**
* Created by claudio on 20/10/2016.

View File

@ -1,4 +1,4 @@
package eu.dnetlib.is;
package eu.dnetlib.is.common;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.MediaType;

View File

@ -1,4 +1,4 @@
package eu.dnetlib.is;
package eu.dnetlib.is.common;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

View File

@ -105,7 +105,18 @@
<script src="common/js/angular.min.js"></script>
<script src="common/js/angular-route.min.js"></script>
<script src="common/js/spin.js"></script>
<script src="js/is_utils.js"></script>
<script src="js/is_main.js"></script>
<script src="js/is_simple_ctrls.js"></script>
<script src="js/dsm_ctrls.js"></script>
<script src="js/ctx_ctrls.js"></script>
<script src="js/res_ctrls.js"></script>
<script src="js/voc_ctrls.js"></script>
<script src="js/wf_ctrls.js"></script>
</html>

View File

@ -0,0 +1,99 @@
app.controller('ctxListController', function($scope, $http) {
$scope.contexts = [];
$scope.tmpCtx = {};
$scope.mode = '';
call_http_get($http, './ajax/contexts/?' + $.now(), function(res) {
$scope.contexts = res.data;
});
$scope.prepareNewCtx = function() {
$scope.mode = 'new';
$scope.tmpCtx = {
'id' : '',
'label' : '',
'type' : '',
'parameters' : []
};
}
$scope.prepareEditCtx = function(ctx) {
$scope.mode = 'edit';
$scope.tmpCtx = angular.copy(ctx);
}
$scope.saveContext = function(ctx) {
if ($scope.mode == 'new') {
var found = false;
angular.forEach($scope.contexts, function(v) {
if (ctx.id == ctx.id) { found = true; };
});
if (found) {
alert("Insertion failed: context already exists !");
return;
}
}
json_http_post($http,'./ajax/contexts/?' + $.now(), ctx, function(res) {
$scope.contexts = res.data;
alert("Context saved");
});
};
$scope.deleteContext = function(id) {
if (confirm("Are you sure ?")) {
call_http_delete($http, './ajax/contexts/' + encodeURIComponent(id) + '?' + $.now(), function(res) {
$scope.contexts = res.data;
alert("Context deleted");
});
}
};
});
// ----------------------------------------------------
app.controller('ctxViewerController', function($scope, $http, $routeParams) {
$scope.ctxId = $routeParams.id;
$scope.ctxInfo = {};
$scope.categories = [];
$scope.parameters = [];
var url = './ajax/contexts/' + encodeURIComponent($scope.ctxId);
call_http_get($http, url + '?' + $.now(), function(res) {
$scope.ctxInfo = res.data;
call_http_get($http, url + '/categories?' + $.now(), function(res) {
$scope.categories = res.data;
});
});
$scope.loadContextParameters = function() {
$scope.parameters = [];
call_http_get($http, './ajax/contexts/' + encodeURIComponent($scope.ctxId) + '?' + $.now(), function(res) {
$scope.parameters = res.data.parameters;
});
}
$scope.populateNode = function(level, node) {
$scope.url = './ajax/contexts/'
+ encodeURIComponent(level)
+ '/'
+ encodeURIComponent(node.id)
+ '/concepts';
node.populated = true;
call_http_get($http, $scope.url + '?' + $.now(), function(res) {
node.concepts = res.data;
});
}
$scope.initShowParameters = function(params) {
$scope.parameters = params;
}
});

View File

@ -0,0 +1,107 @@
app.controller('dsmSearchController', function($scope, $http, $location, $timeout) {
$scope.browseFieldId = "";
$scope.browseFieldName = "";
$scope.browseData = [];
$scope.browsableFields = [];
call_http_get($http, './ajax/dsm/browsableFields' , function(res) {
$scope.browsableFields = res.data;
});
$scope.browseField = function(id, label) {
$scope.browseFieldId = id;
$scope.browseFieldName = name;
$scope.browseData = [];
call_http_get($http, './ajax/dsm/browse/' + encodeURIComponent(id) + '?' + $.now(), function(res) {
$scope.browseData = res.data;
});
}
$scope.search = function(field, value) {
var path = "/dsm/results";
if (field) { path += '/' + encodeURIComponent(field); }
path += '/0/100';
$timeout(function() {
$location.path(path).search('value', value);
}, 1000);
}
});
// ----------------------------------------------------
app.controller('dsmResultsController', function($scope, $http, $location, $routeParams) {
$scope.field = $routeParams.field;
$scope.value = $routeParams.value;
$scope.pageSize = $routeParams.size;
$scope.currPage = $routeParams.page;
$scope.nResults = 0;
$scope.results = [];
$scope.nPages = 0;
var url = './ajax/dsm/';
if ($scope.field) { url += 'searchByField/' + encodeURIComponent($scope.field); }
else { url += 'search' }
url += '/' + $scope.currPage + '/' + $scope.pageSize;
url += '?value=' + encodeURIComponent($scope.value) + '&' + $.now();
call_http_get($http, url, function(res) {
$scope.results = res.data.content;
$scope.nResults = res.data.totalElements;
$scope.currPage = res.data.number;
$scope.nPages = res.data.totalPages;
});
$scope.gotoPage = function(page) {
$scope.results = [];
var path = "/dsm/results";
if ($scope.field) { path += '/' + encodeURIComponent($scope.field); }
path += '/' + page + '/' + $scope.pageSize;
$location.path(path).search('value', $scope.value);
}
});
// ----------------------------------------------------
app.controller('dsmApiController', function($scope, $http, $routeParams) {
$scope.apiId = $routeParams.id;
$scope.api = {};
call_http_get($http, './ajax/dsm/api?id=' + encodeURIComponent($scope.apiId) , function(res) {
$scope.api = res.data;
});
});
// ----------------------------------------------------
app.controller('dsmAddApiController', function($scope, $http, $routeParams) {
$scope.dsName = $routeParams.dsName;
$scope.prefix = 'api_________::' + $routeParams.dsId + '::';
$scope.api = {}
$scope.protocols = [];
$scope.compatibilityLevels = [];
$scope.contentDescTypes = [];
call_http_get($http, './ajax/dsm/browsableFields' , function(res) {
$scope.protocols = res.data.protocols;
$scope.compatibilityLevels = res.data.compatibilityLevels;
$scope.contentDescTypes = res.data.contentDescTypes;
});
$scope.save = function() {
var record = angular.copy($scope.api);
record.id = $scope.prefix + record.id;
record.datasource = $routeParams.dsId;
json_http_post($http, './ajax/dsm/api', record, function(res) {
$scope.api = res.data;
});
}
});

View File

@ -19,564 +19,3 @@ app.config(['$routeProvider', function($routeProvider) {
}
]);
app.controller('isMenuController', function($scope, $http) {
$scope.resTypes = [];
call_http_get($http, './ajax/resourceTypes' , function(res) {
$scope.resTypes = res.data;
});
});
// ----------------------------------------------------
app.controller('infoController', function($scope, $http) {
$scope.info = [];
call_http_get($http, './ajax/info/?' + $.now(), function(res) {
angular.forEach(res.data, function(section) {
if (section.name != 'Modules') {
angular.forEach(section.data, function(r) {
if (r.k.toLowerCase().endsWith('path') || r.k.toLowerCase().endsWith('.dirs')) {
r.v = r.v.replaceAll(':', ':\n');
}
});
}
});
$scope.info = res.data;
});
});
// ----------------------------------------------------
app.controller('wfHistoryController', function($scope, $http, $routeParams) {
$scope.fromDate = $routeParams.from;
$scope.toDate = $routeParams.to;
$scope.maxNumberOfRecentWfs = $routeParams.total;
$scope.workflows = [];
$scope.currentWf = {};
$scope.currDetailsKey = '';
$scope.currDetailsValue = '';
$scope.sortField = 'processId';
$scope.sortReverse = false;
$scope.reload = function() {
var url = './ajax/wfs/?' + $.now();
url += "&total=" + $scope.maxNumberOfRecentWfs;
if ($scope.fromDate > 0) { url += "&from=" + $scope.fromDate; }
if ($scope.toDate > 0) { url += "&to=" + $scope.toDate; }
call_http_get($http, url, function(res) {
$scope.workflows = res.data;
});
};
$scope.setCurrentWf = function(wf) {
$scope.currentWf = angular.copy(wf);
$scope.currDetailsKey = '';
$scope.currDetailsValue = '';
$scope.currentWf.arrayDetails = [];
$scope.currentWf.duration = $scope.calculateDateDiff(parseInt(wf.details['system:startDate']), parseInt(wf.details['system:endDate']));
angular.forEach(wf.details, function(v,k) {
$scope.currentWf.arrayDetails.push({'k':k, 'v':v});
});
}
$scope.setCurrentDetailParam = function(k, v) {
$scope.currDetailsKey = k;
$scope.currDetailsValue = v;
}
$scope.calculateDateDiff = function(start, end) {
if (start <= 0 || end <= 0) {
return '-';
}
var seconds = 0;
var minutes = 0;
var hours = 0;
var days = 0;
if (end > start) {
seconds = Math.round((end - start) / 1000);
if (seconds > 60) {
minutes = Math.floor(seconds / 60);
seconds = seconds % 60;
if (minutes > 60) {
hours = Math.floor(minutes / 60);
minutes = minutes % 60;
if (hours > 24) {
days = Math.floor(hours / 24);
hours = hours % 24;
}
}
}
}
var res = '';
if (days > 0) {
if (res) { res += ', '; }
res += days + " day(s)"
}
if (hours > 0) {
if (res) { res += ', '; }
res += hours + " hour(s)"
}
if (minutes > 0) {
if (res) { res += ', '; }
res += minutes + " minute(s)"
}
if (seconds > 0) {
if (res) { res += ', '; }
res += seconds + " second(s)"
}
if (!res) {
res = '0 seconds';
}
return res;
}
$scope.reload();
});
// ----------------------------------------------------
app.controller('resourcesController', function($scope, $http, $routeParams, $location) {
$scope.resources = [];
$scope.tmpRes = {};
$scope.tmpContent = "loading...";
$scope.type = $routeParams.type;
$scope.typeDesc = {};
$scope.reload = function() {
call_http_get($http, './ajax/resourceTypes/' + encodeURIComponent($scope.type) + '?' + $.now(), function(res) {
$scope.typeDesc = res.data;
});
call_http_get($http, './ajax/resources/' + encodeURIComponent($scope.type) + '?' + $.now(), function(res) {
$scope.resources = res.data;
});
};
$scope.prepareNewResource = function() {
$scope.tmpRes = {
'name' : '',
'description' : '',
'content' : ''
};
}
$scope.prepareEditMetadata = function(r) {
$scope.tmpRes = angular.copy(r);
}
$scope.prepareEditContent = function(r) {
$scope.tmpRes = angular.copy(r);
$scope.tmpContent = "loading...";
call_http_get($http, './ajax/resources/' + encodeURIComponent(r.id) + '/content?' + $.now(), function(res) {
if (res.data instanceof Object) {
$scope.tmpContent = JSON.stringify(res.data, null, "\t");
} else {
$scope.tmpContent = res.data;
}
});
}
$scope.createNewResource = function(r) {
params_http_post($http, './ajax/resources/?' + $.now(), $.param({
'name' : r.name,
'type' : $scope.type,
'description' : r.description,
'content' : r.content
}), function(res) {
alert("Resource saved");
$('#newResourceModal').modal('hide');
$scope.reload();
});
}
$scope.saveMetadata = function(id, md) {
json_http_post($http, './ajax/resources/' + encodeURIComponent(id) + '/metadata?' + $.now(), md, function(res) {
alert("Resource saved");
$scope.reload();
});
};
$scope.saveContent = function(id, content) {
params_http_post($http, './ajax/resources/' + encodeURIComponent(id) + '/content?' + $.now(), $.param({
'content' : content
}), function(res) {
alert("Resource saved");
$('#editContentModal').modal('hide');
});
};
$scope.deleteResource = function(r) {
if (confirm("Are you sure ?")) {
call_http_delete($http, './ajax/resources/' + encodeURIComponent(r.id) + '?' + $.now(), function(res) {
alert("Resource deleted");
$scope.reload();
});
}
};
if ($scope.type == 'context') { $location.url("/contexts"); }
else if ($scope.type == 'vocabulary') { $location.url("/vocs"); }
else if ($scope.type == 'protocol') { $location.url("/protocols"); }
else { $scope.reload(); }
});
// ----------------------------------------------------
app.controller('protocolsController', function($scope, $http) {
$scope.protocols = [];
call_http_get($http, './ajax/protocols/?' + $.now(), function(res) {
$scope.protocols = res.data;
});
});
// ----------------------------------------------------
app.controller('ctxListController', function($scope, $http) {
$scope.contexts = [];
$scope.tmpCtx = {};
$scope.mode = '';
call_http_get($http, './ajax/contexts/?' + $.now(), function(res) {
$scope.contexts = res.data;
});
$scope.prepareNewCtx = function() {
$scope.mode = 'new';
$scope.tmpCtx = {
'id' : '',
'label' : '',
'type' : '',
'parameters' : []
};
}
$scope.prepareEditCtx = function(ctx) {
$scope.mode = 'edit';
$scope.tmpCtx = angular.copy(ctx);
}
$scope.saveContext = function(ctx) {
if ($scope.mode == 'new') {
var found = false;
angular.forEach($scope.contexts, function(v) {
if (ctx.id == ctx.id) { found = true; };
});
if (found) {
alert("Insertion failed: context already exists !");
return;
}
}
json_http_post($http,'./ajax/contexts/?' + $.now(), ctx, function(res) {
$scope.contexts = res.data;
alert("Context saved");
});
};
$scope.deleteContext = function(id) {
if (confirm("Are you sure ?")) {
call_http_delete($http, './ajax/contexts/' + encodeURIComponent(id) + '?' + $.now(), function(res) {
$scope.contexts = res.data;
alert("Context deleted");
});
}
};
});
// ----------------------------------------------------
app.controller('ctxViewerController', function($scope, $http, $routeParams) {
$scope.ctxId = $routeParams.id;
$scope.ctxInfo = {};
$scope.categories = [];
$scope.parameters = [];
var url = './ajax/contexts/' + encodeURIComponent($scope.ctxId);
call_http_get($http, url + '?' + $.now(), function(res) {
$scope.ctxInfo = res.data;
call_http_get($http, url + '/categories?' + $.now(), function(res) {
$scope.categories = res.data;
});
});
$scope.loadContextParameters = function() {
$scope.parameters = [];
call_http_get($http, './ajax/contexts/' + encodeURIComponent($scope.ctxId) + '?' + $.now(), function(res) {
$scope.parameters = res.data.parameters;
});
}
$scope.populateNode = function(level, node) {
$scope.url = './ajax/contexts/'
+ encodeURIComponent(level)
+ '/'
+ encodeURIComponent(node.id)
+ '/concepts';
node.populated = true;
call_http_get($http, $scope.url + '?' + $.now(), function(res) {
node.concepts = res.data;
});
}
$scope.initShowParameters = function(params) {
$scope.parameters = params;
}
});
// ----------------------------------------------------
app.controller('vocListController', function($scope, $http) {
$scope.vocabularies = [];
$scope.tmpVoc = {};
$scope.mode = '';
call_http_get($http, './ajax/vocs/?' + $.now(), function(res) {
$scope.vocabularies = res.data;
});
$scope.prepareNewVoc = function() {
$scope.mode = 'new';
$scope.tmpVoc = {
'id' : '',
'name' : '',
'description' : ''
};
}
$scope.prepareEditVoc = function(voc) {
$scope.mode = 'edit';
$scope.tmpVoc = angular.copy(voc);
}
$scope.saveVocabulary = function(voc) {
if ($scope.mode == 'new') {
var found = false;
angular.forEach($scope.vocabularies, function(v) {
if (voc.id == v.id) { found = true; };
});
if (found) {
alert("Insertion failed: vocabulary already exists !");
return;
}
}
json_http_post($http, './ajax/vocs/?' + $.now(), voc, function(res) {
$scope.vocabularies = res.data;
alert("Vocabulary saved");
});
};
$scope.deleteVocabulary = function(id) {
if (confirm("Are you sure ?")) {
call_http_delete($http, './ajax/vocs/' + encodeURIComponent(id) + '?' + $.now(), function(res) {
$scope.vocabularies = res.data;
alert("Vocabulary deleted");
});
}
};
});
// ----------------------------------------------------
app.controller('vocEditorController', function($scope, $http, $routeParams) {
$scope.terms = [];
$scope.vocId = $routeParams.id;
$scope.vocInfo = {};
$scope.editTermCode = '';
$scope.tmpTerm = {};
$scope.mode = '';
$scope.currTerm = [];
$scope.baseUrl = './ajax/vocs/' + encodeURIComponent($scope.vocId);
call_http_get($http, $scope.baseUrl + '?' + $.now(), function(res) {
$scope.vocInfo = res.data;
call_http_get($http, $scope.baseUrl + '/terms?' + $.now(), function(res) {
$scope.terms = res.data;
});
});
$scope.setCurrTerm = function(term) {
$scope.currTerm = angular.copy(term);
}
$scope.prepareNewTerm = function() {
$scope.mode = 'new';
$scope.editTermCode = '';
$scope.tmpTerm = {
'code' : '',
'name' : '',
'encoding' : 'OPENAIRE',
'synonyms' : []
};
}
$scope.prepareEditTerm = function(term) {
$scope.mode = 'edit';
$scope.editTermCode = term.code;
$scope.tmpTerm = angular.copy(term);
}
$scope.saveTerm = function(term) {
var url = $scope.baseUrl + '/terms?' + $.now();
json_http_post($http, url, term, function(res) {
if ($scope.editTermCode != '' && $scope.editTermCode != $scope.tmpTerm.code) {
var deleteUrl = $scope.baseUrl + '/terms/' + encodeURIComponent($scope.editTermCode) + '?' + $.now();
call_http_delete($http, deleteUrl, function(res) {
$scope.terms = res.data;
alert("Term replaced");
});
} else {
$scope.terms = res.data;
alert("Term saved");
}
});
};
$scope.deleteTerm = function(code) {
if (confirm("Are you sure ?")) {
var url = $scope.baseUrl + '/terms/' + encodeURIComponent(code) + '?' + $.now();
call_http_delete($http, url, function(res) {
$scope.terms = res.data;
alert("Term deleted");
});
}
};
});
// ----------------------------------------------------
app.controller('dsmSearchController', function($scope, $http, $location, $timeout) {
$scope.browseFieldId = "";
$scope.browseFieldName = "";
$scope.browseData = [];
$scope.browsableFields = [];
call_http_get($http, './ajax/dsm/browsableFields' , function(res) {
$scope.browsableFields = res.data;
});
$scope.browseField = function(id, label) {
$scope.browseFieldId = id;
$scope.browseFieldName = name;
$scope.browseData = [];
call_http_get($http, './ajax/dsm/browse/' + encodeURIComponent(id) + '?' + $.now(), function(res) {
$scope.browseData = res.data;
});
}
$scope.search = function(field, value) {
var path = "/dsm/results";
if (field) { path += '/' + encodeURIComponent(field); }
path += '/0/100';
$timeout(function() {
$location.path(path).search('value', value);
}, 1000);
}
});
// ----------------------------------------------------
app.controller('dsmResultsController', function($scope, $http, $location, $routeParams) {
$scope.field = $routeParams.field;
$scope.value = $routeParams.value;
$scope.pageSize = $routeParams.size;
$scope.currPage = $routeParams.page;
$scope.nResults = 0;
$scope.results = [];
$scope.nPages = 0;
var url = './ajax/dsm/';
if ($scope.field) { url += 'searchByField/' + encodeURIComponent($scope.field); }
else { url += 'search' }
url += '/' + $scope.currPage + '/' + $scope.pageSize;
url += '?value=' + encodeURIComponent($scope.value) + '&' + $.now();
call_http_get($http, url, function(res) {
$scope.results = res.data.content;
$scope.nResults = res.data.totalElements;
$scope.currPage = res.data.number;
$scope.nPages = res.data.totalPages;
});
$scope.gotoPage = function(page) {
$scope.results = [];
var path = "/dsm/results";
if ($scope.field) { path += '/' + encodeURIComponent($scope.field); }
path += '/' + page + '/' + $scope.pageSize;
$location.path(path).search('value', $scope.value);
}
});
// ----------------------------------------------------
app.controller('dsmApiController', function($scope, $http, $routeParams) {
$scope.apiId = $routeParams.id;
$scope.api = {};
call_http_get($http, './ajax/dsm/api?id=' + encodeURIComponent($scope.apiId) , function(res) {
$scope.api = res.data;
});
});
// ----------------------------------------------------
app.controller('dsmAddApiController', function($scope, $http, $routeParams) {
$scope.dsName = $routeParams.dsName;
$scope.prefix = 'api_________::' + $routeParams.dsId + '::';
$scope.api = {}
$scope.protocols = [];
$scope.compatibilityLevels = [];
$scope.contentDescTypes = [];
call_http_get($http, './ajax/dsm/browsableFields' , function(res) {
$scope.protocols = res.data.protocols;
$scope.compatibilityLevels = res.data.compatibilityLevels;
$scope.contentDescTypes = res.data.contentDescTypes;
});
$scope.save = function() {
var record = angular.copy($scope.api);
record.id = $scope.prefix + record.id;
record.datasource = $routeParams.dsId;
json_http_post($http, './ajax/dsm/api', record, function(res) {
$scope.api = res.data;
});
}
});

View File

@ -0,0 +1,36 @@
app.controller('isMenuController', function($scope, $http) {
$scope.resTypes = [];
call_http_get($http, './ajax/resourceTypes' , function(res) {
$scope.resTypes = res.data;
});
});
// ----------------------------------------------------
app.controller('infoController', function($scope, $http) {
$scope.info = [];
call_http_get($http, './ajax/info/?' + $.now(), function(res) {
angular.forEach(res.data, function(section) {
if (section.name != 'Modules') {
angular.forEach(section.data, function(r) {
if (r.k.toLowerCase().endsWith('path') || r.k.toLowerCase().endsWith('.dirs')) {
r.v = r.v.replaceAll(':', ':\n');
}
});
}
});
$scope.info = res.data;
});
});
// ----------------------------------------------------
app.controller('protocolsController', function($scope, $http) {
$scope.protocols = [];
call_http_get($http, './ajax/protocols/?' + $.now(), function(res) {
$scope.protocols = res.data;
});
});

View File

@ -0,0 +1,84 @@
app.controller('resourcesController', function($scope, $http, $routeParams, $location) {
$scope.resources = [];
$scope.tmpRes = {};
$scope.tmpContent = "loading...";
$scope.type = $routeParams.type;
$scope.typeDesc = {};
$scope.reload = function() {
call_http_get($http, './ajax/resourceTypes/' + encodeURIComponent($scope.type) + '?' + $.now(), function(res) {
$scope.typeDesc = res.data;
});
call_http_get($http, './ajax/resources/' + encodeURIComponent($scope.type) + '?' + $.now(), function(res) {
$scope.resources = res.data;
});
};
$scope.prepareNewResource = function() {
$scope.tmpRes = {
'name' : '',
'description' : '',
'content' : ''
};
}
$scope.prepareEditMetadata = function(r) {
$scope.tmpRes = angular.copy(r);
}
$scope.prepareEditContent = function(r) {
$scope.tmpRes = angular.copy(r);
$scope.tmpContent = "loading...";
call_http_get($http, './ajax/resources/' + encodeURIComponent(r.id) + '/content?' + $.now(), function(res) {
if (res.data instanceof Object) {
$scope.tmpContent = JSON.stringify(res.data, null, "\t");
} else {
$scope.tmpContent = res.data;
}
});
}
$scope.createNewResource = function(r) {
params_http_post($http, './ajax/resources/?' + $.now(), $.param({
'name' : r.name,
'type' : $scope.type,
'description' : r.description,
'content' : r.content
}), function(res) {
alert("Resource saved");
$('#newResourceModal').modal('hide');
$scope.reload();
});
}
$scope.saveMetadata = function(id, md) {
json_http_post($http, './ajax/resources/' + encodeURIComponent(id) + '/metadata?' + $.now(), md, function(res) {
alert("Resource saved");
$scope.reload();
});
};
$scope.saveContent = function(id, content) {
params_http_post($http, './ajax/resources/' + encodeURIComponent(id) + '/content?' + $.now(), $.param({
'content' : content
}), function(res) {
alert("Resource saved");
$('#editContentModal').modal('hide');
});
};
$scope.deleteResource = function(r) {
if (confirm("Are you sure ?")) {
call_http_delete($http, './ajax/resources/' + encodeURIComponent(r.id) + '?' + $.now(), function(res) {
alert("Resource deleted");
$scope.reload();
});
}
};
if ($scope.type == 'context') { $location.url("/contexts"); }
else if ($scope.type == 'vocabulary') { $location.url("/vocs"); }
else if ($scope.type == 'protocol') { $location.url("/protocols"); }
else { $scope.reload(); }
});

View File

@ -0,0 +1,125 @@
app.controller('vocListController', function($scope, $http) {
$scope.vocabularies = [];
$scope.tmpVoc = {};
$scope.mode = '';
call_http_get($http, './ajax/vocs/?' + $.now(), function(res) {
$scope.vocabularies = res.data;
});
$scope.prepareNewVoc = function() {
$scope.mode = 'new';
$scope.tmpVoc = {
'id' : '',
'name' : '',
'description' : ''
};
}
$scope.prepareEditVoc = function(voc) {
$scope.mode = 'edit';
$scope.tmpVoc = angular.copy(voc);
}
$scope.saveVocabulary = function(voc) {
if ($scope.mode == 'new') {
var found = false;
angular.forEach($scope.vocabularies, function(v) {
if (voc.id == v.id) { found = true; };
});
if (found) {
alert("Insertion failed: vocabulary already exists !");
return;
}
}
json_http_post($http, './ajax/vocs/?' + $.now(), voc, function(res) {
$scope.vocabularies = res.data;
alert("Vocabulary saved");
});
};
$scope.deleteVocabulary = function(id) {
if (confirm("Are you sure ?")) {
call_http_delete($http, './ajax/vocs/' + encodeURIComponent(id) + '?' + $.now(), function(res) {
$scope.vocabularies = res.data;
alert("Vocabulary deleted");
});
}
};
});
// ----------------------------------------------------
app.controller('vocEditorController', function($scope, $http, $routeParams) {
$scope.terms = [];
$scope.vocId = $routeParams.id;
$scope.vocInfo = {};
$scope.editTermCode = '';
$scope.tmpTerm = {};
$scope.mode = '';
$scope.currTerm = [];
$scope.baseUrl = './ajax/vocs/' + encodeURIComponent($scope.vocId);
call_http_get($http, $scope.baseUrl + '?' + $.now(), function(res) {
$scope.vocInfo = res.data;
call_http_get($http, $scope.baseUrl + '/terms?' + $.now(), function(res) {
$scope.terms = res.data;
});
});
$scope.setCurrTerm = function(term) {
$scope.currTerm = angular.copy(term);
}
$scope.prepareNewTerm = function() {
$scope.mode = 'new';
$scope.editTermCode = '';
$scope.tmpTerm = {
'code' : '',
'name' : '',
'encoding' : 'OPENAIRE',
'synonyms' : []
};
}
$scope.prepareEditTerm = function(term) {
$scope.mode = 'edit';
$scope.editTermCode = term.code;
$scope.tmpTerm = angular.copy(term);
}
$scope.saveTerm = function(term) {
var url = $scope.baseUrl + '/terms?' + $.now();
json_http_post($http, url, term, function(res) {
if ($scope.editTermCode != '' && $scope.editTermCode != $scope.tmpTerm.code) {
var deleteUrl = $scope.baseUrl + '/terms/' + encodeURIComponent($scope.editTermCode) + '?' + $.now();
call_http_delete($http, deleteUrl, function(res) {
$scope.terms = res.data;
alert("Term replaced");
});
} else {
$scope.terms = res.data;
alert("Term saved");
}
});
};
$scope.deleteTerm = function(code) {
if (confirm("Are you sure ?")) {
var url = $scope.baseUrl + '/terms/' + encodeURIComponent(code) + '?' + $.now();
call_http_delete($http, url, function(res) {
$scope.terms = res.data;
alert("Term deleted");
});
}
};
});

View File

@ -0,0 +1,93 @@
app.controller('wfHistoryController', function($scope, $http, $routeParams) {
$scope.fromDate = $routeParams.from;
$scope.toDate = $routeParams.to;
$scope.maxNumberOfRecentWfs = $routeParams.total;
$scope.workflows = [];
$scope.currentWf = {};
$scope.currDetailsKey = '';
$scope.currDetailsValue = '';
$scope.sortField = 'processId';
$scope.sortReverse = false;
$scope.reload = function() {
var url = './ajax/wfs/?' + $.now();
url += "&total=" + $scope.maxNumberOfRecentWfs;
if ($scope.fromDate > 0) { url += "&from=" + $scope.fromDate; }
if ($scope.toDate > 0) { url += "&to=" + $scope.toDate; }
call_http_get($http, url, function(res) {
$scope.workflows = res.data;
});
};
$scope.setCurrentWf = function(wf) {
$scope.currentWf = angular.copy(wf);
$scope.currDetailsKey = '';
$scope.currDetailsValue = '';
$scope.currentWf.arrayDetails = [];
$scope.currentWf.duration = $scope.calculateDateDiff(parseInt(wf.details['system:startDate']), parseInt(wf.details['system:endDate']));
angular.forEach(wf.details, function(v,k) {
$scope.currentWf.arrayDetails.push({'k':k, 'v':v});
});
}
$scope.setCurrentDetailParam = function(k, v) {
$scope.currDetailsKey = k;
$scope.currDetailsValue = v;
}
$scope.calculateDateDiff = function(start, end) {
if (start <= 0 || end <= 0) {
return '-';
}
var seconds = 0;
var minutes = 0;
var hours = 0;
var days = 0;
if (end > start) {
seconds = Math.round((end - start) / 1000);
if (seconds > 60) {
minutes = Math.floor(seconds / 60);
seconds = seconds % 60;
if (minutes > 60) {
hours = Math.floor(minutes / 60);
minutes = minutes % 60;
if (hours > 24) {
days = Math.floor(hours / 24);
hours = hours % 24;
}
}
}
}
var res = '';
if (days > 0) {
if (res) { res += ', '; }
res += days + " day(s)"
}
if (hours > 0) {
if (res) { res += ', '; }
res += hours + " hour(s)"
}
if (minutes > 0) {
if (res) { res += ', '; }
res += minutes + " minute(s)"
}
if (seconds > 0) {
if (res) { res += ', '; }
res += seconds + " second(s)"
}
if (!res) {
res = '0 seconds';
}
return res;
}
$scope.reload();
});