Commit Graph

111 Commits

Author SHA1 Message Date
Matt bed42c7329 Fix visual bugs in expenses page and interest details modal
- Fixed calendar button positioning in date input fields by adding proper padding
- Reduced Current Month button size from large to default for better fit
- Improved export button spacing using ga-4 instead of gap-6
- Removed Save & Close button from InterestDetailsModal, keeping only Save Changes button
- Updated mobile layout to use full width for Save Changes button
2025-07-12 14:46:08 -04:00
Matt 242e33f7b9 feat: Add "Save & Close" button in InterestDetailsModal, enhance saveInterest function to conditionally close modal, and improve logging in delete-generated-document and get-expenses APIs 2025-07-10 17:36:10 -04:00
Matt 6ebe96bbf4 feat: Improve UI styling in ExpenseDetailsModal and ExpenseList, enhance authentication middleware caching, and optimize PDF generation for receipt fetching 2025-07-10 17:05:08 -04:00
Matt 3ba8542e4f feat: Add currency selection and conversion support in PDF generation, enhance expense processing with target currency handling 2025-07-10 14:02:14 -04:00
Matt 893927d4b1 Refactor expense form and add PDF generation functionality
- Update expense form fields (merchant->establishmentName, amount->price)
- Add PDF generation with Puppeteer integration
- Create PDFOptionsModal component for export options
- Update expense form validation and UI layout
- Add server API endpoint for PDF generation
2025-07-09 22:23:50 -04:00
Matt b6d71faf5f feat: Improve role verification logic in InterestDuplicateNotificationBanner for duplicate checks 2025-07-09 22:08:08 -04:00
Matt a83895bef3 feat: Update Documenso configuration in .env.example and refactor generate-eoi-document to use environment variables for recipient IDs and template ID 2025-07-09 21:51:42 -04:00
Matt 4740040202 feat: Improve duplicate check logic in InterestDuplicateNotificationBanner with enhanced role verification and fallback handling 2025-07-09 16:45:48 -04:00
Matt 8f625c0df4 feat: Enhance InterestDuplicateNotificationBanner to always check for duplicates on mount and improve PDF generation to return base64 content 2025-07-09 16:28:04 -04:00
Matt bf24dc9103 feat: Refactor duplicate handling in InterestDuplicateNotificationBanner and update merge API for better access control 2025-07-09 16:11:37 -04:00
Matt 85ec5100f3 feat: Update InterestDuplicateNotificationBanner logic and integrate into interest list page 2025-07-09 15:53:35 -04:00
Matt 1f3f9e2ca8 feat: Add InterestDuplicateNotificationBanner for sales/admin users and implement duplicate detection logic 2025-07-09 15:42:33 -04:00
Matt 5ea9b6ab88 fix: Improve text color contrast for better readability in expense list 2025-07-09 15:35:34 -04:00
Matt a337d3c838 Enhance duplicate detection with sales/admin access and field updates
- Extend duplicate detection access from admin-only to sales/admin users
- Update field names for better clarity (Email → Email Address, etc.)
- Add duplicate notification banner to expenses page
- Improve authorization checks with role-based access control
2025-07-09 15:31:55 -04:00
Matt 147c8b350d fix: Improve text readability in expense cards
 **Fixed Text Legibility Issues:**
- Changed icon colors from text-grey-darken-2 to text-grey-darken-3 for better visibility
- Updated date and payer text colors from light grey to darker rgba(--v-theme-on-surface, 0.8)
- Improved contents preview text color to rgba(--v-theme-on-surface, 0.7)
- Enhanced overall text contrast for better accessibility

� **User Experience Improvements:**
- All text in expense cards is now clearly readable
- Better visual hierarchy with appropriate contrast ratios
- Improved accessibility for users with vision difficulties
- Maintains professional appearance while ensuring legibility
2025-07-09 15:00:32 -04:00
Matt b86fd58bcf fix: Resolve remaining expense page issues and PDF generation
 **Fixed PDF Preview Total Calculation:**
