console.log('onClick')} className="test--event-list__row" >
{title}
{where}
@@ -16,4 +17,19 @@ class TableEventCard extends Component {
)
}
}
-export default TableEventCard
\ No newline at end of file
+
+const spec = {
+ beginDrag(props) {
+ return {
+ uid:props.event.uid
+ }
+ }
+}
+
+const collect = (connect, monitor) => ({
+ connectDragSource: connect.dragSource(),
+ connectPreview: connect.dragPreview(),
+ isDragging: monitor.isDragging(),
+})
+
+export default DragSource('event', spec, collect)(TableEventCard)
\ No newline at end of file
From b53478969d6c511961a210bb7c70b7f0fc3a02f8 Mon Sep 17 00:00:00 2001
From: Kirill <908city@gmail.com>
Date: Mon, 11 Sep 2017 09:21:36 +0400
Subject: [PATCH 4/7] Add dropable
---
src/components/common/Basket.js | 37 +++++++++++++++++++++++++
src/components/common/Basket/Basket.js | 18 ------------
src/components/events/TableEventCard.js | 9 ++++--
src/components/routes/AdminPage.js | 2 +-
4 files changed, 44 insertions(+), 22 deletions(-)
create mode 100644 src/components/common/Basket.js
delete mode 100644 src/components/common/Basket/Basket.js
diff --git a/src/components/common/Basket.js b/src/components/common/Basket.js
new file mode 100644
index 0000000..fc72da0
--- /dev/null
+++ b/src/components/common/Basket.js
@@ -0,0 +1,37 @@
+import React, { Component } from 'react'
+import {Link} from 'react-router-dom'
+import {DropTarget} from 'react-dnd'
+
+class Basket extends Component {
+ static propTypes = {
+
+ };
+
+ render() {
+ const {connectDropTarget, hovered, canDrop, people} = this.props
+ const dropStyle = {
+ border: `4px solid ${canDrop?`black`:`transparent`}`
+ }
+ return connectDropTarget(
+
+ Drag event here to delete!
+
+ )
+ }
+}
+const collect = (connect, monitor) => ({
+ connectDropTarget: connect.dropTarget(),
+ canDrop: monitor.canDrop(),
+ hovered: monitor.isOver()
+})
+
+const spec = {
+ drop(props, monitor) {
+ const eventDragUid = monitor.getItem().uid
+
+ console.log(eventDragUid,'eventDragUid');
+ return { eventDragUid }
+ }
+}
+
+export default DropTarget('event',spec, collect)(Basket)
\ No newline at end of file
diff --git a/src/components/common/Basket/Basket.js b/src/components/common/Basket/Basket.js
deleted file mode 100644
index f961b7c..0000000
--- a/src/components/common/Basket/Basket.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import React, { Component } from 'react'
-import {Link} from 'react-router-dom'
-
-class Basket extends Component {
- static propTypes = {
-
- };
-
- render() {
- return (
-
- Drag event here to delete!
-
- )
- }
-}
-
-export default Basket
\ No newline at end of file
diff --git a/src/components/events/TableEventCard.js b/src/components/events/TableEventCard.js
index 7a9d053..f27e084 100644
--- a/src/components/events/TableEventCard.js
+++ b/src/components/events/TableEventCard.js
@@ -6,10 +6,13 @@ class TableEventCard extends Component {
static propTypes = {};
render() {
- console.log('TableEventCard',this.props);
- const {uid, title, where, month} = this.props.event;
+
+ const {connectDragSource,isDragging, event: {uid, title, where, month}} = this.props;
+ const dragStyle = {
+ backgroundColor:isDragging?'gray':'white'
+ }
return this.props.connectDragSource(
-
console.log('onClick')} className="test--event-list__row" >
+
console.log('onClick')} className="test--event-list__row" >
{title}
{where}
{month}
diff --git a/src/components/routes/AdminPage.js b/src/components/routes/AdminPage.js
index a0e47a8..5ea9685 100644
--- a/src/components/routes/AdminPage.js
+++ b/src/components/routes/AdminPage.js
@@ -3,7 +3,7 @@ import PeopleList from '../people/PeopleList'
import EventTable from '../events/VirtualizedEventList'
import SelectedEvents from '../events/SelectedEvents'
import TableEventList from '../events/TableEventList'
-import Basket from '../common/Basket/Basket.js'
+import Basket from '../common/Basket'
class AdminPage extends Component {
static propTypes = {
From a0ce4c666ca168a8b973e6716e2aa9b444d7d774 Mon Sep 17 00:00:00 2001
From: Kirill <908city@gmail.com>
Date: Mon, 11 Sep 2017 18:39:02 +0400
Subject: [PATCH 5/7] Delete event
---
src/components/common/Basket.js | 8 ++++--
src/config.js | 14 +++++-----
src/ducks/events.js | 45 +++++++++++++++++++++++++++++++--
3 files changed, 56 insertions(+), 11 deletions(-)
diff --git a/src/components/common/Basket.js b/src/components/common/Basket.js
index fc72da0..f347560 100644
--- a/src/components/common/Basket.js
+++ b/src/components/common/Basket.js
@@ -1,6 +1,9 @@
import React, { Component } from 'react'
import {Link} from 'react-router-dom'
import {DropTarget} from 'react-dnd'
+import {connect} from 'react-redux'
+import {deleteEvent} from '../../ducks/events'
+
class Basket extends Component {
static propTypes = {
@@ -19,6 +22,7 @@ class Basket extends Component {
)
}
}
+
const collect = (connect, monitor) => ({
connectDropTarget: connect.dropTarget(),
canDrop: monitor.canDrop(),
@@ -28,10 +32,10 @@ const collect = (connect, monitor) => ({
const spec = {
drop(props, monitor) {
const eventDragUid = monitor.getItem().uid
-
console.log(eventDragUid,'eventDragUid');
+ props.deleteEvent(eventDragUid);
return { eventDragUid }
}
}
-export default DropTarget('event',spec, collect)(Basket)
\ No newline at end of file
+export default connect(null, {deleteEvent}) (DropTarget ('event',spec, collect)(Basket))
diff --git a/src/config.js b/src/config.js
index e8d8d78..18292a3 100644
--- a/src/config.js
+++ b/src/config.js
@@ -1,13 +1,13 @@
import firebase from 'firebase'
-export const appName = "advreact-21-08"
+export const appName = "advreact-21-081"
export const firebaseConfig = {
- apiKey: "AIzaSyDjA6CeIHuni5lNm4ML1b-TSxJltsYUO8g",
- authDomain: `${appName}.firebaseapp.com`,
- databaseURL: `https://${appName}.firebaseio.com`,
- projectId: appName,
- storageBucket: `${appName}.appspot.com`,
- messagingSenderId: "789814589283"
+ apiKey: "AIzaSyC0hcpDsBhr85usoHIwloBeYbkDHeUcqKo",
+ authDomain: "advreact-21-081.firebaseapp.com",
+ databaseURL: "https://advreact-21-081.firebaseio.com",
+ projectId: "advreact-21-081",
+ storageBucket: "advreact-21-081.appspot.com",
+ messagingSenderId: "450237050585"
}
firebase.initializeApp(firebaseConfig)
\ No newline at end of file
diff --git a/src/ducks/events.js b/src/ducks/events.js
index bd17fc4..6c4bbc6 100644
--- a/src/ducks/events.js
+++ b/src/ducks/events.js
@@ -1,4 +1,4 @@
-import {all, take, call, put, select} from 'redux-saga/effects'
+import {all, take, takeEvery, call, put, select} from 'redux-saga/effects'
import {appName} from '../config'
import {Record, OrderedMap, OrderedSet} from 'immutable'
import firebase from 'firebase'
@@ -17,6 +17,8 @@ export const FETCH_LAZY_REQUEST = `${prefix}/FETCH_LAZY_REQUEST`
export const FETCH_LAZY_START = `${prefix}/FETCH_LAZY_START`
export const FETCH_LAZY_SUCCESS = `${prefix}/FETCH_LAZY_SUCCESS`
export const SELECT_EVENT = `${prefix}/SELECT_EVENT`
+export const DELETE_EVENT = `${prefix}/DELETE_EVENT`
+export const DELETE_EVENT_REQUEST = `${prefix}/DELETE_EVENT_REQUEST`
/**
* Reducer
@@ -93,6 +95,44 @@ export function fetchAll() {
}
}
+export function deleteEvent (eventDragUid) {
+ console.log(eventDragUid ,'load data');
+ return {
+ type: DELETE_EVENT_REQUEST,
+ payload: { eventDragUid }
+ }
+}
+
+export const deleteEventSaga = function * (action) {
+ console.log(action,'action');
+
+ const peopleRef = firebase.database().ref('events');
+ console.log( peopleRef.child(action.payload.eventDragUid),'peopleRef');
+ peopleRef.child(action.payload.eventDragUid).remove()
+ ;
+ // return {
+ // type: DELETE_EVENT_REQUEST,
+ // payload: { eventDragUid }
+ // }
+ // const eventsRef = firebase.database().ref(`people/${personUid}/events`)
+ // const state = yield select(stateSelector)
+ // const events = state.getIn(['entities', personUid, 'events']).concat(eventUid)
+ //
+ // try {
+ // yield call([eventsRef, eventsRef.set], events)
+ // yield put({
+ // type: ADD_EVENT_SUCCESS,
+ // payload: {
+ // personUid,
+ // events
+ // }
+ // })
+ // } catch (e) {
+ // console.log(e,'error')
+ // }
+
+}
+
export function selectEvent(uid) {
return {
type: SELECT_EVENT,
@@ -157,6 +197,7 @@ export const fetchLazySaga = function * () {
export function* saga() {
yield all([
fetchAllSaga(),
- fetchLazySaga()
+ fetchLazySaga(),
+ takeEvery(DELETE_EVENT_REQUEST, deleteEventSaga)
])
}
\ No newline at end of file
From 50ee0748e25f49e7ed44f879d43280e36377c1a5 Mon Sep 17 00:00:00 2001
From: Kirill <908city@gmail.com>
Date: Tue, 12 Sep 2017 17:29:48 +0400
Subject: [PATCH 6/7] delete by redux
---
src/components/events/TableEventList.js | 2 +-
src/ducks/events.js | 13 +++++++++++--
2 files changed, 12 insertions(+), 3 deletions(-)
diff --git a/src/components/events/TableEventList.js b/src/components/events/TableEventList.js
index 23deb1c..a03267f 100644
--- a/src/components/events/TableEventList.js
+++ b/src/components/events/TableEventList.js
@@ -17,8 +17,8 @@ export class EventList extends Component {
console.log('---', 'load more')
this.props.fetchLazy()
}
-
render() {
+
const {loaded, events} = this.props
if (this.props.loading) return
return (
diff --git a/src/ducks/events.js b/src/ducks/events.js
index 6c4bbc6..7ec5844 100644
--- a/src/ducks/events.js
+++ b/src/ducks/events.js
@@ -48,6 +48,10 @@ export default function reducer(state = new ReducerRecord(), action) {
case FETCH_ALL_REQUEST:
case FETCH_LAZY_START:
return state.set('loading', true)
+
+ case DELETE_EVENT:
+ console.log('delete');
+ return state.update('entities', selected => selected.remove(payload.eventDragUid))
case FETCH_ALL_SUCCESS:
return state
@@ -105,10 +109,15 @@ export function deleteEvent (eventDragUid) {
export const deleteEventSaga = function * (action) {
console.log(action,'action');
-
+ const eventDragUid = action.payload.eventDragUid;
const peopleRef = firebase.database().ref('events');
- console.log( peopleRef.child(action.payload.eventDragUid),'peopleRef');
peopleRef.child(action.payload.eventDragUid).remove()
+ yield put({
+ type: DELETE_EVENT,
+ payload: {
+ eventDragUid
+ }
+ })
;
// return {
// type: DELETE_EVENT_REQUEST,
From f536bf246e327edfc01157a3082f7a35de72dc10 Mon Sep 17 00:00:00 2001
From: Kirill <908city@gmail.com>
Date: Wed, 13 Sep 2017 16:20:44 +0400
Subject: [PATCH 7/7] Fixes
---
src/components/common/Basket.js | 1 +
src/components/events/TableEventList.js | 3 ++-
src/ducks/events.js | 13 ++++++++++---
3 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/components/common/Basket.js b/src/components/common/Basket.js
index f347560..ede58fb 100644
--- a/src/components/common/Basket.js
+++ b/src/components/common/Basket.js
@@ -33,6 +33,7 @@ const spec = {
drop(props, monitor) {
const eventDragUid = monitor.getItem().uid
console.log(eventDragUid,'eventDragUid');
+ console.log('start');
props.deleteEvent(eventDragUid);
return { eventDragUid }
}
diff --git a/src/components/events/TableEventList.js b/src/components/events/TableEventList.js
index a03267f..b311fe7 100644
--- a/src/components/events/TableEventList.js
+++ b/src/components/events/TableEventList.js
@@ -20,6 +20,7 @@ export class EventList extends Component {
render() {
const {loaded, events} = this.props
+ console.log(events.length,'events.length');
if (this.props.loading) return
return (
{({onRowsRendered, registerChild}) =>