Skip to content

Commit d4a8d14

Browse files
Derivative view and other minor changes
1 parent ebd6f64 commit d4a8d14

File tree

3 files changed

+101
-5
lines changed

3 files changed

+101
-5
lines changed
Lines changed: 90 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,90 @@
1+
<template>
2+
<b-container class="pt-4">
3+
<b-form @submit="onSubmit">
4+
<b-form-group label="Fill in the following fields to calculate derivative" class="pt-2">
5+
<b-input-group prepend="function">
6+
<b-input
7+
id="integrating-function"
8+
v-model="differentiableFunction"
9+
required
10+
placeholder="a function to take derivative"
11+
/>
12+
</b-input-group>
13+
<b-input-group prepend="variable: " class="pt-1">
14+
<b-input
15+
v-model="independentVariable"
16+
required
17+
placeholder="an independent variable"
18+
/>
19+
</b-input-group>
20+
<b-input-group prepend="order" class="pt-1">
21+
<b-input
22+
v-model="order"
23+
placeholder="default is 1"
24+
type="number"
25+
/>
26+
</b-input-group>
27+
</b-form-group>
28+
29+
<b-row align-h="center">
30+
<b-col md="6" sm="12">
31+
<b-button block type="submit" variant="primary">
32+
Submit
33+
</b-button>
34+
</b-col>
35+
</b-row>
36+
</b-form>
37+
38+
<b-row align-h="center" class="pt-4" v-if="fetching">
39+
<b-spinner />
40+
</b-row>
41+
42+
<AnswerImage v-else-if="answer" :answer="answer" />
43+
44+
<b-row align-h="center" class="p-2" v-else-if="error">
45+
Something went wrong...
46+
</b-row>
47+
</b-container>
48+
</template>
49+
50+
<script>
51+
import AnswerImage from '@/components/common/AnswerImage'
52+
import {makeSimpleRequest} from '@/utils'
53+
54+
export default {
55+
components: {AnswerImage},
56+
methods: {
57+
async onSubmit (event) {
58+
event.preventDefault()
59+
const orderNumber = this.order.length > 0 ? Number(this.order) : 1
60+
const differentialOperator = (Number.isInteger(orderNumber) && orderNumber >= 2)
61+
? `d^${orderNumber}/d${this.independentVariable}^${orderNumber}`
62+
: `d/d${this.independentVariable}`
63+
const requestString = `${differentialOperator} ${this.differentiableFunction}`
64+
this.fetching = true
65+
try {
66+
const response = await makeSimpleRequest(requestString)
67+
this.answer = response
68+
this.error = Boolean(response)
69+
} catch (error) {
70+
console.log(error)
71+
this.error = true
72+
}
73+
this.fetching = false
74+
}
75+
},
76+
data () {
77+
return {
78+
differentiableFunction: '',
79+
independentVariable: 'x',
80+
order: '',
81+
answer: null,
82+
fetching: false,
83+
error: false
84+
}
85+
}
86+
}
87+
</script>
88+
89+
<style scoped>
90+
</style>

frontend/src/components/pages/Integral.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<template>
22
<b-container class="pt-4">
33
<b-form @submit="onSubmit">
4-
<b-form-group label="Enter the following fields to calculate integral" class="pt-2">
4+
<b-form-group label="Fill in the following fields to calculate integral" class="pt-2">
55
<b-input-group prepend="function">
66
<b-input
77
id="integrating-function"
@@ -83,7 +83,7 @@ export default {
8383
data () {
8484
return {
8585
integratingFunction: '',
86-
independentVariable: '',
86+
independentVariable: 'x',
8787
fromNumber: '',
8888
toNumber: '',
8989
answer: null,

frontend/src/router/index.js

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,29 @@
11
import Vue from 'vue'
22
import Router from 'vue-router'
3-
import Hello from '@/components/pages/Home'
3+
import Home from '@/components/pages/Home'
44
import NotFound from '@/components/pages/NotFound'
55
import Integral from '@/components/pages/Integral'
6+
import Derivative from '@/components/pages/Derivative'
67

78
Vue.use(Router)
89

910
const router = new Router({
1011
routes: [
1112
{
1213
path: '/',
13-
name: 'Hello',
14-
component: Hello
14+
name: 'Home',
15+
component: Home
1516
},
1617
{
1718
path: '/integral',
1819
name: 'Integral',
1920
component: Integral
2021
},
22+
{
23+
path: '/derivative',
24+
name: 'Derivative',
25+
component: Derivative
26+
},
2127
{
2228
path: '*',
2329
name: 'Not found',

0 commit comments

Comments
 (0)