lonestar108 commited on
Commit
7c2b0f7
·
verified ·
1 Parent(s): 3a298d4

pleaase ensure that I can dragand drop components

Browse files
Files changed (2) hide show
  1. components/control-panel.js +3 -3
  2. script.js +49 -5
components/control-panel.js CHANGED
@@ -61,15 +61,15 @@ class CustomControlPanel extends HTMLElement {
61
 
62
  <script>
63
  this.shadowRoot.querySelectorAll('.component-item').forEach(item => {
64
- item.addEventListener('click', () => {
 
65
  const type = item.dataset.type;
66
  document.dispatchEvent(new CustomEvent('component-selected', {
67
  detail: { type }
68
  }));
69
  });
70
  });
71
-
72
- const deleteBtn = this.shadowRoot.getElementById('delete-btn');
73
  if (deleteBtn) {
74
  deleteBtn.addEventListener('click', () => {
75
  document.dispatchEvent(new CustomEvent('delete-selected'));
 
61
 
62
  <script>
63
  this.shadowRoot.querySelectorAll('.component-item').forEach(item => {
64
+ item.addEventListener('mousedown', (e) => {
65
+ e.preventDefault();
66
  const type = item.dataset.type;
67
  document.dispatchEvent(new CustomEvent('component-selected', {
68
  detail: { type }
69
  }));
70
  });
71
  });
72
+ const deleteBtn = this.shadowRoot.getElementById('delete-btn');
 
73
  if (deleteBtn) {
74
  deleteBtn.addEventListener('click', () => {
75
  document.dispatchEvent(new CustomEvent('delete-selected'));
script.js CHANGED
@@ -171,16 +171,37 @@ const dx = x - m.x * canvas.width;
171
  y: 0.5,
172
  strength: 0.5,
173
  polarity: 1,
174
- turns: e.detail.type === 'coil' ? 5 : 0
 
175
  };
176
 
177
  components[e.detail.type + 's'].push(newComponent);
178
  selectedComponent = newComponent;
179
  drawField();
180
  updateComponentDetails();
181
- });
 
 
 
 
 
 
 
 
 
 
 
182
 
183
- // Handle component deletion
 
 
 
 
 
 
 
 
 
184
  document.addEventListener('delete-selected', () => {
185
  if (selectedComponent) {
186
  const type = selectedComponent.type;
@@ -228,11 +249,34 @@ const dx = x - m.x * canvas.width;
228
  }
229
  }
230
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  drawField();
232
  updateComponentDetails();
233
  });
234
-
235
- canvas.addEventListener('mousemove', (e) => {
236
  if (!isDrawingWire && !selectedComponent) return;
237
 
238
  const rect = canvas.getBoundingClientRect();
 
171
  y: 0.5,
172
  strength: 0.5,
173
  polarity: 1,
174
+ turns: e.detail.type === 'coil' ? 5 : 0,
175
+ isBeingDragged: true // Flag for new component being dragged
176
  };
177
 
178
  components[e.detail.type + 's'].push(newComponent);
179
  selectedComponent = newComponent;
180
  drawField();
181
  updateComponentDetails();
182
+
183
+ // Set up initial drag for newly created component
184
+ const handleMouseMove = (moveEvent) => {
185
+ const rect = canvas.getBoundingClientRect();
186
+ const x = moveEvent.clientX - rect.left;
187
+ const y = moveEvent.clientY - rect.top;
188
+
189
+ selectedComponent.x = x / canvas.width;
190
+ selectedComponent.y = y / canvas.height;
191
+ drawField();
192
+ updateComponentDetails();
193
+ };
194
 
195
+ const handleMouseUp = () => {
196
+ document.removeEventListener('mousemove', handleMouseMove);
197
+ document.removeEventListener('mouseup', handleMouseUp);
198
+ selectedComponent.isBeingDragged = false;
199
+ };
200
+
201
+ document.addEventListener('mousemove', handleMouseMove);
202
+ document.addEventListener('mouseup', handleMouseUp);
203
+ });
204
+ // Handle component deletion
205
  document.addEventListener('delete-selected', () => {
206
  if (selectedComponent) {
207
  const type = selectedComponent.type;
 
249
  }
250
  }
251
 
252
+ if (selectedComponent) {
253
+ // Prevent text selection during drag
254
+ e.preventDefault();
255
+
256
+ // Set up drag handlers
257
+ const handleMouseMove = (moveEvent) => {
258
+ const newX = moveEvent.clientX - rect.left;
259
+ const newY = moveEvent.clientY - rect.top;
260
+
261
+ selectedComponent.x = newX / canvas.width;
262
+ selectedComponent.y = newY / canvas.height;
263
+ drawField();
264
+ updateComponentDetails();
265
+ };
266
+
267
+ const handleMouseUp = () => {
268
+ document.removeEventListener('mousemove', handleMouseMove);
269
+ document.removeEventListener('mouseup', handleMouseUp);
270
+ };
271
+
272
+ document.addEventListener('mousemove', handleMouseMove);
273
+ document.addEventListener('mouseup', handleMouseUp);
274
+ }
275
+
276
  drawField();
277
  updateComponentDetails();
278
  });
279
+ canvas.addEventListener('mousemove', (e) => {
 
280
  if (!isDrawingWire && !selectedComponent) return;
281
 
282
  const rect = canvas.getBoundingClientRect();