Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add code list page #30

Merged
merged 2 commits into from
Jan 13, 2022
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions lib/generated/intl/messages_en.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class MessageLookup extends MessageLookupByLibrary {
"byte": MessageLookupByLibrary.simpleMessage("byte"),
"cancel": MessageLookupByLibrary.simpleMessage("Cancel"),
"clearBacklog": MessageLookupByLibrary.simpleMessage("Clear Backlog"),
"codeQuery": MessageLookupByLibrary.simpleMessage("code query"),
"confirm": MessageLookupByLibrary.simpleMessage("Confirm"),
"confirmClearBacklog": MessageLookupByLibrary.simpleMessage("ConfirmClear?"),
"confirmDeleteQuestion": MessageLookupByLibrary.simpleMessage("ConfirmDelete?"),
Expand All @@ -40,6 +41,7 @@ class MessageLookup extends MessageLookupByLibrary {
"deleteTopic": MessageLookupByLibrary.simpleMessage("Delete Topic"),
"detail": MessageLookupByLibrary.simpleMessage("detail"),
"email": MessageLookupByLibrary.simpleMessage("email"),
"execute": MessageLookupByLibrary.simpleMessage("execute"),
"isLeader": MessageLookupByLibrary.simpleMessage("Is Leader"),
"languageSettings": MessageLookupByLibrary.simpleMessage("Language Settings"),
"name": MessageLookupByLibrary.simpleMessage("name"),
Expand Down
2 changes: 2 additions & 0 deletions lib/generated/intl/messages_zh.dart
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ class MessageLookup extends MessageLookupByLibrary {
"byte": MessageLookupByLibrary.simpleMessage("比特"),
"cancel": MessageLookupByLibrary.simpleMessage("取消"),
"clearBacklog": MessageLookupByLibrary.simpleMessage("清理积压"),
"codeQuery": MessageLookupByLibrary.simpleMessage("code 查询"),
"confirm": MessageLookupByLibrary.simpleMessage("确认"),
"confirmClearBacklog": MessageLookupByLibrary.simpleMessage("确认清理积压吗?"),
"confirmDeleteQuestion": MessageLookupByLibrary.simpleMessage("确认删除吗?"),
Expand All @@ -40,6 +41,7 @@ class MessageLookup extends MessageLookupByLibrary {
"deleteTopic": MessageLookupByLibrary.simpleMessage("删除 Topic"),
"detail": MessageLookupByLibrary.simpleMessage("详细信息"),
"email": MessageLookupByLibrary.simpleMessage("邮箱"),
"execute": MessageLookupByLibrary.simpleMessage("执行"),
"isLeader": MessageLookupByLibrary.simpleMessage("是否是主节点"),
"languageSettings": MessageLookupByLibrary.simpleMessage("语言设置"),
"name": MessageLookupByLibrary.simpleMessage("名称"),
Expand Down
20 changes: 20 additions & 0 deletions lib/generated/l10n.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions lib/l10n/intl_en.arb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"byte": "byte",
"cancel": "Cancel",
"clearBacklog": "Clear Backlog",
"codeQuery": "code query",
"confirm": "Confirm",
"confirmClearBacklog": "ConfirmClear?",
"confirmDeleteQuestion": "ConfirmDelete?",
Expand All @@ -19,6 +20,7 @@
"deleteTopic": "Delete Topic",
"detail": "detail",
"email": "email",
"execute": "execute",
"isLeader": "Is Leader",
"languageSettings": "Language Settings",
"name": "name",
Expand Down
2 changes: 2 additions & 0 deletions lib/l10n/intl_zh.arb
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"byte": "比特",
"cancel": "取消",
"clearBacklog": "清理积压",
"codeQuery": "code 查询",
"confirm": "确认",
"confirmClearBacklog": "确认清理积压吗?",
"confirmDeleteQuestion": "确认删除吗?",
Expand All @@ -19,6 +20,7 @@
"deleteTopic": "删除 Topic",
"detail": "详细信息",
"email": "邮箱",
"execute": "执行",
"isLeader": "是否是主节点",
"languageSettings": "语言设置",
"name": "名称",
Expand Down
11 changes: 11 additions & 0 deletions lib/main.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:paas_dashboard_flutter/generated/l10n.dart';
import 'package:paas_dashboard_flutter/route/page_route_const.dart';
import 'package:paas_dashboard_flutter/route/route_gen.dart';
import 'package:paas_dashboard_flutter/ui/bk/bk_page.dart';
import 'package:paas_dashboard_flutter/ui/code/code_list_page.dart';
import 'package:paas_dashboard_flutter/ui/general/author_screen.dart';
import 'package:paas_dashboard_flutter/ui/general/settings_screen.dart';
import 'package:paas_dashboard_flutter/ui/home/home_page.dart';
Expand All @@ -13,6 +14,8 @@ import 'package:paas_dashboard_flutter/ui/mysql/mysql_page.dart';
import 'package:paas_dashboard_flutter/ui/pulsar/pulsar_page.dart';
import 'package:paas_dashboard_flutter/ui/sql/sql_list_page.dart';
import 'package:paas_dashboard_flutter/vm/bk/bk_instance_list_view_model.dart';
import 'package:paas_dashboard_flutter/vm/code/code_list_view_model.dart';
import 'package:paas_dashboard_flutter/vm/code/code_view_model.dart';
import 'package:paas_dashboard_flutter/vm/general/settings_view_model.dart';
import 'package:paas_dashboard_flutter/vm/kubernetes/k8s_instance_list_view_model.dart';
import 'package:paas_dashboard_flutter/vm/mongo/mongo_database_view_model.dart';
Expand Down Expand Up @@ -68,6 +71,10 @@ class MyApp extends StatelessWidget {
create: (context) => BkInstanceListViewModel(),
child: BkPage(),
),
PageRouteConst.Code: (context) => ChangeNotifierProvider(
create: (context) => CodeListViewModel(),
child: CodeListPage(),
),
PageRouteConst.Kubernetes: (context) => ChangeNotifierProvider(
create: (context) => K8sInstanceListViewModel(),
child: K8sPage(),
Expand All @@ -94,6 +101,10 @@ class MyApp extends StatelessWidget {
),
},
onGenerateRoute: (settings) {
if (settings.name == PageRouteConst.CodeExecute) {
final args = settings.arguments as CodeViewModel;
return RouteGen.codeExecute(args);
}
if (settings.name == PageRouteConst.MongoInstance) {
final args = settings.arguments as MongoInstanceViewModel;
return RouteGen.mongoInstance(args);
Expand Down
13 changes: 13 additions & 0 deletions lib/persistent/persistent.dart
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ import 'package:paas_dashboard_flutter/persistent/persistent_api.dart';
import 'package:paas_dashboard_flutter/persistent/persistent_db.dart';
import 'package:paas_dashboard_flutter/persistent/persistent_memory.dart';
import 'package:paas_dashboard_flutter/persistent/po/bk_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/code_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/k8s_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/mongo_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/mysql_instance_po.dart';
Expand Down Expand Up @@ -121,6 +122,18 @@ class Persistent {
return (await getApi()).sqlList();
}

static Future<void> saveCode(String name, String sql) async {
return (await getApi()).saveCode(name, sql);
}

static Future<void> deleteCode(int id) async {
return (await getApi()).deleteCode(id);
}

static Future<List<CodePo>> codeList() async {
return (await getApi()).codeList();
}

static bool supportDb() {
return !kIsWeb;
}
Expand Down
9 changes: 9 additions & 0 deletions lib/persistent/persistent_api.dart
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
import 'package:paas_dashboard_flutter/module/ssh/ssh_step.dart';
import 'package:paas_dashboard_flutter/persistent/po/bk_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/code_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/k8s_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/mongo_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/mysql_instance_po.dart';
Expand Down Expand Up @@ -63,4 +64,12 @@ abstract class PersistentApi {
Future<List<SqlPo>> sqlList();

Future<SqlPo?> sqlInstance(String name);

Future<void> saveCode(String name, String code);

Future<void> deleteCode(int id);

Future<List<CodePo>> codeList();

Future<CodePo?> codeInstance(String name);
}
38 changes: 38 additions & 0 deletions lib/persistent/persistent_db.dart
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ import 'package:paas_dashboard_flutter/module/ssh/ssh_step.dart';
import 'package:paas_dashboard_flutter/module/zk/const.dart';
import 'package:paas_dashboard_flutter/persistent/persistent_api.dart';
import 'package:paas_dashboard_flutter/persistent/po/bk_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/code_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/k8s_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/mongo_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/mysql_instance_po.dart';
Expand Down Expand Up @@ -98,6 +99,9 @@ class PersistentDb implements PersistentApi {
await db.execute(
'CREATE TABLE sql_list(id INTEGER PRIMARY KEY, name TEXT, sql TEXT)',
);
await db.execute(
'CREATE TABLE code_list(id INTEGER PRIMARY KEY, name TEXT, code TEXT)',
);
}

@override
Expand Down Expand Up @@ -337,4 +341,38 @@ class PersistentDb implements PersistentApi {
var current = maps[0];
return SqlPo(current['id'], current['name'], current['sql']);
}

@override
Future<List<CodePo>> codeList() async {
var aux = await getInstance();
final List<Map<String, dynamic>> maps = await aux.database.query('code_list');
return List.generate(maps.length, (i) {
var aux = maps[i];
return CodePo(aux['id'], aux['name'], aux['code']);
});
}

@override
Future<void> deleteCode(int id) async {
var aux = await getInstance();
aux.database.delete('code_list', where: 'id = ?', whereArgs: [id]);
}

@override
Future<void> saveCode(String name, String code) async {
var aux = await getInstance();
var list = [name, code];
aux.database.execute('INSERT INTO code_list(name, code) VALUES (?, ?)', list);
}

@override
Future<CodePo?> codeInstance(String name) async {
var aux = await getInstance();
final List<Map<String, dynamic>> maps = await aux.database.query('code_list', where: "name = ?", whereArgs: [name]);
if (maps.length == 0) {
return null;
}
var current = maps[0];
return CodePo(current['id'], current['name'], current['code']);
}
}
25 changes: 25 additions & 0 deletions lib/persistent/persistent_memory.dart
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ import 'package:paas_dashboard_flutter/module/ssh/ssh_step.dart';
import 'package:paas_dashboard_flutter/module/zk/const.dart';
import 'package:paas_dashboard_flutter/persistent/persistent_api.dart';
import 'package:paas_dashboard_flutter/persistent/po/bk_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/code_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/k8s_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/mongo_instance_po.dart';
import 'package:paas_dashboard_flutter/persistent/po/mysql_instance_po.dart';
Expand Down Expand Up @@ -193,4 +194,28 @@ class PersistentMemory implements PersistentApi {
// TODO: implement sqlInstance
throw UnimplementedError();
}

@override
Future<List<CodePo>> codeList() {
// TODO: implement codeList
throw UnimplementedError();
}

@override
Future<void> deleteCode(int id) {
// TODO: implement deleteCode
throw UnimplementedError();
}

@override
Future<void> saveCode(String name, String code) {
// TODO: implement saveCode
throw UnimplementedError();
}

@override
Future<CodePo?> codeInstance(String name) {
// TODO: implement codeInstance
throw UnimplementedError();
}
}
19 changes: 19 additions & 0 deletions lib/persistent/po/code_instance_po.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
class CodePo {
final int id;
final String name;
final String code;

CodePo(this.id, this.name, this.code);

CodePo deepCopy() {
return new CodePo(id, name, code);
}

Map<String, dynamic> toMap() {
return {
'id': id,
'name': name,
'code': code,
};
}
}
2 changes: 2 additions & 0 deletions lib/route/page_route_const.dart
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ class PageRouteConst {
static const String Root = '/';
static const String Author = '/author';
static const String Bookkeeper = '/bookkeeper';
static const String Code = '/code';
static const String CodeExecute = '/code/execute';
static const String Kubernetes = '/kubernetes';
static const String Mongo = '/mongo';
static const String MongoInstance = '/mongo/instance';
Expand Down
11 changes: 11 additions & 0 deletions lib/route/route_gen.dart
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import 'package:flutter/material.dart';
import 'package:paas_dashboard_flutter/ui/code/screen/code_execute_screen.dart';
import 'package:paas_dashboard_flutter/ui/mongo/mongo_instance.dart';
import 'package:paas_dashboard_flutter/ui/mongo/screen/mongo_database.dart';
import 'package:paas_dashboard_flutter/ui/pulsar/pulsar_instance.dart';
Expand All @@ -9,6 +10,7 @@ import 'package:paas_dashboard_flutter/ui/pulsar/screen/pulsar_source.dart';
import 'package:paas_dashboard_flutter/ui/pulsar/screen/pulsar_tenant.dart';
import 'package:paas_dashboard_flutter/ui/pulsar/screen/pulsar_topic.dart';
import 'package:paas_dashboard_flutter/ui/sql/screen/sql_execute_screen.dart';
import 'package:paas_dashboard_flutter/vm/code/code_view_model.dart';
import 'package:paas_dashboard_flutter/vm/mongo/mongo_database_view_model.dart';
import 'package:paas_dashboard_flutter/vm/mongo/mongo_instance_view_model.dart';
import 'package:paas_dashboard_flutter/vm/pulsar/pulsar_instance_view_model.dart';
Expand All @@ -22,6 +24,15 @@ import 'package:paas_dashboard_flutter/vm/sql/sql_view_model.dart';
import 'package:provider/provider.dart';

class RouteGen {
static Route codeExecute(CodeViewModel viewModel) {
// deep copy view model
return MaterialPageRoute(
builder: (context) => ChangeNotifierProvider(
create: (context) => viewModel,
child: CodeExecuteScreen(),
));
}

static Route mongoInstance(MongoInstanceViewModel viewModel) {
// deep copy view model
return MaterialPageRoute(
Expand Down
Loading