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

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
3
4
5
6
7
// import 'phaser';
// import UIPlugin from 'phaser3-rex-plugins/templates/ui/ui-plugin';
import { COLOR_LIGHT, COLOR_PRIMARY, COLOR_DARK } from './Const';
import { DefaultDepth, DragObjectDepth } from './Const';
import CreateColumnPanelsBox from './CreateColumnPanelsBox';
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
8
9
10
import CreateHeader from './CreateHeader';
import AddResizeController from './AddResizeController';

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
11
12
type Scene = {
  rexUI: {
avathar's avatar
avathar включено в состав коммита
13
14
15
16
    add: {
      sizer: (config: SizerConfig) => Sizer;
    };
  };
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
17
18
19
20
21
};

type SizerConfig = {
  orientation: string;
  space: {
avathar's avatar
avathar включено в состав коммита
22
23
24
25
    left: number;
    right: number;
    top: number;
    bottom: number;
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
26
27
28
29
30
31
32
  };
};

type Sizer = {
  add: (item: any, config: any) => void;
};

avathar's avatar
avathar включено в состав коммита
33
34
const CreateScrollablePanel = (
  scene: Scene,
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
35
  objekto: TreeNode,
avathar's avatar
avathar включено в состав коммита
36
37
  watch,
  computed,
avathar's avatar
avathar включено в состав коммита
38
): ScrollablePanel => {
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
39
  const config: ScrollablePanelConfig = {
avathar's avatar
avathar включено в состав коммита
40
    adaptThumbSizeMode: true,
avathar's avatar
avathar включено в состав коммита
41
42
43
44
45
46
47
    width: 400,
    height: 400,
    background: scene.rexUI.add.roundRectangle({
      radius: 10,
      strokeColor: COLOR_DARK,
    }),
    panel: {
avathar's avatar
avathar включено в состав коммита
48
49
      child: CreateColumnPanelsBox(
        scene,
avathar's avatar
avathar включено в состав коммита
50
        objekto ? objekto[0]?.getChildrens()[0] : {},
avathar's avatar
avathar включено в состав коммита
51
      ),
avathar's avatar
avathar включено в состав коммита
52
53
54
      mask: {
        padding: 2,
        updateMode: 'everyTick',
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
55
      },
avathar's avatar
avathar включено в состав коммита
56
57
58
59
    },
    sliderX: {
      track: { width: 20, radius: 10, color: COLOR_DARK },
      thumb: { radius: 13, color: COLOR_LIGHT },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
60
61
      hideUnscrollableSlider: true,
      input: 'click',
avathar's avatar
avathar включено в состав коммита
62
63
64
65
    },
    sliderY: {
      track: { width: 20, radius: 10, color: COLOR_DARK },
      thumb: { radius: 13, color: COLOR_LIGHT },
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
66
67
      hideUnscrollableSlider: true,
      input: 'click',
avathar's avatar
avathar включено в состав коммита
68
69
70
71
72
73
74
75
76
77
78
    },
    scrollerX: false,
    scrollerY: false,
    space: {
      left: 10,
      right: 10,
      top: 10,
      bottom: 10,
      sliderX: 10,
      sliderY: 10,
    },
avathar's avatar
avathar включено в состав коммита
79
    header: CreateHeader(scene, objekto[0], watch, computed),
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
80
  };
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
81

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
82
83
84
  // const config2: ScrollablePanelConfig = {
  //   // width: 400,
  //   // height: 400,
avathar's avatar
avathar включено в состав коммита
85

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
  //   panel: {
  //     child: CreateColumnPanelsBox(
  //       scene,
  //       objekto ? objekto[0]?.children[0] : {},
  //     ),
  //     mask: {
  //       // padding: 2,
  //       updateMode: 'everyTick',
  //     },
  //   },
  //   sliderX: {
  //     track: { width: 20, radius: 10, color: COLOR_DARK },
  //     thumb: { radius: 13, color: COLOR_LIGHT },
  //     hideUnscrollableSlider: true,
  //     input: 'click',
  //   },
  //   sliderY: {
  //     track: { width: 20, radius: 10, color: COLOR_DARK },
  //     thumb: { radius: 13, color: COLOR_LIGHT },
  //     hideUnscrollableSlider: true,
  //     input: 'click',
  //   },
  //   scrollerX: true,
  //   scrollerY: true,
  //   space: {
  //     // left: 10,
  //     // right: 10,
  //     // top: 10,
  //     // bottom: 10,
  //     sliderX: 10,
  //     sliderY: 10,
  //   },
  //   header: CreateHeader(scene, objekto ? objekto[0]?.nomo?.enhavo : ''),
  // };
avathar's avatar
avathar включено в состав коммита
120

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
121
  // Создаем ScrollablePanel
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
122
  const scrollablePanel = scene.rexUI.add.scrollablePanel(config);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
123
  // const scrollablePanel2 = scene.rexUI.add.scrollablePanel(config2);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
124
125
126

  // Устанавливаем возможность перетаскивания
  scrollablePanel.setDraggable('header');
avathar's avatar
avathar включено в состав коммита
127
  // scrollablePanel2.setDraggable('header');
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
128
129
130

  // Вызываем метод layout для обновления компоновки
  scrollablePanel.layout();
avathar's avatar
avathar включено в состав коммита
131
  // scrollablePanel2.layout();
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
132
133

  // Добавляем контроллер для изменения размера
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
134
  AddResizeController(scrollablePanel);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
135
  // AddResizeController(scrollablePanel2);
avathar's avatar
avathar включено в состав коммита
136

Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
137
  // scrollablePanel.add(scrollablePanel2);
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
138

avathar's avatar
avathar включено в состав коммита
139
140
  return scrollablePanel;
};
Medvedev Anton's avatar
Medvedev Anton включено в состав коммита
141
142

export default CreateScrollablePanel;