Watch
1
0
Fork
You've already forked Seyyed_arc
0
forked from hesabix/arc
Seyyed_arc/docs/WORKFLOW_UI_IMPROVEMENTS.md
2026-04-14 19:34:55 +03:30

254 lines
6.7 KiB
Markdown
Executable file
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# پیشنهادات بهبود UI و UX بخش Workflow Editor
این سند شامل پیشنهادات جامع برای بهبود بخش افزودن و ویرایش workflow است.
---
## 🔴 مشکلات فعلی
### 1. مشکل هماهنگی نوک سیم با موس
- **مشکل**: هنگام کشیدن سیم، نوک سیم با موقعیت موس هماهنگ نیست
- **علت**: تبدیل مختصات بدون در نظر گیری transformation matrix (zoom/pan)
- **راه‌حل**: استفاده از Listener و تبدیل صحیح مختصات
### 2. عدم Responsive بودن
- UI برای موبایل و تبلت بهینه نشده
- نودها و toolbar در صفحه کوچک مناسب نیستند
- Drawer در موبایل بهتر کار نمی‌کند
### 3. مشکلات UX
- هیچ راهنمایی برای کاربران جدید وجود ندارد
- Snap to grid وجود ندارد
- Connection hints نمایش داده نمی‌شود
- Keyboard shortcuts کامل نیست
---
## ✅ تغییرات انجام شده
### 1. تبدیل مختصات درست ✅
- اضافه کردن متد `_localToCanvasCoordinates` برای تبدیل مختصات با در نظر گیری transformation
- اضافه کردن متد `_globalToCanvasCoordinates` برای تبدیل موقعیت global به canvas coordinates
- غیرفعال کردن pan/scale هنگام اتصال برای جلوگیری از تداخل
- استفاده از `InteractiveViewer` با کنترل pan و scale
### 2. Responsive Design ✅
- ایجاد کلاس `WorkflowResponsive` برای مدیریت اندازه‌های responsive
- تنظیم اندازه نودها: Mobile (140x80), Tablet (160x90), Desktop (180x100)
- تنظیم اندازه drawer: Mobile (85% عرض صفحه), Tablet (350px), Desktop (300px)
- مخفی کردن minimap در موبایل
- تبدیل AppBar به icon-only در موبایل
## ✅ پیشنهادات بهبود بعدی
### 2. Responsive Design
#### برای موبایل:
```dart
// استفاده از MediaQuery برای تشخیص اندازه صفحه
final isMobile = MediaQuery.of(context).size.width < 600;
final isTablet = MediaQuery.of(context).size.width < 1024;
// تنظیمات responsive:
- نودها کوچک‌تر (140x80 به جای 180x100)
- Connection points بزرگ‌تر برای لمس آسان‌تر
- Toolbar به صورت bottom sheet
- Drawer به صورت full screen
- Mini-map کوچک‌تر یا مخفی
```
#### برای تبلت:
```dart
// تنظیمات میانه:
- نودها متوسط (160x90)
- Toolbar قابل تنظیم (قابل مخفی کردن)
- Drawer با عرض بیشتر
```
### 3. Snap to Grid
```dart
// تنظیمات:
- فعال/غیرفعال کردن snap to grid
- اندازه grid قابل تنظیم (10, 20, 50 پیکسل)
- Snap هنگام drag کردن نودها
- Snap هنگام قرار دادن نود جدید
```
### 4. Connection Hints
```dart
// نمایش راهنما هنگام drag:
- Highlight کردن connection points قابل اتصال
- نمایش مسیر پیشنهادی
- جلوگیری از اتصال نامعتبر (مثلاً trigger به trigger)
- نمایش tooltip برای هر connection point
```
### 5. Keyboard Shortcuts
```dart
// اضافه کردن:
- Ctrl/Cmd + A: انتخاب همه نودها
- Ctrl/Cmd + C: کپی
- Ctrl/Cmd + V: چسباندن
- Ctrl/Cmd + X: برش
- Space + Drag: Pan canvas
- Shift + Drag: انتخاب چندگانه
- Arrow Keys: حرکت نود انتخاب شده
- Delete/Backspace: حذف نود/اتصال انتخاب شده
```
### 6. Multi-Select & Grouping
```dart
// انتخاب چندگانه:
- Shift + Click: انتخاب چندگانه
- Drag selection box
- Ctrl/Cmd + Click: toggle selection
- Group کردن نودها برای جابجایی همزمان
```
### 7. Undo/Redo با Visual Feedback
```dart
// بهبود:
- نمایش toast با توضیح عمل undo/redo
- نمایش history list در UI
- محدود کردن history به 50 عمل
```
### 8. Search & Filter
```dart
// در Node Palette:
- جستجوی نودها
- فیلتر بر اساس نوع (trigger/action)
- دسته‌بندی نودها
- نودهای پرکاربرد
```
### 9. Workflow Templates
```dart
// قالب‌های آماده:
- Invoice workflow
- Inventory alert workflow
- Payment reminder workflow
- Custom templates
```
### 10. Visual Improvements
```dart
// بهبودهای بصری:
- Animation برای اضافه/حذف نود
- Hover effects روی نودها
- Drag preview
- Connection animation
- Loading states
```
### 11. Touch Support بهتر
```dart
// برای موبایل و تبلت:
- Pinch to zoom
- Two-finger pan
- Long press برای context menu
- Swipe gestures
```
### 12. Performance Optimizations
```dart
// بهینه‌سازی:
- Virtual scrolling برای workflowهای بزرگ
- Lazy loading نودها
- Debounce برای به‌روزرسانی موقعیت
- استفاده از RepaintBoundary بیشتر
```
---
## 📋 اولویت‌بندی پیاده‌سازی
### فوری (این هفته):
1. ✅ اصلاح تبدیل مختصات
2. ✅ اضافه کردن connection points
3. Responsive برای موبایل
4. Snap to grid
### کوتاه‌مدت (این ماه):
5. Connection hints
6. Keyboard shortcuts کامل
7. Multi-select
8. Search در palette
### میان‌مدت (ماه بعد):
9. Templates
10. Visual improvements
11. Touch support بهتر
12. Performance optimizations
---
## 🔧 جزئیات پیاده‌سازی
### Responsive Design
```dart
class ResponsiveWorkflowEditor extends StatelessWidget {
@override
Widget build(BuildContext context) {
final screenSize = MediaQuery.of(context).size;
final isMobile = screenSize.width < 600;
final isTablet = screenSize.width < 1024;
final nodeSize = isMobile
? Size(140, 80)
: isTablet
? Size(160, 90)
: Size(180, 100);
// ...
}
}
```
### Snap to Grid
```dart
Offset snapToGrid(Offset position, double gridSize) {
return Offset(
(position.dx / gridSize).round() * gridSize,
(position.dy / gridSize).round() * gridSize,
);
}
```
### Connection Hints
```dart
// Highlight connection points
Widget buildConnectionHint(Offset position, bool isHighlighted) {
return Positioned(
left: position.dx - 12,
top: position.dy - 12,
child: AnimatedContainer(
duration: Duration(milliseconds: 200),
width: isHighlighted ? 24 : 16,
height: isHighlighted ? 24 : 16,
decoration: BoxDecoration(
shape: BoxShape.circle,
color: isHighlighted ? Colors.green : Colors.blue,
),
),
);
}
```
---
*این سند به صورت مداوم به‌روزرسانی خواهد شد.*