mirror of
https://github.com/piskelapp/piskel.git
synced 2023-08-10 21:12:52 +03:00
Dragndrop preview film tiles
- import go jquery-ui - Basic implementation without styling - only swapping is possible (no insertion)
This commit is contained in:
parent
022773d3ab
commit
b824207d1d
@ -84,10 +84,18 @@
|
|||||||
background-color: lightgray;
|
background-color: lightgray;
|
||||||
}
|
}
|
||||||
|
|
||||||
#preview-list .preview-tile.selected {
|
.preview-tile.selected {
|
||||||
background-color: lightyellow;
|
background-color: lightyellow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.droppable-active {
|
||||||
|
background-color: pink;
|
||||||
|
}
|
||||||
|
|
||||||
|
.droppable-hover-active {
|
||||||
|
background-color: yellow;
|
||||||
|
}
|
||||||
|
|
||||||
.canvas-container {
|
.canvas-container {
|
||||||
position: relative;
|
position: relative;
|
||||||
display: block;
|
display: block;
|
||||||
|
@ -76,6 +76,7 @@
|
|||||||
|
|
||||||
<!-- Core libraries: -->
|
<!-- Core libraries: -->
|
||||||
<script src="js/lib/jquery-1.8.0.js"></script>
|
<script src="js/lib/jquery-1.8.0.js"></script>
|
||||||
|
<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.8.23/jquery-ui.min.js"></script>
|
||||||
<script src="js/lib/pubsub.js"></script>
|
<script src="js/lib/pubsub.js"></script>
|
||||||
|
|
||||||
<!-- Application wide configuration -->
|
<!-- Application wide configuration -->
|
||||||
|
@ -21,12 +21,46 @@
|
|||||||
};
|
};
|
||||||
|
|
||||||
ns.PreviewFilmController.prototype.createPreviews = function () {
|
ns.PreviewFilmController.prototype.createPreviews = function () {
|
||||||
this.container.innerHTML = "";
|
this.container.html("");
|
||||||
for (var i = 0, l = this.framesheet.getFrameCount(); i < l ; i++) {
|
for (var i = 0, l = this.framesheet.getFrameCount(); i < l ; i++) {
|
||||||
this.container.appendChild(this.createPreviewTile(i));
|
this.container.append(this.createPreviewTile(i));
|
||||||
}
|
}
|
||||||
|
this.initTilesBehavior();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ns.PreviewFilmController.prototype.initTilesBehavior = function () {
|
||||||
|
var tiles = $(".preview-tile");
|
||||||
|
tiles.draggable( {
|
||||||
|
containment: '#preview-list',
|
||||||
|
stack: '.preview-tile',
|
||||||
|
cursor: 'move',
|
||||||
|
revert: true
|
||||||
|
});
|
||||||
|
|
||||||
|
tiles.droppable( {
|
||||||
|
accept: ".preview-tile",
|
||||||
|
activeClass: "droppable-active",
|
||||||
|
hoverClass: "droppable-hover-active",
|
||||||
|
drop: $.proxy(this.onDrop_, this)
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @private
|
||||||
|
*/
|
||||||
|
ns.PreviewFilmController.prototype.onDrop_ = function( event, ui ) {
|
||||||
|
var frameId1 = parseInt($(event.srcElement).data("tile-number"), 10);
|
||||||
|
var frameId2 = parseInt($(event.target).data("tile-number"), 10);
|
||||||
|
|
||||||
|
this.framesheet.swapFrames(frameId1, frameId2);
|
||||||
|
|
||||||
|
// TODO(vincz): deprecate
|
||||||
|
piskel.setActiveFrameAndRedraw(frameId2);
|
||||||
|
|
||||||
|
// TODO(vincz): move localstorage request to the model layer?
|
||||||
|
$.publish(Events.LOCALSTORAGE_REQUEST);
|
||||||
|
};
|
||||||
|
|
||||||
ns.PreviewFilmController.prototype.createPreviewTile = function(tileNumber) {
|
ns.PreviewFilmController.prototype.createPreviewTile = function(tileNumber) {
|
||||||
var frame = this.framesheet.getFrameByIndex(tileNumber);
|
var frame = this.framesheet.getFrameByIndex(tileNumber);
|
||||||
var width = frame.getWidth() * this.dpi,
|
var width = frame.getWidth() * this.dpi,
|
||||||
@ -34,6 +68,7 @@
|
|||||||
|
|
||||||
var previewTileRoot = document.createElement("li");
|
var previewTileRoot = document.createElement("li");
|
||||||
var classname = "preview-tile";
|
var classname = "preview-tile";
|
||||||
|
previewTileRoot.setAttribute("data-tile-number", tileNumber);
|
||||||
|
|
||||||
if (piskel.getActiveFrameIndex() == tileNumber) {
|
if (piskel.getActiveFrameIndex() == tileNumber) {
|
||||||
classname += " selected";
|
classname += " selected";
|
||||||
|
@ -95,4 +95,19 @@
|
|||||||
var frame = this.getFrameByIndex(index);
|
var frame = this.getFrameByIndex(index);
|
||||||
this.frames.splice(index + 1, 0, frame.clone());
|
this.frames.splice(index + 1, 0, frame.clone());
|
||||||
};
|
};
|
||||||
|
|
||||||
|
ns.FrameSheet.prototype.swapFrames = function(indexFrame1, indexFrame2) {
|
||||||
|
if(isNaN(indexFrame1) || isNaN(indexFrame1) ||
|
||||||
|
(!this.hasFrameAtIndex(indexFrame1) && !this.hasFrameAtIndex(indexFrame2))) {
|
||||||
|
throw "Bad indexes for swapFrames Framesheet function.";
|
||||||
|
}
|
||||||
|
if(indexFrame1 == indexFrame2) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
var swapFrame = this.frames[indexFrame1];
|
||||||
|
this.frames[indexFrame1] = this.frames[indexFrame2];
|
||||||
|
this.frames[indexFrame2] = swapFrame;
|
||||||
|
}
|
||||||
|
};
|
||||||
})();
|
})();
|
@ -73,7 +73,7 @@ $.namespace("pskl");
|
|||||||
|
|
||||||
this.previewsController = new pskl.controller.PreviewFilmController(
|
this.previewsController = new pskl.controller.PreviewFilmController(
|
||||||
frameSheet,
|
frameSheet,
|
||||||
$('#preview-list')[0],
|
$('#preview-list'),
|
||||||
previewTileCanvasDpi
|
previewTileCanvasDpi
|
||||||
);
|
);
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user