Link copied!
Murder in the Old Town 🔪
1
🩸 Crime Scene: Find the most mysterious alley in Old Riga, where would a crime scene unfold? Snap it.
Keep the mystery vibe in the photos, if you can, add the victim!
{ const file = $refs.activityFile.files[0]; if (!file) { console.error('No file selected.'); return; } if (file.type.startsWith('image/')) { new Compressor(file, { quality: 0.8, maxWidth: 2000, maxHeight: 2000, retainExif: true, mimeType: 'image/jpeg', success(compressedFile) { Alpine.store('uploader').uploadFile(compressedFile, $wire, $data); }, error(err) { console.error('Compression error:', err.message); }, }); } else if (file.type.startsWith('video/')) { const video = document.createElement('video'); video.preload = 'metadata'; video.src = URL.createObjectURL(file); video.onloadedmetadata = () => { URL.revokeObjectURL(video.src); // clean up console.log(video.duration); if (video.duration > 30) { Alpine.store('videoUpload').file = file; Alpine.store('videoUpload').previewUrl = URL.createObjectURL(file); Alpine.store('uploader').componentId = $wire.__instance.id; $dispatch('open-modal', { modal: 'trim-activity-video', params: { activityId: 32, fileName: file.name, fileSize: file.size }, fullscreen: true }); $refs.activityFile.value = ''; // Resetting the activityFile input value since we anyway have it in the store. Reason being, so the user can select the same file again if they choose to close the modal. } else { Alpine.store('uploader').uploadFile(file, $wire, $data); } } } else { console.error('Unsupported file type:', file.type); } }" >
2
🔪 The Latvian Weapon: Spot something that could be the “murder weapon” with Latvian vibes and capture it.
{
const file = $refs.activityFile.files[0];
if (!file) {
console.error('No file selected.');
return;
}
if (file.type.startsWith('image/')) {
new Compressor(file, {
quality: 0.8,
maxWidth: 2000,
maxHeight: 2000,
retainExif: true,
mimeType: 'image/jpeg',
success(compressedFile) {
Alpine.store('uploader').uploadFile(compressedFile, $wire, $data);
},
error(err) {
console.error('Compression error:', err.message);
},
});
} else if (file.type.startsWith('video/')) {
const video = document.createElement('video');
video.preload = 'metadata';
video.src = URL.createObjectURL(file);
video.onloadedmetadata = () => {
URL.revokeObjectURL(video.src); // clean up
console.log(video.duration);
if (video.duration > 30) {
Alpine.store('videoUpload').file = file;
Alpine.store('videoUpload').previewUrl = URL.createObjectURL(file);
Alpine.store('uploader').componentId = $wire.__instance.id;
$dispatch('open-modal', {
modal: 'trim-activity-video',
params: {
activityId: 33,
fileName: file.name,
fileSize: file.size
},
fullscreen: true
});
$refs.activityFile.value = ''; // Resetting the activityFile input value since we anyway have it in the store. Reason being, so the user can select the same file again if they choose to close the modal.
} else {
Alpine.store('uploader').uploadFile(file, $wire, $data);
}
}
} else {
console.error('Unsupported file type:', file.type);
}
}"
>
3
🗝️ Hidden Evidence: Search for a suspicious object and photograph it as “evidence.”
Examples of objects: a lone glove, a strange shadow, an abandoned chair...
{ const file = $refs.activityFile.files[0]; if (!file) { console.error('No file selected.'); return; } if (file.type.startsWith('image/')) { new Compressor(file, { quality: 0.8, maxWidth: 2000, maxHeight: 2000, retainExif: true, mimeType: 'image/jpeg', success(compressedFile) { Alpine.store('uploader').uploadFile(compressedFile, $wire, $data); }, error(err) { console.error('Compression error:', err.message); }, }); } else if (file.type.startsWith('video/')) { const video = document.createElement('video'); video.preload = 'metadata'; video.src = URL.createObjectURL(file); video.onloadedmetadata = () => { URL.revokeObjectURL(video.src); // clean up console.log(video.duration); if (video.duration > 30) { Alpine.store('videoUpload').file = file; Alpine.store('videoUpload').previewUrl = URL.createObjectURL(file); Alpine.store('uploader').componentId = $wire.__instance.id; $dispatch('open-modal', { modal: 'trim-activity-video', params: { activityId: 34, fileName: file.name, fileSize: file.size }, fullscreen: true }); $refs.activityFile.value = ''; // Resetting the activityFile input value since we anyway have it in the store. Reason being, so the user can select the same file again if they choose to close the modal. } else { Alpine.store('uploader').uploadFile(file, $wire, $data); } } } else { console.error('Unsupported file type:', file.type); } }" >
4
🕵️ Detective’s Path: Find a location and take a photo clue.
Locations: House, abandoned house, hospital, museum, cocktail bar....if you can, add a detective!
{ const file = $refs.activityFile.files[0]; if (!file) { console.error('No file selected.'); return; } if (file.type.startsWith('image/')) { new Compressor(file, { quality: 0.8, maxWidth: 2000, maxHeight: 2000, retainExif: true, mimeType: 'image/jpeg', success(compressedFile) { Alpine.store('uploader').uploadFile(compressedFile, $wire, $data); }, error(err) { console.error('Compression error:', err.message); }, }); } else if (file.type.startsWith('video/')) { const video = document.createElement('video'); video.preload = 'metadata'; video.src = URL.createObjectURL(file); video.onloadedmetadata = () => { URL.revokeObjectURL(video.src); // clean up console.log(video.duration); if (video.duration > 30) { Alpine.store('videoUpload').file = file; Alpine.store('videoUpload').previewUrl = URL.createObjectURL(file); Alpine.store('uploader').componentId = $wire.__instance.id; $dispatch('open-modal', { modal: 'trim-activity-video', params: { activityId: 35, fileName: file.name, fileSize: file.size }, fullscreen: true }); $refs.activityFile.value = ''; // Resetting the activityFile input value since we anyway have it in the store. Reason being, so the user can select the same file again if they choose to close the modal. } else { Alpine.store('uploader').uploadFile(file, $wire, $data); } } } else { console.error('Unsupported file type:', file.type); } }" >
5
⏳ Final Suspect: Take the photo of the suspect! Could be your friend.
{
const file = $refs.activityFile.files[0];
if (!file) {
console.error('No file selected.');
return;
}
if (file.type.startsWith('image/')) {
new Compressor(file, {
quality: 0.8,
maxWidth: 2000,
maxHeight: 2000,
retainExif: true,
mimeType: 'image/jpeg',
success(compressedFile) {
Alpine.store('uploader').uploadFile(compressedFile, $wire, $data);
},
error(err) {
console.error('Compression error:', err.message);
},
});
} else if (file.type.startsWith('video/')) {
const video = document.createElement('video');
video.preload = 'metadata';
video.src = URL.createObjectURL(file);
video.onloadedmetadata = () => {
URL.revokeObjectURL(video.src); // clean up
console.log(video.duration);
if (video.duration > 30) {
Alpine.store('videoUpload').file = file;
Alpine.store('videoUpload').previewUrl = URL.createObjectURL(file);
Alpine.store('uploader').componentId = $wire.__instance.id;
$dispatch('open-modal', {
modal: 'trim-activity-video',
params: {
activityId: 36,
fileName: file.name,
fileSize: file.size
},
fullscreen: true
});
$refs.activityFile.value = ''; // Resetting the activityFile input value since we anyway have it in the store. Reason being, so the user can select the same file again if they choose to close the modal.
} else {
Alpine.store('uploader').uploadFile(file, $wire, $data);
}
}
} else {
console.error('Unsupported file type:', file.type);
}
}"
>