36
36
small
37
37
caption-top
38
38
responsive
39
- />
39
+ >
40
+ <template #cell (results)="row">
41
+ <template v-if =" row .item .results " >
42
+ <div v-if =" 'error' in row.item.results" >
43
+ {{ row.item.results.error }}
44
+ </div >
45
+ <div v-else >
46
+ <b-table
47
+ class =" results"
48
+ :items =" row.item.results"
49
+ :fields =" ['score', 'fullUrl']"
50
+ small
51
+ responsive
52
+ >
53
+ <template #cell (fullUrl)="result">
54
+ <img
55
+ :src =" CLOUDINARY_URL + result.item.fullUrl"
56
+ class =" img-fluid"
57
+ />
58
+ </template >
59
+ </b-table ></div
60
+ ></template >
61
+ </template >
62
+ </b-table >
40
63
</div >
41
64
</template >
42
65
@@ -54,25 +77,37 @@ type Example = {
54
77
isCover: boolean ;
55
78
};
56
79
80
+ type Results =
81
+ | {
82
+ error: string ;
83
+ }
84
+ | {
85
+ score: number ;
86
+ fullUrl: string ;
87
+ }[];
88
+
89
+ const CLOUDINARY_URL =
90
+ " https://res.cloudinary.com/dl7hskxab/image/upload/inducks-covers/" ;
91
+
57
92
const examples = [
58
93
{
59
- url: " https://res.cloudinary.com/dl7hskxab/image/upload/inducks-covers/ webusers/webusers/2018/07/fr_aljm_011a_001.jpg" ,
94
+ url: ` ${ CLOUDINARY_URL } webusers/webusers/2018/07/fr_aljm_011a_001.jpg` ,
60
95
isCover: true ,
61
96
},
62
97
{
63
- url: " https://res.cloudinary.com/dl7hskxab/image/upload/inducks-covers/ webusers/webusers/2014/02/fr_tp_0024a_001.jpg" ,
98
+ url: ` ${ CLOUDINARY_URL } webusers/webusers/2014/02/fr_tp_0024a_001.jpg` ,
64
99
isCover: true ,
65
100
},
66
101
{
67
- url: " https://res.cloudinary.com/dl7hskxab/image/upload/inducks-covers/ webusers/webusers/2011/01/fr_tp_0013a_001.jpg" ,
102
+ url: ` ${ CLOUDINARY_URL } webusers/webusers/2011/01/fr_tp_0013a_001.jpg` ,
68
103
isCover: true ,
69
104
},
70
105
{
71
- url: " https://res.cloudinary.com/dl7hskxab/image/upload/inducks-covers/ webusers/webusers/2024/05/eg_mg_0149p053_001.jpg" ,
106
+ url: ` ${ CLOUDINARY_URL } webusers/webusers/2024/05/eg_mg_0149p053_001.jpg` ,
72
107
isCover: false ,
73
108
},
74
109
{
75
- url: " https://res.cloudinary.com/dl7hskxab/image/upload/inducks-covers/ webusers/webusers/2021/06/yu_mzc_983c_001.jpg" ,
110
+ url: ` ${ CLOUDINARY_URL } webusers/webusers/2021/06/yu_mzc_983c_001.jpg` ,
76
111
isCover: false ,
77
112
},
78
113
] as const ;
@@ -82,9 +117,9 @@ const models = ref<
82
117
modelData : " covers" | " story first pages" ;
83
118
indexSize ?: number | string ;
84
119
getIndexSize : () => Promise < number | string > ;
85
- run : (base64 : string ) => Promise < string > ;
120
+ run : (base64 : string ) => Promise < Results > ;
86
121
time ?: string ;
87
- results ?: string ;
122
+ results ?: Results ;
88
123
}[]
89
124
> ([
90
125
{
@@ -101,17 +136,12 @@ const models = ref<
101
136
const searchResults = await coverIdEvents .searchFromCover (base64 );
102
137
103
138
return " error" in searchResults
104
- ? searchResults .errorDetails || " Error"
105
- : JSON .stringify (
106
- searchResults .covers .map (({ issuecode , score }) => ({
107
- issuecode ,
108
- score ,
109
- })),
110
- );
139
+ ? { error: searchResults .errorDetails || " Error" }
140
+ : searchResults .covers ;
111
141
} catch (error ) {
112
142
return typeof error === " object" && " errorDetails" in error !
113
- ? (error .errorDetails as string ) || " Error"
114
- : " Error" ;
143
+ ? { error: (error .errorDetails as string ) || " Error" }
144
+ : { error: " Error" } ;
115
145
}
116
146
},
117
147
},
@@ -125,14 +155,8 @@ const models = ref<
125
155
true ,
126
156
);
127
157
if (" error" in searchResults ) {
128
- return searchResults .error ! ;
129
- } else
130
- return JSON .stringify (
131
- searchResults .results .map (({ entrycode , score }) => ({
132
- entrycode ,
133
- score ,
134
- })),
135
- );
158
+ return { error: searchResults .error ! };
159
+ } else return searchResults .results ;
136
160
},
137
161
},
138
162
{
@@ -145,14 +169,8 @@ const models = ref<
145
169
false ,
146
170
);
147
171
if (" error" in searchResults ) {
148
- return searchResults .error ! ;
149
- } else
150
- return JSON .stringify (
151
- searchResults .results .map (({ entrycode , score }) => ({
152
- entrycode ,
153
- score ,
154
- })),
155
- );
172
+ return { error: searchResults .error ! };
173
+ } else return searchResults .results ;
156
174
},
157
175
},
158
176
]);
@@ -214,6 +232,12 @@ onMounted(async () => {
214
232
</script >
215
233
216
234
<style scoped lang="scss">
235
+ :deep(.results ) {
236
+ td {
237
+ width : 50% ;
238
+ }
239
+ }
240
+
217
241
img {
218
242
cursor : pointer ;
219
243
height : 100px ;
0 commit comments