fix: remove duplicate variable declaration in documents_screen.dart
This commit is contained in:
1 parent
1169347893
commit
01605bc8fd
11 files changed
+136
-48
No files matched your search
@@ -12,6 +12,8 @@ TIS*
|
||||
backend/.env
|
||||
backend/.env.*
|
||||
!backend/.example.env
|
||||
backend/brain
|
||||
frontend/brain
|
||||
|
||||
# Database (runtime data — never commit)
|
||||
backend/*.db
|
||||
|
||||
@@ -874,8 +874,14 @@ exports.scanEnrollmentFromSF = async (req, res) => {
|
||||
AND (
|
||||
document_type LIKE '%SF10%' OR document_type LIKE '%SF9%'
|
||||
OR document_type LIKE '%Form 10%' OR document_type LIKE '%Form 9%'
|
||||
OR document_type LIKE '%Form 137%' OR document_type LIKE '%Form 138%'
|
||||
OR document_type LIKE '%School Form 10%' OR document_type LIKE '%School Form 9%'
|
||||
OR document_type LIKE '%Report Card%' OR document_type LIKE '%Permanent Record%'
|
||||
OR document_type LIKE '%SF1%' OR document_type LIKE '%SF-1%'
|
||||
OR file_name LIKE '%sf10%' OR file_name LIKE '%sf9%'
|
||||
OR file_name LIKE '%form 137%' OR file_name LIKE '%form 138%'
|
||||
OR file_name LIKE '%form 10%' OR file_name LIKE '%form 9%'
|
||||
OR file_name LIKE '%sf1%' OR file_name LIKE '%report card%'
|
||||
)
|
||||
ORDER BY id DESC
|
||||
`).all(studentId);
|
||||
@@ -883,7 +889,7 @@ exports.scanEnrollmentFromSF = async (req, res) => {
|
||||
if (!docs || docs.length === 0) {
|
||||
return res.status(404).json({
|
||||
success: false,
|
||||
message: 'No SF10 or SF9 document found for this student. Please upload an SF10 or SF9 document first.'
|
||||
message: 'No SF10 or SF9 document found for this student. Auto Enrollment supports only SF9 and SF10 documents.'
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -37,16 +37,16 @@ exports.extractEnrollmentData = async ({ file, documentType = '', manual = false
|
||||
// 1. Determine if SF10 or SF9
|
||||
const docTypeStr = String(documentType || '');
|
||||
const fileNameStr = String(file?.originalname || file?.name || '');
|
||||
const isSF10 = /sf10|sf-10|sf 10|permanent record|form 10/i.test(docTypeStr) ||
|
||||
/sf10|sf-10|sf 10|permanent record|form 10/i.test(fileNameStr);
|
||||
const isSF9 = /sf9|sf-9|sf 9|report card|form 9/i.test(docTypeStr) ||
|
||||
/sf9|sf-9|sf 9|report card|form 9/i.test(fileNameStr);
|
||||
const isSF10 = /sf10|sf-10|sf 10|permanent record|form 10|school form 10|form 137|form-137|form 137-a|form 137a|student permanent record/i.test(docTypeStr) ||
|
||||
/sf10|sf-10|sf 10|permanent record|form 10|school form 10|form 137|form-137|form 137-a|form 137a|student permanent record/i.test(fileNameStr);
|
||||
const isSF9 = /sf9|sf-9|sf 9|report card|form 9|school form 9|form 138|form-138|form 138|student report card|sf1 for jhs\/sf9 for shs|sf1\b|sf-1\b|sf 1\b/i.test(docTypeStr) ||
|
||||
/sf9|sf-9|sf 9|report card|form 9|school form 9|form 138|form-138|form 138|student report card|sf1 for jhs\/sf9 for shs|sf1\b|sf-1\b|sf 1\b/i.test(fileNameStr);
|
||||
|
||||
if (!isSF10 && !isSF9 && !manual) {
|
||||
return {
|
||||
ok: false,
|
||||
skipped: true,
|
||||
message: 'Document is not an SF10 or SF9.'
|
||||
message: 'Auto Enrollment supports only SF9 and SF10 documents.'
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
+17
-3
@@ -141,9 +141,23 @@ Files backup/restore - mirror mode or zip -->
|
||||
2. Add new student screen:
|
||||
- fix drag and drop not working in windows app -->
|
||||
|
||||
Make a new plan for light and dark theme colors
|
||||
- keep the light theme colors, its the schools trademark colors
|
||||
- for dark theme
|
||||
|
||||
<!-- # AUTO ENROLLMENT
|
||||
- currently supports only SF9 and SF10
|
||||
- SF9 is equal to report card, Form 138, School Form 9, Student Report Card, SF1 for JHS/SF9 for SHS
|
||||
- SF10 is equal to School Form 10, Form 137, Form 137-A, Student Permanent Record -->
|
||||
|
||||
# STUDENT SCREEN
|
||||
- bring back background color chip for status in students table (windows) and card (android)
|
||||
|
||||
# DOCUMENT SCREEN
|
||||
- remove background color and border of the chips
|
||||
- file status inside of student folder
|
||||
- bring back the background color chip for requirements progress
|
||||
|
||||
# ARCHIVES SCREEN
|
||||
- bring back the background color chip for status in root student folders tab
|
||||
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -2580,7 +2580,6 @@ class _DocumentsScreenState extends ConsumerState<DocumentsScreen>
|
||||
}
|
||||
|
||||
Color statusColor;
|
||||
final isDark = Theme.of(context).brightness == Brightness.dark;
|
||||
switch (doc.status as String) {
|
||||
case 'Completed':
|
||||
statusColor = isDark ? Colors.lightGreenAccent.shade400 : AppColors.success;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:flutter/foundation.dart';
|
||||
@@ -110,6 +111,7 @@ class _UploadOcrModalState extends ConsumerState<UploadOcrModal> {
|
||||
List<_UploadEntry> _entries = [];
|
||||
bool _isUploading = false;
|
||||
bool _isDragOver = false;
|
||||
Timer? _dragResetTimer;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
@@ -144,6 +146,7 @@ class _UploadOcrModalState extends ConsumerState<UploadOcrModal> {
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_dragResetTimer?.cancel();
|
||||
_lrnController.removeListener(_onLrnChanged);
|
||||
_lrnController.dispose();
|
||||
super.dispose();
|
||||
@@ -676,10 +679,22 @@ class _UploadOcrModalState extends ConsumerState<UploadOcrModal> {
|
||||
|
||||
if (isWindows) {
|
||||
content = DropTarget(
|
||||
onDragEntered: (_) => setState(() => _isDragOver = true),
|
||||
onDragExited: (_) => setState(() => _isDragOver = false),
|
||||
onDragEntered: (_) {
|
||||
_dragResetTimer?.cancel();
|
||||
if (mounted) setState(() => _isDragOver = true);
|
||||
_dragResetTimer = Timer(const Duration(seconds: 3), () {
|
||||
if (mounted && _isDragOver) {
|
||||
setState(() => _isDragOver = false);
|
||||
}
|
||||
});
|
||||
},
|
||||
onDragExited: (_) {
|
||||
_dragResetTimer?.cancel();
|
||||
if (mounted) setState(() => _isDragOver = false);
|
||||
},
|
||||
onDragDone: (details) {
|
||||
setState(() => _isDragOver = false);
|
||||
_dragResetTimer?.cancel();
|
||||
if (mounted) setState(() => _isDragOver = false);
|
||||
_handleDroppedFiles(details.files);
|
||||
},
|
||||
child: content,
|
||||
|
||||
@@ -129,7 +129,17 @@ class _AddStudentModalState extends ConsumerState<AddStudentModal> {
|
||||
lower.contains('sf-9') ||
|
||||
lower.contains('sf 9') ||
|
||||
lower.contains('report card') ||
|
||||
lower.contains('reportcard')) {
|
||||
lower.contains('reportcard') ||
|
||||
lower.contains('student report card') ||
|
||||
lower.contains('form 138') ||
|
||||
lower.contains('form-138') ||
|
||||
lower.contains('form138') ||
|
||||
lower.contains('school form 9') ||
|
||||
lower.contains('school-form-9') ||
|
||||
lower.contains('sf1 for jhs') ||
|
||||
lower.contains('sf1') ||
|
||||
lower.contains('sf-1') ||
|
||||
lower.contains('sf 1')) {
|
||||
return 'SF9';
|
||||
}
|
||||
if (lower.contains('sf10') ||
|
||||
@@ -137,8 +147,16 @@ class _AddStudentModalState extends ConsumerState<AddStudentModal> {
|
||||
lower.contains('sf 10') ||
|
||||
lower.contains('permanent record') ||
|
||||
lower.contains('permanentrecord') ||
|
||||
lower.contains('student permanent record') ||
|
||||
lower.contains('school form 10') ||
|
||||
lower.contains('school-form-10')) {
|
||||
lower.contains('school-form-10') ||
|
||||
lower.contains('form 137') ||
|
||||
lower.contains('form-137') ||
|
||||
lower.contains('form137') ||
|
||||
lower.contains('form 137-a') ||
|
||||
lower.contains('form 137a') ||
|
||||
lower.contains('form 10') ||
|
||||
lower.contains('form-10')) {
|
||||
return 'SF10';
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -99,7 +100,14 @@ class _BulkOcrImportDialogState extends ConsumerState<BulkOcrImportDialog> {
|
||||
|
||||
final List<_OcrItem> _items = [];
|
||||
bool _isDragOver = false;
|
||||
Timer? _dragResetTimer;
|
||||
bool _isProcessing = false;
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_dragResetTimer?.cancel();
|
||||
super.dispose();
|
||||
}
|
||||
int _processingIndex = -1;
|
||||
|
||||
@override
|
||||
@@ -165,15 +173,34 @@ class _BulkOcrImportDialogState extends ConsumerState<BulkOcrImportDialog> {
|
||||
l.contains('sf-9') ||
|
||||
l.contains('sf 9') ||
|
||||
l.contains('report card') ||
|
||||
l.contains('reportcard')) {
|
||||
l.contains('reportcard') ||
|
||||
l.contains('student report card') ||
|
||||
l.contains('form 138') ||
|
||||
l.contains('form-138') ||
|
||||
l.contains('form138') ||
|
||||
l.contains('school form 9') ||
|
||||
l.contains('school-form-9') ||
|
||||
l.contains('sf1 for jhs') ||
|
||||
l.contains('sf1') ||
|
||||
l.contains('sf-1') ||
|
||||
l.contains('sf 1')) {
|
||||
return 'SF9';
|
||||
}
|
||||
if (l.contains('sf10') ||
|
||||
l.contains('sf-10') ||
|
||||
l.contains('sf 10') ||
|
||||
l.contains('permanent record') ||
|
||||
l.contains('permanentrecord') ||
|
||||
l.contains('student permanent record') ||
|
||||
l.contains('school form 10') ||
|
||||
l.contains('school-form-10')) {
|
||||
l.contains('school-form-10') ||
|
||||
l.contains('form 137') ||
|
||||
l.contains('form-137') ||
|
||||
l.contains('form137') ||
|
||||
l.contains('form 137-a') ||
|
||||
l.contains('form 137a') ||
|
||||
l.contains('form 10') ||
|
||||
l.contains('form-10')) {
|
||||
return 'SF10';
|
||||
}
|
||||
return null;
|
||||
@@ -552,10 +579,22 @@ class _BulkOcrImportDialogState extends ConsumerState<BulkOcrImportDialog> {
|
||||
|
||||
if (isWindows) {
|
||||
dropZone = DropTarget(
|
||||
onDragEntered: (_) => setState(() => _isDragOver = true),
|
||||
onDragExited: (_) => setState(() => _isDragOver = false),
|
||||
onDragEntered: (_) {
|
||||
_dragResetTimer?.cancel();
|
||||
if (mounted) setState(() => _isDragOver = true);
|
||||
_dragResetTimer = Timer(const Duration(seconds: 3), () {
|
||||
if (mounted && _isDragOver) {
|
||||
setState(() => _isDragOver = false);
|
||||
}
|
||||
});
|
||||
},
|
||||
onDragExited: (_) {
|
||||
_dragResetTimer?.cancel();
|
||||
if (mounted) setState(() => _isDragOver = false);
|
||||
},
|
||||
onDragDone: (detail) {
|
||||
setState(() => _isDragOver = false);
|
||||
_dragResetTimer?.cancel();
|
||||
if (mounted) setState(() => _isDragOver = false);
|
||||
if (detail.files.isNotEmpty) {
|
||||
final valid = detail.files
|
||||
.where((f) => _allowedExtensions
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
import 'dart:async';
|
||||
import 'dart:io';
|
||||
import 'package:flutter/foundation.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
@@ -28,6 +29,13 @@ class DocumentSourcePicker extends StatefulWidget {
|
||||
class _DocumentSourcePickerState extends State<DocumentSourcePicker> {
|
||||
final ImagePicker _imagePicker = ImagePicker();
|
||||
bool _isDragOver = false;
|
||||
Timer? _dragResetTimer;
|
||||
|
||||
@override
|
||||
void dispose() {
|
||||
_dragResetTimer?.cancel();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
Future<void> _pickFile() async {
|
||||
try {
|
||||
@@ -213,10 +221,22 @@ class _DocumentSourcePickerState extends State<DocumentSourcePicker> {
|
||||
|
||||
if (isWindows) {
|
||||
content = DropTarget(
|
||||
onDragEntered: (details) => setState(() => _isDragOver = true),
|
||||
onDragExited: (details) => setState(() => _isDragOver = false),
|
||||
onDragEntered: (details) {
|
||||
_dragResetTimer?.cancel();
|
||||
if (mounted) setState(() => _isDragOver = true);
|
||||
_dragResetTimer = Timer(const Duration(seconds: 3), () {
|
||||
if (mounted && _isDragOver) {
|
||||
setState(() => _isDragOver = false);
|
||||
}
|
||||
});
|
||||
},
|
||||
onDragExited: (details) {
|
||||
_dragResetTimer?.cancel();
|
||||
if (mounted) setState(() => _isDragOver = false);
|
||||
},
|
||||
onDragDone: (details) {
|
||||
setState(() => _isDragOver = false);
|
||||
_dragResetTimer?.cancel();
|
||||
if (mounted) setState(() => _isDragOver = false);
|
||||
if (details.files.isNotEmpty) {
|
||||
final xfile = details.files.first;
|
||||
final ext = xfile.path.split('.').last.toLowerCase();
|
||||
|
||||
Binary file not shown.
@@ -1,25 +0,0 @@
|
||||
[Setup]
|
||||
AppName=TIS RMS Client
|
||||
AppVersion=1.0
|
||||
DefaultDirName={pf}\TIS RMS Client
|
||||
DefaultGroupName=TIS RMS Client
|
||||
OutputDir=f:\SumbrerongBato\tis_rms_server\installers
|
||||
OutputBaseFilename=TIS_RMS_Client_Setup
|
||||
Compression=lzma
|
||||
SolidCompression=yes
|
||||
ArchitecturesInstallIn64BitMode=x64
|
||||
|
||||
[Tasks]
|
||||
Name: "desktopicon"; Description: "Create a &desktop icon"; GroupDescription: "Additional icons:"; Flags: unchecked
|
||||
|
||||
[Files]
|
||||
Source: "f:\SumbrerongBato\tis_rms_server\frontend\build\windows\x64\runner\Release\frontend.exe"; DestDir: "{app}"; Flags: ignoreversion
|
||||
Source: "f:\SumbrerongBato\tis_rms_server\frontend\build\windows\x64\runner\Release\*"; DestDir: "{app}"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
|
||||
[Icons]
|
||||
Name: "{group}\TIS RMS Client"; Filename: "{app}\frontend.exe"
|
||||
Name: "{group}\Uninstall TIS RMS Client"; Filename: "{uninstallexe}"
|
||||
Name: "{commondesktop}\TIS RMS Client"; Filename: "{app}\frontend.exe"; Tasks: desktopicon
|
||||
|
||||
[Run]
|
||||
Filename: "{app}\frontend.exe"; Description: "Launch TIS RMS Client"; Flags: nowait postinstall skipifsilent
|
||||
Reference in new issue
Block a user