123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245 |
- import { makeDiv,
- makeCenteredTextDiv,
- setElementPosition,
- getInputHeight } from '/domUtilities.js';
- import { getGridCoordinates,
- returnPanels } from './gridUtilities.js';
- import { jc as jcGlobal } from '/configuration.js';
- function makeTabsRemoveSplitPanel(coords,
- tabs,
- gridContents,
- i,
- redraw,
- availablePanels,
- gridSplits,
- prevGrid) {
- const jc = jcGlobal.jc;
- const inputHeight = getInputHeight();
-
- const div = makeDiv();
- setElementPosition(div, coords);
-
- const tabsCoords = [coords[0],
- coords[1],
- coords[2],
- inputHeight];
- const contentCoords = [coords[0],
- coords[1] + inputHeight,
- coords[2],
- coords[3] - inputHeight];
-
- if(gridSplits) {
- const tabsPanel = makeDiv();
- tabsPanel.style.opacity = 0;
- setElementPosition(tabsPanel, tabsCoords);
- const tabsDisplayPanel = makeCenteredTextDiv('remove split');
- tabsDisplayPanel.style.background = jc.General.removeSplitColor;
- tabsDisplayPanel.style.opacity = 0;
- setElementPosition(tabsDisplayPanel, coords);
- div.append(tabsDisplayPanel, tabsPanel);
- tabsPanel.onmouseover = () => {
- tabsDisplayPanel.style.opacity = 1;
- };
-
-
- tabsPanel.onmouseleave = () => {
- tabsDisplayPanel.style.opacity = 0;
- };
- tabsPanel.onmousedown = () => {
-
- const split = gridSplits[i];
- if(i > 0 && i < gridSplits.length - 1) {
- gridSplits[i-1] += split / 2;
- gridSplits[i+1] += split / 2;
- }else if(i === 0) {
- gridSplits[1] += split;
- }else if(i === gridSplits.length - 1) {
- gridSplits[gridSplits.length - 2] += split;
- }
- gridSplits.splice(i, 1);
- gridContents.splice(i, 1);
- returnPanels(tabs.contents, availablePanels);
-
- if(gridContents.length === 1 && prevGrid) {
-
- prevGrid.contents[prevGrid.i] = gridContents[0];
- }
-
- redraw();
-
-
-
- };
- }
- const currentContent = tabs.contents[tabs.getCurrentIndex()];
- if(currentContent.type === 'grid') {
- div.append(makeRemoveSplitGrid(contentCoords[0],
- contentCoords[1],
- contentCoords[2],
- contentCoords[3],
- currentContent.contents,
- currentContent.splits,
- currentContent.direction,
- redraw,
- jc,
- availablePanels,
- {contents: tabs.contents,
- i: tabs.getCurrentIndex()}));
-
- }else if(currentContent.type === 'tabs') {
- div.append(makeTabsRemoveSplitPanel(contentCoords,
- currentContent,
- tabs.contents,
- tabs.getCurrentIndex(),
- redraw,
- availablePanels));
-
- }
-
- return div;
-
- }
- function makeRemoveSplitGrid(x,
- y,
- width,
- height,
- contents,
- splits,
- direction,
- redraw,
- jc,
- availablePanels,
- prevGrid) {
- const div = makeDiv();
- setElementPosition(div, [x, y, width, height]);
- const coords = getGridCoordinates(x, y, width, height, splits, direction);
- contents.forEach((content, i) => {
- if(content.type === 'tabs') {
- div.append(makeTabsRemoveSplitPanel(coords[i],
- content,
- contents,
- i,
- redraw,
- availablePanels,
- splits,
- prevGrid));
-
- }else if(content.type !== 'grid') {
- const panel = makeCenteredTextDiv('remove split');
- panel.style.background = jc.General.removeSplitColor;
- setElementPosition(panel, coords[i]);
- panel.style.opacity = 0;
-
- panel.onmouseover = () => {
- panel.style.opacity = 1;
- };
- panel.onmouseleave = () => {
- panel.style.opacity = 0;
- };
- panel.onmousedown = () => {
- if(prevGrid || contents.length > 1) {
- if(contents[i].label) {
- availablePanels.push(contents[i]);
- }
- const split = splits[i];
- if(i > 0 && i < splits.length - 1) {
- splits[i-1] += split / 2;
- splits[i+1] += split / 2;
- }else if(i === 0) {
- splits[1] += split;
- }else if(i === splits.length - 1) {
- splits[splits.length - 2] += split;
- }
- splits.splice(i, 1);
- contents.splice(i, 1);
- if(contents.length === 1 && prevGrid) {
-
- prevGrid.contents[prevGrid.i] = contents[0];
- }
-
- redraw();
- }
-
- };
-
- div.append(panel);
-
- }else {
- div.append(makeRemoveSplitGrid(coords[i][0],
- coords[i][1],
- coords[i][2],
- coords[i][3],
- contents[i].contents,
- contents[i].splits,
- contents[i].direction,
- redraw,
- jc,
- availablePanels,
- {contents, i}));
- }
- });
- return div;
-
- }
- export { makeRemoveSplitGrid }
|