mirror of
https://gitlab.com/MrFry/mrfrys-node-server
synced 2025-04-01 20:24:18 +02:00
Classes to seperate module, eslint formatting
This commit is contained in:
parent
b2b0e862dd
commit
f30f4d4fc5
8 changed files with 468 additions and 413 deletions
238
utils/actions.js
238
utils/actions.js
|
@ -34,182 +34,7 @@ const qaFile = './public/qa'
|
|||
|
||||
var logger = require('../utils/logger.js')
|
||||
var utils = require('../utils/utils.js')
|
||||
|
||||
class Question {
|
||||
constructor (q, a, i) {
|
||||
this.Q = q
|
||||
this.A = a
|
||||
this.I = i
|
||||
}
|
||||
toString () {
|
||||
var r = '?' + this.Q + '\n!' + this.A
|
||||
if (this.I) { r += '\n>' + this.I }
|
||||
return r
|
||||
}
|
||||
HasQuestion () {
|
||||
return this.Q !== undefined
|
||||
}
|
||||
HasAnswer () {
|
||||
return this.A !== undefined
|
||||
}
|
||||
HasImage () {
|
||||
return this.I !== undefined
|
||||
}
|
||||
IsComplete () {
|
||||
return this.HasQuestion() && this.HasAnswer()
|
||||
}
|
||||
Compare (q2, i) {
|
||||
if (typeof q2 === 'string') {
|
||||
var qmatchpercent = Question.CompareString(this.Q, q2)
|
||||
|
||||
if (i == undefined || i.length == 0) { return qmatchpercent } else {
|
||||
if (this.HasImage()) {
|
||||
const imatchpercent = this.HasImage() ? Question.CompareString(this.I.join(' '), i.join(' '))
|
||||
: 0
|
||||
return (qmatchpercent + imatchpercent) / 2
|
||||
} else {
|
||||
qmatchpercent -= 30
|
||||
if (qmatchpercent < 0) { return 0 } else { return qmatchpercent }
|
||||
}
|
||||
}
|
||||
} else {
|
||||
const qmatchpercent = Question.CompareString(this.Q, q2.Q)
|
||||
const amatchpercent = Question.CompareString(this.A, q2.A)
|
||||
if (this.I !== undefined) {
|
||||
const imatchpercent = this.I === undefined ? Question.CompareString(this.I.join(' '), q2.I.join(
|
||||
' ')) : 0
|
||||
return (qmatchpercent + amatchpercent + imatchpercent) / 3
|
||||
} else {
|
||||
return (qmatchpercent + amatchpercent) / 2
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// static CompareString (s1, s2) {
|
||||
// // if (s1 == undefined || s2 == undefined)
|
||||
// // return 0;
|
||||
// s1 = SimplifyStringForComparison(s1).split(' ')
|
||||
// s2 = SimplifyStringForComparison(s2).split(' ')
|
||||
// var match = 0
|
||||
// for (var i = 0; i < s1.length; i++) {
|
||||
// if (s2.includes(s1[i])) { match++ }
|
||||
// }
|
||||
// var percent = Math.round(((match / s1.length) * 100).toFixed(2)) // matched words percent
|
||||
// var lengthDifference = Math.abs(s2.length - s1.length)
|
||||
// percent -= lengthDifference * 3
|
||||
// if (percent < 0) { percent = 0 }
|
||||
// return percent
|
||||
// }
|
||||
}
|
||||
|
||||
class Subject {
|
||||
constructor (n) {
|
||||
this.Name = n
|
||||
this.Questions = []
|
||||
}
|
||||
get length () {
|
||||
return this.Questions.length
|
||||
}
|
||||
AddQuestion (q) {
|
||||
this.Questions.push(q)
|
||||
}
|
||||
Search (q, img) {
|
||||
const minMatchAmmount = 90
|
||||
var r = []
|
||||
for (let i = 0; i < this.length; i++) {
|
||||
let percent = this.Questions[i].Compare(q, img)
|
||||
if (percent > minMatchAmmount) {
|
||||
r.push({
|
||||
q: this.Questions[i],
|
||||
match: percent
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
for (let i = 0; i < r.length; i++) {
|
||||
for (var j = i; j < r.length; j++) {
|
||||
if (r[i].match < r[j].match) {
|
||||
var tmp = r[i]
|
||||
r[i] = r[j]
|
||||
r[j] = tmp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return r
|
||||
}
|
||||
toString () {
|
||||
var r = []
|
||||
for (var i = 0; i < this.Questions.length; i++) { r.push(this.Questions[i].toString()) }
|
||||
return '+' + this.Name + '\n' + r.join('\n')
|
||||
}
|
||||
}
|
||||
|
||||
class QuestionDB {
|
||||
constructor () {
|
||||
this.Subjects = []
|
||||
}
|
||||
get length () {
|
||||
return this.Subjects.length
|
||||
}
|
||||
// get activeIndexes () {
|
||||
// var r = []
|
||||
// for (var i = 0; i < this.length; i++) {
|
||||
// if (GM_getValue('Is' + i + 'Active')) {
|
||||
// r.push(i)
|
||||
// }
|
||||
// }
|
||||
// return r
|
||||
// }
|
||||
// GetIfActive (ind) {
|
||||
// return GM_getValue('Is' + ind + 'Active')
|
||||
// }
|
||||
// ChangeActive (i, value) {
|
||||
// GM_setValue('Is' + i + 'Active', !!value)
|
||||
// }
|
||||
AddQuestion (subj, q) {
|
||||
var i = 0
|
||||
while (i < this.Subjects.length && this.Subjects[i].Name !== subj) { i++ }
|
||||
if (i < this.Subjects.length) { this.Subjects[i].AddQuestion(q) } else {
|
||||
const n = new Subject(subj)
|
||||
n.AddQuestion(q)
|
||||
this.Subjects.push(n)
|
||||
}
|
||||
}
|
||||
Search (q, img) {
|
||||
var r = []
|
||||
for (let i = 0; i < this.length; i++) {
|
||||
if (this.GetIfActive(i)) { r = r.concat(this.Subjects[i].Search(q, img)) }
|
||||
}
|
||||
|
||||
for (let i = 0; i < r.length; i++) {
|
||||
for (var j = i; j < r.length; j++) {
|
||||
if (r[i].match < r[j].match) {
|
||||
var tmp = r[i]
|
||||
r[i] = r[j]
|
||||
r[j] = tmp
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return r
|
||||
}
|
||||
AddSubject (subj) {
|
||||
var i = 0
|
||||
while (i < this.length && subj.Name !== this.Subjects[i].Name) { i++ }
|
||||
|
||||
if (i < this.length) {
|
||||
this.Subjects.concat(subj.Questions)
|
||||
} else {
|
||||
this.Subjects.push(subj)
|
||||
}
|
||||
}
|
||||
toString () {
|
||||
var r = []
|
||||
for (var i = 0; i < this.Subjects.length; i++) { r.push(this.Subjects[i].toString()) }
|
||||
return r.join('\n\n')
|
||||
}
|
||||
}
|
||||
const classes = require('./classes.js')
|
||||
|
||||
function Process (d, file) {
|
||||
try {
|
||||
|
@ -260,11 +85,11 @@ function ProcessIncomingRequest (data) {
|
|||
data = LoadJSON(dfile)
|
||||
var allQuestions = []
|
||||
for (let i = 0; i < d.allData.length; i++) {
|
||||
allQuestions.push(new Question(d.allData[i].Q, d.allData[i].A, d.allData[i].I))
|
||||
allQuestions.push(new classes.Question(d.allData[i].Q, d.allData[i].A, d.allData[i].I))
|
||||
}
|
||||
var questions = []
|
||||
for (let i = 0; i < d.data.length; i++) {
|
||||
let q = new Question(d.data[i].Q, d.data[i].A, d.data[i].I)
|
||||
let q = new classes.Question(d.data[i].Q, d.data[i].A, d.data[i].I)
|
||||
questions.push(q)
|
||||
data.AddQuestion(d.subj, q)
|
||||
}
|
||||
|
@ -328,7 +153,7 @@ function SetupData (data) {
|
|||
var pdata = data.split('<#>')
|
||||
if (pdata.length <= 0) {
|
||||
logger.Log('Data length is zero !', logger.GetColor('redbg'))
|
||||
throw 'No data recieved!'
|
||||
throw new Error('No data recieved!')
|
||||
}
|
||||
|
||||
var d = {} // parsed data
|
||||
|
@ -336,7 +161,7 @@ function SetupData (data) {
|
|||
var td = pdata[i].split('<=>')
|
||||
if (td.length === 2) { d[td[0]] = td[1] } else {
|
||||
logger.Log('Invalid parameter!', logger.GetColor('redbg'))
|
||||
throw 'Invalid parameter recieved!'
|
||||
throw new Error('Invalid parameter recieved!')
|
||||
}
|
||||
}
|
||||
return d
|
||||
|
@ -358,9 +183,9 @@ function CheckData (data) {
|
|||
function NLoad (resource) {
|
||||
var resultLog = []
|
||||
var allCount = 0
|
||||
if (resource === undefined) { throw 'A megadott adat undefined!' }
|
||||
if (resource === undefined) { throw new Error('A megadott adat undefined!') }
|
||||
resource = resource.split('\n') // splitting by enters
|
||||
if (resource.length === 1) { throw 'A megadott adat nem sorokból áll!' }
|
||||
if (resource.length === 1) { throw new Error('A megadott adat nem sorokból áll!') }
|
||||
var data = [] // initializing data declared at the begining
|
||||
|
||||
function AddNewSubj (name) {
|
||||
|
@ -372,15 +197,13 @@ function NLoad (resource) {
|
|||
// setting if its active only if its undefined, otherwise previous user setting shouldt be overwritten
|
||||
}
|
||||
|
||||
function AddItem () // adds an item to the last subjects questions
|
||||
{
|
||||
function AddItem () { // adds an item to the last subjects questions
|
||||
GetCurrSubj().count++
|
||||
allCount++ // incrementing all count
|
||||
GetCurrSubj().questions.push({}) // adding a new empty object to the last item in the data
|
||||
}
|
||||
|
||||
function GetLastItem () // returns the last item of the last item of data
|
||||
{
|
||||
function GetLastItem () { // returns the last item of the last item of data
|
||||
var q = GetCurrSubj().questions.length // questions length
|
||||
return GetCurrSubj().questions[q - 1]
|
||||
}
|
||||
|
@ -395,45 +218,37 @@ function NLoad (resource) {
|
|||
// + : subject name
|
||||
|
||||
// checking for name
|
||||
for (var j = 0; j < resource.length; j++) // goes through resources
|
||||
{
|
||||
if (resource[j][0] == '+') // if there is a name identifier
|
||||
{
|
||||
for (var j = 0; j < resource.length; j++) { // goes through resources
|
||||
if (resource[j][0] === '+') { // if there is a name identifier
|
||||
break // breaks, couse there will be a name
|
||||
}
|
||||
if (resource[j][0] == '?' || resource[j][0] == '!' || resource[j][0] == '>') // if it begins with another identifier:
|
||||
{
|
||||
if (resource[j][0] === '?' || resource[j][0] === '!' || resource[j][0] === '>') { // if it begins with another identifier:
|
||||
AddNewSubj('NONAME') // there is no name (for the first question at least), so setting it noname.
|
||||
break
|
||||
}
|
||||
// else it does nothing, continues to check
|
||||
}
|
||||
var jumped = 0 // the amount of lines it processed
|
||||
for (var i = 0; i < resource.length; i += jumped) // gouing through the resource
|
||||
{
|
||||
for (var i = 0; i < resource.length; i += jumped) { // gouing through the resource
|
||||
jumped = 0 // resetting it to 0
|
||||
var currRawDataQ = resource[i] // current question
|
||||
var currRawDataA = resource[i + 1] // current answer
|
||||
var currRawDataI = resource[i + 2] // current image
|
||||
if (currRawDataQ != undefined && currRawDataQ[0] == '?' && currRawDataA != undefined &&
|
||||
currRawDataA[0] == '!') // if the current line is ? and the next is ! its a data
|
||||
{
|
||||
if (currRawDataQ !== undefined && currRawDataQ[0] === '?' && currRawDataA !== undefined && currRawDataA[0] === '!') { // if the current line is ? and the next is ! its a data
|
||||
AddItem()
|
||||
GetLastItem().q = currRawDataQ.substr(1)
|
||||
GetLastItem().a = currRawDataA.substr(1)
|
||||
jumped += 2
|
||||
if (currRawDataI != undefined && currRawDataI[0] == '>') {
|
||||
if (currRawDataI !== undefined && currRawDataI[0] === '>') {
|
||||
GetLastItem().i = currRawDataI.substr(1)
|
||||
jumped++
|
||||
}
|
||||
} else if (currRawDataQ[0] == '+') // if its a new subject
|
||||
{
|
||||
} else if (currRawDataQ[0] === '+') { // if its a new subject
|
||||
AddNewSubj(currRawDataQ.substr(1))
|
||||
jumped++
|
||||
} else {
|
||||
// this should be invalid question order
|
||||
resultLog.push('Warning @ line ' + i + ':' + currRawDataQ + ' ' + currRawDataA + ' ' +
|
||||
currRawDataI)
|
||||
resultLog.push('Warning @ line ' + i + ':' + currRawDataQ + ' ' + currRawDataA + ' ' + currRawDataI)
|
||||
jumped++
|
||||
}
|
||||
} // end of parsing all data
|
||||
|
@ -445,25 +260,22 @@ function NLoad (resource) {
|
|||
|
||||
// loading stuff
|
||||
function LoadJSON (resource) {
|
||||
var count = -1
|
||||
try {
|
||||
var d = JSON.parse(resource)
|
||||
var r = new QuestionDB()
|
||||
var d = JSON.parse(resource)
|
||||
var r = new classes.QuestionDB((x) => true, (x, y) => console.log(x, y))
|
||||
var rt = []
|
||||
var allCount = -1
|
||||
|
||||
for (var i = 0; i < d.Subjects.length; i++) {
|
||||
let s = new Subject(d.Subjects[i].Name)
|
||||
let s = new classes.Subject(d.Subjects[i].Name)
|
||||
var j = 0
|
||||
for (j = 0; j < d.Subjects[i].Questions.length; j++) {
|
||||
var currQ = d.Subjects[i].Questions[j]
|
||||
s.AddQuestion(new Question(currQ.Q, currQ.A, currQ.I))
|
||||
s.AddQuestion(new classes.Question(currQ.Q, currQ.A, currQ.I))
|
||||
}
|
||||
rt.push({
|
||||
name: d.Subjects[i].Name,
|
||||
count: j
|
||||
})
|
||||
allCount += j
|
||||
r.AddSubject(s)
|
||||
}
|
||||
return r
|
||||
|
@ -479,13 +291,13 @@ function ProcessQA () {
|
|||
let r = []
|
||||
let ind = 0
|
||||
for (let i = 0; i < a.length; i++) {
|
||||
if (a[i] == '#') { ind++ } else {
|
||||
if (r[ind] == undefined) { r[ind] = {} }
|
||||
if (a[i] === '#') { ind++ } else {
|
||||
if (r[ind] === undefined) { r[ind] = {} }
|
||||
|
||||
if (r[ind].q == undefined) {
|
||||
if (r[ind].q === undefined) {
|
||||
r[ind].q = a[i]
|
||||
} else {
|
||||
if (r[ind].a == undefined) { r[ind].a = [] }
|
||||
if (r[ind].a === undefined) { r[ind].a = [] }
|
||||
|
||||
r[ind].a.push(a[i])
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue