From a9fa55346c74981ff8d7c435cad123efb8a15c72 Mon Sep 17 00:00:00 2001 From: Parker Date: Thu, 7 Nov 2024 22:44:31 -0600 Subject: Dashboard functionality increase --- app/routes/links_routes.py | 23 ++++-- app/templates/dashboard.html | 175 +++++++++++++++++++------------------------ 2 files changed, 94 insertions(+), 104 deletions(-) (limited to 'app') diff --git a/app/routes/links_routes.py b/app/routes/links_routes.py index 90ca1bd..984ccd8 100644 --- a/app/routes/links_routes.py +++ b/app/routes/links_routes.py @@ -61,7 +61,7 @@ async def create_link( return {"link": link_path, "expire_date": new_link.expire_date} -@router.delete("/{link}", summary="Delete a link") +@router.delete("/{link}", summary="Delete a link and all associated logs") async def delete_link( link: Annotated[str, Path(title="Link to delete")], current_user: Annotated[User, Depends(get_current_user)], @@ -126,9 +126,13 @@ async def get_link_logs( return logs -@router.delete("/{link}/logs", summary="Delete logs associated with a link") -async def delete_link_logs( - link: Annotated[str, Path(title="Link to delete logs for")], +@router.delete( + "/{link}/logs/{log_id}", + summary="Delete a specific log associated with a link", +) +async def delete_single_log( + link: Annotated[str, Path(title="Link associated with the log to delete")], + log_id: Annotated[int, Path(title="Log ID to delete")], current_user: Annotated[User, Depends(get_current_user)], db=Depends(get_db), ): @@ -148,10 +152,13 @@ async def delete_link_logs( detail="Link not associated with your account", ) - # Get all of the logs - logs = db.query(Log).filter(Log.link == link.link).all() - for log in logs: - db.delete(log) + # Get the log and delete it + log = db.query(Log).filter(Log.id == log_id).first() + if not log: + raise HTTPException( + status_code=status.HTTP_404_NOT_FOUND, detail="Log not found" + ) + db.delete(log) db.commit() return status.HTTP_204_NO_CONTENT diff --git a/app/templates/dashboard.html b/app/templates/dashboard.html index c65b62b..0a383af 100644 --- a/app/templates/dashboard.html +++ b/app/templates/dashboard.html @@ -4,46 +4,19 @@ LinkLogger | Dashboard + +
- +
- - - - + + + + - - - - - - - -
LinkVisitsRedirectExpire DateLinkVisitsRedirectExpire Date
@@ -58,69 +31,63 @@ } div { - position: absolute; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - text-align: center; - font-size: 25px; - color: #ccc; + display: flex; + justify-content: center; + margin-top: 100px; } table { - border-collapse: collapse; - background-color: #333; + margin: 20px 0 20px 0; + text-align: center; + font-size: 25px; + width: 1250px; color: #ccc; + border-collapse: collapse; + overflow: hidden; } - th, td { - border: 1px solid #ccc; + table th { + background-color: #415eac; padding: 10px; + border: 2px solid #ccc; } - th { - background-color: #444; - } - - tr:nth-child(even) { - background-color: #444; - } - - tr:nth-child(odd) { - background-color: #333; - } - - .log-table-row { - display: none; + .link-table-row { + border: 2px solid #ccc; } - .log-table-row td { - padding: 0; + table td { + padding: 10px; } - .log-table-row table { - width: 100%; - border-collapse: collapse; + .link-table-row td { + padding: 20px; } - .log-table-row th, .log-table-row td { - border: 1px solid #ccc; + .log-table-row table td { + background-color: #3b4148; padding: 10px; } - .log-table-row th { - background-color: #444; + .log-table-row table tr { + border: 2px solid #ccc; } - .log-table-row tr:nth-child(even) { - background-color: #444; + .link-button { + background-color: #3b4148; + color: #ccc; + border: none; + padding: 10px; + cursor: pointer; + font-size: 25px; + border-radius: 5px; } - .log-table-row tr:nth-child(odd) { - background-color: #333; + .fa-trash:hover { + color: rgb(238, 86, 86); + cursor: pointer; } - \ No newline at end of file -- cgit v1.2.3-70-g09d2