From 4f9caa4dc67bb666a6c15d8587c4d89b92c73d39 Mon Sep 17 00:00:00 2001 From: GotPPay Date: Wed, 25 Oct 2017 00:28:31 +0200 Subject: [PATCH] izmjena algoritma --- backend/.env | 5 +- backend/app.js | 207 +++++++++++++++++++++++++++------- web/src/App.js | 23 +++- web/src/PairComponent.js | 4 +- web/src/PairsListComponent.js | 2 +- 5 files changed, 188 insertions(+), 53 deletions(-) diff --git a/backend/.env b/backend/.env index 689f0626..dd63b23b 100644 --- a/backend/.env +++ b/backend/.env @@ -1,2 +1,3 @@ -PEOPLE_DB=https://docs.google.com/spreadsheets/d/1s4Ytz7mf-YpszVTMTTrYd5iG_dsTGjrCpDQbpIx7zkU/edit#gid=0 -PAIRS_LIST=https://docs.google.com/spreadsheets/d/1gPuRhTry3YoJ_ibI2BfL1ue2_YLlhtW56OP39ADJY_4/edit#gid=0 +PEOPLE_DB=https://docs.google.com/spreadsheets/d/1s4Ytz7mf-YpszVTMTTrYd5iG_dsTGjrCpDQbpIx7zkU/edit#gid=1116948122 +PAIRS_LIST=https://docs.google.com/spreadsheets/d/1JXtDjajJLZb_iXvDYfBEVYdCfehF_URHeeO7_hBXLrI/edit#gid=0 + diff --git a/backend/app.js b/backend/app.js index 76439f06..7a8f53f9 100644 --- a/backend/app.js +++ b/backend/app.js @@ -113,7 +113,11 @@ function getPairs(callback){ } else { const pairs = []; - lastRow = result.valueRanges[0].values.length; + try{ + lastRow = result.valueRanges[0].values.length; + }catch(err){ + lastRow = 0; + } for (let i=0;i{ - if ((pair.name1==names[i] && pair.name2==names[j])||(pair.name1==names[j] && pair.name2==names[i])){ - found=true; - return; - } - }); - if (!found){ - usedNames.filter((name)=>{ - if (names[i] === name || names[j] === name){ - found=true; - return; - } - }); - } - + for (let i=0;i{ + if (((pair.name1 == tmpName1)&&(pair.name2==tmpName2))||((pair.name1==tmpName2)&&(pair.name2==tmpName1))){ + exist = true; + return; } + }); + if (!exist){ + newPairs.push({name1:tmpName1, name2:tmpName2}); + left_side.splice(i,1); + right_side.splice(j,1); + i=-1; + break; } } - if (next_i) continue; } - pairsForSave=newPairs; - callback.send(newPairs); + + //make pairs from names on left side + for (let i=0;i{ + if (((pair.name1 == tmpName1)&&(pair.name2==tmpName2))||((pair.name1==tmpName2)&&(pair.name2==tmpName1))){ + exist = true; + return; + } + }); + if (!exist){ + newPairs.push({name1:tmpName1, name2:tmpName2}); + left_side.splice(i,1); + if (i>j) + left_side.splice(j,1); + else + left_side.splice(j-1,1); + i=-1; + break; + } + } + } + + //make pairs from names on right side + for (let i=0;i{ + if (((pair.name1 == tmpName1)&&(pair.name2==tmpName2))||((pair.name1==tmpName2)&&(pair.name2==tmpName1))){ + exist = true; + return; + } + }); + if (!exist){ + newPairs.push({name1:tmpName1, name2:tmpName2}); + right_side.splice(i,1); + if (i>j) + right_side.splice(j,1); + else + right_side.splice(j-1,1); + i=-1; + break; + } + } + } + + //try to make pair using unused name from list of names and names on left side + if (names.length>0){ + let tmpName1 = names[0]; + for (let i=0;i{ + if (((pair.name1 == tmpName1)&&(pair.name2==tmpName2))||((pair.name1==tmpName2)&&(pair.name2==tmpName1))){ + exist = true; + return; + } + }); + if (!exist){ + newPairs.push({name1:tmpName1, name2:tmpName2}); + names=[]; + left_side.splice(i,1); + break; + } + } + } + + //try to make pair using unused name from list of names and names on right side + if (names.length>0){ + let tmpName1 = names[0]; + for (let i=0;i{ + if (((pair.name1 == tmpName1)&&(pair.name2==tmpName2))||((pair.name1==tmpName2)&&(pair.name2==tmpName1))){ + exist = true; + return; + } + }); + if (!exist){ + newPairs.push({name1:tmpName1, name2:tmpName2}); + names=[]; + right_side.splice(i,1); + break; + } + } + } + + pairsForSave = newPairs; + + let withoutPair = []; + for (let i=0;i0) + withoutPair.push(names[0]); + + if (withoutPair.length==0) withoutPair=null; + + callback.send({pairs: newPairs, left: withoutPair }); }); }); - //Napravi par -> Provjeri da li postoji -> Snimi ili ponovi postupak - } function SavePairs(callback){ - if (lastRow== null) return; + if (lastRow== null) { + callback.send({result:true}); + return; + } auth=oauth2Client; @@ -220,6 +340,7 @@ function SavePairs(callback){ const data = []; + if (lastRow == 0) lastRow=-1; let range1= '2017!A'+(lastRow+2)+':A'+(lastRow+2+pairsForSave.length); let range2= '2017!B'+(lastRow+2)+':B'+(lastRow+2+pairsForSave.length); @@ -279,5 +400,5 @@ app.get('/savePairs', (req,resp)=>{ app.listen(3005, function () { - console.log('server na portu 3005'); + console.log('Server running - port 3005'); }) \ No newline at end of file diff --git a/web/src/App.js b/web/src/App.js index e54465ad..b79f0af2 100644 --- a/web/src/App.js +++ b/web/src/App.js @@ -18,10 +18,10 @@ class App extends Component { getPairsEventHandler = (event) =>{ let url = `http://${BASE_URL}:3005/getPairs`; - this.setState({waitingPairs:true}); + this.setState({waitingPairs:true, renderFinish:false, waitingSave:true}); fetch(url, {}).then(function(response) { return response.json(); }).then(function(data) { - this.setState({pairs : data, renderPairsList:true, waitingPairs:false}); + this.setState({pairs : data.pairs, left:data.left, renderPairsList:true, waitingPairs:false, waitingSave:false}); }.bind(this)); @@ -46,13 +46,26 @@ class App extends Component {
-
-