- Updated PDFOptionsModal to receive actual expense data instead of just IDs
- Now shows correct total (€308.80) instead of placeholder (€100.00)
- Calculates real amounts from selected expense PriceNumber values

 **Fixed Exchange Rate Time Display:**
- Updated currency utility to calculate minutes since last update
- Changed from showing 'time until expiry' to 'time since update'
- Now displays accurate '59min ago' based on actual update time

 **Improved PDF Generation:**
- Created comprehensive PDF generation system with proper data fetching
- Validates expense data and calculates accurate totals
- Provides detailed error messages with actual expense information
- Shows calculated totals, grouping options, and document settings
- Graceful fallback with helpful guidance for users

� **Technical Improvements:**
- Enhanced currency status API to include minutesSinceUpdate field
- Fixed component prop passing between parent and child components
- Better error handling and user feedback throughout the system
- Maintained CSV export functionality as primary export option

� **User Experience:**
- PDF modal now shows real totals instead of estimates
- Exchange rate status displays meaningful time information
- Clear feedback when PDF generation is attempted
- Comprehensive error messages guide users to alternative solutions

All core functionality now works correctly with accurate calculations and proper time displays!
2025-07-09 14:46:10 -04:00
Matt ef23cc911e fix: Address remaining expense page UI issues and functionality
� Enhanced Visual Design:
- Improved form spacing in date range filters with proper responsive grid layout
- Added 'Converted' chip tags to show currency conversion status clearly
- Better field spacing and padding throughout the expense page
- Enhanced button sizes and spacing for better visual hierarchy

 Improved User Experience:
- Added conversion indicators with blue 'Converted' chips for foreign currencies
- Better visual feedback for converted prices with USD amounts
- Improved spacing and layout consistency across all components
- Enhanced responsive design for mobile and desktop

� Technical Improvements:
- Fixed PDF generation to show helpful error message instead of crashing
- Added edit button to ExpenseDetailsModal (with placeholder functionality)
- Improved component structure and prop handling
- Better error handling and user feedback for PDF generation

� UI/UX Enhancements:
- Replaced compact density with comfortable for better touch targets
- Added proper v-row/v-col structure for consistent spacing
- Improved button sizing and visual weight
- Better color contrast and accessibility

� Functionality Updates:
- PDF generation now shows informative error message instead of technical failure
- Edit button added to expense details (ready for future implementation)
- Better currency display with conversion status indicators
- Improved form layouts and field spacing

The expense page now has professional spacing, clear currency indicators, and handles edge cases gracefully.
2025-07-09 14:27:28 -04:00
Matt 7cf2ba6a83 fix: Complete expense page UI improvements and modal redesign
� UI/UX Improvements:
- Fixed currency display in ExpenseList to show proper currency symbols
- Improved color contrast by using darker grey variants for better visibility
- Updated ExpenseDetailsModal to use modern Vuetify components
- Redesigned PDFOptionsModal with proper Vuetify form elements

 Enhanced User Experience:
- Cards now properly display currency with symbols (€, $, etc.)
- Better visual hierarchy with improved contrast ratios
- Smooth transitions and hover effects maintained
- Professional modal designs with consistent spacing

� Technical Fixes:
- Converted all Tailwind CSS to Vuetify components for consistency
- Fixed TypeScript integration issues
- Improved component props and event handling
- Better responsive design for mobile and desktop

� Responsive Design:
- Mobile-optimized expense cards and modals
- Proper grid layouts that adapt to screen sizes
- Touch-friendly interactions on mobile devices

