Преглед на файлове

nambah kategori filter

master
jefry преди 4 години
родител
ревизия
d127e580f5
променени са 7 файла, в които са добавени 170 реда и са изтрити 58 реда
  1. +1
    -1
      lib/asset_details.dart
  2. +68
    -10
      lib/stocking.dart
  3. +4
    -0
      lib/util/Models.dart
  4. +16
    -2
      lib/util/dbHandler.dart
  5. +1
    -0
      lib/util/prefsKey.dart
  6. +2
    -2
      lib/util/utils.dart
  7. +78
    -43
      pubspec.lock

+ 1
- 1
lib/asset_details.dart Целия файл

@@ -252,7 +252,7 @@ class _AssetDetailsState extends State<AssetDetails> with TickerProviderStateMix
var bUnit = await DBHelper.database.getBUnit();
util.showLoading(context);
http.Response result = await http.get(
'${prefs.getString(keyClass.hostAddress)??"https://asset.thamringroup.web.id"}/api/images?q=${_asset.tag_number}&s=${dbName}&b=${bUnit}',
Uri.parse('${prefs.getString(keyClass.hostAddress)??"https://asset.thamringroup.web.id"}/api/images?q=${_asset.tag_number}&s=${dbName}&b=${bUnit}'),
).timeout(Duration(seconds: 3));
Navigator.pop(context);
if(result!=null){


+ 68
- 10
lib/stocking.dart Целия файл

@@ -21,8 +21,10 @@ class _StockingState extends State<Stocking> with TickerProviderStateMixin {
bool isLoading = false;
List<String> lokasi = [];
List<String> ruangan = [];
List<String> kategori = [];
String _currentloc='All';
String _currentruang='All';
String _currentkategori='All';

loadAsset({loading=false})async{
if(loading) {
@@ -34,6 +36,7 @@ class _StockingState extends State<Stocking> with TickerProviderStateMixin {
if(result!=null){
if(_currentloc!='All') result.removeWhere((element) => (element.lantai!=_currentloc));
if(_currentruang!='All') result.removeWhere((element) => (element.ruangan!=_currentruang));
if(_currentkategori!='All') result.removeWhere((element) => (element.kategori!=_currentkategori));
setState(() {
refAsset = result;
});
@@ -54,6 +57,10 @@ class _StockingState extends State<Stocking> with TickerProviderStateMixin {
setState(() {
insertAsset = result.reversed.toList();
});
if(_currentkategori!='All') result.removeWhere((element) => (element.kategori!=_currentkategori));
setState(() {
insertAsset = result.reversed.toList();
});
}
if(lokasi.length==0){
var results = await DBHelper.database.getAllLocation();
@@ -64,6 +71,14 @@ class _StockingState extends State<Stocking> with TickerProviderStateMixin {
lokasi.add('All');
}
}
if(kategori.length==0){
var results = await DBHelper.database.getAllKategori();
if(results!=null){
kategori.clear();
kategori = new List<String>.from(results.map((item)=>item.kategori));
kategori.add('All');
}
}
ruangan.clear();
var results = (_currentloc=='All')?await DBHelper.database.getAllRuangan():await DBHelper.database.getLantaiRuangan(_currentloc);
setState(() {
@@ -153,18 +168,20 @@ class _StockingState extends State<Stocking> with TickerProviderStateMixin {
child: Container(
// padding: EdgeInsets.all(8),
child: Row(
mainAxisAlignment: MainAxisAlignment.spaceBetween,
children: [
Container(
child: Text("Lantai : ",style: TextStyle(fontSize: 16),),
Flexible(
flex:1,
child: Text("Lantai:",style: TextStyle(fontSize: 14),),
),
Container(
width: 100,
Flexible(
flex: 3,
child: DropdownButtonFormField(
decoration: InputDecoration.collapsed(hintText: null),
value: _currentloc,
items: new List<DropdownMenuItem<String>>.from(lokasi.reversed.map((value){
return DropdownMenuItem(
child: Text(value),
child: Text(value==''||value==null?"-":(value.length>15)? value.substring(0,15):value,style: TextStyle(fontSize: 12),),
value: value,
);
})),
@@ -180,18 +197,20 @@ class _StockingState extends State<Stocking> with TickerProviderStateMixin {
},
),
),
Container(
child: Text("Ruang : ",style: TextStyle(fontSize: 16)),
Flexible(
flex:1,
child: Text("Ruang:",style: TextStyle(fontSize: 14)),
),
Expanded(
Flexible(
flex: 3,
child: DropdownButtonFormField(
decoration: InputDecoration.collapsed(hintText: null),
value: _currentruang,
items: new List<DropdownMenuItem<String>>.from(ruangan.reversed.map((value){
String _string = value;
if(_string.length>18) _string = _string.substring(0,18);
if(_string.length>15) _string = _string.substring(0,15);
return DropdownMenuItem(
child: Text(_string),
child: Text(_string==''?"-":_string??'-',style: TextStyle(fontSize: 12),),
value: value,
);
})),
@@ -209,6 +228,45 @@ class _StockingState extends State<Stocking> with TickerProviderStateMixin {
),
),
Expanded(
flex: 1,
child: Container(
alignment: Alignment.bottomCenter,
padding: const EdgeInsets.all(8.0),
child: Container(
// padding: EdgeInsets.all(8),
child: Row(
children: [
Container(
child: Text("Kategori : ",style: TextStyle(fontSize: 14),),
),
Expanded(
// width: 100,
child: DropdownButtonFormField(
decoration: InputDecoration.collapsed(hintText: null),
value: _currentkategori,
items: new List<DropdownMenuItem<String>>.from(kategori.reversed.map((value){
return DropdownMenuItem(
child: Text(value==''||value==null?"-":(value.length>15)? value.substring(0,15):value,style: TextStyle(fontSize: 12),),
value: value,
);
})),
onChanged: (value){
if(_currentkategori!= value){
setState(() {
_currentkategori=value;
});
loadAsset(loading: true);
}

},
),
),
],
),
),
),
),
Expanded(
flex:16,
child: Column(
children: <Widget>[


+ 4
- 0
lib/util/Models.dart Целия файл

@@ -4,6 +4,7 @@ class Asset{
var blob;
String asset_no;
String asset_desc;
String kategori;
String pic;
String gedung;
String lantai;
@@ -18,6 +19,7 @@ class Asset{
this.blob,
this.asset_no,
this.asset_desc,
this.kategori,
this.pic,
this.gedung,
this.lantai,
@@ -33,6 +35,7 @@ class Asset{
blob: json[columnName.blob]??null,
asset_no: json[columnName.asset_number]??'',
asset_desc: json[columnName.asset_desc]??'',
kategori: json[columnName.kategori]??'',
pic: json[columnName.pic]??'',
gedung : json[columnName.gedung]??'',
lantai: json[columnName.lantai]??'',
@@ -47,6 +50,7 @@ class Asset{
columnName.blob: blob,
columnName.asset_number : asset_no,
columnName.asset_desc : asset_desc,
columnName.kategori:kategori,
columnName.pic: pic,
columnName.gedung: gedung,
columnName.lantai :lantai,


+ 16
- 2
lib/util/dbHandler.dart Целия файл

@@ -123,6 +123,20 @@ class DBHelper{
}
}

getAllKategori() async{
try{
final database = await db;
var res = await database.rawQuery("SELECT Distinct UPPER(${columnName.kategori}) ${columnName.kategori} from ${tableName.ref} ORDER BY UPPER(${columnName.kategori})");
List<Asset> list =
res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList().reversed.toList() : [];
return list;
}
catch(e){
print(e);
return null;
}
}

getAllLocation() async{
try{
final database = await db;
@@ -168,7 +182,7 @@ class DBHelper{
getAllAsset() async {
try{
final database = await db;
var res = await database.rawQuery("SELECT a.${columnName.tag_number}, a.${columnName.asset_desc}, a.${columnName.ruang}, a.${columnName.lantai}, a.${columnName.gedung}, a.${columnName.flag}, b.${columnName.blob} from ${tableName.ref} a LEFT JOIN ${tableName.insert} b on a.${columnName.tag_number} = b.${columnName.tag_number} ORDER BY a.${columnName.flag},a.${columnName.ruang}");
var res = await database.rawQuery("SELECT a.${columnName.tag_number}, a.${columnName.asset_desc},a.${columnName.kategori}, a.${columnName.ruang}, a.${columnName.lantai}, a.${columnName.gedung}, a.${columnName.flag}, b.${columnName.blob} from ${tableName.ref} a LEFT JOIN ${tableName.insert} b on a.${columnName.tag_number} = b.${columnName.tag_number} ORDER BY a.${columnName.flag},a.${columnName.ruang}");
List<Asset> list =
res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
return list;
@@ -182,7 +196,7 @@ class DBHelper{
filterAllAsset(search) async {
try{
final database = await db;
var res = await database.rawQuery("SELECT * FROM (SELECT a.${columnName.tag_number}, a.${columnName.asset_desc}, a.${columnName.ruang}, a.${columnName.lantai}, a.${columnName.gedung}, a.${columnName.flag}, b.${columnName.blob} from ${tableName.ref} a LEFT JOIN ${tableName.insert} b on a.${columnName.tag_number} = b.${columnName.tag_number}) WHERE UPPER(${columnName.tag_number}) Like '%$search%' ORDER BY ${columnName.flag},${columnName.ruang}");
var res = await database.rawQuery("SELECT * FROM (SELECT a.${columnName.tag_number}, a.${columnName.asset_desc},a.${columnName.kategori}, a.${columnName.ruang}, a.${columnName.lantai}, a.${columnName.gedung}, a.${columnName.flag}, b.${columnName.blob} from ${tableName.ref} a LEFT JOIN ${tableName.insert} b on a.${columnName.tag_number} = b.${columnName.tag_number}) WHERE UPPER(${columnName.tag_number}) Like '%$search%' ORDER BY ${columnName.flag},${columnName.ruang}");
List<Asset> list =
res.isNotEmpty ? res.map((c) => Asset.fromJson(c)).toList() : [];
return list;


+ 1
- 0
lib/util/prefsKey.dart Целия файл

@@ -16,6 +16,7 @@ class columnName{
static String asset_number = 'ASSET_NUMBER';
static String tag_number = 'TAG_NUMBER';
static String asset_desc = "ASSET_DESCRIPTION";
static String kategori = "KATEGORI_MAJOR";
static String pic = 'PIC';
static String gedung = 'GEDUNG';
static String lantai = 'LANTAI';


+ 2
- 2
lib/util/utils.dart Целия файл

@@ -46,12 +46,12 @@ class Util{
var response;
if (timeout)
response = await http.post(
'$url', headers: headers,
Uri.parse(url), headers: headers,
body: json.encode(jsonData)).timeout(
Duration(seconds: duration));
else
response = await http.post(
'$url', headers: headers,
Uri.parse(url), headers: headers,
body: json.encode(jsonData));
final Map data = decoder.convert(response.body);
return data;


+ 78
- 43
pubspec.lock Целия файл

@@ -7,14 +7,14 @@ packages:
name: archive
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.13"
version: "3.1.2"
args:
dependency: transitive
description:
name: args
url: "https://pub.dartlang.org"
source: hosted
version: "1.6.0"
version: "2.0.0"
async:
dependency: transitive
description:
@@ -64,20 +64,13 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.15.0"
convert:
dependency: transitive
description:
name: convert
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.1"
crypto:
dependency: transitive
description:
name: crypto
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.5"
version: "3.0.1"
cupertino_icons:
dependency: "direct main"
description:
@@ -92,13 +85,20 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "1.2.0"
ffi:
dependency: transitive
description:
name: ffi
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.2"
file:
dependency: transitive
description:
name: file
url: "https://pub.dartlang.org"
source: hosted
version: "5.2.1"
version: "6.1.2"
fixnum:
dependency: transitive
description:
@@ -117,14 +117,14 @@ packages:
name: flutter_launcher_icons
url: "https://pub.dartlang.org"
source: hosted
version: "0.8.1"
version: "0.9.0"
flutter_plugin_android_lifecycle:
dependency: transitive
description:
name: flutter_plugin_android_lifecycle
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.8"
version: "2.0.2"
flutter_test:
dependency: "direct dev"
description: flutter
@@ -141,49 +141,56 @@ packages:
name: fluttertoast
url: "https://pub.dartlang.org"
source: hosted
version: "4.0.1"
version: "8.0.7"
http:
dependency: transitive
description:
name: http
url: "https://pub.dartlang.org"
source: hosted
version: "0.12.1"
version: "0.13.3"
http_parser:
dependency: transitive
description:
name: http_parser
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.4"
version: "4.0.0"
image:
dependency: transitive
description:
name: image
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.19"
version: "3.0.2"
image_picker:
dependency: "direct main"
description:
name: image_picker
url: "https://pub.dartlang.org"
source: hosted
version: "0.6.7+2"
version: "0.8.1+1"
image_picker_for_web:
dependency: transitive
description:
name: image_picker_for_web
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
image_picker_platform_interface:
dependency: transitive
description:
name: image_picker_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.1.0"
version: "2.1.0"
intl:
dependency: "direct main"
description:
name: intl
url: "https://pub.dartlang.org"
source: hosted
version: "0.16.1"
version: "0.17.0"
js:
dependency: transitive
description:
@@ -225,105 +232,126 @@ packages:
name: path_provider
url: "https://pub.dartlang.org"
source: hosted
version: "1.6.11"
version: "2.0.2"
path_provider_linux:
dependency: transitive
description:
name: path_provider_linux
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.1+1"
version: "2.0.0"
path_provider_macos:
dependency: transitive
description:
name: path_provider_macos
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.4+3"
version: "2.0.0"
path_provider_platform_interface:
dependency: transitive
description:
name: path_provider_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
version: "2.0.1"
path_provider_windows:
dependency: transitive
description:
name: path_provider_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.1"
pedantic:
dependency: transitive
description:
name: pedantic
url: "https://pub.dartlang.org"
source: hosted
version: "1.9.0"
version: "1.11.1"
petitparser:
dependency: transitive
description:
name: petitparser
url: "https://pub.dartlang.org"
source: hosted
version: "3.1.0"
version: "4.1.0"
photo_view:
dependency: "direct main"
description:
name: photo_view
url: "https://pub.dartlang.org"
source: hosted
version: "0.9.2"
version: "0.11.1"
platform:
dependency: transitive
description:
name: platform
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.1"
version: "3.0.0"
plugin_platform_interface:
dependency: transitive
description:
name: plugin_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2"
version: "2.0.0"
process:
dependency: transitive
description:
name: process
url: "https://pub.dartlang.org"
source: hosted
version: "3.0.13"
version: "4.2.1"
protobuf:
dependency: transitive
description:
name: protobuf
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.1"
version: "1.1.4"
shared_preferences:
dependency: "direct main"
description:
name: shared_preferences
url: "https://pub.dartlang.org"
source: hosted
version: "0.5.7+3"
version: "2.0.6"
shared_preferences_linux:
dependency: transitive
description:
name: shared_preferences_linux
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
shared_preferences_macos:
dependency: transitive
description:
name: shared_preferences_macos
url: "https://pub.dartlang.org"
source: hosted
version: "0.0.1+10"
version: "2.0.0"
shared_preferences_platform_interface:
dependency: transitive
description:
name: shared_preferences_platform_interface
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.4"
version: "2.0.0"
shared_preferences_web:
dependency: transitive
description:
name: shared_preferences_web
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.2+7"
version: "2.0.0"
shared_preferences_windows:
dependency: transitive
description:
name: shared_preferences_windows
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.0"
sky_engine:
dependency: transitive
description: flutter
@@ -342,14 +370,14 @@ packages:
name: sqflite
url: "https://pub.dartlang.org"
source: hosted
version: "1.3.1"
version: "2.0.0+3"
sqflite_common:
dependency: transitive
description:
name: sqflite_common
url: "https://pub.dartlang.org"
source: hosted
version: "1.0.2+1"
version: "2.0.0+2"
stack_trace:
dependency: transitive
description:
@@ -377,7 +405,7 @@ packages:
name: synchronized
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.0+1"
version: "3.0.0"
term_glyph:
dependency: transitive
description:
@@ -406,27 +434,34 @@ packages:
url: "https://pub.dartlang.org"
source: hosted
version: "2.1.0"
win32:
dependency: transitive
description:
name: win32
url: "https://pub.dartlang.org"
source: hosted
version: "2.0.5"
xdg_directories:
dependency: transitive
description:
name: xdg_directories
url: "https://pub.dartlang.org"
source: hosted
version: "0.1.0"
version: "0.2.0"
xml:
dependency: transitive
description:
name: xml
url: "https://pub.dartlang.org"
source: hosted
version: "4.5.1"
version: "5.1.2"
yaml:
dependency: transitive
description:
name: yaml
url: "https://pub.dartlang.org"
source: hosted
version: "2.2.1"
version: "3.1.0"
sdks:
dart: ">=2.12.0-0.0 <3.0.0"
flutter: ">=1.12.13+hotfix.5"
dart: ">=2.12.0 <3.0.0"
flutter: ">=2.0.0"

Зареждане…
Отказ
Запис