Skip to content

Commit

Permalink
Add initial data and analytics view (#366)
Browse files Browse the repository at this point in the history
The additional properties required for data and analytics UI/UX has yet to be determined.
  • Loading branch information
wwelling authored Aug 10, 2023
1 parent c5dae22 commit ec09103
Show file tree
Hide file tree
Showing 16 changed files with 739 additions and 7 deletions.
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

0 comments on commit ec09103

Please sign in to comment.