From 8810bfa53fd9732df409176b4301eee6e12adf80 Mon Sep 17 00:00:00 2001 From: Elias Schriefer Date: Wed, 3 Jul 2024 00:20:36 +0200 Subject: [PATCH 01/11] Finish details page design --- src/main/resources/static/add.css | 4 - src/main/resources/static/details.css | 124 ++++++++++++++++++++++++ src/main/resources/static/details.html | 52 ++++++++++ src/main/resources/static/main.css | 25 +++-- src/main/resources/static/stars.svg | 127 +++++++++++++++++++++++++ 5 files changed, 318 insertions(+), 14 deletions(-) create mode 100644 src/main/resources/static/details.css create mode 100644 src/main/resources/static/details.html create mode 100644 src/main/resources/static/stars.svg diff --git a/src/main/resources/static/add.css b/src/main/resources/static/add.css index 6d62a6f..e4cc24d 100644 --- a/src/main/resources/static/add.css +++ b/src/main/resources/static/add.css @@ -1,9 +1,5 @@ @import url("main.css"); -:root { - --accent-color: oklch(65.33% 0.158 247.76); -} - form { display: grid; grid-template-columns: 1fr 1fr auto; diff --git a/src/main/resources/static/details.css b/src/main/resources/static/details.css new file mode 100644 index 0000000..f4d583f --- /dev/null +++ b/src/main/resources/static/details.css @@ -0,0 +1,124 @@ +@import url("./main.css"); + +:root { + --min-card-size: min(60ch, calc(100vw - var(--pad-main))); +} + +main { + & > :is(header, section, footer) { + background-color: var(--fg-color); + padding: var(--pad-datasets-block) var(--pad-datasets-inline); + position: relative; + } + + & > :first-child { + border-radius: var(--corner-radius) var(--corner-radius) 0 0; + margin-top: var(--pad-main); + } + + & > :last-child { + border-radius: 0 0 var(--corner-radius) var(--corner-radius); + margin-bottom: var(--pad-main); + } + + & > :not(:last-child):is(header, section)::after { + content: ''; + position: absolute; + inset-inline: calc(var(--pad-datasets-inline) - var(--gap-small)); + bottom: 0; + border-bottom: 3px solid var(--bg-color); + opacity: .25; + transform: translateY(50%); + z-index: 1; + } +} + +header { + margin-inline: 0; + display: grid; + grid-template-columns: 1fr 1fr max-content; + align-items: center; + grid-gap: var(--gap-medium); +} + +#title { + grid-column: 1 / 3; + margin-block: var(--gap-medium) 0; + text-align: center; + + &::after { + content: attr(data-type); + background-color: var(--accent-color); + font-size: .5em; + font-weight: initial; + position: relative; + bottom: .25lh; + margin-inline: var(--gap-small); + padding: 2pt 4pt; + border-radius: 4pt; + } + + &[data-type="dataset"]::after { + content: "Dataset"; + } + + &[data-type="api"]::after { + content: "API"; + } +} + +:has(#rating), #url { + text-align: start; + grid-column: 1 / 3; +} + +#rating { + color: color-mix(in oklab, var(--text-color) 80%, black); +} + +#rating::after { + content: ""; + display: inline-block; + width: 5em; + height: 1em; + margin-block: calc(-1 * (1lh - 1.25em)); + margin-inline: .5ch; + mask-image: url("stars.svg"); + -webkit-mask-image: url("stars.svg"); + mask-size: 100% 100%; + mask-mode: alpha; + --rating-percent: calc((var(--rating, 0) / 5) * 100%); + background: linear-gradient(to right, gold var(--rating-percent), var(--bg-color) var(--rating-percent)); +} + +a { + color: var(--accent-color); +} + +#terms-of-use { + /* text-align: end; */ +} + +.upvote { + margin: var(--gap-medium) 0; + align-self: self-start; + grid-column: 3; + grid-row: 1 / 4; +} + +#metadata { + display: flex; + justify-content: space-around; + flex-wrap: wrap; + gap: var(--gap-large); +} + +#full-description { + text-wrap: balance; + text-wrap: pretty; + margin-top: 0; + + br { + margin-bottom: .5lh; + } +} \ No newline at end of file diff --git a/src/main/resources/static/details.html b/src/main/resources/static/details.html new file mode 100644 index 0000000..7ce3a48 --- /dev/null +++ b/src/main/resources/static/details.html @@ -0,0 +1,52 @@ + + + + + + Dataset details + + + + +
+
+

Title

+ + 3.5 + Lorem ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis recusandae laborum odio corrupti voluptas quisquam dicta, quibusdam ipsum qui exercitationem. + + https://example.com/dataset + +
+ +
+ Added on: 1. January 1970 + Category: Something + License: MIT + Terms of Use +
+ +
+

Full description
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Beatae + nihil saepe et numquam quo id voluptatum recusandae assumenda + doloremque pariatur consequatur molestias delectus dolore + corrupti, odio modi vitae repellat tempora sed eos voluptates + temporibus veritatis repudiandae. Cum eveniet molestias, in + beatae non reiciendis quia voluptatem id, facere architecto + vitae harum ipsum earum deleniti dolor atque recusandae odit + corporis error dolorum blanditiis vel maxime pariatur quibusdam! +
Saepe debitis ab possimus, dolorem neque ad voluptatibus ex + quisquam itaque. Nihil et non consequuntur error ipsa. + Necessitatibus voluptatibus aliquid itaque id ipsum, pariatur + odio explicabo, dolores ex, incidunt tenetur dolore. Assumenda + ipsam nobis quis. +

+
+
+ + \ No newline at end of file diff --git a/src/main/resources/static/main.css b/src/main/resources/static/main.css index c62d21e..0b9615e 100644 --- a/src/main/resources/static/main.css +++ b/src/main/resources/static/main.css @@ -2,7 +2,12 @@ --bg-color: #222; --fg-color: #555; --text-color: #dbdbdb; - --pad-datasets: 1rem; + --accent-color: oklch(65.33% 0.158 247.76); + --pad-datasets-block: 1rem; + --pad-datasets-inline: 2rem; + --gap-large: 1.5rem; + --gap-medium: 1rem; + --gap-small: .5rem; --pad-main: 2rem; --min-card-size: min(60ch, 33vw); --corner-radius: 1rem; @@ -17,7 +22,7 @@ body { } main { - max-width: calc(2 * var(--min-card-size) + var(--pad-main) + var(--pad-datasets)); + max-width: calc(2 * var(--min-card-size) + var(--pad-main) + 2 * var(--pad-datasets-inline)); padding-inline: var(--pad-main); margin-inline: auto; container-type: inline-size; @@ -47,12 +52,12 @@ header { display: flex; flex-direction: row; float: right; - gap: .5rem; + gap: var(--gap-small); background-color: var(--fg-color, darkgrey); padding: .5rem 1rem; - margin-bottom: var(--pad-datasets); - margin-left: var(--pad-datasets); - margin-right: var(--pad-datasets); + margin-bottom: var(--pad-datasets-block); + margin-left: var(--pad-datasets-inline); + margin-right: var(--pad-datasets-inline); border-radius: 1.5rem; } @@ -86,10 +91,10 @@ header { } .datasets { - padding-inline: var(--pad-datasets); + padding-inline: var(--pad-datasets-inline); display: grid; grid-template-columns: repeat(auto-fit, minmax(var(--min-card-size), 1fr)); - gap: 1rem; + gap: var(--gap-medium); } @container (width < 60ch) { @@ -99,7 +104,7 @@ header { } .dataset { - padding: var(--pad-datasets) 2rem; + padding: var(--pad-datasets-block) var(--pad-datasets-inline); background-color: var(--fg-color, darkgrey); border-radius: var(--corner-radius); list-style: none; @@ -115,7 +120,7 @@ header { display: flex; flex-direction: column; align-items: center; - gap: .5em; + gap: var(--gap-small); } /* Buttons */ .upvote-btn, .downvote-btn, #search-btn, #filter-btn, #sort-btn, #reset-tools-btn { diff --git a/src/main/resources/static/stars.svg b/src/main/resources/static/stars.svg new file mode 100644 index 0000000..0dbeb2d --- /dev/null +++ b/src/main/resources/static/stars.svg @@ -0,0 +1,127 @@ + + + + From 20c4524bbacfb4de226b86d2e70216a5d487ee4f Mon Sep 17 00:00:00 2001 From: Elias Schriefer Date: Thu, 4 Jul 2024 12:40:59 +0200 Subject: [PATCH 02/11] Add loading skeleton --- src/main/resources/static/details.css | 66 +++++++++++++++++++++++-- src/main/resources/static/details.html | 15 +++--- src/main/resources/templates/index.html | 3 ++ 3 files changed, 73 insertions(+), 11 deletions(-) diff --git a/src/main/resources/static/details.css b/src/main/resources/static/details.css index f4d583f..0290013 100644 --- a/src/main/resources/static/details.css +++ b/src/main/resources/static/details.css @@ -1,7 +1,9 @@ @import url("./main.css"); +@import url('https://fonts.googleapis.com/css2?family=Flow+Circular&display=swap'); :root { --min-card-size: min(60ch, calc(100vw - var(--pad-main))); + --rating-color: gold; } main { @@ -80,19 +82,25 @@ header { content: ""; display: inline-block; width: 5em; - height: 1em; - margin-block: calc(-1 * (1lh - 1.25em)); + height: 1lh; + vertical-align: bottom; margin-inline: .5ch; mask-image: url("stars.svg"); -webkit-mask-image: url("stars.svg"); mask-size: 100% 100%; mask-mode: alpha; --rating-percent: calc((var(--rating, 0) / 5) * 100%); - background: linear-gradient(to right, gold var(--rating-percent), var(--bg-color) var(--rating-percent)); + background: linear-gradient(to right, var(--rating-color) var(--rating-percent), var(--bg-color) var(--rating-percent)); } a { - color: var(--accent-color); + --text-color: var(--accent-color); + + /* + Why doesn't it do this automatically? It is inherited from body, + so I should be able to just change --text-color, right? + */ + color: var(--text-color); } #terms-of-use { @@ -121,4 +129,52 @@ a { br { margin-bottom: .5lh; } -} \ No newline at end of file +} + +.skeleton { + font-family: "Flow Circular"; + font-weight: 400; + font-style: normal; + user-select: none; + --rating-color: var(--text-color); + + a, .btn { + pointer-events: none; + } + + & > * { + cursor: progress; + } + + @media screen and not (prefers-reduced-motion) { + :is(header, section) > :is(p, span, h1, a) { + animation: infinite 2s linear skeleton-loading; + background: radial-gradient( + circle farthest-side, + var(--highlight-color, white) 20%, + var(--text-color) 40% + ) no-repeat, var(--text-color); + background-clip: text; + -webkit-background-clip: text; + color: transparent; + + &:is(a) { + --highlight-color: color-mix(in oklab, white, var(--text-color)); + } + } + } + + #title::after { + color: color-mix(in oklab, var(--accent-color) 50%, currentcolor); + } +} + +@keyframes skeleton-loading { + from { + background-position-x: calc(-1.4 * var(--min-card-size)), 0; + } + + to { + background-position-x: calc(1.4 * var(--min-card-size)), 0; + } +} diff --git a/src/main/resources/static/details.html b/src/main/resources/static/details.html index 7ce3a48..90e311f 100644 --- a/src/main/resources/static/details.html +++ b/src/main/resources/static/details.html @@ -4,22 +4,25 @@ Dataset details + + + -
+

Title

- 3.5 + 4 Lorem ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis recusandae laborum odio corrupti voluptas quisquam dicta, quibusdam ipsum qui exercitationem. - https://example.com/dataset + https://example.com/dataset
@@ -27,7 +30,7 @@ Added on: 1. January 1970 Category: Something License: MIT - Terms of Use + Terms of Use
diff --git a/src/main/resources/templates/index.html b/src/main/resources/templates/index.html index 23ee989..1baa21d 100644 --- a/src/main/resources/templates/index.html +++ b/src/main/resources/templates/index.html @@ -4,6 +4,9 @@ DataDash + + + From bf9b411c9bc8f6e6b04cb12ead0ad4d956fb4a04 Mon Sep 17 00:00:00 2001 From: Erik Foris Date: Fri, 5 Jul 2024 19:31:19 +0200 Subject: [PATCH 03/11] chore: Remove unused DatasetController endpoint and method --- .../DataDash/Dataset/DatasetController.java | 20 --------- .../DataDash/Dataset/DatasetService.java | 44 ------------------- 2 files changed, 64 deletions(-) diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/DatasetController.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/DatasetController.java index 8665acb..1d1ef41 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/DatasetController.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/DatasetController.java @@ -14,8 +14,6 @@ import java.util.UUID; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -import de.uni_passau.fim.PADAS.group3.DataDash.category.Category; - @RestController @RequestMapping("/api/v1/datasets") @EnableSpringDataWebSupport @@ -79,24 +77,6 @@ public class DatasetController { return new ResponseEntity<>(datasetService.getDatasetById(id), HttpStatus.OK); } - @GetMapping - public Page getDatasetsByDateAfter(@RequestParam(value = "author", required = false) String author, - @RequestParam(value = "title", required = false) String title, - @RequestParam(value = "description", required = false) String description, - @RequestParam(value = "abst", required = false) String abst, - @RequestParam(value = "type", required = false) Type type, - @RequestParam(value = "min-rating", required = false) Float rating, - @RequestParam(value = "page", required = false, defaultValue = "0") int page, - @RequestParam(value = "size", required = false, defaultValue = "20") int size, - @RequestParam(value = "sort", required = false, defaultValue = "upvotes") String sort, - @RequestParam(value = "direction", required = false, defaultValue = "desc") String direction, - @RequestParam(value = "category", required = false) Category category) { - Pageable pageable = PageRequest.of(page, size, - Sort.by(Sort.Direction.fromString(direction), sort)); - return datasetService.getDatasetsByOptionalCriteria(title, description, author, abst, type, rating, category, - pageable); - } - @GetMapping("/search") public ResponseEntity> search( @RequestParam(value = "search", required = false, defaultValue = "%") String search, diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/DatasetService.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/DatasetService.java index 7762f31..93d1388 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/DatasetService.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/DatasetService.java @@ -23,10 +23,6 @@ public class DatasetService { this.categoryRepository = categoryRepository; } - public List getAllDatasets() { - return datasetRepository.findAll(); - } - public Dataset getDatasetById(UUID id) { return datasetRepository.getDatasetById(id); } @@ -36,10 +32,6 @@ public class DatasetService { return datasetRepository.save(dataset); } - public void updateDatasetTitle(UUID id, String title) { - datasetRepository.getDatasetById(id).setTitle(title); - } - public void voteDataset(UUID id, int vote) { Dataset dataset = datasetRepository.getDatasetById(id); dataset.vote(vote); @@ -51,34 +43,6 @@ public class DatasetService { datasetRepository.delete(dataset); } - public List getDatasetsByTitle(String title) { - return datasetRepository.findByTitle(title); - } - - public List getDatasetsByTitleLike(String title) { - return datasetRepository.findByTitleLike(title); - } - - public List findByDescriptionLike(String description) { - return datasetRepository.findByDescriptionLike(description); - } - - public List getDatasetsByAuthorLike(String author) { - return datasetRepository.findByAuthorLike(author); - } - - public List getDatasetsByType(Type type) { - return datasetRepository.findByType(type); - } - - public List getDatasetsByAbstLike(String abst) { - return datasetRepository.findByAbstLike(abst); - } - - public List getDatasetsByRaitingGreaterThan(float raiting) { - return datasetRepository.findByRaitingGreaterThan(raiting); - } - public void upvoteDataset(UUID id) { Dataset dataset = datasetRepository.getDatasetById(id); dataset.upvote(); @@ -91,14 +55,6 @@ public class DatasetService { datasetRepository.save(dataset); } - public Page getDatasetsByOptionalCriteria(String title, String description, String author, String abst, - Type type, Float raiting, Category category, Pageable pageable) { - return datasetRepository.findByOptionalCriteria(Optional.ofNullable(title), Optional.ofNullable(description), - Optional.ofNullable(author), Optional.ofNullable(abst), Optional.ofNullable(type), - Optional.ofNullable(category), - Optional.ofNullable(raiting), pageable); - } - public Page searchByOptionalCriteria(String search, String categories, String type, Pageable pageable) { Category category = categories.equals("%") ? null : categoryRepository.getCategoryById(UUID.fromString(categories)); From 6380355227a95d369a32f135ce6849e38f18e419 Mon Sep 17 00:00:00 2001 From: Elias Schriefer Date: Sat, 6 Jul 2024 10:00:33 +0200 Subject: [PATCH 04/11] Add basic support for viewing datasets --- src/main/resources/static/constants.js | 2 + src/main/resources/static/dataset.js | 48 ++++++++++++++++-------- src/main/resources/static/details.html | 8 ++++ src/main/resources/static/details.js | 51 ++++++++++++++++++++++++++ src/main/resources/static/main.js | 4 +- 5 files changed, 94 insertions(+), 19 deletions(-) create mode 100644 src/main/resources/static/constants.js create mode 100644 src/main/resources/static/details.js diff --git a/src/main/resources/static/constants.js b/src/main/resources/static/constants.js new file mode 100644 index 0000000..ed33038 --- /dev/null +++ b/src/main/resources/static/constants.js @@ -0,0 +1,2 @@ +export const DATASET_ENDPOINT = "/api/v1/datasets"; +export const getBaseURL = () => location.origin; diff --git a/src/main/resources/static/dataset.js b/src/main/resources/static/dataset.js index 1c5d40a..4154fba 100644 --- a/src/main/resources/static/dataset.js +++ b/src/main/resources/static/dataset.js @@ -1,13 +1,13 @@ -import { DATASET_ENDPOINT, getBaseURL } from "./main.js"; +import { DATASET_ENDPOINT, getBaseURL } from "./constants.js"; export default class Dataset { static #datasets = new Map(); - #abstract; + #shortDescription; #author; - #categories; + #category; #date; - #description; + #fullDescription; #id; #rating; #title; @@ -15,48 +15,52 @@ export default class Dataset { #upvotes; #url; #votes; + #license; + #termsOfUse; #elements = []; static get(id) { return this.#datasets.get(id); } - constructor({ abst: shortDescription, author, categories, date, description, id, rating, title, type, upvotes, url, votes }) { - this.#abstract = shortDescription; + constructor({ abst: shortDescription, author, categorie, date, description, id, raiting, title, type, upvotes, url, votes, license, termsOfUse }) { + this.#shortDescription = shortDescription; this.#author = author; - this.#categories = categories; + this.#category = categorie; this.#date = date; - this.#description = description; + this.#fullDescription = description; this.#id = id; - this.#rating = rating; + this.#rating = raiting; this.#title = title; this.#type = type; this.#upvotes = upvotes; this.#url = url; this.#votes = votes; + this.#license = license; + this.#termsOfUse = termsOfUse; Dataset.#datasets.set(id, this); } // Getters - get abstract() { - return this.#abstract; + get shortDescription() { + return this.#shortDescription; } get author() { return this.#author; } - get categories() { - return this.#categories; + get category() { + return this.#category; } get date() { return this.#date; } - get description() { - return this.#description; + get fullDescription() { + return this.#fullDescription; } get id() { @@ -87,6 +91,14 @@ export default class Dataset { return this.#votes; } + get license() { + return this.#license; + } + + get termsOfUse() { + return this.#termsOfUse; + } + get mainElement() { return this.#elements[0]; } @@ -95,6 +107,10 @@ export default class Dataset { return this.#elements; } + parseDate() { + return new Date(this.#date); + } + // Main methods // Only on main page @@ -106,7 +122,7 @@ export default class Dataset { clone.querySelector(".dataset").dataset.id = this.#id; clone.querySelector(".dataset-title").innerText = this.#title; - clone.querySelector(".dataset-description").innerText = this.#description; + clone.querySelector(".dataset-description").innerText = this.#shortDescription; clone.querySelector(".upvote-count").innerText = this.#upvotes; this.#elements.push(clone.children[0]); diff --git a/src/main/resources/static/details.html b/src/main/resources/static/details.html index 90e311f..ab97874 100644 --- a/src/main/resources/static/details.html +++ b/src/main/resources/static/details.html @@ -11,6 +11,14 @@ + +

Title

diff --git a/src/main/resources/static/details.js b/src/main/resources/static/details.js new file mode 100644 index 0000000..26991c6 --- /dev/null +++ b/src/main/resources/static/details.js @@ -0,0 +1,51 @@ +import Dataset from "./dataset.js"; + +const mainElement = document.getElementsByTagName("main")[0]; + +const title = document.getElementById("title"); +const rating = document.getElementById("rating"); +const shortDescription = document.getElementById("short-description"); +const url = document.getElementById("url"); +const date = document.getElementById("date"); +const category = document.getElementById("category"); +const license = document.getElementById("license"); +const termsOfUse = document.getElementById("terms-of-use"); +const fullDescription = document.getElementById("full-description"); + +const currentLocation = new URL(location.href); +if (currentLocation.searchParams.has("id")) { + const id = currentLocation.searchParams.get("id"); + const response = await fetch(`${currentLocation.origin}/api/v1/datasets/id/${id}`); + console.dir(response); + + if (response.ok) { + const data = await response.json(); + const dataset = new Dataset(data); + console.dir(data, dataset); + const upvoteComponent = dataset.createUpvoteComponent(); + + title.innerText = dataset.title; + title.dataset.type = dataset.type.toLowerCase(); + rating.innerText = dataset.rating; + rating.style.setProperty("--rating", `${dataset.rating}`); + shortDescription.innerText = dataset.shortDescription; + url.href = dataset.url; + url.innerText = dataset.url; + mainElement.querySelector(".upvote").replaceWith(upvoteComponent); + + date.innerText = dataset.parseDate().toLocaleDateString(undefined, { + day: "numeric", + month: "long", + year: "numeric", + }); + date.dataset.date = dataset.parseDate().getTime(); + category.innerText = dataset.category.name; + category.dataset.id = dataset.category.id; + license.innerText = dataset.license; + termsOfUse.href = dataset.termsOfUse; + + fullDescription.innerText = dataset.fullDescription; + + mainElement.classList.remove("skeleton"); + } +} diff --git a/src/main/resources/static/main.js b/src/main/resources/static/main.js index 08ba6b1..ad98c3b 100644 --- a/src/main/resources/static/main.js +++ b/src/main/resources/static/main.js @@ -1,9 +1,7 @@ +import { DATASET_ENDPOINT, getBaseURL } from "./constants.js"; import { fetchQuery } from "./contentUtility.js"; import Dataset from "./dataset.js"; -export const DATASET_ENDPOINT = "/api/v1/datasets"; -export const getBaseURL = () => location.origin; - const defaultPagingValue = 20; export const lastQuery = { totalPages: 0, From 464cf104f9c315c80966fb7c75c6ef34f3d5a33e Mon Sep 17 00:00:00 2001 From: J-Klinke Date: Sat, 6 Jul 2024 13:31:30 +0200 Subject: [PATCH 05/11] datasets now redirect to their details pages. also implemented 'button' look and feel for the datasets --- src/main/resources/static/dataset.js | 10 +++++++++- src/main/resources/static/main.css | 5 +++++ 2 files changed, 14 insertions(+), 1 deletion(-) diff --git a/src/main/resources/static/dataset.js b/src/main/resources/static/dataset.js index 1c5d40a..cc654e1 100644 --- a/src/main/resources/static/dataset.js +++ b/src/main/resources/static/dataset.js @@ -104,7 +104,15 @@ export default class Dataset { return null; } - clone.querySelector(".dataset").dataset.id = this.#id; + let datasetContainer = clone.querySelector(".dataset"); + datasetContainer.dataset.id = this.#id; + datasetContainer.addEventListener("click", event => { + if (!event.target.classList.contains("btn")) { + let detailsPage = new URL("/details.html", location.origin); + detailsPage.searchParams.append("id", this.#id); + window.location.href = detailsPage.toString(); + } + }) clone.querySelector(".dataset-title").innerText = this.#title; clone.querySelector(".dataset-description").innerText = this.#description; clone.querySelector(".upvote-count").innerText = this.#upvotes; diff --git a/src/main/resources/static/main.css b/src/main/resources/static/main.css index 8a0b141..ae3eb64 100644 --- a/src/main/resources/static/main.css +++ b/src/main/resources/static/main.css @@ -109,6 +109,11 @@ header { align-items: center; justify-content: space-between; box-sizing: border-box; + cursor: pointer; +} + +.dataset:hover { + filter: brightness(1.2); } .upvote { From c9211a0b0010c0b824f7fd41a53b3c2dfde53cca Mon Sep 17 00:00:00 2001 From: Erik Foris Date: Sat, 6 Jul 2024 13:36:45 +0200 Subject: [PATCH 06/11] chore: Update dataset table schema and Dataset class to accominate terms of use --- .../group3/DataDash/Dataset/Dataset.java | 12 +++++++ src/main/resources/data.sql | 34 +++++++++---------- src/main/resources/schema.sql | 2 +- 3 files changed, 30 insertions(+), 18 deletions(-) diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/Dataset.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/Dataset.java index c8ed4e3..8a269c9 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/Dataset.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/Dataset.java @@ -10,6 +10,7 @@ import de.uni_passau.fim.PADAS.group3.DataDash.category.Category; import java.sql.Date; +import jakarta.persistence.Column; import jakarta.persistence.Entity; import jakarta.persistence.EnumType; import jakarta.persistence.Enumerated; @@ -46,6 +47,9 @@ public class Dataset { private URL url; + @Column(name = "terms_of_use") + private URL termsOfUse; + private String licence; private static final List sortable = Arrays.asList("author", "title", "upvotes", "date"); @@ -121,6 +125,10 @@ public class Dataset { return url; } + public URL getTermsOfUse() { + return termsOfUse; + } + public String getLicence() { return licence; } @@ -152,6 +160,10 @@ public class Dataset { public void setUrl(URL url) { this.url = url; } + + public void setTermsOfUse(URL termsOfUse) { + this.termsOfUse = termsOfUse; + } public void setTitle(String title) { this.title = title.substring(0, Math.min(title.length(), 50)); diff --git a/src/main/resources/data.sql b/src/main/resources/data.sql index 51257a9..5f7c01b 100644 --- a/src/main/resources/data.sql +++ b/src/main/resources/data.sql @@ -10,21 +10,21 @@ INSERT INTO category (id, name) VALUES ('123e4567-e89b-12d3-a456-426614174002', 'Health'); -- Insert sample data into dataset -INSERT INTO dataset (date, raiting, upvotes, votes, categorie_id, id, abst, author, description, title, url, type, licence) VALUES -('2023-01-01', 4.5, 100, 120, '123e4567-e89b-12d3-a456-426614174000', '123e4567-e89b-12d3-a456-426614174100', 'Abstract 1', 'Author 1', 'Description 1', 'Title 1', 'http://example.com/1', 'API', 'MIT'), -('2023-01-02', 4.7, 150, 170, '123e4567-e89b-12d3-a456-426614174001', '123e4567-e89b-12d3-a456-426614174101', 'Abstract 2', 'Author 2', 'Description 2', 'Title 2', 'http://example.com/2', 'DATASET', 'MIT'), -('2023-01-03', 4.9, 200, 220, '123e4567-e89b-12d3-a456-426614174002', '123e4567-e89b-12d3-a456-426614174102', 'Abstract 3', 'Author 3', 'Description 3', 'Title 3', 'http://example.com/3', 'API', 'MIT'), -('2023-01-04', 4.2, 80, 100, '123e4567-e89b-12d3-a456-426614174003', '123e4567-e89b-12d3-a456-426614174103', 'Abstract 4', 'Author 4', 'Description 4', 'Title 4', 'http://example.com/4', 'DATASET', 'MIT'), -('2023-01-05', 4.6, 120, 140, '123e4567-e89b-12d3-a456-426614174004', '123e4567-e89b-12d3-a456-426614174104', 'Abstract 5', 'Author 5', 'Description 5', 'Title 5', 'http://example.com/5', 'API', 'MIT'); +INSERT INTO dataset (date, raiting, upvotes, votes, categorie_id, id, abst, author, description, title, url, type, licence, terms_of_use) VALUES +('2023-01-01', 4.5, 100, 120, '123e4567-e89b-12d3-a456-426614174000', '123e4567-e89b-12d3-a456-426614174100', 'Abstract 1', 'Author 1', 'Description 1', 'Title 1', 'http://example.com/1', 'API', 'MIT', 'http://url.de'), +('2023-01-02', 4.7, 150, 170, '123e4567-e89b-12d3-a456-426614174001', '123e4567-e89b-12d3-a456-426614174101', 'Abstract 2', 'Author 2', 'Description 2', 'Title 2', 'http://example.com/2', 'DATASET', 'MIT', 'http://url.de'), +('2023-01-03', 4.9, 200, 220, '123e4567-e89b-12d3-a456-426614174002', '123e4567-e89b-12d3-a456-426614174102', 'Abstract 3', 'Author 3', 'Description 3', 'Title 3', 'http://example.com/3', 'API', 'MIT', 'http://url.de'), +('2023-01-04', 4.2, 80, 100, '123e4567-e89b-12d3-a456-426614174003', '123e4567-e89b-12d3-a456-426614174103', 'Abstract 4', 'Author 4', 'Description 4', 'Title 4', 'http://example.com/4', 'DATASET', 'MIT', 'http://url.de'), +('2023-01-05', 4.6, 120, 140, '123e4567-e89b-12d3-a456-426614174004', '123e4567-e89b-12d3-a456-426614174104', 'Abstract 5', 'Author 5', 'Description 5', 'Title 5', 'http://example.com/5', 'API', 'MIT', 'http://url.de'); -- Insert 10 more sample data into dataset -INSERT INTO dataset (date, raiting, upvotes, votes, categorie_id, id, abst, author, description, title, url, type, licence) VALUES -('2023-01-06', 4.8, 180, 200, '123e4567-e89b-12d3-a456-426614174005', '123e4567-e89b-12d3-a456-426614174105', 'Abstract 6', 'Author 6', 'Description 6', 'Title 6', 'http://example.com/6', 'API', 'MIT'), -('2023-01-07', 4.3, 90, 110, '123e4567-e89b-12d3-a456-426614174006', '123e4567-e89b-12d3-a456-426614174106', 'Abstract 7', 'Author 7', 'Description 7', 'Title 7', 'http://example.com/7', 'DATASET', 'MIT'), -('2023-01-08', 4.7, 150, 170, '123e4567-e89b-12d3-a456-426614174007', '123e4567-e89b-12d3-a456-426614174107', 'Abstract 8', 'Author 8', 'Description 8', 'Title 8', 'http://example.com/8', 'API', 'MIT'), -('2023-01-09', 4.9, 200, 220, '123e4567-e89b-12d3-a456-426614174000', '123e4567-e89b-12d3-a456-426614174108', 'Abstract 9', 'Author 9', 'Description 9', 'Title 9', 'http://example.com/9', 'DATASET', 'MIT'), -('2023-01-10', 4.2, 80, 100, '123e4567-e89b-12d3-a456-426614174001', '123e4567-e89b-12d3-a456-426614174109', 'Abstract 10', 'Author 10', 'Description 10', 'Title 10', 'http://example.com/10', 'API', 'MIT'), -('2023-11-11', 4.6, 120, 140, '123e4567-e89b-12d3-a456-426614174002', '123e4567-e89b-12d3-a456-426614174110', 'Abstract 11', 'Author 11', 'Description 11', 'Title 11', 'http://example.com/11', 'DATASET', 'MIT'), -('2023-09-12', 4.8, 180, 200, '123e4567-e89b-12d3-a456-426614174003', '123e4567-e89b-12d3-a456-426614174111', 'Abstract 12', 'Author 12', 'Description 12', 'Title 12', 'http://example.com/12', 'API', 'MIT'), -('2023-03-13', 4.3, 90, 110, '123e4567-e89b-12d3-a456-426614174004', '123e4567-e89b-12d3-a456-426614174112', 'Abstract 13', 'Author 13', 'Description 13', 'Title 13', 'http://example.com/13', 'DATASET', 'MIT'), -('2021-01-14', 4.7, 150, 170, '123e4567-e89b-12d3-a456-426614174005', '123e4567-e89b-12d3-a456-426614174113', 'Abstract 14', 'Author 14', 'Description 14', 'Title 14', 'http://example.com/14', 'API', 'MIT'), -('2024-01-15', 4.9, 200, 220, '123e4567-e89b-12d3-a456-426614174006', '123e4567-e89b-12d3-a456-426614174114', 'Abstract 15', 'Author 15', 'Description 15', 'Title 15', 'http://example.com/15', 'DATASET', 'MIT'); \ No newline at end of file +INSERT INTO dataset (date, raiting, upvotes, votes, categorie_id, id, abst, author, description, title, url, type, licence, terms_of_use) VALUES +('2023-01-06', 4.8, 180, 200, '123e4567-e89b-12d3-a456-426614174005', '123e4567-e89b-12d3-a456-426614174105', 'Abstract 6', 'Author 6', 'Description 6', 'Title 6', 'http://example.com/6', 'API', 'MIT', 'http://zip.com'), +('2023-01-07', 4.3, 90, 110, '123e4567-e89b-12d3-a456-426614174006', '123e4567-e89b-12d3-a456-426614174106', 'Abstract 7', 'Author 7', 'Description 7', 'Title 7', 'http://example.com/7', 'DATASET', 'MIT', 'http://zip.com'), +('2023-01-08', 4.7, 150, 170, '123e4567-e89b-12d3-a456-426614174007', '123e4567-e89b-12d3-a456-426614174107', 'Abstract 8', 'Author 8', 'Description 8', 'Title 8', 'http://example.com/8', 'API', 'MIT', 'http://zip.com'), +('2023-01-09', 4.9, 200, 220, '123e4567-e89b-12d3-a456-426614174000', '123e4567-e89b-12d3-a456-426614174108', 'Abstract 9', 'Author 9', 'Description 9', 'Title 9', 'http://example.com/9', 'DATASET', 'MIT', 'http://zip.com'), +('2023-01-10', 4.2, 80, 100, '123e4567-e89b-12d3-a456-426614174001', '123e4567-e89b-12d3-a456-426614174109', 'Abstract 10', 'Author 10', 'Description 10', 'Title 10', 'http://example.com/10', 'API', 'MIT', 'http://zip.com'), +('2023-11-11', 4.6, 120, 140, '123e4567-e89b-12d3-a456-426614174002', '123e4567-e89b-12d3-a456-426614174110', 'Abstract 11', 'Author 11', 'Description 11', 'Title 11', 'http://example.com/11', 'DATASET', 'MIT', 'http://zip.com'), +('2023-09-12', 4.8, 180, 200, '123e4567-e89b-12d3-a456-426614174003', '123e4567-e89b-12d3-a456-426614174111', 'Abstract 12', 'Author 12', 'Description 12', 'Title 12', 'http://example.com/12', 'API', 'MIT', 'http://zip.com'), +('2023-03-13', 4.3, 90, 110, '123e4567-e89b-12d3-a456-426614174004', '123e4567-e89b-12d3-a456-426614174112', 'Abstract 13', 'Author 13', 'Description 13', 'Title 13', 'http://example.com/13', 'DATASET', 'MIT', 'http://zip.com'), +('2021-01-14', 4.7, 150, 170, '123e4567-e89b-12d3-a456-426614174005', '123e4567-e89b-12d3-a456-426614174113', 'Abstract 14', 'Author 14', 'Description 14', 'Title 14', 'http://example.com/14', 'API', 'MIT', 'http://zip.com'), +('2024-01-15', 4.9, 200, 220, '123e4567-e89b-12d3-a456-426614174006', '123e4567-e89b-12d3-a456-426614174114', 'Abstract 15', 'Author 15', 'Description 15', 'Title 15', 'http://example.com/15', 'DATASET', 'MIT', 'http://zip.com'); \ No newline at end of file diff --git a/src/main/resources/schema.sql b/src/main/resources/schema.sql index 0385a13..d61125c 100644 --- a/src/main/resources/schema.sql +++ b/src/main/resources/schema.sql @@ -3,5 +3,5 @@ DROP TABLE IF EXISTS category; create table category (id uuid not null, name varchar(255), primary key (id)); -create table dataset (date date, raiting float(24) not null, upvotes integer not null, votes integer not null, categorie_id uuid, id uuid not null, abst varchar(255), author varchar(255), description varchar(255), title varchar(255), url varchar(255), type enum ('API','DATASET'), licence varchar(255), primary key (id)); +create table dataset (date date, raiting float(24) not null, upvotes integer not null, votes integer not null, categorie_id uuid, id uuid not null, abst varchar(255), author varchar(255), description varchar(200000), title varchar(255), url varchar(2048), terms_of_use varchar(2048), type enum ('API','DATASET'), licence varchar(255), primary key (id)); alter table if exists dataset add constraint FKq6qwq6u473f89h71s7rf97ruy foreign key (categorie_id) references category; From 4e19a24833cf512f8b824e7bf3d9ec3f213f368d Mon Sep 17 00:00:00 2001 From: J-Klinke Date: Sat, 6 Jul 2024 14:26:57 +0200 Subject: [PATCH 07/11] local authorship is now stored --- src/main/resources/static/add.js | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/main/resources/static/add.js b/src/main/resources/static/add.js index 280eb67..c1f11cb 100644 --- a/src/main/resources/static/add.js +++ b/src/main/resources/static/add.js @@ -1,3 +1,5 @@ +import Dataset from "./dataset.js"; + const form = document.forms[0]; const { title: titleEntry, @@ -23,7 +25,7 @@ const validationListener = () => { fullDescriptionEntry, ].forEach(input => input.addEventListener("input", validationListener)); -form.addEventListener("submit", e => { +form.addEventListener("submit", async e => { e.preventDefault(); if (!form.reportValidity()) return; @@ -43,17 +45,20 @@ form.addEventListener("submit", e => { // Don't allow several requests to be sent at the same time addBtn.disabled = true; - fetch("/api/v1/datasets", { + let response = await fetch("/api/v1/datasets", { method: "POST", body: JSON.stringify(newContent), headers: { "Content-Type": "application/json;charset=utf-8" } - }).then(response => { - if (response.status == 200) { - location.assign("/"); - } else { - addBtn.disabled = !form.checkValidity(); - } + }); + let data = await response.json(); + let dataset = new Dataset(data); + dataset.storageSetKey("createdLocally", true); + if (response.status == 200) { + location.assign("/"); + } else { + addBtn.disabled = !form.checkValidity(); + } }); From e0bebe87e39a13476b7fb5ed27a8a559a38554e4 Mon Sep 17 00:00:00 2001 From: Elias Schriefer Date: Sat, 6 Jul 2024 14:35:00 +0200 Subject: [PATCH 08/11] Add details not found page --- src/main/resources/static/details.css | 44 +++++++++++++++++++------- src/main/resources/static/details.html | 17 ++++++++-- src/main/resources/static/details.js | 10 ++++-- src/main/resources/static/index.html | 2 ++ 4 files changed, 57 insertions(+), 16 deletions(-) diff --git a/src/main/resources/static/details.css b/src/main/resources/static/details.css index 0290013..0fa3256 100644 --- a/src/main/resources/static/details.css +++ b/src/main/resources/static/details.css @@ -14,12 +14,14 @@ main { } & > :first-child { - border-radius: var(--corner-radius) var(--corner-radius) 0 0; + border-top-left-radius: var(--corner-radius); + border-top-right-radius: var(--corner-radius); margin-top: var(--pad-main); } & > :last-child { - border-radius: 0 0 var(--corner-radius) var(--corner-radius); + border-bottom-left-radius: var(--corner-radius); + border-bottom-right-radius: var(--corner-radius); margin-bottom: var(--pad-main); } @@ -43,10 +45,13 @@ header { grid-gap: var(--gap-medium); } -#title { - grid-column: 1 / 3; +h1 { margin-block: var(--gap-medium) 0; text-align: center; +} + +#title { + grid-column: 1 / 3; &::after { content: attr(data-type); @@ -69,7 +74,7 @@ header { } } -:has(#rating), #url { +#details summary, #url { text-align: start; grid-column: 1 / 3; } @@ -103,10 +108,6 @@ a { color: var(--text-color); } -#terms-of-use { - /* text-align: end; */ -} - .upvote { margin: var(--gap-medium) 0; align-self: self-start; @@ -125,10 +126,10 @@ a { text-wrap: balance; text-wrap: pretty; margin-top: 0; +} - br { - margin-bottom: .5lh; - } +:is(#full-description, #not-found) br { + margin-bottom: .5lh; } .skeleton { @@ -178,3 +179,22 @@ a { background-position-x: calc(1.4 * var(--min-card-size)), 0; } } + +#not-found:not(.hidden) { + min-height: calc(100vh - 2 * var(--pad-main)); + display: flex; + flex-direction: column; + gap: var(--gap-large); + justify-content: space-evenly; + container: nothing-found / inline-size; + + p, h1 { + text-align: center; + text-wrap: balance; + text-wrap: pretty; + } +} + +#nothing-found-bg { + background-position-x: calc(50% + 3cqh); +} diff --git a/src/main/resources/static/details.html b/src/main/resources/static/details.html index ab97874..b17cec3 100644 --- a/src/main/resources/static/details.html +++ b/src/main/resources/static/details.html @@ -19,7 +19,7 @@ -
+

Title

@@ -41,7 +41,7 @@ Terms of Use
-
+

Full description
Lorem ipsum dolor sit amet consectetur adipisicing elit. Beatae nihil saepe et numquam quo id voluptatum recusandae assumenda @@ -59,5 +59,18 @@

+ +
+

This is not the page you're looking for.

+
+

+ The dataset or API you were sent to is not in our database. + Either it has been deleted by its author or we didn't know of it + to begin with. +
+ You can try browsing for other datasets and APIs on our + homepage. +

+
\ No newline at end of file diff --git a/src/main/resources/static/details.js b/src/main/resources/static/details.js index 26991c6..fcf0fee 100644 --- a/src/main/resources/static/details.js +++ b/src/main/resources/static/details.js @@ -31,7 +31,7 @@ if (currentLocation.searchParams.has("id")) { shortDescription.innerText = dataset.shortDescription; url.href = dataset.url; url.innerText = dataset.url; - mainElement.querySelector(".upvote").replaceWith(upvoteComponent); + mainPage.querySelector(".upvote").replaceWith(upvoteComponent); date.innerText = dataset.parseDate().toLocaleDateString(undefined, { day: "numeric", @@ -46,6 +46,12 @@ if (currentLocation.searchParams.has("id")) { fullDescription.innerText = dataset.fullDescription; - mainElement.classList.remove("skeleton"); + mainPage.classList.remove("skeleton"); + } else { + mainPage.classList.add("hidden"); + notFoundPage.classList.remove("hidden"); } +} else { + mainPage.classList.add("hidden"); + notFoundPage.classList.remove("hidden"); } diff --git a/src/main/resources/static/index.html b/src/main/resources/static/index.html index 7f58693..46da537 100644 --- a/src/main/resources/static/index.html +++ b/src/main/resources/static/index.html @@ -8,6 +8,8 @@ + + From 467951d0ce902a59bc16e5099618afb9944856ec Mon Sep 17 00:00:00 2001 From: Elias Schriefer Date: Sat, 6 Jul 2024 14:35:30 +0200 Subject: [PATCH 09/11] Use more native html elements --- src/main/resources/static/details.css | 31 ++++++++++++++++++-------- src/main/resources/static/details.html | 8 +++---- src/main/resources/static/details.js | 10 +++++---- 3 files changed, 32 insertions(+), 17 deletions(-) diff --git a/src/main/resources/static/details.css b/src/main/resources/static/details.css index 0fa3256..86bb412 100644 --- a/src/main/resources/static/details.css +++ b/src/main/resources/static/details.css @@ -81,21 +81,34 @@ h1 { #rating { color: color-mix(in oklab, var(--text-color) 80%, black); -} - -#rating::after { - content: ""; - display: inline-block; - width: 5em; + color: transparent; + width: 5lh; height: 1lh; - vertical-align: bottom; margin-inline: .5ch; mask-image: url("stars.svg"); -webkit-mask-image: url("stars.svg"); - mask-size: 100% 100%; + mask-size: contain; mask-mode: alpha; --rating-percent: calc((var(--rating, 0) / 5) * 100%); - background: linear-gradient(to right, var(--rating-color) var(--rating-percent), var(--bg-color) var(--rating-percent)); + background: var(--bg-color); + vertical-align: bottom; +} + +#rating::-webkit-meter-bar { + background: var(--bg-color); + border: none; + border-radius: 0; + grid-row: 1 / -1; +} + +#rating::-webkit-meter-optimum-value, +#rating::-webkit-meter-suboptimum-value, +#rating::-webkit-meter-even-less-good-value { + background-color: var(--rating-color); +} + +#rating::-moz-meter-bar { + background: var(--rating-color); } a { diff --git a/src/main/resources/static/details.html b/src/main/resources/static/details.html index b17cec3..e91405e 100644 --- a/src/main/resources/static/details.html +++ b/src/main/resources/static/details.html @@ -22,10 +22,10 @@

Title

- - 4 + + 4 Lorem ipsum dolor sit amet consectetur adipisicing elit. Perspiciatis recusandae laborum odio corrupti voluptas quisquam dicta, quibusdam ipsum qui exercitationem. - + https://example.com/dataset
- Added on: 1. January 1970 + Added on: Category: Something License: MIT Terms of Use diff --git a/src/main/resources/static/details.js b/src/main/resources/static/details.js index fcf0fee..e770a5c 100644 --- a/src/main/resources/static/details.js +++ b/src/main/resources/static/details.js @@ -1,9 +1,11 @@ import Dataset from "./dataset.js"; -const mainElement = document.getElementsByTagName("main")[0]; +const mainPage = document.getElementById("details"); +const notFoundPage = document.getElementById("not-found"); const title = document.getElementById("title"); const rating = document.getElementById("rating"); +const ratingText = document.getElementById("rating-text"); const shortDescription = document.getElementById("short-description"); const url = document.getElementById("url"); const date = document.getElementById("date"); @@ -26,19 +28,19 @@ if (currentLocation.searchParams.has("id")) { title.innerText = dataset.title; title.dataset.type = dataset.type.toLowerCase(); - rating.innerText = dataset.rating; - rating.style.setProperty("--rating", `${dataset.rating}`); + rating.value = dataset.rating; + ratingText.innerText = dataset.rating; shortDescription.innerText = dataset.shortDescription; url.href = dataset.url; url.innerText = dataset.url; mainPage.querySelector(".upvote").replaceWith(upvoteComponent); + date.datetime = dataset.date; date.innerText = dataset.parseDate().toLocaleDateString(undefined, { day: "numeric", month: "long", year: "numeric", }); - date.dataset.date = dataset.parseDate().getTime(); category.innerText = dataset.category.name; category.dataset.id = dataset.category.id; license.innerText = dataset.license; From 8b5ac69e3c4629ed936b46cb5ddb22e3dc0cd132 Mon Sep 17 00:00:00 2001 From: J-Klinke Date: Sat, 6 Jul 2024 14:44:10 +0200 Subject: [PATCH 10/11] changed key name added cancelbtn eventlistener --- src/main/resources/static/add.js | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/resources/static/add.js b/src/main/resources/static/add.js index c1f11cb..53292ad 100644 --- a/src/main/resources/static/add.js +++ b/src/main/resources/static/add.js @@ -25,6 +25,10 @@ const validationListener = () => { fullDescriptionEntry, ].forEach(input => input.addEventListener("input", validationListener)); +cancelBtn.addEventListener("click", () => { + window.location.href = location.origin; +}) + form.addEventListener("submit", async e => { e.preventDefault(); if (!form.reportValidity()) return; @@ -55,8 +59,8 @@ form.addEventListener("submit", async e => { }); let data = await response.json(); let dataset = new Dataset(data); - dataset.storageSetKey("createdLocally", true); - if (response.status == 200) { + dataset.storageSetKey("created-locally", true); + if (response.ok) { location.assign("/"); } else { addBtn.disabled = !form.checkValidity(); From 603517d1872e3761e9b6ebdb73daff18a3b28876 Mon Sep 17 00:00:00 2001 From: Erik Foris Date: Sat, 6 Jul 2024 17:57:52 +0200 Subject: [PATCH 11/11] feat: Remove unused methods in dataRepository and CategoryRepository --- .../DataDash/Dataset/dataRepository.java | 26 ------------------- .../DataDash/category/CategoryRepository.java | 2 +- 2 files changed, 1 insertion(+), 27 deletions(-) diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/dataRepository.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/dataRepository.java index c896552..65cfd0e 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/dataRepository.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/Dataset/dataRepository.java @@ -17,32 +17,6 @@ public interface dataRepository extends JpaRepository { Dataset getDatasetById(UUID id); - List findByTitle(String title); - - List findByTitleLike(String title); - - List findByAuthorLike(String author); - - List findByType(Type type); - - List findByAuthor(String author); - - List findByAbstLike(String abst); - - List findByDescriptionLike(String description); - - List findByRaitingGreaterThan(float raiting); - - List findByVotesGreaterThan(int votes); - - List findByDateAfter(Date date); - - List findByDateBefore(Date date); - - List findByCategorie(Category categorie); - - List findByDateBetween(Date date1, Date date2); - @SuppressWarnings("null") Page findAll(Pageable pageable); diff --git a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/category/CategoryRepository.java b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/category/CategoryRepository.java index acde965..38e84c6 100644 --- a/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/category/CategoryRepository.java +++ b/src/main/java/de/uni_passau/fim/PADAS/group3/DataDash/category/CategoryRepository.java @@ -17,4 +17,4 @@ public interface CategoryRepository extends JpaRepository{ @SuppressWarnings("null") Optional findById(UUID id); -} +} \ No newline at end of file