diff --git a/src/main/java/com/knowledgepixels/nanodash/component/ExploreDataTable.html b/src/main/java/com/knowledgepixels/nanodash/component/ExploreDataTable.html
deleted file mode 100644
index ef08a78c..00000000
--- a/src/main/java/com/knowledgepixels/nanodash/component/ExploreDataTable.html
+++ /dev/null
@@ -1,19 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/src/main/java/com/knowledgepixels/nanodash/component/ExploreDataTable.java b/src/main/java/com/knowledgepixels/nanodash/component/ExploreDataTable.java
deleted file mode 100644
index 70da823d..00000000
--- a/src/main/java/com/knowledgepixels/nanodash/component/ExploreDataTable.java
+++ /dev/null
@@ -1,217 +0,0 @@
-package com.knowledgepixels.nanodash.component;
-
-import com.knowledgepixels.nanodash.ApiCache;
-import com.knowledgepixels.nanodash.QueryApiAccess;
-import com.knowledgepixels.nanodash.domain.User;
-import com.knowledgepixels.nanodash.Utils;
-import org.apache.wicket.Component;
-import org.apache.wicket.extensions.ajax.markup.html.repeater.data.table.AjaxNavigationToolbar;
-import org.apache.wicket.extensions.markup.html.repeater.data.grid.ICellPopulator;
-import org.apache.wicket.extensions.markup.html.repeater.data.sort.ISortState;
-import org.apache.wicket.extensions.markup.html.repeater.data.table.*;
-import org.apache.wicket.extensions.markup.html.repeater.util.SingleSortState;
-import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
-import org.apache.wicket.markup.html.basic.Label;
-import org.apache.wicket.markup.html.panel.Panel;
-import org.apache.wicket.markup.repeater.Item;
-import org.apache.wicket.model.IModel;
-import org.apache.wicket.model.Model;
-import org.nanopub.Nanopub;
-import org.nanopub.extra.services.ApiResponse;
-import org.nanopub.extra.services.ApiResponseEntry;
-import org.nanopub.extra.services.QueryRef;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * A component that displays a data table of nanopublication references.
- */
-public class ExploreDataTable extends Panel {
-
- private static final Logger logger = LoggerFactory.getLogger(ExploreDataTable.class);
-
- private ExploreDataTable(String id, String ref, ApiResponse response) {
- super(id);
- setOutputMarkupId(true);
-
- List> columns = new ArrayList<>();
- DataProvider dp;
- try {
- columns.add(new Column("Nanopublication", "np", ref));
- columns.add(new Column("Part", "graphpred", ref));
- columns.add(new Column("Subject", "subj", ref));
- columns.add(new Column("Predicate", "pred", ref));
- columns.add(new Column("Object", "obj", ref));
- columns.add(new Column("Published By", "pubkey", ref));
- columns.add(new Column("Published On", "date", ref));
- dp = new DataProvider(filterData(response.getData(), ref));
- DataTable table = new DataTable<>("datatable", columns, dp, 10);
- table.addBottomToolbar(new AjaxNavigationToolbar(table));
- table.addBottomToolbar(new NoRecordsToolbar(table));
- table.addTopToolbar(new HeadersToolbar(table, dp));
- table.setOutputMarkupId(true);
- add(table);
- add(new Label("message", "").setVisible(false));
- } catch (Exception ex) {
- logger.error("Could not create data table for reference: {}", ref, ex);
- add(new Label("datatable", "").setVisible(false));
- add(new Label("message", "Could not load data table."));
- add(new Label("show-all").setVisible(false));
- }
- }
-
-
- private List filterData(List data, String nanopubUri) {
- List filteredList = new ArrayList<>();
- Nanopub np = Utils.getAsNanopub(nanopubUri);
- if (np == null) return data;
- for (ApiResponseEntry e : data) {
- if (np == null || !nanopubUri.equals(e.get("np"))) {
- filteredList.add(e);
- }
- }
- return filteredList;
- }
-
-
- private class Column extends AbstractColumn {
-
- private String key, current;
-
- /**
- * Constructor for a column in the data table.
- *
- * @param title The title of the column.
- * @param key The key used to retrieve data from ApiResponseEntry.
- * @param current The current value to highlight in the column.
- */
- public Column(String title, String key, String current) {
- super(new Model(title), key);
- this.key = key;
- this.current = current;
- }
-
- @Override
- public void populateItem(Item> cellItem, String componentId, IModel rowModel) {
- String value = rowModel.getObject().get(key);
- if (value.equals(current)) {
- cellItem.add(new Label(componentId, "" + Utils.getShortNameFromURI(value) + "").setEscapeModelStrings(false));
- } else if (value.matches("https?://.+")) {
- cellItem.add(new NanodashLink(componentId, value));
- } else {
- if (key.equals("pubkey")) {
- cellItem.add(new Label(componentId, User.getShortDisplayNameForPubkeyhash(null, Utils.createSha256HexHash(value))));
- } else {
- cellItem.add(new Label(componentId, value));
- }
- }
- }
-
- }
-
-
- private class DataProvider implements ISortableDataProvider {
-
- private List data = new ArrayList<>();
- private SingleSortState sortState = new SingleSortState<>();
-
- /**
- * Default constructor that initializes the sort state.
- */
- public DataProvider() {
- sortState.setSort(new SortParam("date", false));
- }
-
- /**
- * Constructor that initializes the data provider with a list of ApiResponseEntry.
- *
- * @param data The list of ApiResponseEntry to be used in the data provider.
- */
- public DataProvider(List data) {
- this();
- this.data = data;
- }
-
- @Override
- public Iterator extends ApiResponseEntry> iterator(long first, long count) {
- List copy = new ArrayList<>(data);
- ApiResponseComparator comparator = new ApiResponseComparator(sortState.getSort());
- copy.sort(comparator);
- return Utils.subList(copy, first, first + count).iterator();
- }
-
- @Override
- public IModel model(ApiResponseEntry object) {
- return new Model(object);
- }
-
- @Override
- public long size() {
- return data.size();
- }
-
- @Override
- public ISortState getSortState() {
- return sortState;
- }
-
- @Override
- public void detach() {
- }
-
- }
-
- private class ApiResponseComparator implements Comparator, Serializable {
-
- private SortParam sortParam;
-
- /**
- * Constructor that initializes the comparator with a sort parameter.
- *
- * @param sortParam The sort parameter defining the property and order for comparison.
- */
- public ApiResponseComparator(SortParam sortParam) {
- this.sortParam = sortParam;
- }
-
- @Override
- public int compare(ApiResponseEntry o1, ApiResponseEntry o2) {
- String p = sortParam.getProperty();
- int result = o1.get(p).compareTo(o2.get(p));
- if (!sortParam.isAscending()) result = -result;
- return result;
- }
-
- }
-
- /**
- * Creates a new ExploreDataTable component.
- *
- * @param markupId the Wicket markup ID for the component
- * @param ref the reference URI to be displayed in the table
- * @return a new ExploreDataTable component or an ApiResultComponent if the data is not cached
- */
- public static Component createComponent(final String markupId, final String ref) {
- QueryRef queryRef = new QueryRef(QueryApiAccess.FIND_URI_REFERENCES, "ref", ref);
- ApiResponse response = ApiCache.retrieveResponseAsync(queryRef);
- if (response != null) {
- return new ExploreDataTable(markupId, ref, response);
- } else {
- return new ApiResultComponent(markupId, queryRef) {
-
- @Override
- public Component getApiResultComponent(String markupId, ApiResponse response) {
- return new ExploreDataTable(markupId, ref, response);
- }
-
- };
- }
- }
-
-}
diff --git a/src/main/java/com/knowledgepixels/nanodash/page/ReferencesPage.html b/src/main/java/com/knowledgepixels/nanodash/page/ReferencesPage.html
index a119f904..000f5274 100644
--- a/src/main/java/com/knowledgepixels/nanodash/page/ReferencesPage.html
+++ b/src/main/java/com/knowledgepixels/nanodash/page/ReferencesPage.html
@@ -16,8 +16,8 @@
🔗 References for
back to explore
-
+
diff --git a/src/main/java/com/knowledgepixels/nanodash/page/ReferencesPage.java b/src/main/java/com/knowledgepixels/nanodash/page/ReferencesPage.java
index 63815464..4c64ca12 100644
--- a/src/main/java/com/knowledgepixels/nanodash/page/ReferencesPage.java
+++ b/src/main/java/com/knowledgepixels/nanodash/page/ReferencesPage.java
@@ -1,18 +1,23 @@
package com.knowledgepixels.nanodash.page;
import com.knowledgepixels.nanodash.Utils;
-import com.knowledgepixels.nanodash.component.ExploreDataTable;
+import com.knowledgepixels.nanodash.View;
+import com.knowledgepixels.nanodash.ViewDisplay;
import com.knowledgepixels.nanodash.component.ExternalLinkWithActionsPanel;
+import com.knowledgepixels.nanodash.component.QueryResultTableBuilder;
import com.knowledgepixels.nanodash.component.TitleBar;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
import org.apache.wicket.model.Model;
import org.apache.wicket.request.mapper.parameter.PageParameters;
+import org.nanopub.extra.services.QueryRef;
public class ReferencesPage extends NanodashPage {
public static final String MOUNT_PATH = "/references";
+ private static final String REFERENCES_VIEW = "https://w3id.org/np/RAZ0EGsBlca8unLqQzGl5kVapGgllKvDbGFlTA_FFD7oM/references-view";
+
@Override
public String getMountPath() {
return MOUNT_PATH;
@@ -37,7 +42,10 @@ public ReferencesPage(final PageParameters parameters) {
add(new Label("termname", shortName));
add(new ExternalLinkWithActionsPanel("urilink", Model.of(ref)));
add(new BookmarkablePageLink("back-link", ExplorePage.class, new PageParameters().set("id", ref)));
- add(ExploreDataTable.createComponent("reftable", ref));
+
+ View view = View.get(REFERENCES_VIEW);
+ QueryRef queryRef = new QueryRef(view.getQuery().getQueryId(), "ref", ref);
+ add(QueryResultTableBuilder.create("reftable", queryRef, new ViewDisplay(view)).build());
}
}