mirror of
				https://github.com/Mueller-Patrick/Betterzon.git
				synced 2025-11-04 10:35:48 +00:00 
			
		
		
		
	BETTERZON 78: logo and follow us edited, links added.
This commit is contained in:
		
						commit
						464414cbe2
					
				| 
						 | 
				
			
			@ -23,6 +23,9 @@ import {Categories} from './categories.interface';
 | 
			
		|||
 * Service Methods
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns all known categories
 | 
			
		||||
 */
 | 
			
		||||
export const findAll = async (): Promise<Categories> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let categRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -54,6 +57,10 @@ export const findAll = async (): Promise<Categories> => {
 | 
			
		|||
    return categRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns the category with the specified id
 | 
			
		||||
 * @param id The id of the category to fetch
 | 
			
		||||
 */
 | 
			
		||||
export const find = async (id: number): Promise<Category> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let categ: any;
 | 
			
		||||
| 
						 | 
				
			
			@ -77,6 +84,10 @@ export const find = async (id: number): Promise<Category> => {
 | 
			
		|||
    return categ;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns all categories that match the search term
 | 
			
		||||
 * @param term the term to match
 | 
			
		||||
 */
 | 
			
		||||
export const findBySearchTerm = async (term: string): Promise<Categories> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let categRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -100,36 +111,3 @@ export const findBySearchTerm = async (term: string): Promise<Categories> => {
 | 
			
		|||
 | 
			
		||||
    return categRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// export const create = async (newItem: Product): Promise<void> => {
 | 
			
		||||
//     let conn;
 | 
			
		||||
//     try {
 | 
			
		||||
//         conn = await pool.getConnection();
 | 
			
		||||
//         await conn.query("");
 | 
			
		||||
//
 | 
			
		||||
//     } catch (err) {
 | 
			
		||||
//         throw err;
 | 
			
		||||
//     } finally {
 | 
			
		||||
//         if (conn) conn.end();
 | 
			
		||||
//     }
 | 
			
		||||
// };
 | 
			
		||||
//
 | 
			
		||||
// export const update = async (updatedItem: Product): Promise<void> => {
 | 
			
		||||
//     if (models.products[updatedItem.product_id]) {
 | 
			
		||||
//         models.products[updatedItem.product_id] = updatedItem;
 | 
			
		||||
//         return;
 | 
			
		||||
//     }
 | 
			
		||||
//
 | 
			
		||||
//     throw new Error("No record found to update");
 | 
			
		||||
// };
 | 
			
		||||
//
 | 
			
		||||
// export const remove = async (id: number): Promise<void> => {
 | 
			
		||||
//     const record: Product = models.products[id];
 | 
			
		||||
//
 | 
			
		||||
//     if (record) {
 | 
			
		||||
//         delete models.products[id];
 | 
			
		||||
//         return;
 | 
			
		||||
//     }
 | 
			
		||||
//
 | 
			
		||||
//     throw new Error("No record found to delete");
 | 
			
		||||
// };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -50,7 +50,7 @@ manufacturersRouter.get('/:id', async (req: Request, res: Response) => {
 | 
			
		|||
    }
 | 
			
		||||
});
 | 
			
		||||
 | 
			
		||||
// GET items/:name
 | 
			
		||||
// GET items/:term
 | 
			
		||||
