<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Amish</title>
    <description>The latest articles on DEV Community by Amish (@amishmaqbool).</description>
    <link>https://dev.to/amishmaqbool</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F203399%2F54b334d3-1d87-47ad-b931-635553528d34.jpeg</url>
      <title>DEV Community: Amish</title>
      <link>https://dev.to/amishmaqbool</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/amishmaqbool"/>
    <language>en</language>
    <item>
      <title>React beautifull dnd  poker game need help...</title>
      <dc:creator>Amish</dc:creator>
      <pubDate>Mon, 29 Jul 2019 16:07:35 +0000</pubDate>
      <link>https://dev.to/amishmaqbool/react-beautifull-dnd-poker-game-need-help-16c2</link>
      <guid>https://dev.to/amishmaqbool/react-beautifull-dnd-poker-game-need-help-16c2</guid>
      <description>&lt;p&gt;hey I am trying to make a game like poker but stuck its a drag and drop and hen i drop a card in drop zone another same card comes up in drag zone and i ant to prevent it i am using react-beautifull-dnd the cards should be in the sequen ace,king,queen,jack,one,two,three,four,fivev,six,seven,eight,nine,ten for the check a condition is already implemented just cant figure out how to stop the same card which is dropped in dropzone&lt;/p&gt;

&lt;p&gt;below is index.js component&lt;/p&gt;

&lt;p&gt;import React from 'react'&lt;br&gt;
import ReactDOM from 'react-dom'&lt;br&gt;
import '@atlaskit/css-reset'&lt;br&gt;
import { DragDropContext } from 'react-beautiful-dnd'&lt;br&gt;
import styled from 'styled-components'&lt;/p&gt;

&lt;p&gt;import initialData from './initial-data'&lt;br&gt;
import Column from './column'&lt;/p&gt;

