Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Issue 359] Add initial data and analytics view #366

Merged
1 commit merged into from
Aug 10, 2023
Merged
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
120 changes: 120 additions & 0 deletions src/main/asciidoc/administration/dataAndAnalyticsViews.adoc
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
=== Data And Analytics Views

This section describes the data and analytics views of the application. This object is a persistent representation of a data and analytics UI.

==== Data And Analytics

This displays a list of all the data and analytics view objects based on parameters like page, size or sort feature based on name, collection etc as shown in *Request Parameters*.

===== Request Parameters
include::../{snippets}/dataAndAnalyticsViews/directory/request-parameters.adoc[]

===== Response Fields
include::../{snippets}/dataAndAnalyticsViews/directory/response-fields.adoc[]

===== Sample Request
include::../{snippets}/dataAndAnalyticsViews/directory/http-request.adoc[]

===== Sample Response
include::../{snippets}/dataAndAnalyticsViews/directory/http-response.adoc[]

===== CURL Sample
include::../{snippets}/dataAndAnalyticsViews/directory/curl-request.adoc[]

==== Create

A data and analytics view is created by adding a fields like _name_, _collection_ etc along with other variables as shown in the *Request Fields*.

===== Request Fields
include::../{snippets}/dataAndAnalyticsViews/create/request-fields.adoc[]

===== Response Fields
include::../{snippets}/dataAndAnalyticsViews/create/response-fields.adoc[]

===== Sample Request
include::../{snippets}/dataAndAnalyticsViews/create/http-request.adoc[]

===== Sample Response
include::../{snippets}/dataAndAnalyticsViews/create/http-response.adoc[]

===== CURL Sample
include::../{snippets}/dataAndAnalyticsViews/create/curl-request.adoc[]

==== Delete

A data and analytics view can be deleted by passing the _dataAndAnalyticsView id_ as a path parameter. This will return a *NO_CONTENT (204)* http status code as shown in the *Sample Response*.

===== Path Parameters
include::../{snippets}/dataAndAnalyticsViews/delete/path-parameters.adoc[]

===== Sample Request
include::../{snippets}/dataAndAnalyticsViews/delete/http-request.adoc[]

===== Sample Response
include::../{snippets}/dataAndAnalyticsViews/delete/http-response.adoc[]

===== CURL Sample
include::../{snippets}/dataAndAnalyticsViews/delete/curl-request.adoc[]

==== Find by Id

A user can find a data and analytics view by providing _dataAndAnalyticsView id_ as a path parameter. This returns a json response displaying the *HttpStatus.OK(200)* message along with the data and analytics view object as shown in the *Sample Response*.

===== Path Parameters
include::../{snippets}/dataAndAnalyticsViews/find-by-id/path-parameters.adoc[]

===== Response Fields
include::../{snippets}/dataAndAnalyticsViews/find-by-id/response-fields.adoc[]

===== Sample Request
include::../{snippets}/dataAndAnalyticsViews/find-by-id/http-request.adoc[]

===== Sample Response
include::../{snippets}/dataAndAnalyticsViews/find-by-id/http-response.adoc[]

===== CURL Sample
include::../{snippets}/dataAndAnalyticsViews/find-by-id/curl-request.adoc[]

==== Patch

This helps an admin user to partially update a data and analytics view. This process utilizes the http patch protocol.

===== Path Parameters
include::../{snippets}/dataAndAnalyticsViews/patch/path-parameters.adoc[]

===== Request Parameters
include::../{snippets}/dataAndAnalyticsViews/patch/request-parameters.adoc[]

===== Response Fields
include::../{snippets}/dataAndAnalyticsViews/patch/response-fields.adoc[]

===== Sample Request
include::../{snippets}/dataAndAnalyticsViews/patch/http-request.adoc[]

===== Sample Response
include::../{snippets}/dataAndAnalyticsViews/patch/http-response.adoc[]

===== CURL Sample
include::../{snippets}/dataAndAnalyticsViews/patch/curl-request.adoc[]

==== Update

This helps an admin user to update a specifc data and analytics view based on the _dataAndAnalyticsView id_ provided in the path parameter. This utilizes the http put protocol.

