stages.js 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. var stages = (function() {
  2. let _width = _getWidth();
  3. let _height = _getHeigth();
  4. let _stage = new Object();
  5. let _layer = new Object();
  6. let _files = [];
  7. let _layers = [];
  8. function _createStage() {
  9. var id = _files.length;
  10. _makeTemplate(id);
  11. _stage = new Konva.Stage({
  12. container: `container-${id}`,
  13. width: _width,
  14. height: _height
  15. });
  16. _setStage(_stage);
  17. _files.push(_stage);
  18. _createLayer();
  19. return _stage;
  20. }
  21. function _getStage() {
  22. return _stage;
  23. }
  24. function _setStage(stage) {
  25. _stage = stage;
  26. }
  27. function _createLayer() {
  28. let sequence = 0;
  29. if (_layers == null || _layers.length == 0) {
  30. sequence++;
  31. } else {
  32. sequence = _layers.length + 1;
  33. }
  34. let layer = { sequence: sequence, layer: new Konva.Layer() };
  35. _layers.push(layer);
  36. if (_getCurrentLayer() == undefined && _layers.length == 0) {
  37. _layers = [];
  38. _layers.push(layer);
  39. }
  40. _layer = layer;
  41. _stage.add(_layer.layer);
  42. return layer;
  43. }
  44. function _getFiles() {
  45. return _files;
  46. }
  47. function _getWidth() {
  48. return $("#content").width();
  49. }
  50. function _getHeigth() {
  51. return (
  52. $("#sidebar").height() - $("#header").height() - $("#files").height() - 2
  53. );
  54. }
  55. function _evenNewDocument() {
  56. _createStage();
  57. }
  58. function _getCurrentLayer() {
  59. return _layer.layer;
  60. }
  61. function _getCurrentLayerWithSequence() {
  62. return _layer;
  63. }
  64. function _bootstrap() {
  65. $("#files").empty();
  66. $("body").on("click", "#new-document", _evenNewDocument);
  67. }
  68. function _makeTemplate(id) {
  69. $(".stage").each(function() {
  70. $(this).addClass("hidden");
  71. });
  72. $(".file").each(function() {
  73. $(this).removeClass("active");
  74. });
  75. $("#stages").append(`<div id="container-${id}" class="stage"></div>`);
  76. $("#files").append(
  77. `<li class="file active"><button>New Document ${id + 1}</button></li>`
  78. );
  79. }
  80. _bootstrap();
  81. return {
  82. create: _createStage,
  83. getFiles: _getFiles,
  84. _getStage: _getStage,
  85. getCurrentLayer: _getCurrentLayer
  86. };
  87. })();