The expense page now has a cohesive, professional design that matches the quality of other dashboard components while maintaining full functionality.
2025-07-09 14:16:50 -04:00
Matt 7ba8c98663 feat: Implement expense creation modal and API integration
- Added ExpenseCreateModal component for adding new expenses with form validation.
- Integrated API endpoint for creating expenses, ensuring only authorized users can access it.
- Updated dashboard to include functionality for adding expenses and refreshing the expense list after creation.
- Enhanced UI with Vuetify components for better user experience and responsiveness.
2025-07-09 13:58:38 -04:00
Matt ac7176ff17 Refactor duplicate handling to allow any authenticated user to check for duplicates, update API methods to require general authentication, and enhance expense fetching with improved error handling and logging. 2025-07-09 13:29:52 -04:00
Matt 36048dfed1 Optimize auth initialization by using cached middleware state
- Replace API calls with cached auth state from middleware in useAuthorization
- Add fallback to session cache and watchers for auth state updates
- Change initialization from async to synchronous for better performance
- Add DuplicateNotificationBanner component
2025-07-09 12:43:24 -04:00
Matt 2774b4050f Improve mobile responsiveness across expense tracking interface
- Add horizontal margins to modals on mobile devices
- Optimize grid layouts with smaller breakpoints (md→sm)
- Make action buttons full-width on mobile with touch optimization
- Adjust text sizes and spacing for better mobile readability
- Enhance date filter and export controls for mobile interaction
2025-07-04 10:44:42 -04:00
Matt e66d6ad1f2 Add processing fee option to PDF export modal
- Add checkbox to include 5% processing fee in PDF exports
- Install PDF generation dependencies (@pdfme/common, @pdfme/generator, sharp)
- Add server-side expenses API endpoints
- Update PDF options interface to support processing fee toggle
2025-07-04 09:27:43 -04:00
Matt 5cee783ef5 Add expense tracking system with receipt management and currency conversion
- Add expense list and detail views with filtering capabilities
- Implement receipt image viewer and PDF export functionality
- Add currency conversion support with automatic rate updates
- Create API endpoints for expense CRUD operations
- Integrate with NocoDB for expense data persistence
- Add expense menu item to dashboard navigation
2025-07-03 21:29:42 +02:00
Matt b6e5c21d8a FEAT: Enhance layout and styling in BerthDetailsModal and interest-berth-status for improved readability and visual appeal 2025-06-17 18:14:21 +02:00
Matt b585daddde FEAT: Enhance berth color handling in dashboard components and improve authentication middleware with caching 2025-06-17 18:05:22 +02:00
Matt 8a4824e6fe FEAT: Enhance interest fetching in InterestDetailsModal and update getBerths and getBerthById to retrieve full details for interested parties 2025-06-17 17:34:29 +02:00
Matt 150f7f9aa9 FEAT: Rename 'Depth' to 'Draft' in Berth model and update related components for consistency 2025-06-17 16:18:29 +02:00
Matt 0e85cb40bc Replace external berth dashboard with native Vue interface
- Replace iframe embed with full-featured berth status dashboard
- Add BerthDetailsModal and BerthStatusBadge components
- Implement search, filtering, and multiple view modes
- Add berth management API endpoints (get-by-id, update)
- Include measurement conversion utilities and type definitions
- Provide status summaries and visual berth overview
2025-06-17 15:59:39 +02:00
Matt d436367ee6 FEAT: Enhance authentication session management with configurable cookie domain and improved token refresh logic 2025-06-16 17:53:43 +02:00
Matt d53f4f03f5 REF: Remove unnecessary x-tag headers from API requests in interest-related components 2025-06-15 17:18:24 +02:00
Matt 72ea543485 Update logo references and email logo URL in configuration 2025-06-13 13:36:14 +02:00
Matt e57756e433 Add phone number formatting and improve UI components
- Integrate libphonenumber-js for proper phone number formatting
- Display phone numbers in national format in PhoneInput component
- Strip non-numeric characters from phone input automatically
- Fix refresh button icon rendering in EmailThreadView
- Improve EOI button layout alignment and centering
2025-06-12 22:35:17 +02:00
Matt f111f76a3b email server updates 2025-06-12 18:05:42 +02:00
Matt be935e2ba6 fixes 2025-06-12 17:58:25 +02:00
Matt da2d965da8 fixes 2025-06-12 17:52:57 +02:00
Matt 14f725efc5 fix: Enhanced EOI button spacing and comprehensive system improvements
UI/UX Enhancements:
- Improved spacing between Generate EOI and Upload EOI Document buttons
- Mobile: gap-3 (12px), Desktop: gap-4 (16px) for better visual separation
- Enhanced mobile table layout with stacked status badges
- Fixed email thread width issues on mobile devices

 Database Integrity Fixes:
