Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1869,69 +1869,93 @@
scope.layerSelectionMode = "multiple";
scope.onlineSrcLink = "";
scope.addOnlineSrcInDataset = true;
scope.uuidsAlreadyLinked = [];

gnOnlinesrc.register(scope.mode, function (config) {
if (config && !angular.isObject(config)) {
config = angular.fromJson(config);
}
gnOnlinesrc.register(
scope.mode,
function (config, existingRelations, currentUuid) {
if (config && !angular.isObject(config)) {
config = angular.fromJson(config);
}

scope.config = {
sources: config && config.sources
};
scope.config = {
sources: config && config.sources
};

$(scope.popupid).modal("show");
$(scope.popupid).modal("show");

// parameters of the online resource form
scope.srcParams = { selectedLayers: [] };
// parameters of the online resource form
scope.srcParams = { selectedLayers: [] };

var searchParams = {
isTemplate: "n"
};
if (scope.mode === "service") {
searchParams.type = scope.mode;
} else {
// Any records which are not services
// ie. dataset, series, ...
searchParams["-resourceType"] = "service";
}
scope.$broadcast("resetSearch", searchParams);
scope.layers = [];

// Load service layers on load
if (scope.mode !== "service") {
// If linking a dataset and the service is a WMS
// List all layers. The service WMS link can be added
// as online source in the target dataset.
// TODO: list all URLs if many
// TODO: If service URL is added, user need to reload
// editor to get URL or current record.
var links = [];
links = links.concat(
gnCurrentEdit.metadata.getLinksByType("ogc", "atom")
);
if (links.length > 0) {
scope.onlineSrcLink = links[0].url;
scope.srcParams.protocol = links[0].protocol || "";
scope.loadCurrentLink(scope.onlineSrcLink);
scope.srcParams.url = scope.onlineSrcLink;
scope.srcParams.uuidSrv = gnCurrentEdit.uuid;

scope.addOnlineSrcInDataset = true;
var searchParams = {
isTemplate: "n"
};
if (scope.mode === "service") {
searchParams.type = scope.mode;
} else {
scope.alertMsg = $translate.instant("linkToServiceWithoutURLError");
// Any records which are not services
// ie. dataset, series, ...
searchParams["-resourceType"] = "service";
}

scope.uuidsAlreadyLinked = [currentUuid];
if (existingRelations && existingRelations.length) {
for (var i = 0; i < existingRelations.length; i++) {
scope.uuidsAlreadyLinked.push(existingRelations[i].uuid);
}
}
if (scope.uuidsAlreadyLinked.length > 0) {
scope.searchObj.filters = [
{
query_string: {
query:
'-_id:("' + scope.uuidsAlreadyLinked.join('" OR "') + '")'
}
}
];
}

// If no WMS found, suggest to add a link to the service landing page
// Default is false.
// Build a link to the service metadata record
scope.onlineSrcLink =
gnConfigService.getServiceURL() +
"api/records/" +
gnCurrentEdit.uuid;
scope.$broadcast("resetSearch", searchParams);
scope.layers = [];

// Load service layers on load
if (scope.mode !== "service") {
// If linking a dataset and the service is a WMS
// List all layers. The service WMS link can be added
// as online source in the target dataset.
// TODO: list all URLs if many
// TODO: If service URL is added, user need to reload
// editor to get URL or current record.
var links = [];
links = links.concat(
gnCurrentEdit.metadata.getLinksByType("ogc", "atom")
);
if (links.length > 0) {
scope.onlineSrcLink = links[0].url;
scope.srcParams.protocol = links[0].protocol || "";
scope.loadCurrentLink(scope.onlineSrcLink);
scope.srcParams.url = scope.onlineSrcLink;
scope.srcParams.uuidSrv = gnCurrentEdit.uuid;

scope.addOnlineSrcInDataset = true;
} else {
scope.alertMsg = $translate.instant(
"linkToServiceWithoutURLError"
);

// If no WMS found, suggest to add a link to the service landing page
// Default is false.
// Build a link to the service metadata record
scope.onlineSrcLink =
gnConfigService.getServiceURL() +
"api/records/" +
gnCurrentEdit.uuid;

scope.addOnlineSrcInDataset = false;
scope.addOnlineSrcInDataset = false;
}
}
}
});
);

// This object is used to share value between this
// directive and the SearchFormController scope that
Expand Down Expand Up @@ -2136,6 +2160,7 @@
scope.mode = iAttrs["gnLinkToMetadata"];
scope.popupid = "#linkto" + scope.mode + "-popup";
scope.btn = {};
scope.uuidsAlreadyLinked = [];

scope.updateParams = function () {
scope.searchObj.params.any = scope.searchObj.any;
Expand Down Expand Up @@ -2180,27 +2205,47 @@
* Register a method on popup open to reset
* the search form and trigger a search.
*/
gnOnlinesrc.register(scope.mode, function (config) {
if (config && !angular.isObject(config)) {
config = angular.fromJson(config);
}
gnOnlinesrc.register(
scope.mode,
function (config, existingRelations, currentUuid) {
if (config && !angular.isObject(config)) {
config = angular.fromJson(config);
}

scope.config = {
sources: config && config.sources
};
scope.config = {
sources: config && config.sources
};

$(scope.popupid).modal("show");
$(scope.popupid).modal("show");

$("#linktomd-search input").val("");
scope.searchObj.any = "";
$("#linktomd-search input").val("");
scope.searchObj.any = "";

var searchParams =
scope.config.sources && scope.config.sources.metadataStore
? scope.config.sources.metadataStore.params || {}
: {};
scope.$broadcast("resetSearch", searchParams);
scope.selectRecords = [];
});
scope.uuidsAlreadyLinked = [currentUuid];
if (existingRelations && existingRelations.length) {
for (var i = 0; i < existingRelations.length; i++) {
scope.uuidsAlreadyLinked.push(existingRelations[i].uuid);
}
}
if (scope.uuidsAlreadyLinked.length > 0) {
scope.searchObj.filters = [
{
query_string: {
query:
'-_id:("' + scope.uuidsAlreadyLinked.join('" OR "') + '")'
}
}
];
}

var searchParams =
scope.config.sources && scope.config.sources.metadataStore
? scope.config.sources.metadataStore.params || {}
: {};
scope.$broadcast("resetSearch", searchParams);
scope.selectRecords = [];
}
);
scope.gnOnlinesrc = gnOnlinesrc;
}
};
Expand Down Expand Up @@ -2260,35 +2305,56 @@
},
post: function postLink(scope, iElement, iAttrs) {
scope.popupid = iAttrs["gnLinkToSibling"];

scope.uuidsAlreadyLinked = [];
/**
* Register a method on popup open to reset
* the search form and trigger a search.
*/
gnOnlinesrc.register("siblings", function (config) {
if (config && !angular.isObject(config)) {
config = angular.fromJson(config);
}
gnOnlinesrc.register(
"siblings",
function (config, existingRelations, currentUuid) {
if (config && !angular.isObject(config)) {
config = angular.fromJson(config);
}

scope.config = {
associationTypeForced: angular.isDefined(
config && config.fields && config.fields.associationType
),
associationType:
(config && config.fields && config.fields.associationType) || null,
initiativeTypeForced: angular.isDefined(
config && config.fields && config.fields.initiativeType
),
initiativeType:
(config && config.fields && config.fields.initiativeType) || null,
sources: config && config.sources
};
scope.uuidsAlreadyLinked = [currentUuid];
if (existingRelations && existingRelations.length) {
for (var i = 0; i < existingRelations.length; i++) {
scope.uuidsAlreadyLinked.push(existingRelations[i].uuid);
}
}
if (scope.uuidsAlreadyLinked.length > 0) {
scope.searchObj.filters = [
{
query_string: {
query:
'-_id:("' + scope.uuidsAlreadyLinked.join('" OR "') + '")'
}
}
];
}

$(scope.popupid).modal("show");
scope.config = {
associationTypeForced: angular.isDefined(
config && config.fields && config.fields.associationType
),
associationType:
(config && config.fields && config.fields.associationType) ||
null,
initiativeTypeForced: angular.isDefined(
config && config.fields && config.fields.initiativeType
),
initiativeType:
(config && config.fields && config.fields.initiativeType) || null,
sources: config && config.sources
};

scope.clearSearch();
scope.selection = [];
});
$(scope.popupid).modal("show");

scope.clearSearch();
scope.selection = [];
}
);

// Clear the search params and input
scope.clearSearch = function () {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -411,19 +411,15 @@
*
* @param {string} type of the directive that calls it.
*/
onOpenPopup: function (type, additionalParams) {
if (
type === "parent" &&
additionalParams.fields &&
additionalParams.fields.associationType
) {
onOpenPopup: function (type, config, existingRelations) {
if (type === "parent" && config.fields && config.fields.associationType) {
// In ISO19115-3, parents are usually encoded using the association records
// Configured in config/associated-panel/default.json
type = "siblings";
}
var fn = openCb[type];
if (angular.isFunction(fn)) {
openCb[type](additionalParams);
openCb[type].apply(null, Array.prototype.slice.call(arguments, 1));
} else {
console.warn(
"No callback functions available for '" + type + "'. Check the type value."
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -106,7 +106,7 @@
</div>
</div>

<div>
<div data-ng-show="searchResults.records.length > 0">
<div class="list-group fixed gn-nopadding-left gn-nopadding-right">
<div class="list-group-item" data-ng-repeat="md in searchResults.records">
<a
Expand All @@ -130,6 +130,7 @@
</div>
</div>
<div
data-ng-show="searchResults.records.length > 0"
data-gn-pagination="paginationInfo"
data-hits-values="searchObj.hitsperpageValues"
></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ <h2 class="onlinesrc-title gn-relation-type-{{config.type}}">
title="{{(config.type + '-help') | translate}}"
class="btn btn-default btn-xs pull-right"
data-ng-if="config.allowToAddRelation"
data-ng-click="onlinesrcService.onOpenPopup(config.type, config.config)"
data-ng-click="onlinesrcService.onOpenPopup(config.type, config.config, config.relations, gnCurrentEdit.uuid)"
>
<i class="fa fa-fw fa-plus"></i>
<span>{{ config.label | translate}}</span>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,7 @@
</div>
</div>
<div
data-ng-show="searchResults.records.length > 0"
data-gn-pagination="paginationInfo"
data-hits-values="searchObj.hitsperpageValues"
></div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -131,7 +131,10 @@
<i class="fa fa-fw fa-chevron-up"></i>
</button>
</div>
<div class="col-xs-12 col-sm-6 text-center">
<div
class="col-xs-12 col-sm-6 text-center"
data-ng-show="searchResults.records.length > 0"
>
<div
class=""
data-gn-pagination="paginationInfo"
Expand Down
Loading