mirror of
https://git.meshkee.com/applications/cssd.git
synced 2026-10-10 19:28:56 +03:30
Set search cycle by api
This commit is contained in:
@@ -182,4 +182,8 @@ class Url {
|
|||||||
static String searchTestResults(String value) {
|
static String searchTestResults(String value) {
|
||||||
return '$baseUrl/TestResults?test_type_name=$value';
|
return '$baseUrl/TestResults?test_type_name=$value';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static String searchCycles(String id) {
|
||||||
|
return '$baseUrl/Cycles?cycle_id=$id';
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -68,6 +68,7 @@ class _CycleResultScreenState extends State<CycleResultScreen> {
|
|||||||
final _media = MediaQuery.of(context);
|
final _media = MediaQuery.of(context);
|
||||||
final double _devicewidth = _media.size.width;
|
final double _devicewidth = _media.size.width;
|
||||||
final double _deviceBlockSize = _devicewidth / 100;
|
final double _deviceBlockSize = _devicewidth / 100;
|
||||||
|
var searchVal;
|
||||||
return SafeArea(
|
return SafeArea(
|
||||||
child: GestureDetector(
|
child: GestureDetector(
|
||||||
onTap: () {
|
onTap: () {
|
||||||
@@ -188,9 +189,17 @@ class _CycleResultScreenState extends State<CycleResultScreen> {
|
|||||||
deviceBlockSize: _deviceBlockSize,
|
deviceBlockSize: _deviceBlockSize,
|
||||||
text: 'cycle',
|
text: 'cycle',
|
||||||
onChanged: (value) {
|
onChanged: (value) {
|
||||||
Provider.of<CyclesProvider>(context,
|
searchVal = value;
|
||||||
listen: false)
|
// Provider.of<CyclesProvider>(context,
|
||||||
.search(value);
|
// listen: false)
|
||||||
|
// .search(value);
|
||||||
|
},
|
||||||
|
onTap: () async {
|
||||||
|
var cycles = await Provider.of<CyclesProvider>(
|
||||||
|
context,
|
||||||
|
listen: false);
|
||||||
|
cycles.setLoading();
|
||||||
|
await cycles.search(searchVal);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
|
|||||||
@@ -238,6 +238,7 @@ class _ItemResultScreenState extends State<ItemResultScreen> {
|
|||||||
Provider.of<ItemProvider>(context, listen: false)
|
Provider.of<ItemProvider>(context, listen: false)
|
||||||
.search(value);
|
.search(value);
|
||||||
},
|
},
|
||||||
|
onTap: () {},
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
|
|||||||
@@ -162,6 +162,7 @@ class _MyItemsMineScreenState extends State<MyItemsMineScreen> {
|
|||||||
Provider.of<MyItemProvider>(context, listen: false)
|
Provider.of<MyItemProvider>(context, listen: false)
|
||||||
.searchMyItems(value);
|
.searchMyItems(value);
|
||||||
},
|
},
|
||||||
|
onTap: () {},
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
|
|||||||
@@ -135,6 +135,7 @@ class _ItemsTransferScreenState extends State<ItemsTransferScreen> {
|
|||||||
Provider.of<UsersProvider>(context, listen: false)
|
Provider.of<UsersProvider>(context, listen: false)
|
||||||
.searchUsers(value);
|
.searchUsers(value);
|
||||||
},
|
},
|
||||||
|
onTap: () {},
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ import 'package:provider/provider.dart';
|
|||||||
|
|
||||||
class MyPackagesMineScreen extends StatefulWidget {
|
class MyPackagesMineScreen extends StatefulWidget {
|
||||||
final bool? isAdmin;
|
final bool? isAdmin;
|
||||||
|
|
||||||
const MyPackagesMineScreen({
|
const MyPackagesMineScreen({
|
||||||
Key? key,
|
Key? key,
|
||||||
this.isAdmin,
|
this.isAdmin,
|
||||||
@@ -133,6 +134,7 @@ class _MyPackagesMineScreenState extends State<MyPackagesMineScreen> {
|
|||||||
Provider.of<MyPackageProvider>(context, listen: false)
|
Provider.of<MyPackageProvider>(context, listen: false)
|
||||||
.searchMyPackages(value);
|
.searchMyPackages(value);
|
||||||
},
|
},
|
||||||
|
onTap: () {},
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
@@ -146,8 +148,7 @@ class _MyPackagesMineScreenState extends State<MyPackagesMineScreen> {
|
|||||||
color: Colors.black,
|
color: Colors.black,
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
: packageResults.myPackages?.length !=
|
: packageResults.myPackages?.length != 0
|
||||||
0
|
|
||||||
? ListView.builder(
|
? ListView.builder(
|
||||||
controller: sc,
|
controller: sc,
|
||||||
itemBuilder: (context, index) {
|
itemBuilder: (context, index) {
|
||||||
@@ -172,10 +173,11 @@ class _MyPackagesMineScreenState extends State<MyPackagesMineScreen> {
|
|||||||
shrinkWrap: true,
|
shrinkWrap: true,
|
||||||
)
|
)
|
||||||
: Container(
|
: Container(
|
||||||
child: Center(
|
child: Center(
|
||||||
child: Text("There is no item to show."),
|
child:
|
||||||
),
|
Text("There is no item to show."),
|
||||||
);
|
),
|
||||||
|
);
|
||||||
},
|
},
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
@@ -130,6 +130,7 @@ class _PackageTransferScreenState extends State<PackageTransferScreen> {
|
|||||||
Provider.of<UsersProvider>(context, listen: false)
|
Provider.of<UsersProvider>(context, listen: false)
|
||||||
.searchUsers(value);
|
.searchUsers(value);
|
||||||
},
|
},
|
||||||
|
onTap: () {},
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
|
|||||||
@@ -203,6 +203,7 @@ class _PackageResultScreenState extends State<PackageResultScreen> {
|
|||||||
Provider.of<PackageProvider>(context, listen: false)
|
Provider.of<PackageProvider>(context, listen: false)
|
||||||
.search(value);
|
.search(value);
|
||||||
},
|
},
|
||||||
|
onTap: () {},
|
||||||
),
|
),
|
||||||
SizedBox(
|
SizedBox(
|
||||||
height: 20,
|
height: 20,
|
||||||
|
|||||||
@@ -271,14 +271,37 @@ class CyclesProvider extends ChangeNotifier {
|
|||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
void search(String value) {
|
Future<void> search(String value) async {
|
||||||
|
print(value);
|
||||||
items = [];
|
items = [];
|
||||||
searchBoxValue = value;
|
searchBoxValue = value;
|
||||||
originalItems!.forEach((result) {
|
var response = await http.get(
|
||||||
if (result.id.toString().contains(searchBoxValue)) {
|
Uri.parse(Url.searchCycles(value)),
|
||||||
items!.add(result);
|
headers: {
|
||||||
|
'Authorization': User.token,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
|
||||||
|
var testResultData = json.decode(response.body);
|
||||||
|
List<String> labels = [];
|
||||||
|
if (pageNumber == 1) {
|
||||||
|
originalItems = [];
|
||||||
|
items = [];
|
||||||
|
}
|
||||||
|
for (var item in testResultData['data']) {
|
||||||
|
labels = [];
|
||||||
|
for (var label in item['labels']) {
|
||||||
|
labels.add(label['id'].toString());
|
||||||
}
|
}
|
||||||
});
|
items!.add(
|
||||||
|
CycleResultObject(
|
||||||
|
createdAt: item['date'],
|
||||||
|
id: item['id'].toString(),
|
||||||
|
label: labels,
|
||||||
|
),
|
||||||
|
);
|
||||||
|
}
|
||||||
|
resetLoading();
|
||||||
notifyListeners();
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -332,8 +355,9 @@ class CyclesProvider extends ChangeNotifier {
|
|||||||
),
|
),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
items = originalItems;
|
||||||
pageNumber += 1;
|
pageNumber += 1;
|
||||||
search('');
|
notifyListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<CycleDetailObject> showCycleResult(String id) async {
|
Future<CycleDetailObject> showCycleResult(String id) async {
|
||||||
|
|||||||
@@ -8,6 +8,7 @@ class ResultSearchBox extends StatelessWidget {
|
|||||||
required double deviceBlockSize,
|
required double deviceBlockSize,
|
||||||
required this.text,
|
required this.text,
|
||||||
required this.onChanged,
|
required this.onChanged,
|
||||||
|
required this.onTap,
|
||||||
this.text2 = 'ID',
|
this.text2 = 'ID',
|
||||||
this.textInputType = TextInputType.number,
|
this.textInputType = TextInputType.number,
|
||||||
}) : _deviceBlockSize = deviceBlockSize,
|
}) : _deviceBlockSize = deviceBlockSize,
|
||||||
@@ -18,6 +19,7 @@ class ResultSearchBox extends StatelessWidget {
|
|||||||
final String text;
|
final String text;
|
||||||
final String text2;
|
final String text2;
|
||||||
final dynamic onChanged;
|
final dynamic onChanged;
|
||||||
|
final dynamic onTap;
|
||||||
final TextInputType textInputType;
|
final TextInputType textInputType;
|
||||||
|
|
||||||
@override
|
@override
|
||||||
@@ -40,6 +42,20 @@ class ResultSearchBox extends StatelessWidget {
|
|||||||
labelText: 'Search by $text $text2',
|
labelText: 'Search by $text $text2',
|
||||||
isDense: true,
|
isDense: true,
|
||||||
contentPadding: EdgeInsets.symmetric(vertical: 2, horizontal: 3),
|
contentPadding: EdgeInsets.symmetric(vertical: 2, horizontal: 3),
|
||||||
|
suffixIcon: InkWell(
|
||||||
|
onTap: onTap,
|
||||||
|
child: Container(
|
||||||
|
margin: EdgeInsets.all(5),
|
||||||
|
decoration: BoxDecoration(
|
||||||
|
shape: BoxShape.circle,
|
||||||
|
color: Colors.black,
|
||||||
|
),
|
||||||
|
child: Icon(
|
||||||
|
Icons.input,
|
||||||
|
color: Colors.white,
|
||||||
|
),
|
||||||
|
),
|
||||||
|
),
|
||||||
),
|
),
|
||||||
style: TextStyle(
|
style: TextStyle(
|
||||||
fontWeight: FontWeight.w700,
|
fontWeight: FontWeight.w700,
|
||||||
|
|||||||
@@ -52,8 +52,7 @@ class TestResultSearchBox extends StatelessWidget {
|
|||||||
color: Colors.black,
|
color: Colors.black,
|
||||||
),
|
),
|
||||||
child: Icon(
|
child: Icon(
|
||||||
Icons.space_bar,
|
Icons.input,
|
||||||
// size: 4 * _deviceBlockSize,
|
|
||||||
color: Colors.white,
|
color: Colors.white,
|
||||||
),
|
),
|
||||||
),
|
),
|
||||||
|
|||||||
Reference in New Issue
Block a user