feat: add core

This commit is contained in:
Karl-Philipp Wulfert
2018-11-29 16:22:57 +01:00
commit 2d770dde44
131 changed files with 41268 additions and 0 deletions

174
src/core/things/Dish.ts Normal file
View File

@@ -0,0 +1,174 @@
/*
* Copyright (C) 2018 StApps
* This program is free software: you can redistribute it and/or modify it
* under the terms of the GNU General Public License as published by the Free
* Software Foundation, version 3.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
* more details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <https://www.gnu.org/licenses/>.
*/
import {SCThingInPlace} from '../base/ThingInPlace';
import {
SCAcademicPriceGroup,
SCThingThatCanBeOffered,
SCThingThatCanBeOfferedTranslatableProperties,
} from '../base/ThingThatCanBeOffered';
import {
SCThingWithCategoriesSpecificValues,
SCThingWithCategoriesTranslatableProperties,
SCThingWithCategoriesWithoutReferences,
} from '../base/ThingWithCategories';
import {SCThingMeta} from '../Thing';
import {SCTranslations} from '../types/i18n';
/**
* Type of a dish
*/
export type SCDishType = 'dish';
/**
* A dish without references
*/
export interface SCDishWithoutReferences
extends SCThingWithCategoriesWithoutReferences<SCDishCategories,
SCThingWithCategoriesSpecificValues>,
SCThingThatCanBeOffered<SCAcademicPriceGroup> {
/**
* Additives of the dish
*/
additives?: string[];
/**
* Category of the dish
*/
categories: SCDishCategories[];
/**
* Characteristics of the dish
*/
characteristics?: string[];
/**
* Nutrition information (calories and nutrients with amounts)
*/
nutrition?: SCNutritionInformation;
/**
* Translated fields of a dish
*/
translations?: SCTranslations<SCDishTranslatableProperties>;
/**
* Type of a dish
*/
type: SCDishType;
}
/**
* A dish
*/
export interface SCDish extends SCDishWithoutReferences, SCThingInPlace {
/**
* Dishes ("Beilagen") that are served with the dish (if only certain supplement dishes can be taken with a dish)
*/
dishAddOns?: SCDishWithoutReferences[];
/**
* Translated fields of a dish
*/
translations?: SCTranslations<SCDishTranslatableProperties>;
/**
* Type of a dish
*/
type: SCDishType;
}
export interface SCDishTranslatableProperties
extends SCThingWithCategoriesTranslatableProperties, SCThingThatCanBeOfferedTranslatableProperties {
}
/**
* Dish meta data
*/
export class SCDishMeta extends SCThingMeta {
static fieldTranslations = {
...SCThingMeta.fieldTranslations,
de: {
categories: 'Kategorien',
},
};
}
/**
* A list of categories for dishes
*/
export type SCDishCategories =
'appetizer'
| 'salad'
| 'main dish'
| 'dessert'
| 'soup'
| 'side dish';
/**
* A list of categories for drinks
*/
export type SCDrinkCategories =
'wine'
| 'beer'
| 'coffee'
| 'tea'
| 'milk drink'
| 'juice'
| 'short drink'
| 'sparkling wine'
| 'water'
| 'soft drink';
/**
* Type definition for SCNutritionInformation
*
* @see https://schema.org/NutritionInformation
*/
export interface SCNutritionInformation {
/**
* Number of calories contained (in kcal)
*/
calories?: number;
/**
* Content of carbohydrates (in grams)
*/
carbohydrateContent?: number;
/**
* Content of fat (in grams)
*/
fatContent?: number;
/**
* Content of proteins (in grams)
*/
proteinContent?: number;
/**
* Content of salt (in grams)
*/
saltContent?: number;
/**
* Content of saturated fat (in grams)
*/
saturatedFatContent?: number;
/**
* Content of sugar (in grams)
*/
sugarContent?: number;
}