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 00000000..7115b168 Binary files /dev/null and b/server/first_graph.png differ 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