This commit is contained in:
Dan Elbert 2018-04-14 15:04:08 -05:00
parent 642a9b362c
commit 248700778f
10 changed files with 151 additions and 39 deletions

View File

@ -1,5 +1,8 @@
<template>
<span :title="fullString">{{ friendlyString }}</span>
<span>
<input v-if="useInput" class="text" type="text" readonly :value="friendlyString" />
<span v-else :title="fullString">{{ friendlyString }}</span>
</span>
</template>
<script>
@ -23,6 +26,12 @@
required: false,
type: Boolean,
default: true
},
useInput: {
required: false,
type: Boolean,
default: false
}
},

View File

@ -1,11 +1,64 @@
<template>
<div>
<h1 class="title">[Log Entry] {{log.recipe.name}}</h1>
<div class="columns">
<div class="column is-half-tablet">
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label">Date</label>
</div>
<div class="field-body">
<div class="field">
<app-date-time use-input :show-time="false" :date-time="log.date"></app-date-time>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label">Rating</label>
</div>
<div class="field-body">
<div class="field">
<app-rating readonly :value="log.rating"></app-rating>
</div>
</div>
</div>
<div class="field is-horizontal">
<div class="field-label is-normal">
<label class="label">Notes</label>
</div>
<div class="field-body">
<div class="field">
<textarea readonly class="textarea" :value="log.notes"></textarea>
</div>
</div>
</div>
</div>
</div>
<recipe-show :recipe="log.recipe"></recipe-show>
</div>
</template>
<script>
export default {
import RecipeShow from "./RecipeShow";
export default {
props: {
log: {
required: true,
type: Object
}
},
components: {
RecipeShow
}
}
</script>

View File

@ -4,11 +4,6 @@
Loading...
</div>
<div v-else>
<h1 class="title">{{ recipe.name }}</h1>
<div class="subtitle tags">
<span v-for="tag in recipe.tags" :key="tag" class="tag is-medium">{{tag}}</span>
</div>
<hr>
<div class="level is-mobile">
<div class="level-item">
{{ recipe.total_time}} ({{recipe.active_time}})

View File

@ -1,11 +1,48 @@
<template>
<div>
<div v-if="log === null">
Loading...
</div>
<div v-else>
<log-show :log="log"></log-show>
</div>
<div class="buttons">
<router-link v-if="isLoggedIn" class="button" :to="{name: 'edit_log', params: { id: logId }}">Edit</router-link>
<router-link class="button" to="/logs">Back</router-link>
</div>
</div>
</template>
<script>
export default {
import LogShow from "./LogShow";
import { mapState } from "vuex";
import api from "../lib/Api";
export default {
data: function () {
return {
log: null
}
},
computed: {
...mapState({
logId: state => state.route.params.id,
})
},
created() {
this.loadResource(
api.getLog(this.logId)
.then(data => { this.log = data; return data; })
);
},
components: {
LogShow
}
}
</script>

View File

@ -13,7 +13,7 @@
</tr>
<tr v-for="l in logs" :key="l.id">
<td>{{l.recipe.name}}</td>
<td> <router-link :to="{name: 'log', params: {id: l.id}}">{{l.recipe.name}}</router-link></td>
<td><app-date-time :date-time="l.date" :show-time="false"></app-date-time> </td>
<td><app-rating :value="l.rating" readonly></app-rating></td>
<td>{{l.notes}}</td>

View File

@ -4,6 +4,11 @@
Loading...
</div>
<div v-else>
<h1 class="title">{{ recipe.name }}</h1>
<div class="subtitle tags">
<span v-for="tag in recipe.tags" :key="tag" class="tag is-medium">{{tag}}</span>
</div>
<hr>
<recipe-show :recipe="recipe"></recipe-show>
</div>

View File

@ -282,6 +282,10 @@ class Api {
return this.get("/logs", params);
}
getLog(id) {
return this.get("/logs/" + id);
}
buildLogParams(log) {
const recParams = this.buildRecipeParams(log.recipe);

View File

@ -0,0 +1,6 @@
json.extract! @log, :id, :date, :rating, :notes
json.recipe do
json.partial! 'recipes/recipe', recipe: @log.recipe
end

View File

@ -0,0 +1,32 @@
json.extract! recipe, :id, :name, :rating, :yields, :total_time, :active_time, :created_at, :updated_at, :step_text
json.rendered_steps MarkdownProcessor.render(recipe.step_text)
json.tags recipe.tag_names
json.ingredients recipe.recipe_ingredients do |ri|
json.extract! ri, :id, :ingredient_id, :display_name, :name, :quantity, :units, :preparation, :sort_order
json.ingredient do
if ri.ingredient.nil?
json.null!
else
json.extract! ri.ingredient, :id, :name, :density, :notes
end
end
json._destroy false
end
json.nutrition_data do
json.errors recipe.nutrition_data.errors
json.nutrients NutritionData::NUTRIENTS.select { |_, v| v.present? } do |name, label|
json.name name
json.label label
json.value recipe.nutrition_data.send(name)
end
end

View File

@ -1,34 +1,5 @@
json.cache_root! [@recipe] do
json.extract! @recipe, :id, :name, :rating, :yields, :total_time, :active_time, :created_at, :updated_at, :step_text
json.rendered_steps MarkdownProcessor.render(@recipe.step_text)
json.tags @recipe.tag_names
json.ingredients @recipe.recipe_ingredients do |ri|
json.extract! ri, :id, :ingredient_id, :display_name, :name, :quantity, :units, :preparation, :sort_order
json.ingredient do
if ri.ingredient.nil?
json.null!
else
json.extract! ri.ingredient, :id, :name, :density, :notes
end
end
json._destroy false
end
json.nutrition_data do
json.errors @recipe.nutrition_data.errors
json.nutrients NutritionData::NUTRIENTS.select { |_, v| v.present? } do |name, label|
json.name name
json.label label
json.value @recipe.nutrition_data.send(name)
end
end
json.partial! 'recipe', recipe: @recipe
end