&lt;p&gt;const Container = styled.div&lt;code&gt;&lt;br&gt;
  display:flex;&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;class App extends React.Component {&lt;br&gt;
  state = initialData&lt;/p&gt;

&lt;p&gt;onDragEnd = result =&amp;gt; {&lt;br&gt;
    const { destination, source, draggableId } = result&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if (!destination) {
  return
}

if (
  destination.droppableId === source.droppableId &amp;amp;&amp;amp;
  destination.index === source.index
) {
  return
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;console.log("src",source);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const start = this.state.columns[source.droppableId]
 console.log(start)
const finish = this.state.columns[destination.droppableId]
// console.log(finish)
//   console.log(start===finish)
if (start === finish) {
  const newTaskIds = Array.from(start.taskIds)
  newTaskIds.splice(source.index, 1)
  newTaskIds.splice(destination.index, 0, draggableId)

  const newColumn = {
    ...start,
    taskIds: newTaskIds
  }

  const newState = {
    ...this.state,
    columns: {
      ...this.state.columns,
      [newColumn.id]: newColumn
    }
  }

  this.setState(newState)
  return
}
const pattren = ['task-1', 'task-2', 'task-3', 'task-4','task-5','task-6','task-7','task-8','task-9','task-10','task-11','task-12','task-13'];
// Moving from one list to another
const startTaskIds = Array.from(start.taskIds)
console.log(Array.from(start.taskIds))
console.log("start",source.index)
startTaskIds.splice(source.index, 1)
// const pickeditem=startTaskIds[1];

const newStart = {
  ...start,
  taskIds: startTaskIds
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;console.log(startTaskIds)&lt;br&gt;
    const finishTaskIds = Array.from(finish.taskIds)&lt;br&gt;
    console.log(Array.from(finish.taskIds))&lt;br&gt;
    finishTaskIds.splice(destination.index, 0, draggableId)&lt;br&gt;
    const newFinish = {&lt;br&gt;
      ...finish,&lt;br&gt;
      taskIds: finishTaskIds&lt;br&gt;
    }&lt;br&gt;
console.log(finishTaskIds)&lt;br&gt;
console.log("lastind",finishTaskIds[finishTaskIds.length-2])&lt;br&gt;
console.log("dragable",draggableId)&lt;br&gt;
// if(finishTaskIds[finishTaskIds.length-1&amp;lt;draggableId])&lt;br&gt;
if(finishTaskIds.indexOf(draggableId)===pattren.indexOf(draggableId)){&lt;br&gt;
console.log(finishTaskIds.length-1&amp;lt;draggableId)&lt;br&gt;
console.log('check',(finishTaskIds.indexOf(draggableId)===pattren.indexOf(draggableId)));&lt;br&gt;
    const newState = {&lt;br&gt;
      ...this.state,&lt;br&gt;
      columns: {&lt;br&gt;
        ...this.state.columns,&lt;br&gt;
        [newStart.id]: newStart,&lt;br&gt;
        [newFinish.id]: newFinish&lt;br&gt;
      }&lt;br&gt;
    }&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;this.setState(newState)
// console.log("did",draggableId)
// console.log("state",this.state.tasks)
// const items =this.state.tasks;
// const valueToRemove = 'task-1';
// const filteredItems = items.filter(function(item) {
//     return item !== valueToRemove
//   })
// this.state.tasks=filteredItems;
// var array=this.state.tasks;
// var index=
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}else{&lt;br&gt;
    return;&lt;br&gt;
}&lt;br&gt;
  }&lt;/p&gt;

&lt;p&gt;render() {&lt;br&gt;
    return (&lt;br&gt;
      &lt;br&gt;
        &lt;br&gt;
          {this.state.columnOrder.map(columnId =&amp;gt; {&lt;br&gt;
            const column = this.state.columns[columnId]&lt;br&gt;
            const tasks = column.taskIds.map(&lt;br&gt;
              taskId =&amp;gt; this.state.tasks[taskId]&lt;br&gt;
            )&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;        return (
          &amp;lt;Column key={column.id} column={column} tasks={tasks} /&amp;gt;
        )
      })}
    &amp;lt;/Container&amp;gt;
  &amp;lt;/DragDropContext&amp;gt;
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;const rootElement = document.getElementById('root')&lt;br&gt;
ReactDOM.render(, rootElement)&lt;/p&gt;

&lt;p&gt;below is column.js component&lt;/p&gt;

&lt;p&gt;import React from 'react'&lt;br&gt;
import styled from 'styled-components'&lt;br&gt;
import Task from './task'&lt;br&gt;
import { Droppable } from 'react-beautiful-dnd'&lt;/p&gt;

&lt;p&gt;const Container = styled.div`&lt;br&gt;
  margin: 8px;&lt;br&gt;
  border: 1px solid lightgrey;&lt;br&gt;
  border-radius: 2px;&lt;br&gt;
  width: 220px;&lt;/p&gt;

&lt;p&gt;display: flex;&lt;br&gt;
  flex-direction: column;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
const Title = styled.h3&lt;/code&gt;&lt;br&gt;
  padding: 8px;&lt;br&gt;
&lt;code&gt;&lt;br&gt;
const TaskList = styled.div&lt;/code&gt;&lt;br&gt;
  padding: 8px;&lt;br&gt;
  transition: background-color 0.2s ease;&lt;br&gt;
  background-color: ${props =&amp;gt;&lt;br&gt;
    props.isDraggingOver ? 'skyblue' : 'white'}&lt;br&gt;
  flex-grow: 1;&lt;br&gt;
  min-height: 100px;&lt;br&gt;
`&lt;br&gt;
// const getShuffledArr = arr =&amp;gt; {&lt;br&gt;
//     if (arr.length === 1) {return arr};&lt;br&gt;
//     const rand = Math.floor(Math.random() * arr.length);&lt;br&gt;
//     return [arr[rand], ...getShuffledArr(arr.filter((_, i) =&amp;gt; i != rand))];&lt;br&gt;
//   };&lt;/p&gt;

&lt;p&gt;// function shuffleArray(array) {&lt;br&gt;
//     let i = array.length - 1;&lt;br&gt;
//     for (; i &amp;gt; 0; i--) {&lt;br&gt;
//       const j = Math.floor(Math.random() * (i ));&lt;br&gt;
//       const temp = array[i];&lt;br&gt;
//       array[i] = array[j];&lt;br&gt;
//       array[j] = temp;&lt;br&gt;
//     }&lt;br&gt;
//     return array;&lt;br&gt;
//   }&lt;/p&gt;

&lt;p&gt;const shuffle =(arra1) =&amp;gt; {&lt;br&gt;
    var ctr = arra1.length, temp, index;&lt;/p&gt;

&lt;p&gt;// While there are elements in the array&lt;br&gt;
    while (ctr &amp;gt; 0) {&lt;br&gt;
// Pick a random index&lt;br&gt;
        index = Math.floor(Math.random() * ctr);&lt;br&gt;
// Decrease ctr by 1&lt;br&gt;
        ctr--;&lt;br&gt;
// And swap the last element with it&lt;br&gt;
        temp = arra1[ctr];&lt;br&gt;
        arra1[ctr] = arra1[index];&lt;br&gt;
        arra1[index] = temp;&lt;br&gt;
    }&lt;br&gt;
    return arra1;&lt;br&gt;
}&lt;br&gt;
export default class Column extends React.Component {&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;componentWillMount() {
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
  render() {&lt;br&gt;
    // const shuffledArr = getShuffledArr(this.props.tasks);&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;const shuffledArr = shuffle(this.props.tasks);
return (

  &amp;lt;Container&amp;gt;
    &amp;lt;Title&amp;gt;{this.props.column.title}&amp;lt;/Title&amp;gt;
    &amp;lt;Droppable droppableId={this.props.column.id} type="TASK"&amp;gt;
      {(provided, snapshot) =&amp;gt; (
        &amp;lt;TaskList
          ref={provided.innerRef}
          {...provided.droppableProps}
          isDraggingOver={snapshot.isDraggingOver}
        &amp;gt;
          {shuffledArr.map((task, index) =&amp;gt; (
            &amp;lt;Task key={task.id} task={task} index={index} /&amp;gt;
          ))}
          {provided.placeholder}
        &amp;lt;/TaskList&amp;gt;
      )}
    &amp;lt;/Droppable&amp;gt;
  &amp;lt;/Container&amp;gt;
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;}&lt;/p&gt;

&lt;p&gt;below is task .js component &lt;/p&gt;

&lt;p&gt;import React from 'react'&lt;br&gt;
import styled from 'styled-components'&lt;br&gt;
import { Draggable } from 'react-beautiful-dnd'&lt;/p&gt;

&lt;p&gt;const Container = styled.div&lt;code&gt;&lt;br&gt;
  border: 1px solid lightgrey;&lt;br&gt;
  border-radius: 2px;&lt;br&gt;
  padding: 8px;&lt;br&gt;
  margin-bottom: 8px;&lt;br&gt;
  transition: background-color 0.2s ease;&lt;br&gt;
  background-color: ${props =&amp;gt;&lt;br&gt;
    props.isDragDisabled&lt;br&gt;
      ? 'lightgrey'&lt;br&gt;
      : props.isDragging&lt;br&gt;
        ? 'lightgreen'&lt;br&gt;
        : 'white'};&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;export default class Task extends React.Component {&lt;br&gt;
  render() {&lt;br&gt;
    // const isDragDisabled = this.props.task.id === 'task-1'&lt;br&gt;
    return (&lt;br&gt;
      
        draggableId={this.props.task.id}&lt;br&gt;
        index={this.props.index}&lt;br&gt;
       // isDragDisabled={isDragDisabled}&lt;br&gt;
      &amp;gt;&lt;br&gt;
        {(provided, snapshot) =&amp;gt; (&lt;br&gt;
          
            {...provided.draggableProps}&lt;br&gt;
            {...provided.dragHandleProps}&lt;br&gt;
            ref={provided.innerRef}&lt;br&gt;
            isDragging={snapshot.isDragging}&lt;br&gt;
         //   isDragDisabled={isDragDisabled}&lt;br&gt;
          &amp;gt;&lt;br&gt;
            {this.props.task.content}&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;      &amp;lt;/Container&amp;gt;
    )}
  &amp;lt;/Draggable&amp;gt;
)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;}&lt;br&gt;
}&lt;/p&gt;

&lt;p&gt;if any one can help it would be really help full I am on very basic level of learning react &lt;/p&gt;

</description>
      <category>react</category>
      <category>javascript</category>
    </item>
  </channel>
</rss>
