Skip to content
Snippets Groups Projects
Commit 977b2227 authored by Christopher Dixon's avatar Christopher Dixon
Browse files

Removed Upload Hourly CSV.

parent c156184b
No related branches found
No related tags found
1 merge request!31Removed Upload Hourly CSV.
Pipeline #49618 passed
......@@ -18,9 +18,6 @@ export default function Home() {
case 'EN':
router.push('/admin/upload_energy');
break;
case 'HR':
router.push('/admin/upload_hourly');
break;
default:
alert('Please select a dataset');
break;
......@@ -96,7 +93,6 @@ export default function Home() {
<option selected>Choose a Dataset</option>
<option value='HE'>Annual Heat Demand</option>
<option value='EN'>Energy Efficiency Improvement Costs</option>
<option value='HR'>Half Hourly Profiles Of Heating Tech</option>
</select>
</h1>
<button
......
'use client';
import Cookies from 'js-cookie';
import React, { useState, useEffect } from 'react';
import { useRouter } from 'next/navigation';
import Signout from '@/app/components/icons/Signout';
export default function Home() {
const router = useRouter();
const [selectedFile, setSelectedFile] = useState(null);
const handleFileChange = (event) => {
setSelectedFile(event.target.files[0]);
};
const handleSubmit = async (event) => {
event.preventDefault();
if (!selectedFile) {
console.log('No file selected');
return;
}
const formData = new FormData();
formData.append('file', selectedFile);
const response = await fetch('/api/upload/hourly', {
method: 'POST',
body: formData
});
if (response.ok) {
alert('To be implemented when hourly map is complete');
router.replace('/admin/');
} else {
alert('Please try again');
}
};
useEffect(() => {
const token = Cookies.get('token');
if (!token) {
router.replace('/admin/login'); // If no token is found, redirect to login page
return;
}
}, [router]);
const handleSignout = async () => {
try {
const res = await fetch('/api/admin/logout', { method: 'GET' });
if (!res.ok) {
const error = await res.json();
throw new Error(error.message || 'Signout failed');
}
// Handle the UI change or redirection after successful signout
router.replace('/admin/login'); // Redirect to the login page
} catch (error) {
console.error(error);
}
};
return (
<div className='min-h-screen heropattern-topography-black bg-repeat dark:heropattern-topography-gray-400 dark:bg-black flex items-center justify-center'>
<div className='rounded lg shadow-md p-8 max-w-xl w-full bg-white'>
<button
onClick={handleSignout}
className='float-right text-gray-800 dark:text-black'
>
<Signout />
</button>
<h1 className='text-2xl text-black font-semibold mb-6'>
Half Hourly Heat Consumption
</h1>
<form onSubmit={handleSubmit}>
<label className='block'>
<input
type='file'
className='block w-full text-sm text-gray-800 file:me-4 file:py-2 file:px-4 file:rounded-lg file:border-0 file:text-sm file:font-semibold file:bg-gray-600 file:text-white hover:file:bg-gray-700 file:disabled:opacity-50 file:disabled:pointer-events-none dark:file:bg-gray-500 dark:hover:file:bg-gray-400 '
onChange={handleFileChange}
accept='.csv'
multiple={true}
/>
</label>
<br></br>
<div className='flex justify-center gap-2'>
{' '}
<button
type='submit'
className='p-2 bg-gray-800 text-white rounded hover:bg-gray-900'
>
Upload
</button>
<button
type='submit'
onClick={() => router.push('/admin')}
className='p-2 bg-gray-500 text-white rounded hover:bg-gray-900'
>
Cancel
</button>
<label
className='block mb-2 text-sm font-medium text-gray-900 dark:text-white'
htmlFor='multiple_files'
></label>
</div>
</form>
</div>
</div>
);
}
import { NextResponse } from 'next/server';
import { parseCSV } from '../parseCSV';
//import { PrismaClient } from '@prisma/client';
export async function POST(req) {
//const prisma = new PrismaClient();
try {
const data = await req.formData();
const file = data.get('file'); // Get the file from form data
if (!file) throw new Error('No file uploaded.');
const buffer = Buffer.from(await file.arrayBuffer());
const csvData = await parseCSV(buffer);
//To be edited when the hourly map is complete.
//const prisma = new PrismaClient();
// const deleteColumns = await prisma.nameoftable.deleteMany({});
// console.log(`Deleted ${deleteColumns.count} rows`);
// const createMany = await prisma.nameoftable.createMany({
// data: csvData
// });
// console.log(`Created ${createMany.count} rows`);
console.log(csvData);
} catch (error) {
console.log(error);
// } finally {
// await prisma.$disconnect();
}
return NextResponse.json({ message: 'File uploaded successfully' });
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment