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:$**