From ad12d05a6dcbc37af191b06fb48ff35ac925d137 Mon Sep 17 00:00:00 2001 From: Lev Oleynik Date: Sat, 3 Feb 2024 15:49:42 -0800 Subject: [PATCH] frontend and backend setup --- .vscode/settings.json | 5 ++ .../pages/MLProjects/_components/analysis.js | 2 +- .../pages/MLProjects/_components/graph.js | 2 +- .../pages/MLProjects/_components/models.js | 2 +- frontend/pages/_components/indexMSG.js | 40 +++++++++++ frontend/pages/about.js | 5 ++ frontend/pages/index.js | 10 +++ package-lock.json | 6 ++ server/first_graph.png | Bin 0 -> 77365 bytes server/server.py | 68 ++++++++++++++++++ 10 files changed, 137 insertions(+), 3 deletions(-) create mode 100644 .vscode/settings.json create mode 100644 frontend/pages/_components/indexMSG.js create mode 100644 package-lock.json create mode 100644 server/first_graph.png diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000..00c37e56 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,5 @@ +{ + "cSpell.words": [ + "jsonify" + ] +} \ No newline at end of file diff --git a/frontend/pages/MLProjects/_components/analysis.js b/frontend/pages/MLProjects/_components/analysis.js index 5e7c20cf..29e4154f 100644 --- a/frontend/pages/MLProjects/_components/analysis.js +++ b/frontend/pages/MLProjects/_components/analysis.js @@ -8,7 +8,7 @@ dotenv.config(); const Analysis = () => { const [imageUrl, setImageUrl] = useState(''); - const local_server_endpoint = "" // TODO + const local_server_endpoint = "http://localhost:8080" // TODO useEffect(() => { const fetchImage = async () => { try { diff --git a/frontend/pages/MLProjects/_components/graph.js b/frontend/pages/MLProjects/_components/graph.js index 4be55a34..28e081be 100644 --- a/frontend/pages/MLProjects/_components/graph.js +++ b/frontend/pages/MLProjects/_components/graph.js @@ -6,7 +6,7 @@ import axios from "axios"; const Graph = () => { const [imageUrl, setImageUrl] = useState(''); - const local_server_endpoint = "" // TODO + const local_server_endpoint = "http://localhost:8080" // TODO useEffect(() => { const fetchImage = async () => { try { diff --git a/frontend/pages/MLProjects/_components/models.js b/frontend/pages/MLProjects/_components/models.js index 8e150100..197e8e3d 100644 --- a/frontend/pages/MLProjects/_components/models.js +++ b/frontend/pages/MLProjects/_components/models.js @@ -7,7 +7,7 @@ import axios from "axios"; const Models = ({ props }) => { // const [modelData, setModelData] = useState(null); const [modelData, setModelData] = useState(null); - const local_server_endpoint = "" // TODO + const local_server_endpoint = "http://localhost:8080" // TODO useEffect(() => { const fetchModelData = async () => { diff --git a/frontend/pages/_components/indexMSG.js b/frontend/pages/_components/indexMSG.js new file mode 100644 index 00000000..e3e618e2 --- /dev/null +++ b/frontend/pages/_components/indexMSG.js @@ -0,0 +1,40 @@ +// 'message': "Hello world!", +// 'people': ["Aa", "Bb", "Cc"] + + +const IndexMSG = () => { + const [msg, setMsg] = useState(null); + + console.log("HERE"); + useEffect(() => { + const fetchMsg = async () => { + try { + const res = await axios.get("http://localhost:8080"); + console.log("RES", res); + setMsg(res.data); + } catch (error) { + console.log(error); + } + } + fetchMsg(); + }, []); + + return ( +
+

DUMMY MESSAGE

+ {/* {msg ?

{msg}

:

LOADING...

} */} + {msg ? ( +
+

{msg.message}

+ {msg.people.map((person, index) => ( +

{person}

+ ))} +
+ ) : ( +

LOADING...

+ )} +
+ ) +} + +export default IndexMSG; \ No newline at end of file diff --git a/frontend/pages/about.js b/frontend/pages/about.js index e69de29b..3e77332a 100644 --- a/frontend/pages/about.js +++ b/frontend/pages/about.js @@ -0,0 +1,5 @@ +export default function About() { + return( +
this is the About Page
+ ) +} \ No newline at end of file diff --git a/frontend/pages/index.js b/frontend/pages/index.js index e69de29b..501a78ad 100644 --- a/frontend/pages/index.js +++ b/frontend/pages/index.js @@ -0,0 +1,10 @@ +import IndexMSG from "./_components/indexMSG"; + +export default function Home() { + return ( +
+

HOME

+ +
+ ) +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000..45d6ecf5 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,6 @@ +{ + "name": "AISCWorkshop2024-LevOleynik", + "lockfileVersion": 3, + "requires": true, + "packages": {} +} diff --git a/server/first_graph.png b/server/first_graph.png new file mode 100644 index 0000000000000000000000000000000000000000..7115b168a497f34323aaa5c766ad1c337e308547 GIT binary patch literal 77365 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 P{!AKYpm%=EqAmXmT%NS_ literal 0 HcmV?d00001 diff --git a/server/server.py b/server/server.py index fd5540fd..5739f0f0 100644 --- a/server/server.py +++ b/server/server.py @@ -5,3 +5,71 @@ from eda import analysis from flask_restful import Api, Resource +app = Flask(__name__) + +CORS(app) +api = Api(app) + +all_models = ['logistic_regression', 'k_nearest_neighbors', 'support_vector_machine', 'decision_tree', 'random_forest', 'gradient_boosting', 'naive_bayes', 'neural_network', 'ada_boost', 'xg_boost'] +@app.after_request +def after_request(response): + response.headers.add('Access-Control-Allow-Origin', '*') + response.headers.add('Access-Control-Allow-Headers', 'Content-Type,Authorization') + response.headers.add('Access-Control-Allow-Methods', 'GET,PUT,POST,DELETE,OPTIONS') + return response + +@app.route("/", methods=['GET']) +def return_home(): + return jsonify({ + 'message': "Hello world!", + 'people': ["Aa", "Bb", "Cc"] + }) + +@app.route('/first_image', methods = ['GET']) +def get_image(): + result = run_algorithm(all_models) + return send_file('first_graph.png', mimetype='image/png') + +@app.route('/analysis', methods = ['GET']) +def analyse(): + # analysis() + return send_file('analysis.png', mimetype='image/png') + +@app.route('/models', methods = ['GET', 'POST']) +def get_models(): + if request.method == 'GET': + result = run_algorithm(all_models) + return jsonify({ + 'models': result + }) + + if request.method == 'POST': + try: + data = request.json + models_to_run = data.get('models') + result = run_algorithm(models_to_run) + return jsonify({ + 'models': result + }), 200 + except Exception as e: + return jsonify({ + 'error': 'Invalid request', + 'details': str(e) + }), 400 + + +# @app.route('/download_first_graph') +# def download_first_graph(): +# run_algorithm() # Generate the graphs +# return send_file('first_graph.png', as_attachment=True) + +# @app.route('/download_second_graph') +# def download_second_graph(): +# run_algorithm() # Generate the graphs +# return send_file('second_graph.png', as_attachment=True) + +if __name__ == "__main__": + app.run(debug=True, port=8080) + +# def create_app(): +# return app \ No newline at end of file