Skip to content
New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

js-project-recipe-library by Oscar #21

Open
wants to merge 37 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
37 commits
Select commit Hold shift + click to select a range
587d77d
startup
osckli990 Feb 24, 2025
2a58a2f
html setup
osckli990 Feb 24, 2025
718dee9
styles and html structure
osckli990 Feb 25, 2025
bd4475b
added a bunch of stuff, tried testing with Jest, doesnt work, added j…
osckli990 Feb 26, 2025
5180da9
added more testing which doesnt work. completed js, started adding me…
osckli990 Feb 27, 2025
5b7b5d3
tried changing to checkbox instead of radio, resulting in some unexpe…
osckli990 Feb 27, 2025
bf35ad5
started prepping html and js for the weeks requirements
osckli990 Mar 4, 2025
53780de
removed code from previous week and added some recipes through JS
osckli990 Mar 6, 2025
c0da58a
added some more recipes and styling
osckli990 Mar 6, 2025
b3ef4d4
added the filter in js and cleaned up html from previous week with te…
osckli990 Mar 6, 2025
7eba7cd
some trouble with js, rewriting
osckli990 Mar 6, 2025
6e2ff32
fixed and redid alot of JS, which now works and includes sort by time…
osckli990 Mar 6, 2025
8d1c458
added some comments and included the netlify link in the README
osckli990 Mar 6, 2025
61b0f00
removed previous testing i couldn't get to work. added a randomized r…
osckli990 Mar 6, 2025
237033e
resolved a bug where are recipes would not be displayed if a diet was…
osckli990 Mar 6, 2025
fbc7a6d
succeded in writing a more general if statement for no valid recipes
osckli990 Mar 6, 2025
eed9b28
save before checkbox test
osckli990 Mar 8, 2025
d753153
changed css to mobile-first, improved JS.
osckli990 Mar 10, 2025
358c6c4
eeehhhh
osckli990 Mar 14, 2025
c6c42c5
recipes now displaying and working, filters not working will re-work …
osckli990 Mar 14, 2025
0aa2f8e
added ALOT of code, removing and fixing to try and get pagination to …
osckli990 Mar 14, 2025
a404b8f
fixed the issue of duplicates
osckli990 Mar 14, 2025
145dc3c
possible fix to limit api fetches
osckli990 Mar 14, 2025
cb4273c
not working?
osckli990 Mar 14, 2025
faed6ec
pagination now works
osckli990 Mar 15, 2025
9e784b5
commented out
osckli990 Mar 15, 2025
777d544
reworked spinner and loader, tweaked displayed price and ingredients,…
osckli990 Mar 15, 2025
55501bd
recipes no longer load when a filter is active, wit hthe exception of…
osckli990 Mar 15, 2025
6f8d24c
for code review
osckli990 Mar 17, 2025
de3d325
fixed fetch still fetching despite sorting enabled
osckli990 Mar 18, 2025
0230431
decided to change displayed ingredient amount to fractions instead of…
osckli990 Mar 19, 2025
50d70c7
convert small weird decimal values to simple fraction. i.e 0.27 -> 1/…
osckli990 Mar 20, 2025
287aa04
removed local node causing file overload?
osckli990 Mar 20, 2025
6d75c7a
changed decimalToFraction to use specific and smaller denominators. R…
osckli990 Mar 20, 2025
44c9e5b
duplicate line
osckli990 Mar 24, 2025
d1f132d
changed diets to be AND instead of OR
osckli990 Mar 29, 2025
f6423a5
fixed all recipes loading at once?
osckli990 Mar 29, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .vscode/settings.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"githubPullRequests.ignoredPullRequestBranches": [
"main"
]
}
11 changes: 11 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
@@ -1 +1,12 @@
# js-project-recipe-library

This week, you will start building a Recipe Library app, which we will continue to develop over the next three weeks. By the end of the sprint, it will be a fully functional web app that helps users find recipes based on different filters and sorting options. This first week, you will create the foundation of your recipe library by:

Building the HTML structure:
Input fields for filters and sorting options
A placeholder recipe card
Styling your app as close as you can to this Figma design
Writing JavaScript functions to handle user selections.
Using conditional statements to display a message to the user, based on the input

