123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- import { Stage } from "../drawers/stage";
- class StageManager {
- constructor() {
- this._width = this._getWidth();
- this._height = this._getHeigth();
- this._files = [];
- this.stages = [];
- this._stage;
- this._bootstrap();
- }
- getSize() {
- return {
- w: this._width,
- h: this._height
- }
- }
- getCurrentStage() {
- return this._stage;
- }
- getCurrentKonvaStage() {
- return this._stage.konvaStage;
- }
- getCurrentLayer() {
- return this._stage.getCurrentLayer();
- }
- getCurrentKonvaLayer() {
- return this._stage.getCurrentKonvaLayer();
- }
- create() {
- let id = this._files.length + 1;
- this._createLayer();
- this._makeTemplate(this._stage.layer);
- this._files.push(this._stage.layer);
- this._clearLayers();
- return this._stage;
- }
- getFiles() {
- return this._files;
- }
- _getStage() {
- return this._stage;
- }
- _setStage(stage) {
- this._stage = stage;
- }
- _createLayer() {
- const stage = this.getCurrentStage();
- const layer = stage.createLayer();
- return layer;
- }
- _getFiles() {
- return _files;
- }
- _clearLayers(layer) {
- this._files.forEach(element => {
- element.konvaLayer.hide();
- });
- if (layer == undefined) layer = this.getCurrentLayer();
- else this._stage.setCurrentLayer(layer);
- layer.konvaLayer.show();
- this.getCurrentKonvaStage().draw();
- }
- _getWidth() {
- return $("#content").width();
- }
- _getHeigth() {
- return (
- $("#sidebar").height() - $("#header").height() - $("#files").height() - 2
- );
- }
- _evenNewDocument() {
- this.create();
- }
- _getCurrentLayer() {
- return _layer.layer;
- }
- _getCurrentLayerWithSequence() {
- return _layer;
- }
- _selectFile(e) {
- const file = $(e.currentTarget);
- const id = parseInt(file.attr("file-id"));
- const layer = this._files.find(function (element) {
- return element.id == id;
- });
- $(".file").each(function () {
- $(this).removeClass("active");
- });
- file.addClass("active");
- if (layer != undefined) this._clearLayers(layer);
- this._setLayerTitle(layer);
- }
- _bootstrap() {
- $("#files").empty();
- $("body").on("click", "#new-document", this._evenNewDocument.bind(this));
- $("body").on("click", ".file", this._selectFile.bind(this));
- $("#stages").append(`<div id="container" class="stage"></div>`);
- const stage = new Konva.Stage({
- container: `container`,
- width: this._width,
- height: this._height
- });
- this._setStage(new Stage());
- this._stage.setKonvaStage(stage);
- this.create();
- }
- _makeTemplate(layer) {
- $(".file").each(function () {
- $(this).removeClass("active");
- });
- $("#files").append(
- `<li class="file active" file-id="${layer.id}"><button>${layer.name}</button></li>`
- );
- this._setLayerTitle(layer);
- }
- _setLayerTitle(layer) {
- $("#selected-document").empty();
- $("#selected-document").append(layer.name);
- }
- }
- export const stageManager = new StageManager();
|