More reliable desktop-to-PS team dragging

This commit is contained in:
Guangcong Luo
2015-07-14 15:01:40 -04:00
parent a9056d097b
commit e2969f22ea
2 changed files with 22 additions and 9 deletions

View File

@@ -290,7 +290,7 @@
var target = e.currentTarget;
var dataTransfer = e.originalEvent.dataTransfer;
dataTransfer.effectAllowed = 'move';
dataTransfer.effectAllowed = 'copyMove';
dataTransfer.setData("text/plain", "Team " + e.currentTarget.dataset.value);
@@ -395,8 +395,7 @@
// Drag originated outside teambuilder
if (!e.originalEvent.dataTransfer) return;
if (!e.originalEvent.dataTransfer.files) return;
if (!e.originalEvent.dataTransfer.files[0]) return;
if (e.originalEvent.dataTransfer.files[0].name.slice(-4) !== '.txt') return;
if (e.originalEvent.dataTransfer.files[0] && e.originalEvent.dataTransfer.files[0].name.slice(-4) !== '.txt') return;
// We're dragging a .txt file! It might be a team!
this.$('.teamlist').append('<li class="dragging"><div class="team" data-value="' + Storage.teams.length + '"></div></li>');
app.dragging = this.$('.dragging .team')[0];
@@ -408,6 +407,13 @@
defaultDropTeam: function (e) {
if (e.originalEvent.dataTransfer.files && e.originalEvent.dataTransfer.files[0]) {
var file = e.originalEvent.dataTransfer.files[0];
var name = file.name;
if (name.slice(-4) !== '.txt') {
app.dragging = null;
this.updateTeamList();
app.addPopupMessage("Your file is not a valid team. Team files are .txt files.");
return;
}
var reader = new FileReader();
var self = this;
reader.onload = function(e) {
@@ -415,12 +421,12 @@
try {
team = Storage.packTeam(Storage.importTeam(e.target.result));
} catch (err) {
alert("Not a valid team.");
app.addPopupMessage("Your file is not a valid team.");
self.updateTeamList();
return;
}
var name = file.name;
if (name.substr(name.length-4).toLowerCase() === '.txt') {
if (name.slice(name.length-4).toLowerCase() === '.txt') {
name = name.substr(0, name.length-4);
}
var format = '';

View File

@@ -30,10 +30,16 @@
$(document).on('dragenter', function (e) {
e.preventDefault();
if (!app.dragging && e.originalEvent.dataTransfer.files && e.originalEvent.dataTransfer.files[0]) {
var file = e.originalEvent.dataTransfer.files[0];
if (file.name.slice(-4) === '.txt' && app.curRoom.id === 'teambuilder') {
// Someone dragged in a .txt file, hand it to the teambuilder
if (!app.dragging && app.curRoom.id === 'teambuilder') {
if (e.originalEvent.dataTransfer.files && e.originalEvent.dataTransfer.files[0]) {
var file = e.originalEvent.dataTransfer.files[0];
if (file.name.slice(-4) === '.txt') {
// Someone dragged in a .txt file, hand it to the teambuilder
app.curRoom.defaultDragEnterTeam(e);
}
} else {
// security doesn't let us read the filename :(
// we'll just have to assume it's a team
app.curRoom.defaultDragEnterTeam(e);
}
}
@@ -55,6 +61,7 @@
if (file.name.slice(-4) === '.txt' && app.curRoom.id === 'teambuilder') {
// Someone dragged in a .txt file, hand it to the teambuilder
app.curRoom.defaultDragEnterTeam(e);
app.curRoom.defaultDropTeam(e);
} else if (file.type && file.type.substr(0, 6) === 'image/') {
// It's an image file, try to set it as a background
CustomBackgroundPopup.readFile(file);