| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114 |
- /**
- * Helper functions for integrating original position tracking into existing Wekan templates
- */
- /**
- * Add original position tracking to swimlane templates
- */
- export function addOriginalPositionToSwimlane(swimlaneId) {
- if (!swimlaneId) return;
-
- // Track original position when swimlane is created or first accessed
- Meteor.call('positionHistory.trackSwimlane', swimlaneId, (error) => {
- if (error) {
- console.warn('Failed to track original position for swimlane:', error);
- }
- });
- }
- /**
- * Add original position tracking to list templates
- */
- export function addOriginalPositionToList(listId) {
- if (!listId) return;
-
- // Track original position when list is created or first accessed
- Meteor.call('positionHistory.trackList', listId, (error) => {
- if (error) {
- console.warn('Failed to track original position for list:', error);
- }
- });
- }
- /**
- * Add original position tracking to card templates
- */
- export function addOriginalPositionToCard(cardId) {
- if (!cardId) return;
-
- // Track original position when card is created or first accessed
- Meteor.call('positionHistory.trackCard', cardId, (error) => {
- if (error) {
- console.warn('Failed to track original position for card:', error);
- }
- });
- }
- /**
- * Get original position description for display in templates
- */
- export function getOriginalPositionDescription(entityId, entityType) {
- return new Promise((resolve, reject) => {
- const methodName = `positionHistory.get${entityType.charAt(0).toUpperCase() + entityType.slice(1)}Description`;
-
- Meteor.call(methodName, entityId, (error, result) => {
- if (error) {
- reject(error);
- } else {
- resolve(result);
- }
- });
- });
- }
- /**
- * Check if an entity has moved from its original position
- */
- export function hasEntityMoved(entityId, entityType) {
- return new Promise((resolve, reject) => {
- const methodName = `positionHistory.has${entityType.charAt(0).toUpperCase() + entityType.slice(1)}Moved`;
-
- Meteor.call(methodName, entityId, (error, result) => {
- if (error) {
- reject(error);
- } else {
- resolve(result);
- }
- });
- });
- }
- /**
- * Template helper for displaying original position info
- */
- Template.registerHelper('originalPositionInfo', function(entityId, entityType) {
- if (!entityId || !entityType) return null;
-
- const description = getOriginalPositionDescription(entityId, entityType);
- const hasMoved = hasEntityMoved(entityId, entityType);
-
- return {
- description: description,
- hasMoved: hasMoved,
- entityId: entityId,
- entityType: entityType
- };
- });
- /**
- * Template helper for checking if entity has moved
- */
- Template.registerHelper('hasEntityMoved', function(entityId, entityType) {
- if (!entityId || !entityType) return false;
-
- return hasEntityMoved(entityId, entityType);
- });
- /**
- * Template helper for getting original position description
- */
- Template.registerHelper('getOriginalPositionDescription', function(entityId, entityType) {
- if (!entityId || !entityType) return 'No original position data';
-
- return getOriginalPositionDescription(entityId, entityType);
- });
|