Skip to content

Commit

Permalink
Merge pull request #67 from BuddiX/modify_destroy_motion
Browse files Browse the repository at this point in the history
close #56
  • Loading branch information
bokusunny committed Nov 6, 2018
2 parents fd37ff3 + d62cd15 commit fbe9c19
Show file tree
Hide file tree
Showing 12 changed files with 86 additions and 27 deletions.
1 change: 0 additions & 1 deletion app/models/project.rb
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@ class Project < ApplicationRecord
validates :title, presence: true, length: { maximum: 50 }
validates :fixed_star_type, presence: true

enum planet_type: [:Uranus, :Mercury, :Pluto, :Jupitar, :Earth, :Moon, :Neputune,
enum fixed_star_type: [:Uranus, :Mercury, :Pluto, :Jupitar, :Earth, :Moon, :Neputune,
:Sirius, :Love, :Mars, :Sun, :Venus, :Takoyaki, :Ball, :Egg]
end
14 changes: 14 additions & 0 deletions frontend/src/javascripts/actions/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,20 @@ export function resetSelectedStar() {
}
}

export function igniteDestroyPlanets(status) {
return {
type: actionTypes.IGNITE_DESTROY_ACTION,
status
}
}

export function resetDestroyPlanets(status) {
return {
type: actionTypes.RESET_DESTROY_ACTION,
status
}
}