manufacturersRouter.get('/search/:term', async (req: Request, res: Response) => {
 | 
			
		||||
    const term: string = req.params.term;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,9 @@ import {Manufacturers} from './manufacturers.interface';
 | 
			
		|||
 * Service Methods
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns all known manufacturers
 | 
			
		||||
 */
 | 
			
		||||
export const findAll = async (): Promise<Manufacturers> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let manRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -54,6 +57,10 @@ export const findAll = async (): Promise<Manufacturers> => {
 | 
			
		|||
    return manRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns the manufacturer with the specified id
 | 
			
		||||
 * @param id The id of the manufacturer to fetch
 | 
			
		||||
 */
 | 
			
		||||
export const find = async (id: number): Promise<Manufacturer> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let man: any;
 | 
			
		||||
| 
						 | 
				
			
			@ -77,6 +84,10 @@ export const find = async (id: number): Promise<Manufacturer> => {
 | 
			
		|||
    return man;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns all manufacturers that match the search term
 | 
			
		||||
 * @param term the term to match
 | 
			
		||||
 */
 | 
			
		||||
export const findBySearchTerm = async (term: string): Promise<Manufacturers> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let manRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -100,36 +111,3 @@ export const findBySearchTerm = async (term: string): Promise<Manufacturers> =>
 | 
			
		|||
 | 
			
		||||
    return manRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// export const create = async (newItem: Product): Promise<void> => {
 | 
			
		||||
//     let conn;
 | 
			
		||||
//     try {
 | 
			
		||||
//         conn = await pool.getConnection();
 | 
			
		||||
//         await conn.query("");
 | 
			
		||||
//
 | 
			
		||||
//     } catch (err) {
 | 
			
		||||
//         throw err;
 | 
			
		||||
//     } finally {
 | 
			
		||||
//         if (conn) conn.end();
 | 
			
		||||
//     }
 | 
			
		||||
// };
 | 
			
		||||
//
 | 
			
		||||
// export const update = async (updatedItem: Product): Promise<void> => {
 | 
			
		||||
//     if (models.products[updatedItem.product_id]) {
 | 
			
		||||
//         models.products[updatedItem.product_id] = updatedItem;
 | 
			
		||||
//         return;
 | 
			
		||||
//     }
 | 
			
		||||
//
 | 
			
		||||
//     throw new Error("No record found to update");
 | 
			
		||||
// };
 | 
			
		||||
//
 | 
			
		||||
// export const remove = async (id: number): Promise<void> => {
 | 
			
		||||
//     const record: Product = models.products[id];
 | 
			
		||||
//
 | 
			
		||||
//     if (record) {
 | 
			
		||||
//         delete models.products[id];
 | 
			
		||||
//         return;
 | 
			
		||||
//     }
 | 
			
		||||
//
 | 
			
		||||
//     throw new Error("No record found to delete");
 | 
			
		||||
// };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,9 @@ import {Prices} from './prices.interface';
 | 
			
		|||
 * Service Methods
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns all known prices
 | 
			
		||||
 */
 | 
			
		||||
export const findAll = async (): Promise<Prices> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let priceRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -60,6 +63,10 @@ export const findAll = async (): Promise<Prices> => {
 | 
			
		|||
    return priceRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns the price with the specified id
 | 
			
		||||
 * @param id The id of the price to fetch
 | 
			
		||||
 */
 | 
			
		||||
export const find = async (id: number): Promise<Price> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let price: any;
 | 
			
		||||
| 
						 | 
				
			
			@ -83,6 +90,10 @@ export const find = async (id: number): Promise<Price> => {
 | 
			
		|||
    return price;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns all prices that belong to the specified product
 | 
			
		||||
 * @param product the product to fetch the prices for
 | 
			
		||||
 */
 | 
			
		||||
export const findByProduct = async (product: number): Promise<Prices> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let priceRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -106,6 +117,14 @@ export const findByProduct = async (product: number): Promise<Prices> => {
 | 
			
		|||
    return priceRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns prices that belong to the specified product.
 | 
			
		||||
 * If type is newest, only the newest prices for each vendor will be returned.
 | 
			
		||||
 * If type is lowest, the lowest daily price for the product is returned.
 | 
			
		||||
 * Otherwise, all prices for this product are returned.
 | 
			
		||||
 * @param product The product to fetch the prices for
 | 
			
		||||
 * @param type The type of prices, e.g. newest / lowest
 | 
			
		||||
 */
 | 
			
		||||
export const findByType = async (product: string, type: string): Promise<Prices> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let priceRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -152,6 +171,15 @@ export const findByType = async (product: string, type: string): Promise<Prices>
 | 
			
		|||
    return priceRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns prices that belong to the specified product and vendor.
 | 
			
		||||
 * If type is newest, only the newest known price for the product at the vendor is returned.
 | 
			
		||||
 * If type is lowest, only the lowest ever known price for the product at the vendor is returned.
 | 
			
		||||
 * Otherwise, all prices for this product are returned.
 | 
			
		||||
 * @param product The product to fetch the prices for
 | 
			
		||||
 * @param vendor The vendor to fetch the prices for
 | 
			
		||||
 * @param type The type of prices, e.g. newest / lowest
 | 
			
		||||
 */
 | 
			
		||||
export const findByVendor = async (product: string, vendor: string, type: string): Promise<Prices> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let priceRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -186,6 +214,11 @@ export const findByVendor = async (product: string, vendor: string, type: string
 | 
			
		|||
    return priceRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns the best current deals, i.e. the non-amazon prices that have the biggest difference to amazon prices.
 | 
			
		||||
 * Only the latest known prices for every vendor are taken into consideration so we only get up-to-date-deals.
 | 
			
		||||
 * @param amount The amount of deals to return
 | 
			
		||||
 */
 | 
			
		||||
export const getBestDeals = async (amount: number): Promise<Prices> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let priceRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -282,7 +315,7 @@ export const getBestDeals = async (amount: number): Promise<Prices> => {
 | 
			
		|||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Get the lowest, latest, non-amazon price for each given product
 | 
			
		||||
 * Fetches and returns the lowest, latest, non-amazon price for each given product
 | 
			
		||||
 * @param ids the ids of the products
 | 
			
		||||
 */
 | 
			
		||||
export const findListByProducts = async (productIds: [number]): Promise<Prices> => {
 | 
			
		||||
| 
						 | 
				
			
			@ -344,36 +377,3 @@ export const findListByProducts = async (productIds: [number]): Promise<Prices>
 | 
			
		|||
 | 
			
		||||
    return priceRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// export const create = async (newItem: Product): Promise<void> => {
 | 
			
		||||
//     let conn;
 | 
			
		||||
//     try {
 | 
			
		||||
//         conn = await pool.getConnection();
 | 
			
		||||
//         await conn.query("");
 | 
			
		||||
//
 | 
			
		||||
//     } catch (err) {
 | 
			
		||||
//         throw err;
 | 
			
		||||
//     } finally {
 | 
			
		||||
//         if (conn) conn.end();
 | 
			
		||||
//     }
 | 
			
		||||
// };
 | 
			
		||||
//
 | 
			
		||||
// export const update = async (updatedItem: Product): Promise<void> => {
 | 
			
		||||
//     if (models.products[updatedItem.product_id]) {
 | 
			
		||||
//         models.products[updatedItem.product_id] = updatedItem;
 | 
			
		||||
//         return;
 | 
			
		||||
//     }
 | 
			
		||||
//
 | 
			
		||||
//     throw new Error("No record found to update");
 | 
			
		||||
// };
 | 
			
		||||
//
 | 
			
		||||
// export const remove = async (id: number): Promise<void> => {
 | 
			
		||||
//     const record: Product = models.products[id];
 | 
			
		||||
//
 | 
			
		||||
//     if (record) {
 | 
			
		||||
//         delete models.products[id];
 | 
			
		||||
//         return;
 | 
			
		||||
//     }
 | 
			
		||||
//
 | 
			
		||||
//     throw new Error("No record found to delete");
 | 
			
		||||
// };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,6 +23,9 @@ import {Products} from './products.interface';
 | 
			
		|||
 * Service Methods
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns all known products
 | 
			
		||||
 */
 | 
			
		||||
export const findAll = async (): Promise<Products> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let prodRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -74,6 +77,10 @@ export const findAll = async (): Promise<Products> => {
 | 
			
		|||
    return prodRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns the product with the specified id
 | 
			
		||||
 * @param id The id of the product to fetch
 | 
			
		||||
 */
 | 
			
		||||
export const find = async (id: number): Promise<Product> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let prod: any;
 | 
			
		||||
| 
						 | 
				
			
			@ -97,6 +104,10 @@ export const find = async (id: number): Promise<Product> => {
 | 
			
		|||
    return prod;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns all products that match the search term
 | 
			
		||||
 * @param term the term to match
 | 
			
		||||
 */
 | 
			
		||||
export const findBySearchTerm = async (term: string): Promise<Products> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let prodRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -122,6 +133,10 @@ export const findBySearchTerm = async (term: string): Promise<Products> => {
 | 
			
		|||
    return prodRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns the product details for the given list of product ids
 | 
			
		||||
 * @param ids The list of product ids to fetch the details for
 | 
			
		||||
 */
 | 
			
		||||
export const findList = async (ids: [number]): Promise<Products> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let prodRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -144,36 +159,3 @@ export const findList = async (ids: [number]): Promise<Products> => {
 | 
			
		|||
 | 
			
		||||
    return prodRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// export const create = async (newItem: Product): Promise<void> => {
 | 
			
		||||
//     let conn;
 | 
			
		||||
//     try {
 | 
			
		||||
//         conn = await pool.getConnection();
 | 
			
		||||
//         await conn.query("");
 | 
			
		||||
//
 | 
			
		||||
//     } catch (err) {
 | 
			
		||||
//         throw err;
 | 
			
		||||
//     } finally {
 | 
			
		||||
//         if (conn) conn.end();
 | 
			
		||||
//     }
 | 
			
		||||
// };
 | 
			
		||||
//
 | 
			
		||||
// export const update = async (updatedItem: Product): Promise<void> => {
 | 
			
		||||
//     if (models.products[updatedItem.product_id]) {
 | 
			
		||||
//         models.products[updatedItem.product_id] = updatedItem;
 | 
			
		||||
//         return;
 | 
			
		||||
//     }
 | 
			
		||||
//
 | 
			
		||||
//     throw new Error("No record found to update");
 | 
			
		||||
// };
 | 
			
		||||
//
 | 
			
		||||
// export const remove = async (id: number): Promise<void> => {
 | 
			
		||||
//     const record: Product = models.products[id];
 | 
			
		||||
//
 | 
			
		||||
//     if (record) {
 | 
			
		||||
//         delete models.products[id];
 | 
			
		||||
//         return;
 | 
			
		||||
//     }
 | 
			
		||||
//
 | 
			
		||||
//     throw new Error("No record found to delete");
 | 
			
		||||
// };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										44
									
								
								Backend/src/models/vendors/vendors.service.ts
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										44
									
								
								Backend/src/models/vendors/vendors.service.ts
									
									
									
									
										vendored
									
									
								
							| 
						 | 
				
			
			@ -23,6 +23,9 @@ import {Vendors} from './vendors.interface';
 | 
			
		|||
 * Service Methods
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns all known vendors
 | 
			
		||||
 */
 | 
			
		||||
export const findAll = async (): Promise<Vendors> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let vendorRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -66,6 +69,10 @@ export const findAll = async (): Promise<Vendors> => {
 | 
			
		|||
    return vendorRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns the vendor with the specified id
 | 
			
		||||
 * @param id The id of the vendor to fetch
 | 
			
		||||
 */
 | 
			
		||||
export const find = async (id: number): Promise<Vendor> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let vendor: any;
 | 
			
		||||
| 
						 | 
				
			
			@ -89,6 +96,10 @@ export const find = async (id: number): Promise<Vendor> => {
 | 
			
		|||
    return vendor;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Fetches and returns all vendors that match the search term
 | 
			
		||||
 * @param term the term to match
 | 
			
		||||
 */
 | 
			
		||||
export const findBySearchTerm = async (term: string): Promise<Vendors> => {
 | 
			
		||||
    let conn;
 | 
			
		||||
    let vendorRows = [];
 | 
			
		||||
| 
						 | 
				
			
			@ -112,36 +123,3 @@ export const findBySearchTerm = async (term: string): Promise<Vendors> => {
 | 
			
		|||
 | 
			
		||||
    return vendorRows;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// export const create = async (newItem: Product): Promise<void> => {
 | 
			
		||||
//     let conn;
 | 
			
		||||
//     try {
 | 
			
		||||
//         conn = await pool.getConnection();
 | 
			
		||||
//         await conn.query("");
 | 
			
		||||
//
 | 
			
		||||
//     } catch (err) {
 | 
			
		||||
//         throw err;
 | 
			
		||||
//     } finally {
 | 
			
		||||
//         if (conn) conn.end();
 | 
			
		||||
//     }
 | 
			
		||||
// };
 | 
			
		||||
//
 | 
			
		||||
// export const update = async (updatedItem: Product): Promise<void> => {
 | 
			
		||||
//     if (models.products[updatedItem.product_id]) {
 | 
			
		||||
//         models.products[updatedItem.product_id] = updatedItem;
 | 
			
		||||
//         return;
 | 
			
		||||
//     }
 | 
			
		||||
//
 | 
			
		||||
//     throw new Error("No record found to update");
 | 
			
		||||
// };
 | 
			
		||||
//
 | 
			
		||||
// export const remove = async (id: number): Promise<void> => {
 | 
			
		||||
//     const record: Product = models.products[id];
 | 
			
		||||
//
 | 
			
		||||
//     if (record) {
 | 
			
		||||
//         delete models.products[id];
 | 
			
		||||
//         return;
 | 
			
		||||
//     }
 | 
			
		||||
//
 | 
			
		||||
//     throw new Error("No record found to delete");
 | 
			
		||||
// };
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -26,6 +26,7 @@
 | 
			
		|||
        "@ng-bootstrap/ng-bootstrap": "^8.0.4",
 | 
			
		||||
        "apexcharts": "^3.22.3",
 | 
			
		||||
        "bootstrap": "^4.5.0",
 | 
			
		||||
        "cookieconsent": "^3.1.1",
 | 
			
		||||
        "karma-firefox-launcher": "^2.1.0",
 | 
			
		||||
        "ng": "0.0.0",
 | 
			
		||||
        "ng-apexcharts": "^1.5.6",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -23,11 +23,11 @@ import {NgcCookieConsentModule, NgcCookieConsentConfig} from 'ngx-cookieconsent'
 | 
			
		|||
import {MatSlideToggleModule} from '@angular/material/slide-toggle';
 | 
			
		||||
import {TopBarComponent} from './components/top-bar/top-bar.component';
 | 
			
		||||
import {RouterModule} from '@angular/router';
 | 
			
		||||
import {MatButtonModule} from '@angular/material/button';
 | 
			
		||||
import {MatButtonModule} from "@angular/material/button";
 | 
			
		||||
import {MatToolbarModule} from '@angular/material/toolbar';
 | 
			
		||||
import {MatIconModule} from '@angular/material/icon';
 | 
			
		||||
import {MatSidenavModule} from '@angular/material/sidenav';
 | 
			
		||||
import {MatListModule} from '@angular/material/list';
 | 
			
		||||
import {MatListModule} from "@angular/material/list";
 | 
			
		||||
import {BottomBarComponent} from './components/bottom-bar/bottom-bar.component';
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,6 +1,6 @@
 | 
			
		|||
.bottom-bar-wrapper {
 | 
			
		||||
    display: grid;
 | 
			
		||||
    grid-template-columns: repeat(3, 1fr);
 | 
			
		||||
    grid-template-columns: 546px 546px 546px;
 | 
			
		||||
    grid-template-rows: 70px 70px 70px;
 | 
			
		||||
    grid-column-gap: 0px;
 | 
			
		||||
    grid-row-gap: 0px;
 | 
			
		||||
| 
						 | 
				
			
			@ -21,10 +21,43 @@
 | 
			
		|||
    margin-right: 60px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#footer-line {
 | 
			
		||||
    grid-area: 3/1/3/4;
 | 
			
		||||
    width: 100%;
 | 
			
		||||
    background-color: #000000;
 | 
			
		||||
    height: 2px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.bottom-logo {
 | 
			
		||||
    grid-column: 1; grid-row: 3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
.bottom-info {
 | 
			
		||||
    grid-column: 3; grid-row: 3;
 | 
			
		||||
    justify-self: right;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#folge {
 | 
			
		||||
    font-size: 46px;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
    color: #E53167;
 | 
			
		||||
    margin-right: 10px;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#uns {
 | 
			
		||||
    font-size: 32px;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
    color: #000000;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#better {
 | 
			
		||||
    font-size: 28px;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
    color: #3480E3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
#zon {
 | 
			
		||||
    font-size: 28px;
 | 
			
		||||
    font-weight: bold;
 | 
			
		||||
    color: #E53167;
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,22 +1,23 @@
 | 
			
		|||
<div class="bottom-bar-wrapper">
 | 
			
		||||
    <div class="folge-uns-item">
 | 
			
		||||
        <p>FOLGE UNS</p>
 | 
			
		||||
        <p><span id="folge">FOLGE</span><span id="uns">UNS</span></p>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="link-items">
 | 
			
		||||
        <ul style="list-style-type:none" class="footer-links">
 | 
			
		||||
            <li><a>GiT</a></li>
 | 
			
		||||
            <li><a>BLOG</a></li>
 | 
			
		||||
            <li><a>Wiki</a></li>
 | 
			
		||||
            <li><a>YouTrack</a></li>
 | 
			
		||||
            <li><a href="https://github.com/Mueller-Patrick/Betterzon">GiT</a></li>
 | 
			
		||||
            <li><a href="https://blog.betterzon.xyz/">BLOG</a></li>
 | 
			
		||||
            <li><a href="https://github.com/Mueller-Patrick/Betterzon/wiki">Wiki</a></li>
 | 
			
		||||
        </ul>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div id="footer-line">
 | 
			
		||||
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="bottom-logo">
 | 
			
		||||
        <p>BETTERZON</p>
 | 
			
		||||
        <p><span id="better">BETTER</span><span id="zon">ZON</span></p>
 | 
			
		||||
    </div>
 | 
			
		||||
    <div class="bottom-info">
 | 
			
		||||
        <ul style="list-style-type:none" class="footer-links">
 | 
			
		||||
            <li><a>COOKIES</a></li>
 | 
			
		||||
            <li><a>NUTZUNGSBEDINGUNGEN</a></li>
 | 
			
		||||
            <li><a>DATENSCHUTZERKLÄRUNG</a></li>
 | 
			
		||||
            <li><a>IMPRESSUM</a></li>
 | 
			
		||||
        </ul>
 | 
			
		||||
    </div>
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,8 +1,8 @@
 | 
			
		|||
import { ComponentFixture, TestBed } from '@angular/core/testing';
 | 
			
		||||
 | 
			
		||||
import { BottomBarComponent } from './bottom-bar.component';
 | 
			
		||||
import { BottomBarComponent } from "./bottom-bar.component";
 | 
			
		||||
 | 
			
		||||
describe('BottomBarComponent', () => {
 | 
			
		||||
describe("BottomBarComponent", () => {
 | 
			
		||||
  let component: BottomBarComponent;
 | 
			
		||||
  let fixture: ComponentFixture<BottomBarComponent>;
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -2,8 +2,8 @@ import { Component, OnInit } from '@angular/core';
 | 
			
		|||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'app-bottom-bar',
 | 
			
		||||
  templateUrl: './bottom-bar.component.html',
 | 
			
		||||
  styleUrls: ['./bottom-bar.component.css']
 | 
			
		||||
  templateUrl: "./bottom-bar.component.html",
 | 
			
		||||
  styleUrls: ["./bottom-bar.component.css"]
 | 
			
		||||
})
 | 
			
		||||
export class BottomBarComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -42,6 +42,7 @@ a {
 | 
			
		|||
 | 
			
		||||
a:hover {
 | 
			
		||||
    opacity: 0.8;
 | 
			
		||||
    color: #3480E3;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
a, p{
 | 
			
		||||
| 
						 | 
				
			
			@ -128,10 +129,11 @@ app-bottom-bar{
 | 
			
		|||
    width: 1640px;
 | 
			
		||||
    height: 210px;
 | 
			
		||||
    position: fixed;
 | 
			
		||||
    padding: 16px;
 | 
			
		||||
    margin-top: 90px;
 | 
			
		||||
    bottom: 0;
 | 
			
		||||
    flex-direction: row;
 | 
			
		||||
    display: flex;
 | 
			
		||||
    justify-content: space-between;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -3,9 +3,9 @@ Website: https://www.betterzon.xyz<br>
 | 
			
		|||
Blog: https://blog.betterzon.xyz<br>
 | 
			
		||||
Wiki: https://github.com/Mueller-Patrick/Betterzon/wiki
 | 
			
		||||
 | 
			
		||||
# Code Quality
 | 
			
		||||
[](https://www.codacy.com/gh/Mueller-Patrick/Betterzon/dashboard?utm_source=github.com&utm_medium=referral&utm_content=Mueller-Patrick/Betterzon&utm_campaign=Badge_Grade)
 | 
			
		||||
 | 
			
		||||
# Project Status
 | 
			
		||||

 | 
			
		||||

 | 
			
		||||
<br>
 | 
			
		||||
[](https://www.betterzon.xyz)
 | 
			
		||||
[](https://blog.betterzon.xyz)
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue
	
	Block a user