===== Path Parameters
include::../{snippets}/dataAndAnalyticsViews/update/path-parameters.adoc[]

===== Request Fields
include::../{snippets}/dataAndAnalyticsViews/update/request-fields.adoc[]

===== Response Fields
include::../{snippets}/dataAndAnalyticsViews/update/response-fields.adoc[]

===== Sample Request
include::../{snippets}/dataAndAnalyticsViews/update/http-request.adoc[]

===== Sample Response
include::../{snippets}/dataAndAnalyticsViews/update/http-response.adoc[]

===== CURL Sample
include::../{snippets}/dataAndAnalyticsViews/update/curl-request.adoc[]
4 changes: 2 additions & 2 deletions src/main/asciidoc/administration/directoryViews.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
=== Directory Views

This section describes about the directory views of the application. This object is a persistent representation of a directory UI.
This section describes the directory views of the application. This object is a persistent representation of a directory UI.

==== Directory

Expand Down Expand Up @@ -117,4 +117,4 @@ include::../{snippets}/directoryViews/update/http-request.adoc[]
include::../{snippets}/directoryViews/update/http-response.adoc[]

===== CURL Sample
include::../{snippets}/directoryViews/update/curl-request.adoc[]
include::../{snippets}/directoryViews/update/curl-request.adoc[]
2 changes: 1 addition & 1 deletion src/main/asciidoc/administration/discoveryViews.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
=== Discovery Views

This section describes about the discovery views of the application. This object is a persistent representation of a discovery view.
This section describes the discovery views of the application. This object is a persistent representation of a discovery view.

==== Directory

Expand Down
2 changes: 1 addition & 1 deletion src/main/asciidoc/administration/displayViews.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
=== Display Views

This section describes about the display views of the application. This object is a persistent representation of a display UI.
This section describes the display views of the application. This object is a persistent representation of a display UI.

==== Directory

Expand Down
2 changes: 1 addition & 1 deletion src/main/asciidoc/administration/themes.adoc
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
=== Themes

This section describes about the "look and feel" of the application. This object is a collection of properties like the header, logo, footer, color, size, styles etc.
This section describes the "look and feel" of the application. This object is a collection of properties like the header, logo, footer, color, size, styles etc.
The default theme view is seen in the *Sample Response*.

==== Directory
Expand Down
1 change: 1 addition & 0 deletions src/main/asciidoc/index.adoc
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ include::auth/user.adoc[]

== Administration

include::administration/dataAndAnalyticsViews.adoc[]
include::administration/directoryViews.adoc[]
include::administration/discoveryViews.adoc[]
include::administration/displayViews.adoc[]
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package edu.tamu.scholars.middleware.defaults;

import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import org.springframework.stereotype.Service;

import com.fasterxml.jackson.core.type.TypeReference;

import edu.tamu.scholars.middleware.view.model.DataAndAnalyticsView;
import edu.tamu.scholars.middleware.view.model.repo.DataAndAnalyticsViewRepo;