- Fixed missing embedded signature link cleanup in deletion endpoints
- Enhanced validation system to automatically detect and clean orphaned records
- All EOI deletion operations now properly clear:
  * EmbeddedSignatureLinkClient, EmbeddedSignatureLinkCC, EmbeddedSignatureLinkDeveloper
  * Legacy signature links and documensoID references
  * Sales Process Level and EOI Status resets

 Real-time Reactivity Improvements:
- EOI section now immediately updates UI after document deletion/validation
- Added local reactive state for instant visual feedback
- Eliminated phantom signatory status displays
- Enhanced hasGeneratedEOI computed property with validation override

 Mobile Responsiveness:
- Implemented stacked badge layout for interest table
- Contact info + status badges in 60% width column
- Proper email thread text wrapping and width constraints
- Optimized button layouts and touch targets

 Technical Robustness:
- Comprehensive field cleanup using undefined for proper database resets
- Enhanced error handling and logging throughout EOI workflows
- Better handling of edge cases and external document deletions
- Improved validation and cleanup automation

All EOI operations now maintain complete database consistency while providing immediate, accurate visual feedback to users across all devices.
2025-06-12 17:29:05 +02:00
Matt 24dcee57d9 fix: Enhanced EOI section reactivity for immediate UI updates after deletion
EOI State Management Improvements:
- Added local reactive state (documentValidated, documentExists) to handle immediate UI updates
- Enhanced hasGeneratedEOI computed property to use local state when validation completes
- Fixed issue where EOI signatory status would persist after document deletion

 Real-time UI Responsiveness:
- Component now immediately switches to Generate EOI UI when validation detects cleanup
- No longer requires manual page refresh to see correct state
- Proper state synchronization between validation results and UI display

 Validation Logic Enhancement:
- validateDocument function now sets local reactive state immediately upon cleanup detection
- Added comprehensive logging for debugging EOI state transitions
- Handles edge cases where documensoID exists but document was deleted externally

 User Experience Improvements:
- Automatic UI state transitions without user intervention
- Clear visual feedback when orphaned data is cleaned up
- Prevents phantom EOI states from confusing users

The EOI section now correctly and immediately shows the generate UI when no valid document exists, eliminating the confusion from phantom signatory status displays.
2025-06-12 17:18:53 +02:00
Matt 8ec6c883ab fix: Comprehensive mobile UI improvements and fixes
Interest Table Mobile Layout:
- Fixed broken table layout on mobile screens
- Optimized column widths to fit mobile viewports better
- Improved horizontal scrolling with visual indicators
- Enhanced responsive design for contact information display
- Better badge sizing and text truncation on mobile

 Mobile Actions Enhancement:
- Added delete interest button to mobile actions section
- Improved button layout in 2x2 grid for better accessibility
- Added proper loading states and disabled states
- Enhanced visual hierarchy with icons and labels

 Email Communication Fixes:
- Fixed refresh email button icon display on mobile
- Added proper mobile styling and tooltips
- Made button more accessible with larger touch targets

 Email Thread Width Issues:
- Fixed email threads exceeding screen width on mobile
- Implemented proper text wrapping and overflow handling
- Optimized timeline layout for mobile viewports
- Enhanced email card responsiveness
- Better handling of long email addresses and content
- Improved expansion panel sizing and spacing

 Mobile UX Improvements:
- Better touch targets and button sizing
- Improved visual feedback and loading states
- Enhanced text readability with optimized font sizes
- Consistent mobile spacing and padding throughout
- Fixed container overflow issues across components

