From 695022ec1dbd7127ea8dcab4cd6879cf03918eda Mon Sep 17 00:00:00 2001 From: nechanie <104329653+nechanie@users.noreply.github.com> Date: Sat, 27 Apr 2024 17:10:34 -0700 Subject: [PATCH 1/7] Update LICENSE.txt --- LICENSE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.txt b/LICENSE.txt index 8aa2645..79b4090 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,6 +1,6 @@ MIT License -Copyright (c) [year] [fullname] +Copyright (c) [2024] [Ethan Nechanicky] Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal From 5222a7fd1b167016042da5531be9ef639ddad36c Mon Sep 17 00:00:00 2001 From: nechanie <104329653+nechanie@users.noreply.github.com> Date: Sun, 28 Apr 2024 21:10:37 -0700 Subject: [PATCH 2/7] chart bug fixes on gaussian quadrature page --- .../src/components/Display/GQLineGraph.jsx | 13 ++++++------- .../src/pages/GaussianQuadraturePage.jsx | 10 +++++----- 2 files changed, 11 insertions(+), 12 deletions(-) diff --git a/nechanickyworks.client/src/components/Display/GQLineGraph.jsx b/nechanickyworks.client/src/components/Display/GQLineGraph.jsx index 5779afe..15ffe62 100644 --- a/nechanickyworks.client/src/components/Display/GQLineGraph.jsx +++ b/nechanickyworks.client/src/components/Display/GQLineGraph.jsx @@ -4,19 +4,18 @@ import { axisClasses } from '@mui/x-charts/ChartsAxis'; const GQLineGraph = ({ dataRefs, dataVals, xLabel }) => { const yValueFormatter = (value) => { - const exponent = Math.log10(value); - return `10E${Math.round(exponent)}`; - }; - const xValueFormatter = (value) => { - return `${value.toFixed(0)}`; + return `10E${value}`; }; return ( {(dataVals.length > 0 && dataRefs.length > 0) ? ( ({ + ...series, + valueFormatter: (v) => (yValueFormatter(v)), + }))} xAxis={[{ id: "xAxisId", scaleType: 'linear', data: dataRefs, label: xLabel, tickMinStep: 1 }]} - yAxis={[{ scaleType: 'log', id: 'leftAxisId', label: "Absolute Error", valueFormatter: yValueFormatter}]} + yAxis={[{ scaleType: 'linear', id: 'leftAxisId', label: "Absolute Error", valueFormatter: yValueFormatter, max:1, min: -20}]} slotProps={{ direction: "row", position: { vertical: "top", horizontal: "middle" } }} margin={{left:90} } sx={{ diff --git a/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx b/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx index 6a324a9..0a7f596 100644 --- a/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx +++ b/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx @@ -83,27 +83,27 @@ const GaussianQuadraturePage = () => { }); } setPrimaryProgress((prevState) => { - let newState = 100 * msg.data.iteration / msg.data.toatl_iterations; + let newState = 100 * msg.data.iteration / msg.data.total_iterations; return newState; }); setNodes((prevState) => { const copy = [...prevState]; - copy.push(Math.log(parseInt(msg.data.nodes))); + copy.push(parseInt(msg.data.nodes)); return copy; }); setLegendreData((prevState) => { const copy = [...prevState]; - copy.push(parseFloat(msg.data.legendre_error)); + copy.push(Math.log10(parseFloat(msg.data.legendre_error))); return copy; }); setTrapezoidalData((prevState) => { const copy = [...prevState]; - copy.push(parseFloat(msg.data.trapezoidal_error)); + copy.push(Math.log10(parseFloat(msg.data.trapezoidal_error))); return copy; }); setSimpsonsData((prevState) => { const copy = [...prevState]; - copy.push(parseFloat(msg.data.simpsons_error)); + copy.push(Math.log10(parseFloat(msg.data.simpsons_error))); return copy; }); } From 5a4d19b3bbd556f2d67176c55ff97259ec831a4c Mon Sep 17 00:00:00 2001 From: nechanie <104329653+nechanie@users.noreply.github.com> Date: Sun, 28 Apr 2024 21:18:02 -0700 Subject: [PATCH 3/7] bug fixes on gaussian quadrature displays --- .../src/pages/GaussianQuadraturePage.jsx | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx b/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx index 0a7f596..cc98110 100644 --- a/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx +++ b/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx @@ -73,14 +73,20 @@ const GaussianQuadraturePage = () => { setShowPrimaryProgress(false); } } + if (msg.type === 'final_node_info') { + setFinalIntegral((prevState) => { + const newIntegral = msg.data.final_integral; + return newIntegral; + }); + setTrueIntegral((prevState) => { + const newIntegral = msg.data.true_itegral; + return newIntegral; + }); + } if (msg.type === 'node_info') { if (showNodeGraph === false) { setStatusMessage("Running..."); setShowNodeGraph(true); - setTrueIntegral((prevState) => { - const newIntegral = msg.data.true_itegral; - return newIntegral; - }); } setPrimaryProgress((prevState) => { let newState = 100 * msg.data.iteration / msg.data.total_iterations; From 659a86574fc9cff60c6366b4f552f3b5941d75ae Mon Sep 17 00:00:00 2001 From: nechanie <104329653+nechanie@users.noreply.github.com> Date: Sun, 28 Apr 2024 21:31:43 -0700 Subject: [PATCH 4/7] mroe minor bug fixes to logical display --- .../src/components/Display/GQLineGraph.jsx | 2 +- .../src/components/Forms/GaussQuadForm.jsx | 1 - nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx | 5 +++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/nechanickyworks.client/src/components/Display/GQLineGraph.jsx b/nechanickyworks.client/src/components/Display/GQLineGraph.jsx index 15ffe62..e859274 100644 --- a/nechanickyworks.client/src/components/Display/GQLineGraph.jsx +++ b/nechanickyworks.client/src/components/Display/GQLineGraph.jsx @@ -15,7 +15,7 @@ const GQLineGraph = ({ dataRefs, dataVals, xLabel }) => { valueFormatter: (v) => (yValueFormatter(v)), }))} xAxis={[{ id: "xAxisId", scaleType: 'linear', data: dataRefs, label: xLabel, tickMinStep: 1 }]} - yAxis={[{ scaleType: 'linear', id: 'leftAxisId', label: "Absolute Error", valueFormatter: yValueFormatter, max:1, min: -20}]} + yAxis={[{ scaleType: 'linear', id: 'leftAxisId', label: "Absolute Error", valueFormatter: yValueFormatter, min: -20}]} slotProps={{ direction: "row", position: { vertical: "top", horizontal: "middle" } }} margin={{left:90} } sx={{ diff --git a/nechanickyworks.client/src/components/Forms/GaussQuadForm.jsx b/nechanickyworks.client/src/components/Forms/GaussQuadForm.jsx index 4e1e7e7..db34116 100644 --- a/nechanickyworks.client/src/components/Forms/GaussQuadForm.jsx +++ b/nechanickyworks.client/src/components/Forms/GaussQuadForm.jsx @@ -42,7 +42,6 @@ const GaussQuadForm = ({ onSubmit, isDisabled }) => { }, []); const validateForm = () => { - console.log(polynomialFields); if (parseInt(intervalStart) >= parseInt(intervalStop)) { setFormError('Interval start must be less than interval stop.'); return false; diff --git a/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx b/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx index cc98110..eb874d8 100644 --- a/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx +++ b/nechanickyworks.client/src/pages/GaussianQuadraturePage.jsx @@ -75,11 +75,12 @@ const GaussianQuadraturePage = () => { } if (msg.type === 'final_node_info') { setFinalIntegral((prevState) => { - const newIntegral = msg.data.final_integral; + const newIntegral = parseFloat(msg.data.final_integral); return newIntegral; }); setTrueIntegral((prevState) => { - const newIntegral = msg.data.true_itegral; + console.log(msg); + const newIntegral = msg.data.true_integral; return newIntegral; }); } From 18bd45d5f2e7f8a974056650105d97a96b9dfb5b Mon Sep 17 00:00:00 2001 From: nechanie <104329653+nechanie@users.noreply.github.com> Date: Wed, 22 May 2024 08:54:45 -0700 Subject: [PATCH 5/7] Add or update the Azure App Service build and deployment workflow config --- .github/workflows/master_nechanickyworks.yml | 66 ++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 .github/workflows/master_nechanickyworks.yml diff --git a/.github/workflows/master_nechanickyworks.yml b/.github/workflows/master_nechanickyworks.yml new file mode 100644 index 0000000..7ca97c6 --- /dev/null +++ b/.github/workflows/master_nechanickyworks.yml @@ -0,0 +1,66 @@ +# Docs for the Azure Web Apps Deploy action: https://github.com/Azure/webapps-deploy +# More GitHub Actions for Azure: https://github.com/Azure/actions + +name: Build and deploy ASP.Net Core app to Azure Web App - NechanickyWorks + +on: + push: + branches: + - master + workflow_dispatch: + +jobs: + build: + runs-on: windows-latest + + steps: + - uses: actions/checkout@v4 + + - name: Set up .NET Core + uses: actions/setup-dotnet@v1 + with: + dotnet-version: '8.x' + include-prerelease: true + + - name: Build with dotnet + run: dotnet build --configuration Release + + - name: dotnet publish + run: dotnet publish -c Release -o ${{env.DOTNET_ROOT}}/myapp + + - name: Upload artifact for deployment job + uses: actions/upload-artifact@v3 + with: + name: .net-app + path: ${{env.DOTNET_ROOT}}/myapp + + deploy: + runs-on: windows-latest + needs: build + environment: + name: 'Production' + url: ${{ steps.deploy-to-webapp.outputs.webapp-url }} + permissions: + id-token: write #This is required for requesting the JWT + + steps: + - name: Download artifact from build job + uses: actions/download-artifact@v3 + with: + name: .net-app + + - name: Login to Azure + uses: azure/login@v1 + with: + client-id: ${{ secrets.AZUREAPPSERVICE_CLIENTID_0CDF52D456564523AB82225CA3B00E25 }} + tenant-id: ${{ secrets.AZUREAPPSERVICE_TENANTID_BF363FD2A507477D9A2FA880B962CCC5 }} + subscription-id: ${{ secrets.AZUREAPPSERVICE_SUBSCRIPTIONID_5CEA55A0A775407DA1320754A67929FF }} + + - name: Deploy to Azure Web App + id: deploy-to-webapp + uses: azure/webapps-deploy@v2 + with: + app-name: 'NechanickyWorks' + slot-name: 'Production' + package: . + \ No newline at end of file From b37dfa611f734bc91ec17c545da17caa9bf340d2 Mon Sep 17 00:00:00 2001 From: Ethan Nechanicky Date: Thu, 6 Jun 2024 10:39:04 -0700 Subject: [PATCH 6/7] Temp pricing page --- nechanickyworks.client/src/App.jsx | 5 +- .../src/pages/ConsultingPricePage.jsx | 109 ++++++++++++++++++ 2 files changed, 113 insertions(+), 1 deletion(-) create mode 100644 nechanickyworks.client/src/pages/ConsultingPricePage.jsx diff --git a/nechanickyworks.client/src/App.jsx b/nechanickyworks.client/src/App.jsx index 6ff82bd..c9057c8 100644 --- a/nechanickyworks.client/src/App.jsx +++ b/nechanickyworks.client/src/App.jsx @@ -26,6 +26,7 @@ import Klotee from './assets/fonts/Klotee.otf'; import Artega from './assets/fonts/Artega.otf'; import Easy from './assets/fonts/Easy.otf'; import ScrollToTopButton from './components/utils/ScrollToTopButton'; +import ConsultingPricePage from './pages/ConsultingPricePage'; const getDesignTokens = (mode) => ({ "palette": { @@ -253,7 +254,9 @@ function App() { } /> } /> } /> - } /> + } /> + } /> + {/**/} diff --git a/nechanickyworks.client/src/pages/ConsultingPricePage.jsx b/nechanickyworks.client/src/pages/ConsultingPricePage.jsx new file mode 100644 index 0000000..44707ce --- /dev/null +++ b/nechanickyworks.client/src/pages/ConsultingPricePage.jsx @@ -0,0 +1,109 @@ +import React from 'react'; +import { Container, Typography, Box, Grid, Card, CardContent } from '@mui/material'; + +const pricingTiers = [ + { + title: 'Standard Website Solution', + price: '$3,500', + features: [ + '1 Full website with no special integrated features', + 'Work with you (the customer) to design each part of the site', + 'On-call assistance/troubleshooting/support' + ] + }, + { + title: 'Website Pro Solution', + price: '$8,000', + features: [ + 'All services included in the Standard Website Solution', + '1 Special integrated feature', + 'Website designed to support future special integration additions (each integration beyond the included 1 can be added for an additional fee)' + ] + }, + { + title: 'Website Surplus Solution', + price: '$12,000', + features: [ + 'All services included in the Standard Website Solution', + '3 Special integrated features', + 'Website designed to support future special integrations (each integration beyond the included 3 can be added for an additional fee)', + '50% discount on all fees associated with additional special integrations beyond the included 3' + ] + } +]; + +const additionalInfo = [ + { + title: 'All service tiers include:', + features: [ + 'Free text/image updates on existing content', + 'Hourly fee for larger design changes: $40/hour (minimum $20)' + ] + }, + { + title: 'Special Integrations include:', + features: [ + 'External site embeddings', + 'Custom API integrations', + 'Features requiring a database' + ] + }, + { + title: 'Additional fees:', + features: [ + 'Hosting fees: $50-100/month', + 'Special integration fees (associated with paid access to APIs and additional hosting fees for custom APIs and databases)' + ] + } +]; + +const ConsultingPricePage = () => { + return ( + + + Nechanicky Solutions LLC - Service Tiers + + + {pricingTiers.map((tier, index) => ( + + + + + {tier.title} + + + {tier.price} + + + {tier.features.map((feature, i) => ( + + {feature} + + ))} + + + + + ))} + + + {additionalInfo.map((info, index) => ( + + + {info.title} + + + {info.features.map((feature, i) => ( + + {feature} + + ))} + + + ))} + + + ); +}; + +export default ConsultingPricePage; From fa69113616cb58d625c94fea3c3d200ba1c5b6c7 Mon Sep 17 00:00:00 2001 From: Ethan Nechanicky Date: Thu, 6 Jun 2024 10:51:33 -0700 Subject: [PATCH 7/7] Temp Pricing Page --- .../src/pages/ConsultingPricePage.jsx | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/nechanickyworks.client/src/pages/ConsultingPricePage.jsx b/nechanickyworks.client/src/pages/ConsultingPricePage.jsx index 44707ce..6da114a 100644 --- a/nechanickyworks.client/src/pages/ConsultingPricePage.jsx +++ b/nechanickyworks.client/src/pages/ConsultingPricePage.jsx @@ -1,5 +1,6 @@ import React from 'react'; import { Container, Typography, Box, Grid, Card, CardContent } from '@mui/material'; +import SiteFooter from '../components/Shared/Footer'; const pricingTiers = [ { @@ -59,7 +60,9 @@ const additionalInfo = [ const ConsultingPricePage = () => { return ( - + <> + + Nechanicky Solutions LLC - Service Tiers @@ -85,7 +88,8 @@ const ConsultingPricePage = () => { ))} - + + {additionalInfo.map((info, index) => ( @@ -101,8 +105,12 @@ const ConsultingPricePage = () => { ))} - - + + + + + + ); };