tango-app-api-trax 3.8.15 → 3.8.16-nike
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/src/controllers/download.controller.js +19 -19
- package/src/controllers/gallery.controller.js +76 -25
- package/src/controllers/handlebar-helper.js +1 -0
- package/src/controllers/internalTrax.controller.js +1022 -15
- package/src/controllers/mobileTrax.controller.js +164 -66
- package/src/controllers/teaxFlag.controller.js +5 -5
- package/src/controllers/trax.controller.js +6 -2
- package/src/hbs/flag.hbs +248 -248
- package/src/hbs/login-otp.hbs +943 -943
- package/src/hbs/recurringFlag.hbs +250 -0
- package/src/hbs/template.hbs +47 -32
- package/src/hbs/visit-checklist.hbs +83 -36
- package/src/hbs/weeklyWrap.hbs +218 -0
- package/src/routes/internalTraxApi.router.js +4 -0
- package/src/services/recurringFlagTracker.service.js +33 -0
- package/src/utils/visitChecklistPdf.utils.js +6 -5
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html>
|
|
3
|
+
|
|
4
|
+
<head>
|
|
5
|
+
<meta charset="utf-8">
|
|
6
|
+
<meta http-equiv="x-ua-compatible" content="ie=edge">
|
|
7
|
+
<title>Recurring Flags Detected</title>
|
|
8
|
+
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
9
|
+
<style type="text/css">
|
|
10
|
+
body { font-family: "Inter", sans-serif !important; }
|
|
11
|
+
body, table, td, a { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100%; }
|
|
12
|
+
table, td { mso-table-rspace: 0pt; mso-table-lspace: 0pt; }
|
|
13
|
+
img { -ms-interpolation-mode: bicubic; }
|
|
14
|
+
a[x-apple-data-detectors] {
|
|
15
|
+
font-family: "inherit" !important;
|
|
16
|
+
font-size: inherit !important;
|
|
17
|
+
font-weight: inherit !important;
|
|
18
|
+
line-height: inherit !important;
|
|
19
|
+
color: inherit !important;
|
|
20
|
+
text-decoration: none !important;
|
|
21
|
+
}
|
|
22
|
+
body { width: 100% !important; height: 100% !important; padding: 0 !important; margin: 0 !important; }
|
|
23
|
+
table { border-collapse: collapse !important; }
|
|
24
|
+
a { color: #1a82e2; }
|
|
25
|
+
img { height: auto; line-height: 100%; text-decoration: none; border: 0; outline: none; }
|
|
26
|
+
.flagText { font-size: 16px; font-weight: 600; line-height: 24px; text-align: left; }
|
|
27
|
+
.rfTable { width: 100%; border-collapse: collapse; }
|
|
28
|
+
.rfTable th, .rfTable td {
|
|
29
|
+
border: 1px solid #E2E8F0;
|
|
30
|
+
padding: 8px 12px;
|
|
31
|
+
font-size: 13px;
|
|
32
|
+
text-align: left;
|
|
33
|
+
color: #202B3C;
|
|
34
|
+
}
|
|
35
|
+
.rfTable th { background-color: #F1F5F9; font-weight: 600; }
|
|
36
|
+
.highlight { font-size: 14px; color: #202B3C; line-height: 22px; }
|
|
37
|
+
</style>
|
|
38
|
+
</head>
|
|
39
|
+
|
|
40
|
+
<body style="background-color: #dbe5ea;">
|
|
41
|
+
<div class="preheader" style="display: none; max-width: 0; max-height: 0; overflow: hidden; font-size: 1px; line-height: 1px; color: #fff; opacity: 0;">
|
|
42
|
+
Recurring Flags Detected
|
|
43
|
+
</div>
|
|
44
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="padding-left:10px;padding-right:10px">
|
|
45
|
+
<tr>
|
|
46
|
+
<td bgcolor="#dbe5ea" style="padding:32px 10px 0 10px">
|
|
47
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 680px;" align="center">
|
|
48
|
+
<tr>
|
|
49
|
+
<td style="margin-top: 0px;margin-bottom: 0px;font-size: 16px;line-height: 24px;background-color: #ffffff;padding-left: 18px;padding-right: 24px;padding-top: 24px;padding-bottom: 24px;">
|
|
50
|
+
<p style="margin-top: 0px;margin-bottom: 0px;">
|
|
51
|
+
<a href="https://tangoeye.ai/" style="text-decoration: none;outline: none;color: #ffffff;">
|
|
52
|
+
<img src="https://devtangoretail-api.tangoeye.ai/logo.png" width="200" height="100" alt="TangoEye"
|
|
53
|
+
style="-ms-interpolation-mode: bicubic;vertical-align: middle;border: 0;line-height: 100%;height: auto;outline: none;text-decoration: none;">
|
|
54
|
+
</a>
|
|
55
|
+
</p>
|
|
56
|
+
</td>
|
|
57
|
+
</tr>
|
|
58
|
+
<tr>
|
|
59
|
+
<td align="left" bgcolor="#ffffff" style="padding-left: 30px;padding-right: 24px;font-size: 14px; line-height: 24px;">
|
|
60
|
+
<p style="width: 624px;height: 0px;border: 1px solid #CBD5E1;flex: none;order: 1;flex-grow: 0;"></p>
|
|
61
|
+
</td>
|
|
62
|
+
</tr>
|
|
63
|
+
|
|
64
|
+
{{!-- Intro line --}}
|
|
65
|
+
<tr>
|
|
66
|
+
<td style="background-color: #ffffff;padding-left: 30px;padding-right: 24px;padding-bottom: 10px;">
|
|
67
|
+
<div style="margin-top: 0px;margin-bottom: 0px;font-size: 16px;line-height: 28px;color: #82899a;">
|
|
68
|
+
<span style="font-weight: 400;color: #121A26;line-height: 140%;">
|
|
69
|
+
Hi,<br/>
|
|
70
|
+
{{#if data.isMultiStoreSingleChecklist}}
|
|
71
|
+
Recurring flags has been detected across multiple {{data.subjectLabelPluralLower}} in recent <b>{{data.checklistName}}</b> on recent submissions, exceeding the configured threshold of {{data.threshold}} occurrences.
|
|
72
|
+
{{else if data.isMultiStore}}
|
|
73
|
+
Recurring flags has been detected across multiple {{data.subjectLabelPluralLower}} and across multiple checklists on recent submissions, exceeding the configured threshold of {{data.threshold}} occurrences.
|
|
74
|
+
{{else if data.isMultiChecklist}}
|
|
75
|
+
A Recurring flags has been identified for {{data.subjectLabelLower}} <b>{{data.subjectName}}</b> across multiple checklists on recent submissions, exceeding the configured threshold of {{data.threshold}} occurrences.
|
|
76
|
+
{{else}}
|
|
77
|
+
A recurring flag has been identified for {{data.subjectLabelLower}} <b>{{data.subjectName}}</b>.where a question has been flagged multiple times in recent {{data.checklistName}} submissions, exceeding the configured threshold of {{data.threshold}} occurrences.
|
|
78
|
+
{{/if}}
|
|
79
|
+
</span>
|
|
80
|
+
</div>
|
|
81
|
+
</td>
|
|
82
|
+
</tr>
|
|
83
|
+
|
|
84
|
+
{{!-- Multi-store: Key Highlights --}}
|
|
85
|
+
{{#if data.isMultiStore}}
|
|
86
|
+
<tr>
|
|
87
|
+
<td style="background-color: #ffffff;padding-left: 30px;padding-right: 24px;padding-bottom: 10px;">
|
|
88
|
+
<div class="highlight">
|
|
89
|
+
<b>Key Highlights:</b>
|
|
90
|
+
<ul style="margin:8px 0 0 0;padding-left:18px;">
|
|
91
|
+
<li>Total {{data.subjectLabelPlural}} with Recurring Flags: {{data.highlights.totalSubjects}}</li>
|
|
92
|
+
{{#unless data.isMultiStoreSingleChecklist}}
|
|
93
|
+
<li>Total Checklists with Recurring Flags: {{data.highlights.totalChecklists}}</li>
|
|
94
|
+
{{/unless}}
|
|
95
|
+
<li>Total Recurring Flags: {{data.highlights.totalFlags}}</li>
|
|
96
|
+
</ul>
|
|
97
|
+
</div>
|
|
98
|
+
</td>
|
|
99
|
+
</tr>
|
|
100
|
+
{{/if}}
|
|
101
|
+
|
|
102
|
+
{{!-- Section header for details --}}
|
|
103
|
+
<tr>
|
|
104
|
+
<td style="background-color: #ffffff;padding-left: 30px;padding-right: 24px;padding-bottom: 10px;">
|
|
105
|
+
<div style="font-size: 16px;line-height: 28px;color: #121A26;font-weight:600;">
|
|
106
|
+
{{#if data.isMultiStore}}
|
|
107
|
+
Details of the Recurring Flags are as follows:
|
|
108
|
+
{{else if data.isMultiChecklist}}
|
|
109
|
+
Details of the Recurring Flags from {{data.subjectLabel}} {{data.subjectName}} are as follows:
|
|
110
|
+
{{else}}
|
|
111
|
+
Details of the Recurring Flags from checklist are as follows:
|
|
112
|
+
{{/if}}
|
|
113
|
+
</div>
|
|
114
|
+
</td>
|
|
115
|
+
</tr>
|
|
116
|
+
</table>
|
|
117
|
+
</td>
|
|
118
|
+
</tr>
|
|
119
|
+
|
|
120
|
+
{{!-- ============ Single store + single checklist body ============ --}}
|
|
121
|
+
{{#unless data.isMultiChecklist}}{{#unless data.isMultiStore}}
|
|
122
|
+
<tr>
|
|
123
|
+
<td align="center" bgcolor="#dbe5ea" style="padding:0 10px 0 10px">
|
|
124
|
+
<table align="center" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 680px;">
|
|
125
|
+
<tr bgcolor="#ffffff">
|
|
126
|
+
<td class="flagText" style="padding-left:30px;line-height: 24px;color:#000000">{{data.subjectLabel}} Name :</td>
|
|
127
|
+
<td></td><td></td>
|
|
128
|
+
<td class="flagText">{{data.subjectName}}</td>
|
|
129
|
+
</tr>
|
|
130
|
+
<tr bgcolor="#ffffff">
|
|
131
|
+
<td class="flagText" style="padding-left:30px;line-height: 24px;">Checklist Name :</td>
|
|
132
|
+
<td></td><td></td>
|
|
133
|
+
<td class="flagText">{{data.checklistName}}</td>
|
|
134
|
+
</tr>
|
|
135
|
+
<tr bgcolor="#ffffff">
|
|
136
|
+
<td class="flagText" style="padding-left:30px;line-height: 24px;">Last Submitted By :</td>
|
|
137
|
+
<td></td><td></td>
|
|
138
|
+
<td class="flagText">{{data.lastSubmittedBy}}</td>
|
|
139
|
+
</tr>
|
|
140
|
+
<tr bgcolor="#ffffff">
|
|
141
|
+
<td class="flagText" style="padding-left:30px;line-height: 24px;">Last Submission Date :</td>
|
|
142
|
+
<td></td><td></td>
|
|
143
|
+
<td class="flagText">{{data.lastSubmissionDate}}</td>
|
|
144
|
+
</tr>
|
|
145
|
+
<tr bgcolor="#ffffff">
|
|
146
|
+
<td class="flagText" style="padding-left:30px;line-height: 24px;">No of Flags :</td>
|
|
147
|
+
<td></td><td></td>
|
|
148
|
+
<td class="flagText">{{data.totalFlags}} (Question Flags: {{data.flagCount}}, Run AI Flags: {{data.runAICount}})</td>
|
|
149
|
+
</tr>
|
|
150
|
+
</table>
|
|
151
|
+
</td>
|
|
152
|
+
</tr>
|
|
153
|
+
{{/unless}}{{/unless}}
|
|
154
|
+
|
|
155
|
+
{{!-- ============ Tabular body for multi-checklist or multi-store ============ --}}
|
|
156
|
+
{{#if data.showTable}}
|
|
157
|
+
<tr>
|
|
158
|
+
<td align="center" bgcolor="#dbe5ea" style="padding:0 10px 0 10px">
|
|
159
|
+
<table align="center" bgcolor="#ffffff" border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 680px;">
|
|
160
|
+
<tr>
|
|
161
|
+
<td style="padding:10px 30px 10px 30px;background-color:#ffffff;">
|
|
162
|
+
<table class="rfTable">
|
|
163
|
+
<thead>
|
|
164
|
+
<tr>
|
|
165
|
+
{{#if data.isMultiStore}}{{#unless data.isUserCoverage}}<th>{{data.subjectLabel}} Name</th>{{/unless}}{{/if}}
|
|
166
|
+
{{#unless data.isMultiStoreSingleChecklist}}<th>Checklist Name</th>{{/unless}}
|
|
167
|
+
<th>Last Submitted By</th>
|
|
168
|
+
<th>Last Submission Date</th>
|
|
169
|
+
<th>Total Recurring Flags</th>
|
|
170
|
+
</tr>
|
|
171
|
+
</thead>
|
|
172
|
+
<tbody>
|
|
173
|
+
{{#each data.rows}}
|
|
174
|
+
<tr>
|
|
175
|
+
{{#if ../data.isMultiStore}}{{#unless ../data.isUserCoverage}}<td>{{this.subjectName}}</td>{{/unless}}{{/if}}
|
|
176
|
+
{{#unless ../data.isMultiStoreSingleChecklist}}<td>{{this.checklistName}}</td>{{/unless}}
|
|
177
|
+
<td>{{this.lastSubmittedBy}}</td>
|
|
178
|
+
<td>{{this.lastSubmissionDate}}</td>
|
|
179
|
+
<td>{{this.totalFlags}} (Question Flags: {{this.flagCount}}, Run AI Flags: {{this.runAICount}})</td>
|
|
180
|
+
</tr>
|
|
181
|
+
{{/each}}
|
|
182
|
+
</tbody>
|
|
183
|
+
</table>
|
|
184
|
+
</td>
|
|
185
|
+
</tr>
|
|
186
|
+
</table>
|
|
187
|
+
</td>
|
|
188
|
+
</tr>
|
|
189
|
+
{{/if}}
|
|
190
|
+
|
|
191
|
+
{{!-- View Flags button --}}
|
|
192
|
+
<tr>
|
|
193
|
+
<td align="center" bgcolor="#dbe5ea" style="padding:0 10px 0 10px">
|
|
194
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 680px;">
|
|
195
|
+
<tr>
|
|
196
|
+
<td bgcolor="#ffffff" style="padding: 20px;padding-top:15px;padding-left:30px;">
|
|
197
|
+
<table border="0" cellpadding="0" cellspacing="0">
|
|
198
|
+
<tr>
|
|
199
|
+
<td align="center" bgcolor="#00A3FF" style="border-radius: 6px;height:50px;">
|
|
200
|
+
<a href="{{data.domain}}" target="_blank"
|
|
201
|
+
style="display: inline-block; padding: 16px 36px;font-size: 16px; color: #ffffff; text-decoration: none; border-radius: 6px;">
|
|
202
|
+
View Flags
|
|
203
|
+
</a>
|
|
204
|
+
</td>
|
|
205
|
+
</tr>
|
|
206
|
+
</table>
|
|
207
|
+
</td>
|
|
208
|
+
</tr>
|
|
209
|
+
</table>
|
|
210
|
+
</td>
|
|
211
|
+
</tr>
|
|
212
|
+
|
|
213
|
+
{{!-- Attachment hint when full data exceeds inline limit --}}
|
|
214
|
+
{{#if data.hasAttachment}}
|
|
215
|
+
<tr>
|
|
216
|
+
<td align="center" bgcolor="#dbe5ea" style="padding:0 10px 0 10px">
|
|
217
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 680px;">
|
|
218
|
+
<tr>
|
|
219
|
+
<td bgcolor="#ffffff" style="padding:0 30px 15px 30px;font-size:13px;color:#202B3C;">
|
|
220
|
+
Refer to the attached file for a detailed breakdown of the Full report
|
|
221
|
+
</td>
|
|
222
|
+
</tr>
|
|
223
|
+
</table>
|
|
224
|
+
</td>
|
|
225
|
+
</tr>
|
|
226
|
+
{{/if}}
|
|
227
|
+
|
|
228
|
+
<tr>
|
|
229
|
+
<td align="center" bgcolor="#dbe5ea" style="padding:0 10px 32px 10px;">
|
|
230
|
+
<table border="0" cellpadding="0" cellspacing="0" width="100%" style="max-width: 680px;">
|
|
231
|
+
<tr>
|
|
232
|
+
<td style="background-color: #ffffff;padding-left: 30px;padding-right: 24px;padding-top:5px">
|
|
233
|
+
<div style="font-size: 12px;color: #202B3C;font-weight: 400;line-height: 150%;">
|
|
234
|
+
<p>If you have any questions or need assistance, please reach out to us at support@tangotech.co.in.</p>
|
|
235
|
+
</div>
|
|
236
|
+
</td>
|
|
237
|
+
</tr>
|
|
238
|
+
<tr>
|
|
239
|
+
<td style="background-color: #ffffff;padding-left: 30px;padding-right: 24px;padding-bottom:15px">
|
|
240
|
+
<div style="font-size: 12px;color: #202B3C;font-weight: 400;line-height: 150%;">
|
|
241
|
+
<p>© Tango Eye. All rights reserved.</p>
|
|
242
|
+
</div>
|
|
243
|
+
</td>
|
|
244
|
+
</tr>
|
|
245
|
+
</table>
|
|
246
|
+
</td>
|
|
247
|
+
</tr>
|
|
248
|
+
</table>
|
|
249
|
+
</body>
|
|
250
|
+
</html>
|
package/src/hbs/template.hbs
CHANGED
|
@@ -136,6 +136,10 @@
|
|
|
136
136
|
.headertitle.submittedText {
|
|
137
137
|
width:116px !important;
|
|
138
138
|
}
|
|
139
|
+
|
|
140
|
+
.flagged {
|
|
141
|
+
color:red
|
|
142
|
+
}
|
|
139
143
|
</style>
|
|
140
144
|
</head>
|
|
141
145
|
|
|
@@ -197,21 +201,24 @@
|
|
|
197
201
|
{{#each data.questionAnswers}}
|
|
198
202
|
<div class="pdfcontent">
|
|
199
203
|
<div style="padding-bottom:20px;">
|
|
200
|
-
<
|
|
201
|
-
<
|
|
202
|
-
|
|
204
|
+
<table style="width:100%;border-collapse:collapse;">
|
|
205
|
+
<tr>
|
|
206
|
+
<td class="sectionname" style="white-space:nowrap;padding-right:8px;width:1%;">{{sectionName}}</td>
|
|
207
|
+
<td style="width:99%;"><hr class="horizondal-line" style="margin:0;border:none;border-top:1px solid #98A2B3;"/></td>
|
|
208
|
+
</tr>
|
|
209
|
+
</table>
|
|
203
210
|
</div>
|
|
204
211
|
{{#each questions}}
|
|
205
212
|
<div style="padding-bottom:20px">
|
|
206
213
|
{{#if userAnswer.length}}
|
|
207
214
|
<span class="question">{{qno}}.</span> <span class="question">{{qname}}</span>
|
|
208
215
|
{{#neq questionReferenceImage ''}}
|
|
209
|
-
<div class="Reference"><span>Reference Image</span><br>
|
|
216
|
+
<div class="Reference"><span>Question Reference Image</span><br>
|
|
210
217
|
<img src="{{questionReferenceImage}}" width="200" height="180" />
|
|
211
218
|
</div>
|
|
212
219
|
{{/neq}}
|
|
213
220
|
{{#if multiQuestionReferenceImage.length}}
|
|
214
|
-
<div class="Reference"><span>Reference
|
|
221
|
+
<div class="Reference"><span>Question Reference Image</span><br>
|
|
215
222
|
{{#each multiQuestionReferenceImage}}
|
|
216
223
|
<img src="{{this}}" width="200" height="180" />
|
|
217
224
|
{{/each}}
|
|
@@ -221,7 +228,7 @@
|
|
|
221
228
|
<div class="px-4 answer">
|
|
222
229
|
{{#if (includes ../../../data.validateType ../answerType)}}
|
|
223
230
|
{{#eq sopFlag true }}
|
|
224
|
-
<span id="agreed
|
|
231
|
+
<span id="agreed flagged">{{answer}}</span><br>
|
|
225
232
|
{{/eq}}
|
|
226
233
|
{{#eq sopFlag false }}
|
|
227
234
|
<span id="agreed">{{answer}}</span><br>
|
|
@@ -229,15 +236,19 @@
|
|
|
229
236
|
{{#eq validation true}}
|
|
230
237
|
<table style="width:100%">
|
|
231
238
|
<tr>
|
|
232
|
-
{{#
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
<
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
239
|
+
{{#neq ../answerType 'image/video'}}
|
|
240
|
+
{{#neq ../answerType 'multipleImage'}}
|
|
241
|
+
{{#if multiReferenceImage.length}}
|
|
242
|
+
<td style="width:50%;vertical-align:top">
|
|
243
|
+
<div class="Reference"><span>Reference Image</span><br>
|
|
244
|
+
{{#each multiReferenceImage}}
|
|
245
|
+
<img src="{{this}}" width="200" height="180" />
|
|
246
|
+
{{/each}}
|
|
247
|
+
</div>
|
|
248
|
+
</td>
|
|
249
|
+
{{/if}}
|
|
250
|
+
{{/neq}}
|
|
251
|
+
{{/neq}}
|
|
241
252
|
<td style="width:50%;vertical-align:top">
|
|
242
253
|
{{#eq validationType 'Capture Image'}}
|
|
243
254
|
<div class="Reference"><span>Uploaded Image</span><br>
|
|
@@ -248,7 +259,7 @@
|
|
|
248
259
|
<a href="{{validationAnswer}}" target="_blank" style="text-decoration: underline;color:#0085D2" id="agreed">{{validationAnswer}}</a><br>
|
|
249
260
|
{{/eq}}
|
|
250
261
|
{{#eq validationType 'Descriptive Answer'}}
|
|
251
|
-
{{validationAnswer}}
|
|
262
|
+
<span class="{{#if this.sopFlag}}flagged{{/if}}">Validation Answer: {{validationAnswer}}</span>
|
|
252
263
|
{{/eq}}
|
|
253
264
|
{{#eq validationType 'Capture Multiple Image with description'}}
|
|
254
265
|
<div class="Reference"><span>Uploaded Image</span><br>
|
|
@@ -270,15 +281,15 @@
|
|
|
270
281
|
{{!-- {{#each ../answers}} --}}
|
|
271
282
|
<table style="width:100%">
|
|
272
283
|
<tr>
|
|
273
|
-
{{#
|
|
284
|
+
{{#if multiReferenceImage.length}}
|
|
274
285
|
<td style="width:50%">
|
|
275
|
-
|
|
276
|
-
|
|
286
|
+
<div class="Reference"><span>Reference Image</span><br>
|
|
287
|
+
{{#each multiReferenceImage}}
|
|
277
288
|
<img src="{{this}}" width="200" height="180" />
|
|
278
|
-
|
|
279
|
-
|
|
289
|
+
{{/each}}
|
|
290
|
+
</div>
|
|
280
291
|
</td>
|
|
281
|
-
{{/
|
|
292
|
+
{{/if}}
|
|
282
293
|
<td style="width:50%">
|
|
283
294
|
<div class="Reference"><span>Uploaded Image</span><br>
|
|
284
295
|
<img src="{{answer}}" width="200" height="180" />
|
|
@@ -292,15 +303,15 @@
|
|
|
292
303
|
{{!-- {{#each ../answers}} --}}
|
|
293
304
|
<table style="width:100%">
|
|
294
305
|
<tr>
|
|
295
|
-
{{#
|
|
306
|
+
{{#if multiReferenceImage.length}}
|
|
296
307
|
<td style="width:50%">
|
|
297
|
-
{{#each multiReferenceImage}}
|
|
298
308
|
<div class="Reference"><span>Reference Image</span><br>
|
|
309
|
+
{{#each multiReferenceImage}}
|
|
299
310
|
<img src="{{this}}" width="200" height="180" />
|
|
311
|
+
{{/each}}
|
|
300
312
|
</div>
|
|
301
|
-
{{/each}}
|
|
302
313
|
</td>
|
|
303
|
-
{{/
|
|
314
|
+
{{/if}}
|
|
304
315
|
<td style="width:50%">
|
|
305
316
|
<div class="Reference"><span>Uploaded Image</span><br>
|
|
306
317
|
<img src="{{answer}}" width="200" height="180" />
|
|
@@ -314,13 +325,15 @@
|
|
|
314
325
|
{{!-- {{#each ../answers}} --}}
|
|
315
326
|
<table style="width:100%">
|
|
316
327
|
<tr>
|
|
317
|
-
{{#
|
|
328
|
+
{{#if multiReferenceImage.length}}
|
|
318
329
|
<td style="width:50%">
|
|
319
330
|
<div class="Reference"><span>Reference Image</span><br>
|
|
320
|
-
|
|
331
|
+
{{#each multiReferenceImage}}
|
|
332
|
+
<img src="{{this}}" width="200" height="180" />
|
|
333
|
+
{{/each}}
|
|
321
334
|
</div>
|
|
322
335
|
</td>
|
|
323
|
-
{{/
|
|
336
|
+
{{/if}}
|
|
324
337
|
{{#eq answerType 'image'}}
|
|
325
338
|
<td style="width:50%">
|
|
326
339
|
<div class="Reference"><span>Uploaded Image</span><br>
|
|
@@ -341,13 +354,15 @@
|
|
|
341
354
|
{{!-- {{#each ../answers}} --}}
|
|
342
355
|
<table style="width:100%">
|
|
343
356
|
<tr>
|
|
344
|
-
{{#
|
|
357
|
+
{{#if multiReferenceImage.length}}
|
|
345
358
|
<td style="width:50%">
|
|
346
359
|
<div class="Reference"><span>Reference Image</span><br>
|
|
347
|
-
|
|
360
|
+
{{#each multiReferenceImage}}
|
|
361
|
+
<img src="{{this}}" width="200" height="180" />
|
|
362
|
+
{{/each}}
|
|
348
363
|
</div>
|
|
349
364
|
</td>
|
|
350
|
-
{{/
|
|
365
|
+
{{/if}}
|
|
351
366
|
<td style="width:50%">
|
|
352
367
|
<div class="Reference"><span>Uploaded Image</span><br>
|
|
353
368
|
<img src="{{answer}}" width="200" height="180" />
|
|
@@ -70,6 +70,8 @@
|
|
|
70
70
|
.q-answer-text.flagged{color:#a32d2d}
|
|
71
71
|
.q-answer-media{margin-top:8px}
|
|
72
72
|
.q-answer-media img,.q-answer-media video,.q-answer-item td img{display:block;width:200px;height:180px;object-fit:cover;border-radius:6px;margin-bottom:6px}
|
|
73
|
+
.img-grid{display:flex;flex-wrap:wrap;gap:8px}
|
|
74
|
+
.img-grid img{margin-bottom:0}
|
|
73
75
|
.q-answer-link{font-size:12px;color:#0085D2;text-decoration:underline;word-break:break-all}
|
|
74
76
|
.q-answer-caption{font-size:11px;color:#666;margin-bottom:4px}
|
|
75
77
|
.q-answer-remarks{font-size:11px;color:#666;margin-top:6px;white-space:pre-line}
|
|
@@ -111,7 +113,7 @@
|
|
|
111
113
|
<div class="cover-summary">
|
|
112
114
|
<div class="cover-sum-row"><span class="cover-sum-label">No. of questions</span><span class="cover-sum-colon">:</span><span class="cover-sum-val">{{numQuestions}}</span></div>
|
|
113
115
|
<div class="cover-sum-row"><span class="cover-sum-label">No. of flags</span><span class="cover-sum-colon">:</span><span class="cover-sum-val">{{numFlags}}</span></div>
|
|
114
|
-
<div class="cover-sum-row"><span class="cover-sum-label">AI Breached</span><span class="cover-sum-colon">:</span><span class="cover-sum-val">{{aiBreached}}</span></div>
|
|
116
|
+
{{!-- <div class="cover-sum-row"><span class="cover-sum-label">AI Breached</span><span class="cover-sum-colon">:</span><span class="cover-sum-val">{{aiBreached}}</span></div> --}}
|
|
115
117
|
<div class="cover-sum-row"><span class="cover-sum-label">Submitted By</span><span class="cover-sum-colon">:</span><span class="cover-sum-val">{{submittedBy}}</span></div>
|
|
116
118
|
<div class="cover-sum-row"><span class="cover-sum-label">Country</span><span class="cover-sum-colon">:</span><span class="cover-sum-val">{{country}}</span></div>
|
|
117
119
|
</div>
|
|
@@ -181,16 +183,18 @@
|
|
|
181
183
|
</div>
|
|
182
184
|
{{#if this.questionReferenceImage}}
|
|
183
185
|
<div class="q-answer-media">
|
|
184
|
-
<div class="q-answer-caption">Reference Image</div>
|
|
186
|
+
<div class="q-answer-caption">Question Reference Image</div>
|
|
185
187
|
<img src="{{this.questionReferenceImage}}" alt="Reference Image" />
|
|
186
188
|
</div>
|
|
187
189
|
{{/if}}
|
|
188
190
|
{{#if this.multiQuestionReferenceImage.length}}
|
|
189
191
|
<div class="q-answer-media">
|
|
190
|
-
<div class="q-answer-caption">Reference Images</div>
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
192
|
+
<div class="q-answer-caption">Question Reference Images</div>
|
|
193
|
+
<div class="img-grid">
|
|
194
|
+
{{#each this.multiQuestionReferenceImage}}
|
|
195
|
+
<img src="{{this}}" alt="Reference Image" />
|
|
196
|
+
{{/each}}
|
|
197
|
+
</div>
|
|
194
198
|
</div>
|
|
195
199
|
{{/if}}
|
|
196
200
|
{{!-- <span class="q-ans {{#if this.isYes}}ans-yes{{else}}{{#if this.isNo}}ans-no{{/if}}{{/if}}">{{#if this.isYes}}✓ Yes{{else}}{{#if this.isNo}}✗ No{{else}}{{this.answerDisplay}}{{/if}}{{/if}}</span> --}}
|
|
@@ -211,29 +215,83 @@
|
|
|
211
215
|
</div>
|
|
212
216
|
{{/if}}
|
|
213
217
|
{{/eq}}
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
{{#if this.
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
</
|
|
218
|
+
{{#eq this.validationDisplayType 'text'}}
|
|
219
|
+
{{#if this.validationAnswer}}
|
|
220
|
+
<div class="q-answer-text {{#if this.sopFlag}}flagged{{/if}}">validation Answer: {{this.validationAnswer}}</div>
|
|
221
|
+
{{/if}}
|
|
222
|
+
{{/eq}}
|
|
223
|
+
{{#eq this.validationDisplayType 'video'}}
|
|
224
|
+
{{#if this.validationAnswer}}
|
|
225
|
+
<div class="q-answer-caption">Validation Video</div>
|
|
226
|
+
<a class="q-answer-link" href="{{this.validationAnswer}}" target="_blank">{{this.validationAnswer}}</a>
|
|
223
227
|
{{/if}}
|
|
224
|
-
|
|
225
|
-
|
|
228
|
+
{{/eq}}
|
|
229
|
+
|
|
230
|
+
<table style="width:100%;margin-top:8px;table-layout:fixed"><tr>
|
|
226
231
|
<td style="width:50%;vertical-align:top;padding-right:8px">
|
|
227
|
-
|
|
228
|
-
|
|
232
|
+
{{#neq ../answerType 'image/video'}}
|
|
233
|
+
{{#neq ../answerType 'multipleImage'}}
|
|
234
|
+
{{#if this.multiReferenceImage.length}}
|
|
235
|
+
<div class="q-answer-media">
|
|
236
|
+
<div class="q-answer-caption">Reference Images</div>
|
|
237
|
+
{{#each this.multiReferenceImage}}
|
|
238
|
+
<img src="{{this}}" alt="Reference Image" />
|
|
239
|
+
{{/each}}
|
|
240
|
+
</div>
|
|
241
|
+
{{else}}
|
|
242
|
+
{{#if this.referenceImage}}
|
|
243
|
+
<div class="q-answer-media">
|
|
244
|
+
<div class="q-answer-caption">Reference Image</div>
|
|
245
|
+
<img src="{{this.referenceImage}}" alt="Reference Image" />
|
|
246
|
+
</div>
|
|
247
|
+
{{else}}
|
|
248
|
+
{{#eq this.answerType 'image'}}
|
|
249
|
+
{{#if this.answer}}
|
|
250
|
+
<div class="q-answer-media">
|
|
251
|
+
<div class="q-answer-caption">Uploaded Image</div>
|
|
252
|
+
<img src="{{this.answer}}" alt="Uploaded Image" />
|
|
253
|
+
</div>
|
|
254
|
+
{{/if}}
|
|
255
|
+
{{/eq}}
|
|
256
|
+
{{/if}}
|
|
257
|
+
{{/if}}
|
|
258
|
+
{{else}}
|
|
259
|
+
{{#eq this.answerType 'image'}}
|
|
260
|
+
{{#if this.answer}}
|
|
261
|
+
<div class="q-answer-media">
|
|
262
|
+
<div class="q-answer-caption">Uploaded Image</div>
|
|
263
|
+
<img src="{{this.answer}}" alt="Uploaded Image" />
|
|
264
|
+
</div>
|
|
265
|
+
{{/if}}
|
|
266
|
+
{{/eq}}
|
|
267
|
+
{{/neq}}
|
|
268
|
+
{{else}}
|
|
269
|
+
{{#eq this.answerType 'image'}}
|
|
270
|
+
{{#if this.answer}}
|
|
271
|
+
<div class="q-answer-media">
|
|
272
|
+
<div class="q-answer-caption">Uploaded Image</div>
|
|
273
|
+
<img src="{{this.answer}}" alt="Uploaded Image" />
|
|
274
|
+
</div>
|
|
275
|
+
{{/if}}
|
|
276
|
+
{{/eq}}
|
|
277
|
+
{{/neq}}
|
|
229
278
|
</td>
|
|
230
|
-
|
|
231
|
-
{{/unless}}
|
|
232
|
-
<td style="vertical-align:top">
|
|
279
|
+
<td style="width:50%;vertical-align:top;padding-left:8px">
|
|
233
280
|
{{#eq this.answerType 'image'}}
|
|
234
281
|
{{#if this.answer}}
|
|
235
|
-
|
|
236
|
-
|
|
282
|
+
{{#neq ../answerType 'image/video'}}
|
|
283
|
+
{{#neq ../answerType 'multipleImage'}}
|
|
284
|
+
{{#if this.multiReferenceImage.length}}
|
|
285
|
+
<div class="q-answer-caption">Uploaded Image</div>
|
|
286
|
+
<img src="{{this.answer}}" alt="Uploaded Image" />
|
|
287
|
+
{{else}}
|
|
288
|
+
{{#if this.referenceImage}}
|
|
289
|
+
<div class="q-answer-caption">Uploaded Image</div>
|
|
290
|
+
<img src="{{this.answer}}" alt="Uploaded Image" />
|
|
291
|
+
{{/if}}
|
|
292
|
+
{{/if}}
|
|
293
|
+
{{/neq}}
|
|
294
|
+
{{/neq}}
|
|
237
295
|
{{/if}}
|
|
238
296
|
{{/eq}}
|
|
239
297
|
{{#if this.validation}}
|
|
@@ -242,18 +300,7 @@
|
|
|
242
300
|
<div class="q-answer-caption">Validation Image</div>
|
|
243
301
|
<img src="{{this.validationAnswer}}" alt="Validation Image" />
|
|
244
302
|
{{/if}}
|
|
245
|
-
{{/eq}}
|
|
246
|
-
{{#eq this.validationDisplayType 'video'}}
|
|
247
|
-
{{#if this.validationAnswer}}
|
|
248
|
-
<div class="q-answer-caption">Validation Video</div>
|
|
249
|
-
<a class="q-answer-link" href="{{this.validationAnswer}}" target="_blank">{{this.validationAnswer}}</a>
|
|
250
|
-
{{/if}}
|
|
251
|
-
{{/eq}}
|
|
252
|
-
{{#eq this.validationDisplayType 'text'}}
|
|
253
|
-
{{#if this.validationAnswer}}
|
|
254
|
-
<div class="q-answer-text">{{this.validationAnswer}}</div>
|
|
255
|
-
{{/if}}
|
|
256
|
-
{{/eq}}
|
|
303
|
+
{{/eq}}
|
|
257
304
|
{{#eq this.validationDisplayType 'multiImage'}}
|
|
258
305
|
{{#if this.validationImage.length}}
|
|
259
306
|
<div class="q-answer-caption">Validation Image</div>
|