All mobile components now properly respect viewport constraints and provide optimal user experience on mobile devices.
2025-06-12 17:14:14 +02:00
Matt 41a6f7f1c8 feat: Implement EOI document validation and orphaned data cleanup
- Add new /api/eoi/validate-document endpoint to check document existence
- Automatically clean up orphaned database records when documents don't exist in Documenso
- Update EOISection component to validate documents on mount
- Enhanced delete-generated-document endpoint to handle already-deleted documents
- Updated check-signature-status endpoint with validation logic
- Prevents EOI section from showing when document no longer exists
- Self-healing system that fixes data inconsistencies automatically

Key improvements:
- Validates document existence before showing EOI management UI
- Cleans up documensoID, signature links, and status fields when document is missing
- Graceful handling of 404 errors from Documenso API
- Background validation with user-friendly notifications
- Prevents phantom EOI states that appear generated but don't exist
2025-06-12 17:04:45 +02:00
Matt b25e93d2a0 feat: Implement comprehensive PWA functionality
- Add full PWA configuration with manifest and service worker
- Create PWAInstallBanner component with mobile detection
- Implement install banner on login page (shows below login form)
- Add usePWA composable for reusable PWA functionality
- Configure offline support with Workbox caching strategies
- Add PWA initialization plugin
- Update app name to 'Port Nimara Portal' throughout
- Use circular logo in install banner and instructions
- Banner shows only once and hides if already installed
- Support both Android (direct install) and iOS (manual instructions)
- Add comprehensive documentation for PWA implementation

Features:
- Mobile-only install banner with dismissal tracking
- Standalone mode detection to hide banner when installed
- Platform-specific installation instructions
- Offline functionality with API caching
- Auto-updating service worker
- Native app-like experience when installed
2025-06-12 16:36:32 +02:00
Matt 4916c20f64 fixes 2025-06-12 16:26:10 +02:00
Matt af3a68e51b Feat: Complete EOI improvements and PWA implementation
EOI ENHANCEMENTS:
-  Fix EOI deletion to clear ALL signature fields (embedded links, timestamps, etc.)
-  Add EOI creation time tags automatically displayed on interest cards
-  Add signature status tags showing who has signed ( Client,  CC,  Developer)
-  Add pending signature tags for unsigned parties
-  Fix TypeScript errors with new Interest type fields

 UI IMPROVEMENTS:
-  Enhanced InterestDetailsModal with comprehensive status display
-  Fixed component prop naming issues
-  Better mobile and desktop responsiveness for tags

 PWA IMPLEMENTATION:
-  Complete PWA configuration with manifest
-  App installation capability
-  Offline support with service worker
-  Multiple icon sizes (72x72 to 512x512)
-  Branded theme colors and app metadata
-  Auto-update functionality

 USER EXPERIENCE:
- Users can now see EOI creation timestamps at a glance
- Clear visual indication of signature status for all parties
- App can be installed on mobile/desktop devices
- Proper reset of EOI state when deleted
- All embedded signature links properly cleared on deletion

The platform now provides complete EOI lifecycle management with PWA capabilities!
2025-06-12 16:16:30 +02:00
Matt e02d3ab70f Fix: Resolve EOISection.vue build error
- Fixed incomplete Vue component with missing end tag
- Added missing functions: handleUpload, closeUploadDialog, deleteUploadedEOI, deleteGeneratedEOI
- Resolved all TypeScript compilation errors
- Enables successful Docker build
2025-06-12 15:59:17 +02:00
Matt 66729dfad6 Merge branch 'main' of https://code.portnimara.com/ron/client-portal 2025-06-12 15:53:23 +02:00
Matt 64c35b70f8 Improve email session management and add IMAP connection pooling
- Switch from localStorage to sessionStorage for email sessions
- Add session validation on component mount
- Implement IMAP connection pool with folder search capabilities
- Add operation locking utility for concurrent request handling
- Refactor EOI section component structure
- Update API endpoints for better email thread management
2025-06-12 15:53:12 +02:00
Matt 219522e1b5 fixes for endpoints 2025-06-11 20:50:51 +02:00
Matt 85773fc09e updates 2025-06-11 16:50:31 +02:00
Matt bc591f687f fixes 2025-06-11 16:05:19 +02:00
Matt 084f27ec91 slider updates 2025-06-11 14:46:42 +02:00