-
Notifications
You must be signed in to change notification settings - Fork 0
/
points_calculation.js
92 lines (77 loc) · 2.57 KB
/
points_calculation.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
//Created by Robert Kuliński
//Server side
var http = require('http'),
url = require('url'),
request = require('request'),
queryString = require('querystring'),
sql = require('mssql');
var config = {
user: 'admin',
password: '.admin',
server: 'localhost',
database: 'solutions',
port: 55395
};
sql.connect(config).then(function() {
console.log("Connected");
}).catch(function(err) {
if (err) {
console.log('SQL Connection Error: ' + err);
}
});
function SaveObjToSql(obj) {
var request = new sql.Request();
var query_str = 'INSERT INTO ZBIOR_ROZWIAZAN (Solutions) VALUES (\''+obj+'\')';
console.log(query_str);
request.query(query_str).then(function(recordset) {
console.log('Recordset: ' + recordset);
console.log('Affected: ' + request.rowsAffected);
}).catch(function(err) {
console.log('Request error: ' + err);
});
}
function SelectMin(p1, p2) {
var min = 0;
(p1 < p2) ? min = p1: min = p2;
return min;
}
function FindCrossPoint(equasion1_coefs, equasion2_coefs) {
var p1 = (equasion1_coefs.a0*equasion2_coefs.a2/equasion2_coefs.a0 - equasion1_coefs.a2)/(equasion1_coefs.a0*equasion2_coefs.a1/equasion2_coefs.a0 - equasion1_coefs.a1),
p2 =(equasion1_coefs.a2 -equasion1_coefs.a1*p1)/equasion1_coefs.a0;
return [p1, p2];
}
function CalculatePoints(gv) {
response_array = [];
return new Promise(function (resolve, reject) {
setTimeout(() => {
for (var i = 1, len = gv.length; i < len; i++) { //we skip target function
response_array.push({
"x1is0": [(gv[i].a2 / gv[i].a1), 0],
"x2is0": [0, (gv[i].a2 / gv[i].a0)]
});
}
response_array.push({
"p0": [0, SelectMin((gv[1].a2 / gv[1].a0), (gv[2].a2 / gv[2].a0))] ,
"p1": FindCrossPoint(gv[1], gv[2]),
"p2": [SelectMin((gv[1].a2 / gv[1].a1), (gv[2].a2 / gv[2].a1)), 0]
});
console.log(response_array[response_array.length -1]);
SaveObjToSql(JSON.stringify(response_array[response_array.length -1])); //Save to SQL server
resolve(JSON.stringify(response_array));
}, 1500);
});
}
var express = require('express'),
bodyParser = require('body-parser'),
app = express();
app.use(bodyParser.json());
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.post('/', function (request, response, next) {
var obj_response = request.body;
CalculatePoints(obj_response).then(res => response.send(res));
});
app.listen(8080);