sender and consignee selection

This commit is contained in:
tzw
2024-03-05 16:32:54 +06:30
parent b443293cd0
commit 247140de6b
5 changed files with 63 additions and 59 deletions

View File

@@ -108,7 +108,7 @@ class _CartonFilterState extends State<CartonFilter> {
Future<void> _loadMoreConsignee() async { Future<void> _loadMoreConsignee() async {
if (_isLoadMoreConsignee) return; if (_isLoadMoreConsignee) return;
var model = context.read<ConsigneeSelectionModel>(); var model = context.read<ConsigneeSelectionModel>();
if (model.reachEnd || model.ended) return; if (model.ended) return;
setState(() { setState(() {
_isLoadMoreConsignee = true; _isLoadMoreConsignee = true;
}); });
@@ -141,7 +141,7 @@ class _CartonFilterState extends State<CartonFilter> {
Future<void> _loadMoreSender() async { Future<void> _loadMoreSender() async {
if (_isLoadMoreSender) return; if (_isLoadMoreSender) return;
var model = context.read<SenderSelectionModel>(); var model = context.read<SenderSelectionModel>();
if (model.reachEnd || model.ended) return; if (model.ended) return;
setState(() { setState(() {
_isLoadMoreSender = true; _isLoadMoreSender = true;
}); });

View File

@@ -1,24 +1,29 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert';
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:fcs/config.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import '../../../domain/constants.dart'; import '../../../domain/constants.dart';
import '../../../domain/entities/user.dart'; import '../../../domain/entities/user.dart';
import '../../../helpers/api_helper.dart';
import '../../../helpers/firebase_helper.dart';
import '../../main/model/base_model.dart'; import '../../main/model/base_model.dart';
class ConsigneeSelectionModel extends BaseModel { class ConsigneeSelectionModel extends BaseModel {
final log = Logger("ConsigneeSearchModel"); final log = Logger("ConsigneeSearchModel");
// for search // for search
String query = ""; String query = "";
int offset = 0;
bool reachEnd = false;
List<User> _consignees = []; List<User> _consignees = [];
List<User> get getConsginees { List<User> get getConsginees {
var users = new List<User>.from(_consignees); var users = new List<User>.from(_consignees);
if (query == "") {
return users..insert(0, User(id: all, name: "All")); return users..insert(0, User(id: all, name: "All"));
} }
return users;
}
bool isLoading = false; bool isLoading = false;
@@ -30,8 +35,6 @@ class ConsigneeSelectionModel extends BaseModel {
search(String term, {bool imm = false}) async { search(String term, {bool imm = false}) async {
query = term; query = term;
_consignees.clear(); _consignees.clear();
offset = 0;
reachEnd = false;
t?.cancel(); t?.cancel();
t = Timer(Duration(milliseconds: imm ? 0 : 800), () async { t = Timer(Duration(milliseconds: imm ? 0 : 800), () async {
await loadMoreSearch(term: term); await loadMoreSearch(term: term);
@@ -43,35 +46,26 @@ class ConsigneeSelectionModel extends BaseModel {
await _refresh(); await _refresh();
return; return;
} }
// int rowPerPage = 21; var bytes = utf8.encode(term);
// List<Carton> list = []; var base64Str = base64.encode(bytes);
// SearchPara searchPara = SearchPara(filters: [], term: term); HtmlEscape htmlEscape = const HtmlEscape();
// isLoading = true; String escapeSender = htmlEscape.convert(base64Str);
// var path = int rowPerPage = 20;
// "/search/$cartons_collection/${searchPara.escapeTerm}/$rowPerPage/$offset/${searchPara.escapeFilters}"; List<User> list = [];
// var result = await requestAPI(path, "GET", var result = await requestAPI(
// token: await getToken(), url: Config.instance.searchURL); "/api/fts/$user_collection/$escapeSender/$rowPerPage", "GET",
url: Config.instance.reportURL, token: await getToken());
// if (result != null) { if (result != null) {
// for (var row in result) { for (var row in result) {
// var item = ArtistExt.fromMapForSearch(row); var item = User.fromJson(row);
// list.add(item); list.add(item);
// } }
// } }
// for (var p in list) { _consignees = List.from(list);
// selectedArtistList.contains(p)
// ? p.isSelected = true
// : p.isSelected = false;
// }
// artists.addAll(list);
// offset += rowPerPage;
// if (list.length < rowPerPage) {
// reachEnd = true;
// }
notifyListeners(); notifyListeners();
} }

View File

@@ -1,24 +1,29 @@
import 'dart:async'; import 'dart:async';
import 'dart:convert';
import 'package:cloud_firestore/cloud_firestore.dart'; import 'package:cloud_firestore/cloud_firestore.dart';
import 'package:logging/logging.dart'; import 'package:logging/logging.dart';
import '../../../config.dart';
import '../../../domain/constants.dart'; import '../../../domain/constants.dart';
import '../../../domain/entities/user.dart'; import '../../../domain/entities/user.dart';
import '../../../helpers/api_helper.dart';
import '../../../helpers/firebase_helper.dart';
import '../../main/model/base_model.dart'; import '../../main/model/base_model.dart';
class SenderSelectionModel extends BaseModel { class SenderSelectionModel extends BaseModel {
final log = Logger("SenderSelectionModel"); final log = Logger("SenderSelectionModel");
// for search // for search
String query = ""; String query = "";
int offset = 0;
bool reachEnd = false;
List<User> _senders = []; List<User> _senders = [];
List<User> get getSenders { List<User> get getSenders {
var users = new List<User>.from(_senders); var users = new List<User>.from(_senders);
if (query == "") {
return users..insert(0, User(id: all, name: "All")); return users..insert(0, User(id: all, name: "All"));
} }
return users;
}
bool isLoading = false; bool isLoading = false;
@@ -30,8 +35,6 @@ class SenderSelectionModel extends BaseModel {
search(String term, {bool imm = false}) async { search(String term, {bool imm = false}) async {
query = term; query = term;
_senders.clear(); _senders.clear();
offset = 0;
reachEnd = false;
t?.cancel(); t?.cancel();
t = Timer(Duration(milliseconds: imm ? 0 : 800), () async { t = Timer(Duration(milliseconds: imm ? 0 : 800), () async {
await loadMoreSearch(term: term); await loadMoreSearch(term: term);
@@ -44,31 +47,28 @@ class SenderSelectionModel extends BaseModel {
return; return;
} }
// var bytes = utf8.encode(term); var bytes = utf8.encode(term);
// var base64Str = base64.encode(bytes); var base64Str = base64.encode(bytes);
// HtmlEscape htmlEscape = const HtmlEscape(); HtmlEscape htmlEscape = const HtmlEscape();
// String escapeSender = htmlEscape.convert(base64Str); String escapeSender = htmlEscape.convert(base64Str);
// int rowPerPage = 20; int rowPerPage = 20;
// List<User> list = []; List<User> list = [];
// var result = await requestAPI( var result = await requestAPI(
// "/api/fts/$user_collection/$escapeSender/$rowPerPage", "GET", "/api/fts/$user_collection/$escapeSender/$rowPerPage", "GET",
// url: Config.instance.reportURL, token: await getToken()); url: Config.instance.reportURL, token: await getToken());
// if (result != null) { if (result != null) {
// for (var row in result) { for (var row in result) {
// var item = User.fromJson(row); var item = User.fromJson(row);
// list.add(item); list.add(item);
// } }
// } }
// _senders.addAll(list); _senders = List.from(list);
// offset += rowPerPage;
// if (list.length < rowPerPage) { notifyListeners();
// reachEnd = true;
// }
// notifyListeners();
} }
addDefaultSenders() async { addDefaultSenders() async {

View File

@@ -1,8 +1,10 @@
import 'package:fcs/domain/entities/carton.dart'; import 'package:fcs/domain/entities/carton.dart';
import 'package:fcs/helpers/theme.dart'; import 'package:fcs/helpers/theme.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart'; import 'package:flutter/material.dart';
import 'package:flutter_vector_icons/flutter_vector_icons.dart'; import 'package:flutter_vector_icons/flutter_vector_icons.dart';
import '../carton/print_qr_code_page.dart';
import 'carton_search.dart'; import 'carton_search.dart';
class CartonListRow extends StatelessWidget { class CartonListRow extends StatelessWidget {
@@ -69,7 +71,14 @@ class CartonListRow extends StatelessWidget {
), ),
const SizedBox(width: 15), const SizedBox(width: 15),
IconButton( IconButton(
onPressed: () {}, onPressed: () {
Navigator.push(
context,
CupertinoPageRoute(
builder: (context) =>
PrintQrCodePage(carton: carton)),
);
},
icon: Icon(AntDesign.qrcode, icon: Icon(AntDesign.qrcode,
color: Colors.black)) color: Colors.black))
], ],

View File

@@ -62,6 +62,7 @@ class _CartonSizeEditorState extends State<CartonSizeEditor> {
final lengthBox = LengthPicker( final lengthBox = LengthPicker(
controller: _lengthController, controller: _lengthController,
lableKey: "box.length", lableKey: "box.length",
displayFeet: true,
); );
final widthBox = LengthPicker( final widthBox = LengthPicker(
controller: _widthController, controller: _widthController,