CreateColumnPanel.ts 2,1 КБ
Newer Older
avathar's avatar
avathar включено в состав коммита
1
2
// @ts-nocheck

avathar's avatar
avathar включено в состав коммита
3
import { TreeNode } from 'src/types/stores/kanvaso';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
4
5
import { COLOR_LIGHT, COLOR_PRIMARY, COLOR_DARK } from './Const';
import { DefaultDepth, DragObjectDepth } from './Const';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
6
import CreateItemsBox from '../cards/CreateItemsBox';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
7

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
8
type DialogFunction = (config: any) => any;
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
9
10
11
12
13
type RoundRectangleFunction = (config: any) => any;
type LabelFunction = (config: any) => any;
type TextFunction = (x: number, y: number, text: string, style: any) => any;

type SceneType = {
avathar's avatar
avathar включено в состав коммита
14
  rexUI: {
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
15
    add: {
avathar's avatar
avathar включено в состав коммита
16
17
18
19
20
21
22
23
24
      dialog: DialogFunction;
      roundRectangle: RoundRectangleFunction;
      label: LabelFunction;
    };
  };
  add: {
    text: TextFunction;
  };
};
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
25

avathar's avatar
avathar включено в состав коммита
26
const CreateColumnPanel = (scene: SceneType, cards: TreeNode, registry) => {
avathar's avatar
avathar включено в состав коммита
27
28
29
30
31
32
33
  const panel = scene.rexUI.add
    .dialog({
      width: 120,
      space: { left: 10, right: 10, top: 10, bottom: 10 },
      background: scene.rexUI.add.roundRectangle({
        strokeColor: COLOR_DARK,
      }),
avathar's avatar
avathar включено в состав коммита
34
      title: CreateTitle(scene, cards.name, registry),
avathar's avatar
avathar включено в состав коммита
35
      content: CreateItemsBox(scene, cards, registry),
avathar's avatar
avathar включено в состав коммита
36
37
38
      proportion: {
        content: 1,
      },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
39
40
41
    })
    .setOrigin(0, 0);

avathar's avatar
avathar включено в состав коммита
42
  SetDraggable(panel);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
43

avathar's avatar
avathar включено в состав коммита
44
  return panel;
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
45
46
};

avathar's avatar
avathar включено в состав коммита
47
const CreateTitle = (scene: SceneType, text: string, registry) => {
avathar's avatar
avathar включено в состав коммита
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  return scene.rexUI.add.label({
    background: scene.rexUI.add.roundRectangle({
      color: COLOR_LIGHT,
    }),
    text: scene.add.text(0, 0, text, {
      fontSize: 18,
    }),
    align: 'left',
    space: {
      left: 5,
      right: 5,
      top: 5,
      bottom: 5,
    },
  });
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
63
64
65
};

const SetDraggable = (panel: any) => {
avathar's avatar
avathar включено в состав коммита
66
67
68
69
70
71
72
  panel
    .setDraggable({
      sensor: 'title',
      target: panel,
    })
    .on('sizer.dragstart', OnPanelDragStart, panel)
    .on('sizer.dragend', OnPanelDragEnd, panel);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
73
74
};

avathar's avatar
avathar включено в состав коммита
75
76
77
const OnPanelDragStart = function (this: any) {
  this.setDepth(DragObjectDepth);
  this.getElement('background').setStrokeStyle(3, 0xff0000);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
78
79
};

avathar's avatar
avathar включено в состав коммита
80
81
82
const OnPanelDragEnd = function (this: any) {
  this.setDepth(DefaultDepth);
  this.getElement('background').setStrokeStyle(2, COLOR_DARK);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
83
84
85
};

export default CreateColumnPanel;