Skip to content

Commit

Permalink
Merge pull request #73 from openvinotoolkit/rhecker/no-model-message
Browse files Browse the repository at this point in the history
Add "No models" message
  • Loading branch information
RHeckerIntel authored Dec 19, 2024
2 parents 0d962a2 + fc31ffc commit 04b2ea8
Show file tree
Hide file tree
Showing 6 changed files with 58 additions and 2 deletions.
3 changes: 3 additions & 0 deletions images/slide_search.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
2 changes: 2 additions & 0 deletions lib/pages/home/home.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:inference/pages/home/widgets/featured_card.dart';
import 'package:inference/pages/models/widgets/model_card.dart';
import 'package:inference/importers/manifest_importer.dart';
import 'package:inference/project.dart';
import 'package:inference/widgets/empty_model_widget.dart';
import 'package:inference/widgets/fixed_grid.dart';
import 'package:inference/widgets/import_model_button.dart';
import 'package:inference/providers/project_provider.dart';
Expand Down Expand Up @@ -188,6 +189,7 @@ class _HomePageState extends State<HomePage> {
],
),
),
emptyWidget: const EmptyModelListWidget(),
itemBuilder: (context, index) {
return ModelCard(project: projects.elementAt(index));
}
Expand Down
2 changes: 2 additions & 0 deletions lib/pages/import/huggingface.dart
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import 'package:inference/pages/import/widgets/badge.dart';
import 'package:inference/pages/import/widgets/model_card.dart';
import 'package:inference/widgets/controls/dropdown_multiple_select.dart';
import 'package:inference/widgets/controls/search_bar.dart';
import 'package:inference/widgets/empty_model_widget.dart';
import 'package:inference/widgets/fixed_grid.dart';
import 'package:provider/provider.dart';

Expand Down Expand Up @@ -122,6 +123,7 @@ class _HuggingfaceState extends State<Huggingface> {
tileWidth: 226,
spacing: 24,
itemCount: allModels.length,
emptyWidget: EmptyModelListWidget(searchQuery: searchValue),
itemBuilder: (context, index) => ModelCard(
model: allModels[index],
checked: importProvider.selectedModel == allModels[index],
Expand Down
3 changes: 2 additions & 1 deletion lib/pages/models/widgets/model_list.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// SPDX-License-Identifier: Apache-2.0

import 'package:fluent_ui/fluent_ui.dart';
import 'package:inference/widgets/empty_model_widget.dart';
import 'package:inference/widgets/grid_container.dart';
import 'package:inference/pages/models/widgets/model_card.dart';
import 'package:inference/pages/models/widgets/searchbar.dart';
Expand All @@ -12,7 +13,6 @@ import 'package:provider/provider.dart';

class ModelList extends StatelessWidget {
const ModelList({super.key});
final String? filter = null;

@override
Widget build(BuildContext context) {
Expand Down Expand Up @@ -47,6 +47,7 @@ class ModelList extends StatelessWidget {
tileWidth: 268,
spacing: 36,
itemCount: filtered.length,
emptyWidget: EmptyModelListWidget(searchQuery: filter.name),
itemBuilder: (context, index) {
return ModelCard(project: filtered[index]);
},
Expand Down
45 changes: 45 additions & 0 deletions lib/widgets/empty_model_widget.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
// Copyright 2024 Intel Corporation.
// SPDX-License-Identifier: Apache-2.0

import 'package:fluent_ui/fluent_ui.dart';
import 'package:flutter_svg/svg.dart';

class EmptyModelListWidget extends StatelessWidget {
final String? searchQuery;
const EmptyModelListWidget({super.key, this.searchQuery});

String get header {
if (searchQuery == null || searchQuery == "") {
return "No models";
} else {
return "No results found";
}
}

String get reason {
if (searchQuery == null || searchQuery == "") {
return "Click 'import model' to download a model";
} else {
return "We couldn't find a match for \"$searchQuery\"\n Please try another search";
}
}

@override
Widget build(BuildContext context) {
return Padding(
padding: const EdgeInsets.all(50.0),
child: Column(
children: [
SvgPicture.asset('images/slide_search.svg'),
Padding(
padding: const EdgeInsets.all(8.0),
child: Text(
header,
style: const TextStyle(fontSize: 20)),
),
Text(reason, textAlign: TextAlign.center),
],
),
);
}
}
5 changes: 4 additions & 1 deletion lib/widgets/fixed_grid.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,12 +9,14 @@ class FixedGrid extends StatelessWidget {
final int itemCount;
final bool centered;
final Widget? header;
final Widget? emptyWidget;
final NullableIndexedWidgetBuilder itemBuilder;

const FixedGrid({
required this.tileWidth,
required this.itemBuilder,
this.header,
this.emptyWidget,
this.centered = false,
this.spacing = 0,
this.itemCount = 0,
Expand All @@ -34,7 +36,8 @@ class FixedGrid extends StatelessWidget {
child: Column(
children: [
if (header != null) header!,
GridView.builder(
if (itemCount == 0 && emptyWidget != null) emptyWidget!,
if (itemCount > 0) GridView.builder(
gridDelegate: SliverGridDelegateWithFixedCrossAxisCount(
crossAxisCount: columns,
crossAxisSpacing: spacing,
Expand Down

0 comments on commit 04b2ea8

Please sign in to comment.