mirror of
https://github.com/Mueller-Patrick/Betterzon.git
synced 2024-12-23 04:05:12 +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
|
* Service Methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches and returns all known categories
|
||||||
|
*/
|
||||||
export const findAll = async (): Promise<Categories> => {
|
export const findAll = async (): Promise<Categories> => {
|
||||||
let conn;
|
let conn;
|
||||||
let categRows = [];
|
let categRows = [];
|
||||||
|
@ -54,6 +57,10 @@ export const findAll = async (): Promise<Categories> => {
|
||||||
return categRows;
|
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> => {
|
export const find = async (id: number): Promise<Category> => {
|
||||||
let conn;
|
let conn;
|
||||||
let categ: any;
|
let categ: any;
|
||||||
|
@ -77,6 +84,10 @@ export const find = async (id: number): Promise<Category> => {
|
||||||
return categ;
|
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> => {
|
export const findBySearchTerm = async (term: string): Promise<Categories> => {
|
||||||
let conn;
|
let conn;
|
||||||
let categRows = [];
|
let categRows = [];
|
||||||
|
@ -100,36 +111,3 @@ export const findBySearchTerm = async (term: string): Promise<Categories> => {
|
||||||
|
|
||||||
return categRows;
|
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) => {
|
manufacturersRouter.get('/search/:term', async (req: Request, res: Response) => {
|
||||||
const term: string = req.params.term;
|
const term: string = req.params.term;
|
||||||
|
|
||||||
|
|
|
@ -23,6 +23,9 @@ import {Manufacturers} from './manufacturers.interface';
|
||||||
* Service Methods
|
* Service Methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches and returns all known manufacturers
|
||||||
|
*/
|
||||||
export const findAll = async (): Promise<Manufacturers> => {
|
export const findAll = async (): Promise<Manufacturers> => {
|
||||||
let conn;
|
let conn;
|
||||||
let manRows = [];
|
let manRows = [];
|
||||||
|
@ -54,6 +57,10 @@ export const findAll = async (): Promise<Manufacturers> => {
|
||||||
return manRows;
|
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> => {
|
export const find = async (id: number): Promise<Manufacturer> => {
|
||||||
let conn;
|
let conn;
|
||||||
let man: any;
|
let man: any;
|
||||||
|
@ -77,6 +84,10 @@ export const find = async (id: number): Promise<Manufacturer> => {
|
||||||
return man;
|
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> => {
|
export const findBySearchTerm = async (term: string): Promise<Manufacturers> => {
|
||||||
let conn;
|
let conn;
|
||||||
let manRows = [];
|
let manRows = [];
|
||||||
|
@ -100,36 +111,3 @@ export const findBySearchTerm = async (term: string): Promise<Manufacturers> =>
|
||||||
|
|
||||||
return manRows;
|
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
|
* Service Methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches and returns all known prices
|
||||||
|
*/
|
||||||
export const findAll = async (): Promise<Prices> => {
|
export const findAll = async (): Promise<Prices> => {
|
||||||
let conn;
|
let conn;
|
||||||
let priceRows = [];
|
let priceRows = [];
|
||||||
|
@ -60,6 +63,10 @@ export const findAll = async (): Promise<Prices> => {
|
||||||
return priceRows;
|
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> => {
|
export const find = async (id: number): Promise<Price> => {
|
||||||
let conn;
|
let conn;
|
||||||
let price: any;
|
let price: any;
|
||||||
|
@ -83,6 +90,10 @@ export const find = async (id: number): Promise<Price> => {
|
||||||
return 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> => {
|
export const findByProduct = async (product: number): Promise<Prices> => {
|
||||||
let conn;
|
let conn;
|
||||||
let priceRows = [];
|
let priceRows = [];
|
||||||
|
@ -106,6 +117,14 @@ export const findByProduct = async (product: number): Promise<Prices> => {
|
||||||
return priceRows;
|
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> => {
|
export const findByType = async (product: string, type: string): Promise<Prices> => {
|
||||||
let conn;
|
let conn;
|
||||||
let priceRows = [];
|
let priceRows = [];
|
||||||
|
@ -152,6 +171,15 @@ export const findByType = async (product: string, type: string): Promise<Prices>
|
||||||
return priceRows;
|
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> => {
|
export const findByVendor = async (product: string, vendor: string, type: string): Promise<Prices> => {
|
||||||
let conn;
|
let conn;
|
||||||
let priceRows = [];
|
let priceRows = [];
|
||||||
|
@ -186,6 +214,11 @@ export const findByVendor = async (product: string, vendor: string, type: string
|
||||||
return priceRows;
|
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> => {
|
export const getBestDeals = async (amount: number): Promise<Prices> => {
|
||||||
let conn;
|
let conn;
|
||||||
let priceRows = [];
|
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
|
* @param ids the ids of the products
|
||||||
*/
|
*/
|
||||||
export const findListByProducts = async (productIds: [number]): Promise<Prices> => {
|
export const findListByProducts = async (productIds: [number]): Promise<Prices> => {
|
||||||
|
@ -344,36 +377,3 @@ export const findListByProducts = async (productIds: [number]): Promise<Prices>
|
||||||
|
|
||||||
return priceRows;
|
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
|
* Service Methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches and returns all known products
|
||||||
|
*/
|
||||||
export const findAll = async (): Promise<Products> => {
|
export const findAll = async (): Promise<Products> => {
|
||||||
let conn;
|
let conn;
|
||||||
let prodRows = [];
|
let prodRows = [];
|
||||||
|
@ -74,6 +77,10 @@ export const findAll = async (): Promise<Products> => {
|
||||||
return prodRows;
|
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> => {
|
export const find = async (id: number): Promise<Product> => {
|
||||||
let conn;
|
let conn;
|
||||||
let prod: any;
|
let prod: any;
|
||||||
|
@ -97,6 +104,10 @@ export const find = async (id: number): Promise<Product> => {
|
||||||
return prod;
|
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> => {
|
export const findBySearchTerm = async (term: string): Promise<Products> => {
|
||||||
let conn;
|
let conn;
|
||||||
let prodRows = [];
|
let prodRows = [];
|
||||||
|
@ -122,6 +133,10 @@ export const findBySearchTerm = async (term: string): Promise<Products> => {
|
||||||
return prodRows;
|
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> => {
|
export const findList = async (ids: [number]): Promise<Products> => {
|
||||||
let conn;
|
let conn;
|
||||||
let prodRows = [];
|
let prodRows = [];
|
||||||
|
@ -144,36 +159,3 @@ export const findList = async (ids: [number]): Promise<Products> => {
|
||||||
|
|
||||||
return prodRows;
|
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
|
* Service Methods
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetches and returns all known vendors
|
||||||
|
*/
|
||||||
export const findAll = async (): Promise<Vendors> => {
|
export const findAll = async (): Promise<Vendors> => {
|
||||||
let conn;
|
let conn;
|
||||||
let vendorRows = [];
|
let vendorRows = [];
|
||||||
|
@ -66,6 +69,10 @@ export const findAll = async (): Promise<Vendors> => {
|
||||||
return vendorRows;
|
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> => {
|
export const find = async (id: number): Promise<Vendor> => {
|
||||||
let conn;
|
let conn;
|
||||||
let vendor: any;
|
let vendor: any;
|
||||||
|
@ -89,6 +96,10 @@ export const find = async (id: number): Promise<Vendor> => {
|
||||||
return 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> => {
|
export const findBySearchTerm = async (term: string): Promise<Vendors> => {
|
||||||
let conn;
|
let conn;
|
||||||
let vendorRows = [];
|
let vendorRows = [];
|
||||||
|
@ -112,36 +123,3 @@ export const findBySearchTerm = async (term: string): Promise<Vendors> => {
|
||||||
|
|
||||||
return vendorRows;
|
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",
|
"@ng-bootstrap/ng-bootstrap": "^8.0.4",
|
||||||
"apexcharts": "^3.22.3",
|
"apexcharts": "^3.22.3",
|
||||||
"bootstrap": "^4.5.0",
|
"bootstrap": "^4.5.0",
|
||||||
|
"cookieconsent": "^3.1.1",
|
||||||
"karma-firefox-launcher": "^2.1.0",
|
"karma-firefox-launcher": "^2.1.0",
|
||||||
"ng": "0.0.0",
|
"ng": "0.0.0",
|
||||||
"ng-apexcharts": "^1.5.6",
|
"ng-apexcharts": "^1.5.6",
|
||||||
|
|
|
@ -23,11 +23,11 @@ import {NgcCookieConsentModule, NgcCookieConsentConfig} from 'ngx-cookieconsent'
|
||||||
import {MatSlideToggleModule} from '@angular/material/slide-toggle';
|
import {MatSlideToggleModule} from '@angular/material/slide-toggle';
|
||||||
import {TopBarComponent} from './components/top-bar/top-bar.component';
|
import {TopBarComponent} from './components/top-bar/top-bar.component';
|
||||||
import {RouterModule} from '@angular/router';
|
import {RouterModule} from '@angular/router';
|
||||||
import {MatButtonModule} from '@angular/material/button';
|
import {MatButtonModule} from "@angular/material/button";
|
||||||
import {MatToolbarModule} from '@angular/material/toolbar';
|
import {MatToolbarModule} from '@angular/material/toolbar';
|
||||||
import {MatIconModule} from '@angular/material/icon';
|
import {MatIconModule} from '@angular/material/icon';
|
||||||
import {MatSidenavModule} from '@angular/material/sidenav';
|
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';
|
import {BottomBarComponent} from './components/bottom-bar/bottom-bar.component';
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
.bottom-bar-wrapper {
|
.bottom-bar-wrapper {
|
||||||
display: grid;
|
display: grid;
|
||||||
grid-template-columns: repeat(3, 1fr);
|
grid-template-columns: 546px 546px 546px;
|
||||||
grid-template-rows: 70px 70px 70px;
|
grid-template-rows: 70px 70px 70px;
|
||||||
grid-column-gap: 0px;
|
grid-column-gap: 0px;
|
||||||
grid-row-gap: 0px;
|
grid-row-gap: 0px;
|
||||||
|
@ -21,10 +21,43 @@
|
||||||
margin-right: 60px;
|
margin-right: 60px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#footer-line {
|
||||||
|
grid-area: 3/1/3/4;
|
||||||
|
width: 100%;
|
||||||
|
background-color: #000000;
|
||||||
|
height: 2px;
|
||||||
|
}
|
||||||
|
|
||||||
.bottom-logo {
|
.bottom-logo {
|
||||||
grid-column: 1; grid-row: 3;
|
grid-column: 1; grid-row: 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bottom-info {
|
.bottom-info {
|
||||||
grid-column: 3; grid-row: 3;
|
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="bottom-bar-wrapper">
|
||||||
<div class="folge-uns-item">
|
<div class="folge-uns-item">
|
||||||
<p>FOLGE UNS</p>
|
<p><span id="folge">FOLGE</span><span id="uns">UNS</span></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="link-items">
|
<div class="link-items">
|
||||||
<ul style="list-style-type:none" class="footer-links">
|
<ul style="list-style-type:none" class="footer-links">
|
||||||
<li><a>GiT</a></li>
|
<li><a href="https://github.com/Mueller-Patrick/Betterzon">GiT</a></li>
|
||||||
<li><a>BLOG</a></li>
|
<li><a href="https://blog.betterzon.xyz/">BLOG</a></li>
|
||||||
<li><a>Wiki</a></li>
|
<li><a href="https://github.com/Mueller-Patrick/Betterzon/wiki">Wiki</a></li>
|
||||||
<li><a>YouTrack</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
|
</div>
|
||||||
|
<div id="footer-line">
|
||||||
|
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-logo">
|
<div class="bottom-logo">
|
||||||
<p>BETTERZON</p>
|
<p><span id="better">BETTER</span><span id="zon">ZON</span></p>
|
||||||
</div>
|
</div>
|
||||||
<div class="bottom-info">
|
<div class="bottom-info">
|
||||||
<ul style="list-style-type:none" class="footer-links">
|
<ul style="list-style-type:none" class="footer-links">
|
||||||
<li><a>COOKIES</a></li>
|
<li><a>DATENSCHUTZERKLÄRUNG</a></li>
|
||||||
<li><a>NUTZUNGSBEDINGUNGEN</a></li>
|
|
||||||
<li><a>IMPRESSUM</a></li>
|
<li><a>IMPRESSUM</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
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 component: BottomBarComponent;
|
||||||
let fixture: ComponentFixture<BottomBarComponent>;
|
let fixture: ComponentFixture<BottomBarComponent>;
|
||||||
|
|
||||||
|
|
|
@ -2,8 +2,8 @@ import { Component, OnInit } from '@angular/core';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'app-bottom-bar',
|
selector: 'app-bottom-bar',
|
||||||
templateUrl: './bottom-bar.component.html',
|
templateUrl: "./bottom-bar.component.html",
|
||||||
styleUrls: ['./bottom-bar.component.css']
|
styleUrls: ["./bottom-bar.component.css"]
|
||||||
})
|
})
|
||||||
export class BottomBarComponent implements OnInit {
|
export class BottomBarComponent implements OnInit {
|
||||||
|
|
||||||
|
|
|
@ -42,6 +42,7 @@ a {
|
||||||
|
|
||||||
a:hover {
|
a:hover {
|
||||||
opacity: 0.8;
|
opacity: 0.8;
|
||||||
|
color: #3480E3;
|
||||||
}
|
}
|
||||||
|
|
||||||
a, p{
|
a, p{
|
||||||
|
@ -128,10 +129,11 @@ app-bottom-bar{
|
||||||
width: 1640px;
|
width: 1640px;
|
||||||
height: 210px;
|
height: 210px;
|
||||||
position: fixed;
|
position: fixed;
|
||||||
padding: 16px;
|
|
||||||
margin-top: 90px;
|
margin-top: 90px;
|
||||||
bottom: 0;
|
bottom: 0;
|
||||||
flex-direction: row;
|
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>
|
Blog: https://blog.betterzon.xyz<br>
|
||||||
Wiki: https://github.com/Mueller-Patrick/Betterzon/wiki
|
Wiki: https://github.com/Mueller-Patrick/Betterzon/wiki
|
||||||
|
|
||||||
|
# Code Quality
|
||||||
|
[![Codacy Badge](https://app.codacy.com/project/badge/Grade/88e47ebf837b43af9d12147c22f77f7f)](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
|
# Project Status
|
||||||
![Latest Commit Build Status](https://ci.betterzon.xyz/job/Verify_Build_on_PR/badge/icon?style=flat-square&subject=Latest%20Commit)
|
|
||||||
![Deployment Status](https://ci.betterzon.xyz/job/GitHub%20Deployment/badge/icon?style=flat-square&subject=Deployment&status=Success)
|
|
||||||
<br>
|
|
||||||
[![Website Status](https://img.shields.io/website?label=www.betterzon.xyz&style=for-the-badge&url=https%3A%2F%2Fwww.betterzon.xyz)](https://www.betterzon.xyz)
|
[![Website Status](https://img.shields.io/website?label=www.betterzon.xyz&style=for-the-badge&url=https%3A%2F%2Fwww.betterzon.xyz)](https://www.betterzon.xyz)
|
||||||
[![Blog Status](https://img.shields.io/website?label=blog.betterzon.xyz&style=for-the-badge&url=https%3A%2F%2Fblog.betterzon.xyz)](https://blog.betterzon.xyz)
|
[![Blog Status](https://img.shields.io/website?label=blog.betterzon.xyz&style=for-the-badge&url=https%3A%2F%2Fblog.betterzon.xyz)](https://blog.betterzon.xyz)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user