export function setModalStatus(status) {
return {
type: actionTypes.OPEN_MODAL,
Expand Down
4 changes: 2 additions & 2 deletions frontend/src/javascripts/actions/projects.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@ import { actionTypes, ROOT_URL, JWT } from '../constants'


export function fetchRevolvingProjects() {
return axios.get(`${ROOT_URL}/api/projects/`, {
headers: { 'Authorization': `Bearer ${JWT}` }
return axios.get(`${ROOT_URL}/api/projects/`, {
headers: { 'Authorization': `Bearer ${JWT}` }
}).then(res => {
return {
type: actionTypes.FETCH_REVOLVING_PROJECTS,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ class AssignmentForm extends Component {
)
}

onSubmit({ title, description, deadline, planet_size, orbit_pos}) {
onSubmit({ title, description, deadline, planet_size, orbit_pos }) {
const target = document.getElementById('form-balloon')
const planet_type = this.props.selectedStar
const project_id = this.props.currentProject.id
Expand Down Expand Up @@ -85,9 +85,7 @@ class AssignmentForm extends Component {

function validate(values) {
const errors = {}

//TODO: 現状validatが適当 → rails側と絡めて後々実装

//TODO: 現状validatが適当 → rails側と絡めて後々実装
if (!values.orbit_pos) {
errors.orbit_pos = "Orbit Position required"
}
Expand Down
9 changes: 3 additions & 6 deletions frontend/src/javascripts/components/molecules/modal.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,7 @@ import Modal from 'react-modal'

import ConfirmBtn from '../atoms/confirm-btn'

import { nullifySelectedAssignment } from '../../actions/assignments'
import { setModalStatus, resetModalStatus } from '../../actions/common'
import { igniteDestroyPlanets, resetDestroyPlanets, setModalStatus, resetModalStatus } from '../../actions/common'

import '../../../stylesheets/modal.scss'

Expand Down Expand Up @@ -47,8 +46,7 @@ class ConfirmModal extends Component {
closeModal(isDestroy) {
this.props.resetModalStatus(false)
if(isDestroy) {
this.props.parentMethod(this.props.selectedAssignments)
this.props.nullifySelectedAssignment()
this.props.igniteDestroyPlanets(true)
}
}

Expand All @@ -70,6 +68,5 @@ class ConfirmModal extends Component {
}

export default connect(
({modalIsOpen, selectedAssignments}) => ({modalIsOpen, selectedAssignments}),
{ nullifySelectedAssignment, setModalStatus, resetModalStatus }
({isDestroyIgnited, modalIsOpen}) => ({isDestroyIgnited, modalIsOpen}), { igniteDestroyPlanets, resetDestroyPlanets, setModalStatus, resetModalStatus }
)(ConfirmModal)
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import React, { Component } from 'react'
import { connect } from 'react-redux'
import _ from 'lodash'

import { setCurrentProject } from '../../actions/projects'

import { PlanetImgs } from '../../constants'

class MypageOrbit extends Component {
Expand Down Expand Up @@ -45,4 +47,6 @@ class MypageOrbit extends Component {
}
}

export default connect(({revolvingProjects}) => ({revolvingProjects}))(MypageOrbit)
export default connect(({revolvingProjects}) => ({revolvingProjects}),
{ setCurrentProject }
)(MypageOrbit)
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { connect } from 'react-redux'
import _ from 'lodash'

import { fetchRevolvingAssignments } from '../../actions/assignments'
import { changeCurrentProject } from '../../actions/projects'
import { changeCurrentProject } from '../../actions/projects'
import { PlanetImgs } from '../../constants'

import '../../../stylesheets/project_bar.scss'
Expand Down
49 changes: 41 additions & 8 deletions frontend/src/javascripts/components/users/footer.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,8 @@ import anime from 'animejs'
import ConfirmModal from '../molecules/modal'
import AssignmentForm from '../molecules/assignment-form'

import { nullifySelectedAssignment } from '../../actions/assignments'
import { setSelectedStar, resetSelectedStar, setModalStatus, resetModalStatus } from '../../actions/common'
import { destroyAssignment, nullifySelectedAssignment } from '../../actions/assignments'
import { setSelectedStar, resetSelectedStar, igniteDestroyPlanets, resetDestroyPlanets, setModalStatus, resetModalStatus } from '../../actions/common'

import ImgHolderOpen from '../../../images/footer/planet_holder_btn.png'
import { PlanetImgs } from '../../constants'
Expand All @@ -20,6 +20,7 @@ class Footer extends Component {
super(props)

this.state = {
selectAssignments: [],
clickedStar: null
}
}
Expand All @@ -29,8 +30,36 @@ class Footer extends Component {
planet_list.style.display = 'none'
}

componentDidUpdate(prevProps, prevState){
if(this.props.isDestroyIgnited && !prevProps.isDestroyIgnited) {
if(this.props.selectedAssignments) {
console.log("didupdate")
this.onClickDestroyPlanets(this.props.selectedAssignments)
}
}
}

onClickOpenModal() {
this.props.setModalStatus(true)
this.motionControll()
}

removePlanet(parent) {
//FIXME: 一旦canvas以外のImgとballoonを削除・DOM上にはPlanetを表示する親要素は残る。
parent.map((doc) => {
let parent = doc
let child = doc.firstChild
console.log(parent,child)
parent.removeChild(child)
})
}

removeAssignmentData(parent) {
parent.map((doc) => {
let cvs = doc.children[1]
let cvs_info = cvs.id.split('-')
this.props.destroyAssignment(cvs_info[0])
})
}

onClickDestroyPlanets(selectedAssignments) {
Expand Down Expand Up @@ -74,8 +103,8 @@ class Footer extends Component {
}

function updateCoords() {
pointerX = 100
pointerY = 100
pointerX = 60
pointerY = 60
}

function removeImg() {
Expand Down Expand Up @@ -152,7 +181,11 @@ class Footer extends Component {
updateCoords()
removeImg()
animateParticules(pointerX, pointerY)
//this.props.nullifySelectedAssignment()
this.props.resetDestroyPlanets(false)
this.removeAssignmentData(parent)
this.removePlanet(parent)
this.props.nullifySelectedAssignment()
this.motionControll()
}

motionControll() {
Expand Down Expand Up @@ -270,13 +303,13 @@ class Footer extends Component {
{this.renderDeleteIcons(deleteButtonsclasses)}
</ul>
</div>
<ConfirmModal parentMethod={this.onClickDestroyPlanets} />
<ConfirmModal />
</div>
)
}
}

export default connect(
({ currentUser, selectedAssignments, selectedStar, modalIsOpen }) => ({ currentUser, selectedAssignments, selectedStar, modalIsOpen }),
{ nullifySelectedAssignment, setSelectedStar, resetSelectedStar, setModalStatus, resetModalStatus }
({ currentUser, selectedAssignments, selectedStar, isDestroyIgnited, modalIsOpen }) => ({ currentUser, selectedAssignments, isDestroyIgnited, selectedStar, modalIsOpen }),
{ destroyAssignment, nullifySelectedAssignment, setSelectedStar, resetSelectedStar, igniteDestroyPlanets, resetDestroyPlanets, setModalStatus, resetModalStatus }
)(Footer)
4 changes: 1 addition & 3 deletions frontend/src/javascripts/components/users/mypage.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,8 +7,6 @@ import { JWT } from '../../constants'
import MypageOrbit from '../molecules/mypage-orbit'
import { fetchRevolvingProjects, setCurrentProject, createProject, destroyProject } from '../../actions/projects'

import ImgUser from '../../../images/main/user_default_icon.png'

class MyPage extends Component {
componentDidMount() {
// TODO: 最初ログインした時Projectが設定されないバグ修正
Expand Down Expand Up @@ -48,7 +46,7 @@ class MyPage extends Component {
{currentUser.name}
</div>
</div>
<MypageOrbit />
<MypageOrbit history={this.props.history} match={this.props.match}/>
</div>
)
}
Expand Down
2 changes: 2 additions & 0 deletions frontend/src/javascripts/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,6 +67,8 @@ export const actionTypes = keyMirror({
CLOSE_MODAL: null,
SELECT_STAR: null,
DISSELECT_STAR: null,
IGNITE_DESTROY_ACTION: null,
RESET_DESTROY_ACTION: null,

// User
SET_CURRENT_USER: null,
Expand Down
13 changes: 13 additions & 0 deletions frontend/src/javascripts/reducers/common.js
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,19 @@ export function selectedStar(state = null, action) {
}
}

export function isDestroyIgnited(state = false, action) {
switch (action.type) {
case actionTypes.IGNITE_DESTROY_ACTION:
return action.status

case actionTypes.RESET_DESTROY_ACTION:
return action.status

default:
return state
}
}

export function modalIsOpen(state = false, action) {
switch (action.type) {
case actionTypes.OPEN_MODAL:
Expand Down
3 changes: 2 additions & 1 deletion frontend/src/javascripts/reducers/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ import { reducer as formReducer } from 'redux-form'
import currentUser from './current-user'
import { revolvingProjects, currentProject } from './projects'
import { revolvingAssignments, destroyedAssignments, selectedAssignments } from './assignments'
import { selectedStar, modalIsOpen } from './common'
import { selectedStar, isDestroyIgnited, modalIsOpen } from './common'

const rootReducer = combineReducers({
// Form
form: formReducer,

//commmon
selectedStar,
isDestroyIgnited,

// Users
currentUser,
Expand Down

0 comments on commit fbe9c19

Please sign in to comment.