Press n or j to go to the next uncovered block, b, p or k for the previous block.
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 | <template> <div class="compact-parse-results"> <p class="parse-element teaser-image"> <img :src="ingredient.product?.imgSmall ?? missingProduct"> </p> <p class="ingredient-details"> <span class="parse-element quantity" :class="{ missing: !ingredient?.quantity }" >{{ ingredient?.quantity || 'qty' }}</span> <span class="parse-element unit" :class="{ missing: !ingredient?.unit }" >{{ ingredient?.unit || 'unit' }}</span> <span class="parse-element helper">of</span> <span class="parse-element name" :class="{ missing: !ingredient?.name }" >{{ ingredient?.name || 'name' }}</span>: <span class="parse-element product-name" :class="{ missing: !ingredient?.product }" > <a v-if="ingredient?.product?.link" :href="ingredient?.product?.link" target="”_blank”" > ( {{ ingredient?.product?.name }} <img :src="externalLink" style=" width: 1em; height: 1em; vertical-align: middle; margin-left: 0.5em; margin-bottom: 0.2em; " > ) </a> <a v-else-if="ingredient?.name" :href="searchlink" target="_blank" > (search?) </a> <a v-else> (product) </a> </span> </p> </div> </template> <script setup> import { computed } from 'vue' const missingProduct = new URL('@/assets/missing-product.svg', import.meta.url).toString() const externalLink = new URL('@/assets/external-link.svg', import.meta.url).toString() const props = defineProps({ ingredient: { type: Object, required: true }, }) const searchlink = computed(() => props.ingredient?.name ? 'https://www.woolworths.com.au/shop/search/products?searchTerm=' + encodeURIComponent(props.ingredient.name) : '' ) </script> <style scoped> .compact-parse-results { flex: left; display: flex; justify-content: left; text-align: left; } .parse-element { margin: auto 0; margin-right: 1em; border-bottom: solid 1px #ccc; font-weight: bold; } .parse-element.missing { color: red; border: solid red 1px; } .parse-element.teaser-image, .parse-element.helper { border: none; font-weight: normal; } .parse-element.teaser-image img { padding: 0; border: none; width: 2em; height: 2em; } .ingredient-details { flex: 1; } .quantity { color: blue; } .unit { color: green; } .name { color: black; } .product-name { color: purple; } </style> |