make generic delete item function, make create item generic. add delete buttons and indexes
This commit is contained in:
@@ -4,24 +4,27 @@
|
|||||||
<title>Twilio Sync Kanban</title>
|
<title>Twilio Sync Kanban</title>
|
||||||
<meta charset="utf-8">
|
<meta charset="utf-8">
|
||||||
<script src="https://media.twiliocdn.com/sdk/js/sync/v0.8/twilio-sync.min.js"></script>
|
<script src="https://media.twiliocdn.com/sdk/js/sync/v0.8/twilio-sync.min.js"></script>
|
||||||
|
<style>
|
||||||
|
div { margin: .5em; }
|
||||||
|
span { padding: .5em; }
|
||||||
|
</style>
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<form onsubmit="addTodo(event)">
|
<form onsubmit="addItem(event, 'todos')">
|
||||||
<input id="todo-input" type=text name=todo />
|
<input id="todo-input" type=text name=todos />
|
||||||
<input type=submit />
|
<input type=submit />
|
||||||
</form>
|
</form>
|
||||||
<div id="todos"></div>
|
<div id="todos"></div>
|
||||||
<script>
|
<script>
|
||||||
let syncClient
|
let syncClient, removeList, updateItem, deleteItem
|
||||||
|
|
||||||
const addTodo = async event => {
|
const addItem = async (event, listName) => {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
newToDoField = event.target.elements.todo
|
const newItemField = event.target.elements[listName]
|
||||||
const newTodo = newToDoField.value
|
const newItem = newItemField.value
|
||||||
console.log(newTodo)
|
newItemField.value = ''
|
||||||
newToDoField.value = ''
|
const list = await syncClient.list(listName)
|
||||||
const todos = await syncClient.list('todos')
|
list.push({name: newItem})
|
||||||
todos.push({name: newTodo})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const setupTwilioClient = async () => {
|
const setupTwilioClient = async () => {
|
||||||
@@ -40,21 +43,57 @@
|
|||||||
console.log('Sync is live!')
|
console.log('Sync is live!')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
|
removeList = async listName => {
|
||||||
|
const list = await syncClient.list(listName)
|
||||||
|
return list.removeList()
|
||||||
|
}
|
||||||
|
|
||||||
|
deleteItem = async (listName, index) => {
|
||||||
|
const list = await syncClient.list(listName)
|
||||||
|
list.remove(index)
|
||||||
|
}
|
||||||
|
|
||||||
const todos = await syncClient.list('todos')
|
const todos = await syncClient.list('todos')
|
||||||
const items = await todos.getItems()
|
const items = await todos.getItems()
|
||||||
const todosDiv = document.getElementById('todos')
|
const todosDiv = document.getElementById('todos')
|
||||||
items.items.forEach(item => {
|
items.items.forEach(item => {
|
||||||
const itemDiv = document.createElement('div')
|
const { data } = item
|
||||||
itemDiv.className = "todo-item"
|
const containerDiv = document.createElement('div')
|
||||||
itemDiv.innerText = item.data.value.name
|
containerDiv.className = "todo-item"
|
||||||
todosDiv.appendChild(itemDiv)
|
containerDiv.dataset.index = data.index
|
||||||
|
const itemSpan = document.createElement('span')
|
||||||
|
itemSpan.innerText = data.value.name
|
||||||
|
containerDiv.appendChild(itemSpan)
|
||||||
|
|
||||||
|
const deleteButton = document.createElement('button')
|
||||||
|
deleteButton.innerText = "delete"
|
||||||
|
deleteButton.addEventListener('click', () => deleteItem('todos', data.index))
|
||||||
|
containerDiv.appendChild(deleteButton)
|
||||||
|
|
||||||
|
todosDiv.appendChild(containerDiv)
|
||||||
})
|
})
|
||||||
|
|
||||||
todos.on('itemAdded', item => {
|
todos.on('itemAdded', item => {
|
||||||
const itemDiv = document.createElement('div')
|
const data = item.item.data
|
||||||
itemDiv.className = "todo-item"
|
const containerDiv = document.createElement('div')
|
||||||
itemDiv.innerText = item.item.data.value.name
|
containerDiv.className = "todo-item"
|
||||||
todosDiv.appendChild(itemDiv)
|
containerDiv.dataset.index = data.index
|
||||||
|
const itemSpan = document.createElement('span')
|
||||||
|
itemSpan.innerText = data.value.name
|
||||||
|
containerDiv.appendChild(itemSpan)
|
||||||
|
|
||||||
|
const deleteButton = document.createElement('button')
|
||||||
|
deleteButton.innerText = "delete"
|
||||||
|
deleteButton.addEventListener('click', () => deleteItem('todos', data.index))
|
||||||
|
containerDiv.appendChild(deleteButton)
|
||||||
|
|
||||||
|
todosDiv.appendChild(containerDiv)
|
||||||
|
})
|
||||||
|
|
||||||
|
todos.on('itemRemoved', item => {
|
||||||
|
const itemDiv = document.querySelector(`.todo-item[data-index="${item.index}"`)
|
||||||
|
itemDiv.remove()
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user