| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 | 
							- import { BlazeComponent } from 'meteor/peerlibrary:blaze-components';
 
- import { ReactiveVar } from 'meteor/reactive-var';
 
- import { Meteor } from 'meteor/meteor';
 
- import { Template } from 'meteor/templating';
 
- import './originalPosition.html';
 
- /**
 
-  * Component to display original position information for swimlanes, lists, and cards
 
-  */
 
- class OriginalPositionComponent extends BlazeComponent {
 
-   onCreated() {
 
-     super.onCreated();
 
-     this.originalPosition = new ReactiveVar(null);
 
-     this.isLoading = new ReactiveVar(false);
 
-     this.hasMoved = new ReactiveVar(false);
 
-     
 
-     this.autorun(() => {
 
-       const data = this.data();
 
-       if (data && data.entityId && data.entityType) {
 
-         this.loadOriginalPosition(data.entityId, data.entityType);
 
-       }
 
-     });
 
-   }
 
-   loadOriginalPosition(entityId, entityType) {
 
-     this.isLoading.set(true);
 
-     
 
-     const methodName = `positionHistory.get${entityType.charAt(0).toUpperCase() + entityType.slice(1)}OriginalPosition`;
 
-     
 
-     Meteor.call(methodName, entityId, (error, result) => {
 
-       this.isLoading.set(false);
 
-       if (error) {
 
-         console.error('Error loading original position:', error);
 
-         this.originalPosition.set(null);
 
-       } else {
 
-         this.originalPosition.set(result);
 
-         
 
-         // Check if the entity has moved
 
-         const movedMethodName = `positionHistory.has${entityType.charAt(0).toUpperCase() + entityType.slice(1)}Moved`;
 
-         Meteor.call(movedMethodName, entityId, (movedError, movedResult) => {
 
-           if (!movedError) {
 
-             this.hasMoved.set(movedResult);
 
-           }
 
-         });
 
-       }
 
-     });
 
-   }
 
-   getOriginalPosition() {
 
-     return this.originalPosition.get();
 
-   }
 
-   isLoading() {
 
-     return this.isLoading.get();
 
-   }
 
-   hasMovedFromOriginal() {
 
-     return this.hasMoved.get();
 
-   }
 
-   getOriginalPositionDescription() {
 
-     const position = this.getOriginalPosition();
 
-     if (!position) return 'No original position data';
 
-     
 
-     if (position.originalPosition) {
 
-       const entityType = this.data().entityType;
 
-       let description = `Original position: ${position.originalPosition.sort || 0}`;
 
-       
 
-       if (entityType === 'list' && position.originalSwimlaneId) {
 
-         description += ` in swimlane ${position.originalSwimlaneId}`;
 
-       } else if (entityType === 'card') {
 
-         if (position.originalSwimlaneId) {
 
-           description += ` in swimlane ${position.originalSwimlaneId}`;
 
-         }
 
-         if (position.originalListId) {
 
-           description += ` in list ${position.originalListId}`;
 
-         }
 
-       }
 
-       
 
-       return description;
 
-     }
 
-     
 
-     return 'No original position data';
 
-   }
 
-   getOriginalTitle() {
 
-     const position = this.getOriginalPosition();
 
-     return position ? position.originalTitle : '';
 
-   }
 
-   showOriginalPosition() {
 
-     return this.getOriginalPosition() !== null;
 
-   }
 
- }
 
- OriginalPositionComponent.register('originalPosition');
 
- export default OriginalPositionComponent;
 
 
  |