List of pairs :

-
+ { + this.state.renderPairsList && +
+

List of pairs :

+
+ } { this.state.renderPairsList && } + { + this.state.renderPairsList && this.state.left && +
+

Without pair :

+ { + this.state.left.map((name, index) => + (
{index+1}. {name}
)) + } +
+ } { this.state.renderPairsList && diff --git a/web/src/PairComponent.js b/web/src/PairComponent.js index e6dd674d..7987ff92 100644 --- a/web/src/PairComponent.js +++ b/web/src/PairComponent.js @@ -3,14 +3,14 @@ import React, { Component } from 'react'; export default class PairComponent extends Component{ constructor(props) { super(props); - this.state = {pairName: this.props.pair}; + this.state = {pairName: this.props.pair, index: this.props.index}; } render(){ return (
-
{this.state.pairName.name1} - {this.state.pairName.name2}
+
{this.state.index+1}. {this.state.pairName.name1} - {this.state.pairName.name2}
) diff --git a/web/src/PairsListComponent.js b/web/src/PairsListComponent.js index 9002b638..18032d0f 100644 --- a/web/src/PairsListComponent.js +++ b/web/src/PairsListComponent.js @@ -7,7 +7,7 @@ export default class PairsListComponent extends Component{
{ this.props.pairs.map((pair, index) => - ()) + ()) }
)