---
# System prepended metadata

title: Sprint 2

---

# Sprint 2

## Tavoitteet sprint 2
Tavoitteeksi laivojen raahamisen koodaminen jollain tasolla (niin että onnistuu -tietoa backendiin ei vielä tarvita). 
-> tähän voi esittää toisenkin ratkaisun


-> tulevaisuuden ongelma: miten saada taulu ottamaan laivojen asemat? - joku ehdotti dynaamista map toimintoa, jolla saa id:t. En ole varma miten tämä tehdään ja moni muu asia on myös nimetty dynamic mapping, joten tiedon etsintä hankalaa.

## Valmiiksi saadut asiat
1) laiva komponentti - komponentit ovat vielä eri kokoisia verrattaessa pöydän soluihin.
2) laiva komponentin draggable ominaisuus 
3) pöydän soluilla on yksilöivät IDt - ei vielä pushattu gittiin - haluan Leevin mielipiteen 


### Draggable react komponentit
-> opettaja ehdotti näiden tekemistä
-> leevi valmisteli komponentin ships.js
-> laivan renderöintiin piti vain lisätä draggable asennuksen jälkeen

## Ongelmat 
Ajatuksia ennen työn tekoa:
-> miten saada yhdistettyä draggable komponentti pelilautaan?
--> mahdollinen vastaus? -> onclick kerran, että alkaa raahaamaan laivaa ja onclick taas kun haluaa yhdistää laivan ja pelilaudan?

Muut:
-> Olen huolestunut projektin edistymisestä. Joku sanoi suunnittelevansa arkkitehtuuria, mutta ei ole jakanut ryhmän kanssa
--> yleinen projektin edistyminen on ollut vain frontin osalta. Backend (Mikael ja Teemu) ei ole tehnyt koodia vielä ja Leevi front end on tehnyt vain 1 laivat komponentin.

-> Leevi kieltäytyy tekemään git pushia valmiille komponentille vaikka pyysin laittamaan tehdyt koodit eteenpäin. En voi jatkaa omaa osaani, jos toinen ei laita koodia Azureen.
--> teenkö itse uudet laivat ja teen niille draggable ominaisuuden?
--> kysyn git pushia maanantaina uudestaan.
---> teki branchin josta latasin koodin
---> branch sotki azuren gitin ja en saa versioita selvitettyä.


### error draggable paketin kanssa
TypeError: Cannot read property 'className' of undefined
    at Draggable.render 

TypeError: children.props is undefined

-> JSX kommentti aiheutti errorin - kommentin poisto selvitti asian

## Muistiinpanot paketista https://www.npmjs.com/package/react-draggable

https://www.freakyjolly.com/draggable-react-components-using-react-draggable-example-application/#.X7EaTlDkuUk
Draggable React Components using react-draggable Example Application
-> opettaa drag and drop functionality on components in ReactJs application and create a simple working example with the help or **react-draggable package module**
--> event handlers available to track the movement

## paketin asennus
npm install react-draggable

## draggable komponentit

### Käyttöön otto
1) import Draggable:
import Draggable from 'react-draggable';
2) wrap the elements with Draggable to make them draggable on the page
-> Draggable elementti /Draggable

-> komponenttien css koodi pitää käyttää tässä projektissa css.module avulla, koska next vaatii sitä

### Event callbacks on draggable
-> event handlers can be added on the draggable component and defined inside the render() method
--> (näiden avulla onStop event handleriin liitto pelipöytään?)
![](https://i.imgur.com/CjUpJ4u.png)

### Axis
-> force dragging in a specific direction 

### Define a handle to drag
-> instead of dragging the element by picking from anywhere we can set a selector in the draggable component which can be picker to drag

### Track position of draggable
-> mahdollista seurata x ja y arvojen avulla missä komponentti on menossa
--> aseta x ja y arvot pelilaudan sisään?

- bounds property can be used to define and limit the draggable area for the element
--> toimisi laudan kanssa?

Define bounds
-> bounds arvo in px from the current position
![](https://i.imgur.com/kdJMOnX.png)

Parent as bound
-> the element can be dragged inside the parent by defining bounds="parent"
--> mahdollistaa vain laittamisen parent elementin sisään?

page as bound
-> bounds = "body"


## Muistiinpanot 2 - positronx
https://www.positronx.io/create-react-draggable-component-with-react-draggable-package/
-> ei sisältänyt juuri mitään uutta aiempaan muuta kuin selitykset eventeille.

###  events:
1) onStart: This is called when dragging event invokes.
2) onDrag: Invoked when the drag event is in process.
3) onStop: This event evokes when dragging ends.
4) onMouseUp: This is event is evoked when the mouse is moved before stoping the drag.
5) onMouseDown: Called when the mouse is clicked to begin drag.
6) onTouchEnd: This is called in touch state before the drag ends.
7) onTouchStart: Invoked in touch condition before drag begins.


## Ajankäyttö
![](https://i.imgur.com/cvdUudJ.png)
+ 15 min solujen idille
