Fix U-shape logic in createKlasseTemplate to be open at bottom, not hollow rectangle
This commit is contained in:
@@ -71,7 +71,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Create table
|
// Create table
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_table_' + i,
|
id: crypto.randomUUID() + '_table_' + i,
|
||||||
type: 'rectangular_table',
|
type: 'rectangular_table',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: tableX,
|
x: tableX,
|
||||||
@@ -88,7 +88,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Top side chairs
|
// Top side chairs
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_chair_top_' + i + '_' + j,
|
id: crypto.randomUUID() + '_chair_top_' + i + '_' + j,
|
||||||
type: 'chair',
|
type: 'chair',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: tableX + positionRatio * tableWidth - chairWidth / 2,
|
x: tableX + positionRatio * tableWidth - chairWidth / 2,
|
||||||
@@ -100,7 +100,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Bottom side chairs
|
// Bottom side chairs
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_chair_bottom_' + i + '_' + j,
|
id: crypto.randomUUID() + '_chair_bottom_' + i + '_' + j,
|
||||||
type: 'chair',
|
type: 'chair',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: tableX + positionRatio * tableWidth - chairWidth / 2,
|
x: tableX + positionRatio * tableWidth - chairWidth / 2,
|
||||||
@@ -126,7 +126,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Create round table
|
// Create round table
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_table_' + i + '_' + j,
|
id: crypto.randomUUID() + '_table_' + i + '_' + j,
|
||||||
type: 'round_table',
|
type: 'round_table',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: tableX - tableRadius,
|
x: tableX - tableRadius,
|
||||||
@@ -148,7 +148,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
const chairY = tableY + (tableRadius + this.chairSpacing) * Math.sin(angle) - 22.5;
|
const chairY = tableY + (tableRadius + this.chairSpacing) * Math.sin(angle) - 22.5;
|
||||||
|
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_chair_' + i + '_' + j + '_' + k,
|
id: crypto.randomUUID() + '_chair_' + i + '_' + j + '_' + k,
|
||||||
type: 'chair',
|
type: 'chair',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: chairX,
|
x: chairX,
|
||||||
@@ -176,7 +176,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Create table
|
// Create table
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_table_' + i + '_' + j,
|
id: crypto.randomUUID() + '_table_' + i + '_' + j,
|
||||||
type: 'rectangular_table',
|
type: 'rectangular_table',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: tableX,
|
x: tableX,
|
||||||
@@ -198,7 +198,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Create main table (president's table)
|
// Create main table (president's table)
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_main_table',
|
id: crypto.randomUUID() + '_main_table',
|
||||||
type: 'rectangular_table',
|
type: 'rectangular_table',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: x + tableWidth / 2,
|
x: x + tableWidth / 2,
|
||||||
@@ -213,7 +213,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
for (let i = 0; i < sideTablesCount; i++) {
|
for (let i = 0; i < sideTablesCount; i++) {
|
||||||
// Left side table
|
// Left side table
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_left_table_' + i,
|
id: crypto.randomUUID() + '_left_table_' + i,
|
||||||
type: 'rectangular_table',
|
type: 'rectangular_table',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: x,
|
x: x,
|
||||||
@@ -225,7 +225,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Right side table
|
// Right side table
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_right_table_' + i,
|
id: crypto.randomUUID() + '_right_table_' + i,
|
||||||
type: 'rectangular_table',
|
type: 'rectangular_table',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: x + tableWidth + tableWidth / 2,
|
x: x + tableWidth + tableWidth / 2,
|
||||||
@@ -238,7 +238,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
// Create chairs for side tables
|
// Create chairs for side tables
|
||||||
// Left side chairs
|
// Left side chairs
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_left_chair_' + i,
|
id: crypto.randomUUID() + '_left_chair_' + i,
|
||||||
type: 'chair',
|
type: 'chair',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: x - this.chairSpacing - chairWidth,
|
x: x - this.chairSpacing - chairWidth,
|
||||||
@@ -250,7 +250,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Right side chairs
|
// Right side chairs
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_right_chair_' + i,
|
id: crypto.randomUUID() + '_right_chair_' + i,
|
||||||
type: 'chair',
|
type: 'chair',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: x + tableWidth + tableWidth / 2 + tableWidth / 2 + this.chairSpacing,
|
x: x + tableWidth + tableWidth / 2 + tableWidth / 2 + this.chairSpacing,
|
||||||
@@ -262,7 +262,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create Klasse template (U-shape classroom layout)
|
// Create Klasse template (U-shape classroom layout open at bottom)
|
||||||
private createKlasseTemplate(x: number, y: number): void {
|
private createKlasseTemplate(x: number, y: number): void {
|
||||||
const tableWidth = 120;
|
const tableWidth = 120;
|
||||||
const tableHeight = 60;
|
const tableHeight = 60;
|
||||||
@@ -271,7 +271,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Create teacher's table
|
// Create teacher's table
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_teacher_table',
|
id: crypto.randomUUID() + '_teacher_table',
|
||||||
type: 'rectangular_table',
|
type: 'rectangular_table',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: x + tableWidth,
|
x: x + tableWidth,
|
||||||
@@ -281,13 +281,14 @@ class SeatingTemplateTool extends Tool {
|
|||||||
properties: {}
|
properties: {}
|
||||||
});
|
});
|
||||||
|
|
||||||
// Create student tables in U-shape
|
// Create student tables in U-shape (open at bottom)
|
||||||
const rows = 4;
|
const rows = 4;
|
||||||
const cols = 5;
|
const cols = 5;
|
||||||
|
|
||||||
for (let i = 0; i < rows; i++) {
|
for (let i = 0; i < rows; i++) {
|
||||||
for (let j = 0; j < cols; j++) {
|
for (let j = 0; j < cols; j++) {
|
||||||
// Skip center tables to create U-shape
|
// Create U-shape that is open at the bottom
|
||||||
|
// Skip inner tables but keep the bottom row
|
||||||
if (i > 0 && i < rows - 1 && j > 0 && j < cols - 1) continue;
|
if (i > 0 && i < rows - 1 && j > 0 && j < cols - 1) continue;
|
||||||
|
|
||||||
const tableX = x + j * (tableWidth + this.tableSpacing);
|
const tableX = x + j * (tableWidth + this.tableSpacing);
|
||||||
@@ -295,7 +296,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Create table
|
// Create table
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_student_table_' + i + '_' + j,
|
id: crypto.randomUUID() + '_student_table_' + i + '_' + j,
|
||||||
type: 'rectangular_table',
|
type: 'rectangular_table',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: tableX,
|
x: tableX,
|
||||||
@@ -307,7 +308,7 @@ class SeatingTemplateTool extends Tool {
|
|||||||
|
|
||||||
// Create chair behind each table
|
// Create chair behind each table
|
||||||
this.yjsDoc.createElement({
|
this.yjsDoc.createElement({
|
||||||
id: Date.now().toString() + '_student_chair_' + i + '_' + j,
|
id: crypto.randomUUID() + '_student_chair_' + i + '_' + j,
|
||||||
type: 'chair',
|
type: 'chair',
|
||||||
layerId: 'default',
|
layerId: 'default',
|
||||||
x: tableX + tableWidth / 2 - chairWidth / 2,
|
x: tableX + tableWidth / 2 - chairWidth / 2,
|
||||||
|
|||||||
Reference in New Issue
Block a user