#https://js-project-recipe-library.netlify.app
13 changes: 13 additions & 0 deletions coverage/clover.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<coverage generated="1740735231788" clover="3.2.0">
<project timestamp="1740735231788" name="All files">
<metrics statements="4" coveredstatements="4" conditionals="1" coveredconditionals="1" methods="1" coveredmethods="1" elements="6" coveredelements="6" complexity="0" loc="4" ncloc="4" packages="1" files="1" classes="1"/>
<file name="sum.js" path="F:\VS Projects\js-project-recipe-library\sum.js">
<metrics statements="4" coveredstatements="4" conditionals="1" coveredconditionals="1" methods="1" coveredmethods="1"/>
<line num="1" count="1" type="cond" truecount="1" falsecount="0"/>
<line num="2" count="1" type="stmt"/>
<line num="3" count="1" type="stmt"/>
<line num="4" count="1" type="stmt"/>
</file>
</project>
</coverage>
2 changes: 2 additions & 0 deletions coverage/coverage-final.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
{"F:\\VS Projects\\js-project-recipe-library\\sum.js": {"path":"F:\\VS Projects\\js-project-recipe-library\\sum.js","all":false,"statementMap":{"0":{"start":{"line":1,"column":0},"end":{"line":1,"column":20}},"1":{"start":{"line":2,"column":0},"end":{"line":2,"column":15}},"2":{"start":{"line":3,"column":0},"end":{"line":3,"column":1}},"3":{"start":{"line":4,"column":0},"end":{"line":4,"column":21}}},"s":{"0":1,"1":1,"2":1,"3":1},"branchMap":{"0":{"type":"branch","line":1,"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}},"locations":[{"start":{"line":1,"column":0},"end":{"line":3,"column":1}}]}},"b":{"0":[1]},"fnMap":{"0":{"name":"sum","decl":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}},"loc":{"start":{"line":1,"column":0},"end":{"line":3,"column":1}},"line":1}},"f":{"0":1}}
}
224 changes: 224 additions & 0 deletions coverage/lcov-report/base.css
Original file line number Diff line number Diff line change
@@ -0,0 +1,224 @@
body, html {
margin:0; padding: 0;
height: 100%;
}
body {
font-family: Helvetica Neue, Helvetica, Arial;
font-size: 14px;
color:#333;
}
.small { font-size: 12px; }
*, *:after, *:before {
-webkit-box-sizing:border-box;
-moz-box-sizing:border-box;
box-sizing:border-box;
}
h1 { font-size: 20px; margin: 0;}
h2 { font-size: 14px; }
pre {
font: 12px/1.4 Consolas, "Liberation Mono", Menlo, Courier, monospace;
margin: 0;
padding: 0;
-moz-tab-size: 2;
-o-tab-size: 2;
tab-size: 2;
}
a { color:#0074D9; text-decoration:none; }
a:hover { text-decoration:underline; }
.strong { font-weight: bold; }
.space-top1 { padding: 10px 0 0 0; }
.pad2y { padding: 20px 0; }
.pad1y { padding: 10px 0; }
.pad2x { padding: 0 20px; }
.pad2 { padding: 20px; }
.pad1 { padding: 10px; }
.space-left2 { padding-left:55px; }
.space-right2 { padding-right:20px; }
.center { text-align:center; }
.clearfix { display:block; }
.clearfix:after {
content:'';
display:block;
height:0;
clear:both;
visibility:hidden;
}
.fl { float: left; }
@media only screen and (max-width:640px) {
.col3 { width:100%; max-width:100%; }
.hide-mobile { display:none!important; }
}

.quiet {
color: #7f7f7f;
color: rgba(0,0,0,0.5);
}
.quiet a { opacity: 0.7; }

.fraction {
font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace;
font-size: 10px;
color: #555;
background: #E8E8E8;
padding: 4px 5px;
border-radius: 3px;
vertical-align: middle;
}

div.path a:link, div.path a:visited { color: #333; }
table.coverage {
border-collapse: collapse;
margin: 10px 0 0 0;
padding: 0;
}

table.coverage td {
margin: 0;
padding: 0;
vertical-align: top;
}
table.coverage td.line-count {
text-align: right;
padding: 0 5px 0 20px;
}
table.coverage td.line-coverage {
text-align: right;
padding-right: 10px;
min-width:20px;
}

table.coverage td span.cline-any {
display: inline-block;
padding: 0 5px;
width: 100%;
}
.missing-if-branch {
display: inline-block;
margin-right: 5px;
border-radius: 3px;
position: relative;
padding: 0 4px;
background: #333;
color: yellow;
}

.skip-if-branch {
display: none;
margin-right: 10px;
position: relative;
padding: 0 4px;
background: #ccc;
color: white;
}
.missing-if-branch .typ, .skip-if-branch .typ {
color: inherit !important;
}
.coverage-summary {
border-collapse: collapse;
width: 100%;
}
.coverage-summary tr { border-bottom: 1px solid #bbb; }
.keyline-all { border: 1px solid #ddd; }
.coverage-summary td, .coverage-summary th { padding: 10px; }
.coverage-summary tbody { border: 1px solid #bbb; }
.coverage-summary td { border-right: 1px solid #bbb; }
.coverage-summary td:last-child { border-right: none; }
.coverage-summary th {
text-align: left;
font-weight: normal;
white-space: nowrap;
}
.coverage-summary th.file { border-right: none !important; }
.coverage-summary th.pct { }
.coverage-summary th.pic,
.coverage-summary th.abs,
.coverage-summary td.pct,
.coverage-summary td.abs { text-align: right; }
.coverage-summary td.file { white-space: nowrap; }
.coverage-summary td.pic { min-width: 120px !important; }
.coverage-summary tfoot td { }

.coverage-summary .sorter {
height: 10px;
width: 7px;
display: inline-block;
margin-left: 0.5em;
background: url(sort-arrow-sprite.png) no-repeat scroll 0 0 transparent;
}
.coverage-summary .sorted .sorter {
background-position: 0 -20px;
}
.coverage-summary .sorted-desc .sorter {
background-position: 0 -10px;
}
.status-line { height: 10px; }
/* yellow */
.cbranch-no { background: yellow !important; color: #111; }
/* dark red */
.red.solid, .status-line.low, .low .cover-fill { background:#C21F39 }
.low .chart { border:1px solid #C21F39 }
.highlighted,
.highlighted .cstat-no, .highlighted .fstat-no, .highlighted .cbranch-no{
background: #C21F39 !important;
}
/* medium red */
.cstat-no, .fstat-no, .cbranch-no, .cbranch-no { background:#F6C6CE }
/* light red */
.low, .cline-no { background:#FCE1E5 }
/* light green */
.high, .cline-yes { background:rgb(230,245,208) }
/* medium green */
.cstat-yes { background:rgb(161,215,106) }
/* dark green */
.status-line.high, .high .cover-fill { background:rgb(77,146,33) }
.high .chart { border:1px solid rgb(77,146,33) }
/* dark yellow (gold) */
.status-line.medium, .medium .cover-fill { background: #f9cd0b; }
.medium .chart { border:1px solid #f9cd0b; }
/* light yellow */
.medium { background: #fff4c2; }

.cstat-skip { background: #ddd; color: #111; }
.fstat-skip { background: #ddd; color: #111 !important; }
.cbranch-skip { background: #ddd !important; color: #111; }

span.cline-neutral { background: #eaeaea; }

.coverage-summary td.empty {
opacity: .5;
padding-top: 4px;
padding-bottom: 4px;
line-height: 1;
color: #888;
}

.cover-fill, .cover-empty {
display:inline-block;
height: 12px;
}
.chart {
line-height: 0;
}
.cover-empty {
background: white;
}
.cover-full {
border-right: none !important;
}
pre.prettyprint {
border: none !important;
padding: 0 !important;
margin: 0 !important;
}
.com { color: #999 !important; }
.ignore-none { color: #999; font-weight: normal; }

.wrapper {
min-height: 100%;
height: auto !important;
height: 100%;
margin: 0 auto -48px;
}
.footer, .push {
height: 48px;
}
87 changes: 87 additions & 0 deletions coverage/lcov-report/block-navigation.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
/* eslint-disable */
var jumpToCode = (function init() {
// Classes of code we would like to highlight in the file view
var missingCoverageClasses = ['.cbranch-no', '.cstat-no', '.fstat-no'];

// Elements to highlight in the file listing view
var fileListingElements = ['td.pct.low'];

// We don't want to select elements that are direct descendants of another match
var notSelector = ':not(' + missingCoverageClasses.join('):not(') + ') > '; // becomes `:not(a):not(b) > `

// Selecter that finds elements on the page to which we can jump
var selector =
fileListingElements.join(', ') +
', ' +
notSelector +
missingCoverageClasses.join(', ' + notSelector); // becomes `:not(a):not(b) > a, :not(a):not(b) > b`

// The NodeList of matching elements
var missingCoverageElements = document.querySelectorAll(selector);

var currentIndex;

function toggleClass(index) {
missingCoverageElements
.item(currentIndex)
.classList.remove('highlighted');
missingCoverageElements.item(index).classList.add('highlighted');
}

function makeCurrent(index) {
toggleClass(index);
currentIndex = index;
missingCoverageElements.item(index).scrollIntoView({
behavior: 'smooth',
block: 'center',
inline: 'center'
});
}

function goToPrevious() {
var nextIndex = 0;
if (typeof currentIndex !== 'number' || currentIndex === 0) {
nextIndex = missingCoverageElements.length - 1;
} else if (missingCoverageElements.length > 1) {
nextIndex = currentIndex - 1;
}

makeCurrent(nextIndex);
}

function goToNext() {
var nextIndex = 0;

if (
typeof currentIndex === 'number' &&
currentIndex < missingCoverageElements.length - 1
) {
nextIndex = currentIndex + 1;
}

makeCurrent(nextIndex);
}

return function jump(event) {
if (
document.getElementById('fileSearch') === document.activeElement &&
document.activeElement != null
) {
// if we're currently focused on the search input, we don't want to navigate
return;
}

switch (event.which) {
case 78: // n
case 74: // j
goToNext();
break;
case 66: // b
case 75: // k
case 80: // p
goToPrevious();
break;
}
};
})();
window.addEventListener('keydown', jumpToCode);
Binary file added coverage/lcov-report/favicon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading