list of recipes wip

master
km0 3 years ago
parent c384482823
commit b7b7ba68be

@ -1,17 +1,17 @@
export default {
name: "CookbookForm",
setup() {
const { ref } = Vue;
const { ref, computed } = Vue;
const title = ref("SI18.5 - Diffractive Cookbook");
const description = ref("Compiling and sharing methods for diffractive reading.");
const nature = ref("Methods");
const logs = ref([
"Do the assignment proposed by Femke",
"While doing the assignment, make sure to track your method with the help of the following form",
"This method will be used by others and applied on different resources",
]);
const who = ref("Grr, Kamo, Kimberley");
const title = ref("");
const description = ref("");
const nature = ref("");
const logs = ref([""]);
const who = ref("");
const disabled = computed(() => {
return [title, description, nature, logs, who].some((input) => input.value == "");
});
const submit = function () {
fetch("https://hub.xpub.nl/soupboat/cookbook/", {
@ -27,7 +27,7 @@ export default {
});
};
return { title, description, nature, logs, who, submit };
return { title, description, nature, logs, who, disabled, submit };
},
template: `
<section class='recipe'>
@ -58,7 +58,7 @@ export default {
</div>
<div class="entry">
<button @click="submit" class="submit">Submit</button>
<button @click="submit" class="submit" :disabled="disabled">Submit</button>
</div>
</section>

@ -0,0 +1,38 @@
export default {
setup() {
const { ref, computed } = Vue;
const recipes = ref(null);
fetch("https://hub.xpub.nl/soupboat/cookbook/get")
.then((res) => res.json())
.then((data) => (recipes.value = data));
const style = function (index) {
return {
transform: `translate(${index * 10}px, ${index * 10}px)`,
};
};
const browse = function () {
let recipe = recipes.value.pop();
recipes.value.unshift(recipe);
};
return { recipes, style, browse };
},
template: `
<div class="cookbook">
<section class="recipe" v-for="(recipe, index) in recipes" :style="style(index)" @click="browse()">
<h3>{{recipe.title}}</h3>
<p>{{recipe.description}}</p>
<div>{{recipe.nature}}</div>
<ol>
<li v-for="log in recipe.logs">{{log}}</li>
</ol>
<p>{{recipe.who}}</p>
</section>
</div>
`,
};

@ -12,18 +12,15 @@
<div id="app">
<a href="archive" class="archive">Archive</a>
<cookbook-form></cookbook-form>
<cookbook-recipes></cookbook-recipes>
</div>
<script type="module">
import CookbookForm from "./components/CookbookForm.js";
import CookbookRecipes from "./components/CookbookRecipes.js";
const { createApp } = Vue;
createApp({
components: { CookbookForm },
data() {
return {
message: "Hello Vue!",
};
},
components: { CookbookForm, CookbookRecipes },
}).mount("#app");
</script>
</body>

@ -12,11 +12,17 @@ body {
#app {
width: 100%;
display: flex;
flex-wrap: wrap;
}
#app > * {
flex-shrink: 0;
}
section.recipe {
display: block;
margin: 48px auto;
display: inline-block;
margin: 48px;
padding: 32px;
width: 50ch;
border-radius: 0.5rem;
@ -42,6 +48,10 @@ button {
font-size: 1rem;
}
button {
cursor: pointer;
}
button.add {
display: block;
width: 48px;
@ -52,6 +62,12 @@ button.add {
border-radius: 50%;
}
button:disabled {
border: 1px dashed currentColor;
cursor: default;
opacity: 0.5;
}
textarea + textarea {
margin-top: 16px;
}
@ -76,3 +92,18 @@ label {
padding: 0 0.5em;
text-decoration: none;
}
.cookbook {
display: inline-block;
position: relative;
min-width: 50ch;
height: 100%;
}
.cookbook .recipe {
position: absolute;
top: 0;
left: 0;
background-color: #e6b0aa;
cursor: pointer;
}

Loading…
Cancel
Save