journey/client/index.js
2017-02-24 18:22:26 +01:00

71 lines
1.5 KiB
JavaScript

import { $, $$ } from 'dollr';
import dragula from 'dragula';
import { h, render } from 'preact';
import ResultList from './components/ResultList';
import store from './store';
import { receiveResults } from './actions/results';
const result = $('pre');
const containers = $$('.location');
const drake = dragula(containers, {
revertOnSpill: true,
// accepts(el, target, source, sibling) {
// // console.log('accepts');
// // console.log(target);
// return true;
ignoreInputTextSelection: false,
// }
});
drake.on('drop', (el, target, source) => {
drake.cancel();
if (target !== source) {
fetch('/api/trip', {
method: 'POST',
headers: {
'content-type': 'application/json',
accepts: 'application/json',
},
body: JSON.stringify({
from: source.dataset.location,
to: target.dataset.location,
}),
}).then((res) => {
return res.json();
}).then((json) => {
console.log(json);
// result.textContent = JSON.stringify(json, null, ' ')
store.dispatch(receiveResults(json));
}).catch((err) => {
console.log('error');
console.log(err);
});
}
});
function prevent(e) {
e.preventDefault();
}
drake.on('over', (el, target, source) => {
if (target !== source) {
target.classList.add('over');
}
});
drake.on('out', (el, target, source) => {
if (target !== source) {
target.classList.remove('over');
}
});
render(
<ResultList />,
$('#results')
);