Initial commit

This commit is contained in:
2025-10-02 08:54:03 +02:00
commit ea54638227
1642 changed files with 53677 additions and 0 deletions

301
api/collections/rating.yml Normal file
View File

@@ -0,0 +1,301 @@
name: rating
meta:
label: { de: "Bewertungen", en: "Ratings" }
muiIcon: reviews
views: &views
- type: simpleList
mediaQuery: "max-width: 600px"
- type: table
columns:
- source: bigCommerceProductId
filter:
type: foreignKey
- source: bigcommerceOrderId
filter:
type: foreignKey
- source: rating.overall
filter: true
- source: status
filter: true
tablist:
activeTab: generalDetails
tabs:
- name: generalDetails
label:
de: Allgemeine Details
en: General Details
subFields:
- source: bigCommerceProductId
- source: bigcommerceOrderId
- source: status
- source: review_date
- source: bigcommerceReviewId
- name: rating
label:
de: Bewertung
en: Rating
subFields:
- source: rating
- source: comment
- source: title
subNavigation:
- name: modal
views: *views
defaultCallback: # Standard-Callback-Funktion, die ausgeführt wird, wenn keine andere spezifiziert ist.
eval: | # Der Code wird als JavaScript evaluiert.
//js
(entry) => { // Diese Funktion nimmt den Eintrag (entry) als Argument.
parent.selectEntry(entry) // Die Funktion selectEntry auf dem übergeordneten Objekt wird mit dem Eintrag als Argument aufgerufen.
}
//!js
permissions:
public:
methods:
get: true
post: true
put: true
delete: false
user:
methods:
get: true
post: true
put: true
delete: false
hooks:
delete:
delete:
type: javascript
file: hooks/rating/delete_delete.js
return:
type: javascript
file: hooks/rating/delete_return.js
get:
read:
type: javascript
file: hooks/rating/get_read.js
post:
validate:
type: javascript
file: hooks/rating/post_validate.js
create:
type: javascript
file: hooks/rating/post_create.js
return:
file: hooks/rating/post_return.js
type: javascript
put:
validate:
type: javascript
file: hooks/rating/put_validate.js
update:
type: javascript
file: hooks/rating/put_update.js
return:
file: hooks/rating/put_return.js
type: javascript
fields:
- name: bigcommerceOrderId
type: number
index: [single]
meta:
filter:
type: foreignKey
label: { de: "Interne Bestellnummer", en: "Internal Order Id" }
widget: foreignKey
foreign:
collection: bigCommerceOrder
subNavigation: 0
id: bigCommerceId
render:
defaultCollectionViews: true
validator:
required: true
- name: bigCommerceProductId
index: [single]
type: number
meta:
filter:
type: foreignKey
label: { de: "Produkt", en: "Product" }
widget: foreignKey
foreign:
collection: bigCommerceProduct
subNavigation: 0
id: bigCommerceId
render:
defaultCollectionViews: true
validator:
required: true
- name: rating
index: [single]
type: object
meta:
widget: containerLessObject
label: { de: "Bewertung", en: "Rating" }
subFields:
- name: quality
type: number
meta:
label: { de: "Qualität", en: "Quality" }
helperText: { de: "1 - Schlecht; 5 - Sehr Gut", en: "1 - Bad; 5 - Very Good" }
validator:
eval: |
(function () {
return $this >= 0 && $this <= 5;
})()
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-4"
- name: priceQualityRatio
type: number
meta:
label: { de: "Preis-Leistungs-Verhältnis", en: "Price-Quality Ratio" }
helperText: { de: "1 - Schlecht; 5 - Sehr Gut", en: "1 - Bad; 5 - Very Good" }
validator:
eval: |
(function () {
return $this >= 0 && $this <= 5;
})()
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-4"
- name: comfort
type: number
meta:
label: { de: "Komfort", en: "Comfort" }
helperText: { de: "1 - Unbequem; 5 - Sehr Bequem", en: "1 - Uncomfortable; 5 - Very Comfortable" }
validator:
eval: |
(function () {
return $this >= 0 && $this <= 5;
})()
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-4"
- name: overall
type: number
meta:
label: { de: "Gesamt", en: "Overall" }
helperText: { de: "1 - Schlecht; 5 - Sehr Gut", en: "1 - Bad; 5 - Very Good" }
validator:
eval: |
(function () {
return $this >= 0 && $this <= 5;
})()
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-4"
- name: comment
type: string
meta:
label: { de: "Kommentar", en: "Comment" }
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
inputProps:
multiline: true
- name: title
type: string
meta:
label: { de: "Titel", en: "title" }
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
inputProps:
multiline: true
- name: review_date
type: date
validator:
eval: |
(function () {
return (new Date($this) !== "Invalid Date") && !isNaN(new Date($this));
})()
meta:
label: { de: "Erstellungsdatum", en: "Creation date" }
defaultValue:
eval: new Date()
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: status
type: string
index: [single]
validator:
eval: (["pending", "approved", "rejected"].includes($this))
meta:
label: Status
widget: "select"
defaultValue: pending
choices:
- name: { de: wartend, en: pending }
id: pending
- name: { de: bestätigt, en: approved }
id: approved
- name: { de: abgelehnt, en: rejected }
id: rejected
containerProps:
layout:
size:
default: "col-6"
small: "col-12"
large: "col-6"
- name: bigcommerceReviewId
type: string
meta:
label:
de: "BigCommerce Review Id"
en: "BigCommerce Review Id"
helperText:
de: "Die ID der Bewertung in BigCommerce"
en: "The ID of the review in BigCommerce"
indexes:
- name: fulltext # Ein eindeutiger Name für den Index. Es ist optional, wird jedoch empfohlen, um den Index später leicht identifizieren zu können.
key: # Bestimmt, auf welche Felder der Index angewendet werden soll. Dies kann ein einfacher String sein, wenn der Index nur ein Feld umfasst, oder ein Array von Strings, wenn der Index mehrere Felder umfasst.
- $text:$**