@Service
public class AnalyticViewsDefaults extends AbstractDefaults<DataAndAnalyticsView, DataAndAnalyticsViewRepo> {

public AnalyticViewsDefaults() {
super();
}

@Override
public String path() {
return "classpath:defaults/dataAndanalyticViews.yml";
}

@Override
public List<DataAndAnalyticsView> read(InputStream is) throws IOException {
List<DataAndAnalyticsView> views = mapper.readValue(is, new TypeReference<List<DataAndAnalyticsView>>() {});
for (DataAndAnalyticsView view : views) {
loadTemplateMap(view.getTemplates());
}
return views;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package edu.tamu.scholars.middleware.view.model;

import javax.persistence.Entity;
import javax.persistence.Table;

@Entity
@Table(name = "data_and_analytics_views")
public class DataAndAnalyticsView extends CollectionView {

private static final long serialVersionUID = 2912876591264398726L;

}
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
package edu.tamu.scholars.middleware.view.model;

public enum Layout {
LIST, GRID
CONTAINER, GRID, LIST
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package edu.tamu.scholars.middleware.view.model.repo;

import org.springframework.data.rest.core.annotation.RepositoryRestResource;

import edu.tamu.scholars.middleware.view.model.DataAndAnalyticsView;

@RepositoryRestResource
public interface DataAndAnalyticsViewRepo extends ViewRepo<DataAndAnalyticsView> {

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package edu.tamu.scholars.middleware.view.model.repo.handler;

import org.springframework.data.rest.core.annotation.RepositoryEventHandler;

import edu.tamu.scholars.middleware.view.model.DataAndAnalyticsView;
import edu.tamu.scholars.middleware.view.model.DirectoryView;

@RepositoryEventHandler(DataAndAnalyticsView.class)
public class DataAndAnalyticViewEventHandler extends ViewEventHandler<DirectoryView> {

public static final String DATA_AND_ANALYTICS_VIEWS_CHANNEL = "/queue/data-and-analytics-views";

@Override
protected String getChannel() {
return DATA_AND_ANALYTICS_VIEWS_CHANNEL;
}

}
7 changes: 7 additions & 0 deletions src/main/resources/defaults/dataAndanalyticViews.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
- name: Publications by Academic Age Group
layout: CONTAINER
- name: Research by UN SDG
layout: CONTAINER
- name: Download Profile Summaries by Department
layout: CONTAINER
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@

import edu.tamu.scholars.middleware.model.OpKey;
import edu.tamu.scholars.middleware.view.model.Boost;
import edu.tamu.scholars.middleware.view.model.DataAndAnalyticsView;
import edu.tamu.scholars.middleware.view.model.DirectoryView;
import edu.tamu.scholars.middleware.view.model.DiscoveryView;
import edu.tamu.scholars.middleware.view.model.DisplaySectionView;
Expand All @@ -29,7 +30,99 @@

public class ViewTestUtility {

public static String MOCK_VIEW_NAME = "People";
public static String MOCK_VIEW_NAME = "View";

public static DataAndAnalyticsView getMockDataAndAnalyticsView() {
DataAndAnalyticsView dataAndAnalyticsView = new DataAndAnalyticsView();

dataAndAnalyticsView.setName(MOCK_VIEW_NAME);
dataAndAnalyticsView.setLayout(Layout.GRID);

Map<String, String> templates = new HashMap<String, String>();
templates.put("default", "<h1>Element template from WSYWIG</h1>");

dataAndAnalyticsView.setTemplates(templates);

List<String> styles = new ArrayList<String>();

styles.add("color: maroon;");

dataAndAnalyticsView.setStyles(styles);

List<String> fields = new ArrayList<String>();

fields.add("title");

dataAndAnalyticsView.setFields(fields);

List<Facet> facets = new ArrayList<Facet>();

Facet facet = new Facet();

facet.setName("Name");
facet.setField("name");
facet.setType(FacetType.STRING);
facet.setSort(FacetSort.COUNT);
facet.setDirection(Direction.DESC);
facet.setPageSize(20);
facet.setPageNumber(1);

facets.add(facet);

dataAndAnalyticsView.setFacets(facets);

List<Filter> filters = new ArrayList<Filter>();

Filter filter = new Filter();

filter.setField("type");
filter.setValue("FacultyMember");

filters.add(filter);

dataAndAnalyticsView.setFilters(filters);

List<Boost> boosts = new ArrayList<Boost>();

Boost boost = new Boost();

boost.setField("name");
boost.setValue(2.0f);

boosts.add(boost);

dataAndAnalyticsView.setBoosts(boosts);

List<Sort> sorting = new ArrayList<Sort>();

Sort sort = new Sort();
sort.setField("name");
sort.setDirection(Direction.ASC);

sorting.add(sort);

dataAndAnalyticsView.setSort(sorting);

List<ExportField> exporting = new ArrayList<ExportField>();

ExportField idExport = new ExportField();

idExport.setColumnHeader("Id");
idExport.setValuePath("id");

exporting.add(idExport);

ExportField nameExport = new ExportField();

nameExport.setColumnHeader("Name");
nameExport.setValuePath("name");

exporting.add(nameExport);

dataAndAnalyticsView.setExport(exporting);

return dataAndAnalyticsView;
}

public static DirectoryView getMockDirectoryView() {
DirectoryView directoryView = new DirectoryView();
Expand Down
Loading
Loading