diff --git a/invenio_administration/assets/semantic-ui/js/invenio_administration/api/actions.js b/invenio_administration/assets/semantic-ui/js/invenio_administration/api/actions.js
index 1c140ae..fc72d16 100644
--- a/invenio_administration/assets/semantic-ui/js/invenio_administration/api/actions.js
+++ b/invenio_administration/assets/semantic-ui/js/invenio_administration/api/actions.js
@@ -1,25 +1,22 @@
-import React, { Component } from "react";
-import PropTypes from "prop-types";
import { APIRoutes } from "./routes";
import { http } from "./config";
-const getResource = async (
- apiEndpoint,
- pid,
-) => {
+const getResource = async (apiEndpoint, pid) => {
return await http.get(APIRoutes.get(apiEndpoint, pid));
};
-const deleteResource = async (
- resource,
- apiEndpoint,
- idKeyPath = "pid"
-) => {
- return await http.delete(APIRoutes.detailsView(apiEndpoint, resource, idKeyPath));
+const searchResource = async (apiEndpoint, query, sort, page, size) => {
+ return await http.get(APIRoutes.search(apiEndpoint, query, sort, page, size));
};
-const editResource = async(apiEndpoint, pid, payload) => {
- return await http.put(APIRoutes.get(apiEndpoint,pid), payload);
+const deleteResource = async (resource, apiEndpoint, idKeyPath = "pid") => {
+ return await http.delete(
+ APIRoutes.detailsView(apiEndpoint, resource, idKeyPath)
+ );
+};
+
+const editResource = async (apiEndpoint, pid, payload) => {
+ return await http.put(APIRoutes.get(apiEndpoint, pid), payload);
};
const createResource = () => {};
@@ -30,5 +27,5 @@ export const InvenioAdministrationActionsApi = {
deleteResource: deleteResource,
editResource: editResource,
getResource: getResource,
-};
-
+ searchResource: searchResource,
+};
\ No newline at end of file
diff --git a/invenio_administration/assets/semantic-ui/js/invenio_administration/api/config.js b/invenio_administration/assets/semantic-ui/js/invenio_administration/api/config.js
index 5130261..c62bfd2 100644
--- a/invenio_administration/assets/semantic-ui/js/invenio_administration/api/config.js
+++ b/invenio_administration/assets/semantic-ui/js/invenio_administration/api/config.js
@@ -10,7 +10,9 @@ const apiConfig = {
withCredentials: true,
xsrfCookieName: "csrftoken",
xsrfHeaderName: "X-CSRFToken",
+ baseURL: "/",
headers: {
+ Accept: "application/json",
"Accept": "application/json",
"Content-Type": "application/json",
},
diff --git a/invenio_administration/assets/semantic-ui/js/invenio_administration/api/routes.js b/invenio_administration/assets/semantic-ui/js/invenio_administration/api/routes.js
index ee803ee..52ca304 100644
--- a/invenio_administration/assets/semantic-ui/js/invenio_administration/api/routes.js
+++ b/invenio_administration/assets/semantic-ui/js/invenio_administration/api/routes.js
@@ -1,14 +1,17 @@
import _get from "lodash/get";
const APIRoutesGenerators = {
- detailsView: (routePrefix, resource, idKeyPath="pid") => {
+ detailsView: (routePrefix, resource, idKeyPath = "pid") => {
return `${routePrefix}/${_get(resource, idKeyPath)}`;
},
get: (routePrefix, pid) => {
return `${routePrefix}/${pid}`;
},
-}
+ search: (routePrefix, query, sort, page, size) => {
+ return `${routePrefix}?q=${query}&sort=${sort}&page=${page}&size=${size}`;
+ },
+};
export const APIRoutes = {
- ...APIRoutesGenerators
-}
+ ...APIRoutesGenerators,
+};
\ No newline at end of file
diff --git a/invenio_administration/assets/semantic-ui/js/invenio_administration/statistics/AdministrationStatistics.js b/invenio_administration/assets/semantic-ui/js/invenio_administration/statistics/AdministrationStatistics.js
new file mode 100644
index 0000000..0ae38a9
--- /dev/null
+++ b/invenio_administration/assets/semantic-ui/js/invenio_administration/statistics/AdministrationStatistics.js
@@ -0,0 +1,82 @@
+/*
+ * This file is part of Invenio.
+ * Copyright (C) 2022 CERN.
+ *
+ * Invenio is free software; you can redistribute it and/or modify it
+ * under the terms of the MIT License; see LICENSE file for more details.
+ */
+import _get from "lodash/get";
+import _isEmpty from "lodash/isEmpty";
+import React from "react";
+import { InvenioAdministrationActionsApi } from "../api/actions";
+import { Component } from "react";
+import { Item } from "semantic-ui-react";
+import PropTypes from "prop-types";
+
+export class AdministrationStatistics extends Component {
+ constructor() {
+ super();
+ this.state = {
+ intervalHits: [],
+ isLoading: false,
+ };
+ }
+
+ fetchValues = async () => {
+ const { apiEndpoint, query, sort, page, size } = this.props;
+ return await InvenioAdministrationActionsApi.searchResource(
+ apiEndpoint,
+ query,
+ sort,
+ page,
+ size
+ );
+ };
+
+ async componentDidMount() {
+ this.setState({ isLoading: true });
+ const response = await this.fetchValues();
+ console.log(response.data);
+ this.setState({
+ intervalHits: response.data.hits.hits.length,
+ isLoading: false,
+ });
+ }
+
+ render() {
+ const { records, timeInterval, label } = this.props;
+ const { intervalHits } = this.state;
+ return (
+