Compare commits
25 Commits
| Author | SHA1 | Date |
|---|---|---|
|
|
c583c116c1 | 2 years ago |
|
|
63c0f98356 | 2 years ago |
|
|
08a925426e | 2 years ago |
|
|
dbd4878087 | 2 years ago |
|
|
64e0cb7872 | 2 years ago |
|
|
ddf2aa6ff8 | 2 years ago |
|
|
bf8753c22e | 2 years ago |
|
|
bb7f3afd97 | 2 years ago |
|
|
40fac61eba | 2 years ago |
|
|
790f5f046a | 2 years ago |
|
|
e9e887b900 | 2 years ago |
|
|
1a51f9c008 | 2 years ago |
|
|
5dd780eb97 | 2 years ago |
|
|
7c6ccefc15 | 2 years ago |
|
|
4983638625 | 2 years ago |
|
|
69312c16c2 | 2 years ago |
|
|
f8ce4b819c | 2 years ago |
|
|
1e0f12d682 | 2 years ago |
|
|
9e9f469bee | 2 years ago |
|
|
91450f8f58 | 2 years ago |
|
|
f0fd62bd98 | 2 years ago |
|
|
9f67ba870b | 2 years ago |
|
|
a27acb6d68 | 2 years ago |
|
|
b98627c0c1 | 2 years ago |
|
|
590e19a3ae | 2 years ago |
|
Before Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 7.1 KiB |
|
Before Width: | Height: | Size: 372 KiB |
|
Before Width: | Height: | Size: 90 KiB |
|
Before Width: | Height: | Size: 266 KiB |
|
Before Width: | Height: | Size: 198 KiB |
|
Before Width: | Height: | Size: 479 KiB |
|
Before Width: | Height: | Size: 134 KiB |
|
Before Width: | Height: | Size: 1.2 MiB |
|
Before Width: | Height: | Size: 192 KiB |
|
Before Width: | Height: | Size: 1.4 MiB |
|
Before Width: | Height: | Size: 6.9 KiB |
|
Before Width: | Height: | Size: 1.9 MiB |
@ -1,134 +0,0 @@
|
||||
/*
|
||||
Navicat MySQL Data Transfer
|
||||
|
||||
Source Server : LRC_debian
|
||||
Source Server Version : 50742
|
||||
Source Host : 5902e9v900.zicp.fun:33006
|
||||
Source Database : expressFrame02
|
||||
|
||||
Target Server Type : MYSQL
|
||||
Target Server Version : 50742
|
||||
File Encoding : 65001
|
||||
|
||||
Date: 2023-10-26 12:49:35
|
||||
*/
|
||||
|
||||
SET FOREIGN_KEY_CHECKS=0;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for clocks
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `clocks`;
|
||||
CREATE TABLE `clocks` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`clockId` bigint(20) NOT NULL,
|
||||
`userId` bigint(20) NOT NULL,
|
||||
`text` text,
|
||||
`img` text,
|
||||
`music` text,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `fk_clocks_clocks_1` (`userId`),
|
||||
CONSTRAINT `fk_clocks_clocks_1` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for course
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `course`;
|
||||
CREATE TABLE `course` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`userId` bigint(20) DEFAULT NULL,
|
||||
`courseId` bigint(20) NOT NULL,
|
||||
`name` text NOT NULL,
|
||||
`credit` double DEFAULT NULL,
|
||||
`teacher` text,
|
||||
`location` text,
|
||||
`remark` text,
|
||||
`startTime` text NOT NULL,
|
||||
`endTime` text NOT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `fk_course_course_1` (`userId`),
|
||||
CONSTRAINT `fk_course_course_1` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for tasks
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `tasks`;
|
||||
CREATE TABLE `tasks` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`taskId` bigint(20) NOT NULL,
|
||||
`userId` bigint(20) NOT NULL,
|
||||
`content` text,
|
||||
`name` text NOT NULL,
|
||||
`startTime` text NOT NULL,
|
||||
`endTime` text NOT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `fk_tasks_tasks_1` (`userId`),
|
||||
CONSTRAINT `fk_tasks_tasks_1` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for teams
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `teams`;
|
||||
CREATE TABLE `teams` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`leaderId` bigint(20) NOT NULL,
|
||||
`teamName` varchar(200) NOT NULL,
|
||||
`maxNumber` bigint(20) DEFAULT NULL,
|
||||
`introduce` text,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `teamName` (`teamName`) USING BTREE,
|
||||
KEY `fk_teams_teams_1` (`leaderId`),
|
||||
CONSTRAINT `fk_teams_teams_1` FOREIGN KEY (`leaderId`) REFERENCES `users` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for users
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `users`;
|
||||
CREATE TABLE `users` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`username` varchar(255) NOT NULL,
|
||||
`password` text NOT NULL,
|
||||
`role` bigint(20) NOT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
UNIQUE KEY `username` (`username`) USING BTREE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for userteams
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `userteams`;
|
||||
CREATE TABLE `userteams` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`userId` bigint(20) NOT NULL,
|
||||
`teamId` bigint(20) NOT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `fk_userteams_userteams_1` (`userId`),
|
||||
KEY `fk_userteams_userteams_2` (`teamId`),
|
||||
CONSTRAINT `fk_userteams_userteams_1` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE,
|
||||
CONSTRAINT `fk_userteams_userteams_2` FOREIGN KEY (`teamId`) REFERENCES `teams` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
|
||||
|
||||
-- ----------------------------
|
||||
-- Table structure for works
|
||||
-- ----------------------------
|
||||
DROP TABLE IF EXISTS `works`;
|
||||
CREATE TABLE `works` (
|
||||
`id` bigint(20) NOT NULL,
|
||||
`userId` bigint(20) NOT NULL,
|
||||
`workId` bigint(20) NOT NULL,
|
||||
`teamId` bigint(20) NOT NULL,
|
||||
`name` text NOT NULL,
|
||||
`content` text,
|
||||
`status` text,
|
||||
`endTime` text NOT NULL,
|
||||
`startTime` text NOT NULL,
|
||||
PRIMARY KEY (`id`) USING BTREE,
|
||||
KEY `fk_works_works_1` (`userId`),
|
||||
KEY `fk_works_works_2` (`teamId`),
|
||||
CONSTRAINT `fk_works_works_1` FOREIGN KEY (`userId`) REFERENCES `users` (`id`) ON DELETE CASCADE,
|
||||
CONSTRAINT `fk_works_works_2` FOREIGN KEY (`teamId`) REFERENCES `teams` (`id`) ON DELETE CASCADE
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
|
||||
|
Before Width: | Height: | Size: 243 KiB |
|
Before Width: | Height: | Size: 179 KiB |
|
Before Width: | Height: | Size: 279 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 61 KiB |
|
Before Width: | Height: | Size: 1.0 MiB |
@ -1,164 +1,133 @@
|
||||
import 'package:timemanagerapp/controller/NetWorkController.dart';
|
||||
import 'package:timemanagerapp/database/dao/CourseDao.dart';
|
||||
import 'package:timemanagerapp/entity/Course.dart';
|
||||
import 'package:timemanagerapp/entity/CourseForm.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
import 'package:timemanagerapp/util/GetCourseByLogin.dart';
|
||||
|
||||
import '../util/dataUtil.dart';
|
||||
|
||||
class CourseController {
|
||||
static CourseController getInstance() {
|
||||
return new CourseController();
|
||||
}
|
||||
|
||||
static CourseDao courseDao = CourseDao();
|
||||
|
||||
GetCourseByLogin getCourseByLogin = GetCourseByLogin();
|
||||
IdGenerator idGenerator = IdGenerator();
|
||||
List<Course> courseList = []; //实时维护的courseList缓存
|
||||
NetWorkController netWorkController = NetWorkController();
|
||||
|
||||
DateTime termstartdate = Setting.startdate; //Setting.getStartDate();
|
||||
|
||||
// 课表的时间范围
|
||||
final List<List<String>> raspiyane = [
|
||||
["8:00", "8:45"], //1
|
||||
["8:50", "9:35"], //2
|
||||
["10:05", "10:50"], //3
|
||||
["10:55", "11:40"], //4
|
||||
|
||||
["13:30", "14:15"], //5
|
||||
["14:20", "15:05"], //6
|
||||
["15:35", "16:20"], //7
|
||||
["16:25", "17:10"], //8
|
||||
|
||||
["18:30", "19:15"],
|
||||
["19:20", "20:05"],
|
||||
["20:10", "20:55"],
|
||||
["21:10", "21:50"],
|
||||
["22:05", "22:35"],
|
||||
];
|
||||
|
||||
Future<void> addCourseForm(CourseForm courseForm) async {
|
||||
List<Course> courseListToInsert = [];
|
||||
int allCourseId = await idGenerator.generateId();
|
||||
for (int week = courseForm.getStartWeek(); week <= courseForm.getEndWeek(); week++) {
|
||||
for(int day in courseForm.selectedDays){
|
||||
// 计算具体的日期和时间
|
||||
final startDate = termstartdate.add(Duration(
|
||||
days: (7 * (week - 1) + day! - 1),
|
||||
hours: int.parse(raspiyane[courseForm.getStartTime() - 1][0].split(':')[0]),
|
||||
minutes: int.parse(raspiyane[courseForm.getStartTime() - 1][0].split(':')[1]),
|
||||
));
|
||||
|
||||
final endDate = termstartdate.add(Duration(
|
||||
days: (7 * (week - 1) + day! - 1),
|
||||
hours: int.parse(raspiyane[courseForm.getEndTime() - 1][1].split(':')[0]),
|
||||
minutes: int.parse(raspiyane[courseForm.getEndTime() - 1][1].split(':')[1]),
|
||||
));
|
||||
Course course = Course(
|
||||
id:await idGenerator.generateId(),
|
||||
name: courseForm.getCourse(),
|
||||
userId: Setting.user!.getId!,
|
||||
courseId: allCourseId,
|
||||
teacher: courseForm.getTeacher(),
|
||||
location: courseForm.getLocation(),
|
||||
startTime: startDate,
|
||||
endTime: endDate,
|
||||
credit: courseForm.getCredit(),
|
||||
remark: courseForm.getNote()
|
||||
);
|
||||
courseListToInsert.add(course);
|
||||
}
|
||||
}
|
||||
await insertCourseList(courseListToInsert);
|
||||
}
|
||||
|
||||
Future<List<Course>> init() async {
|
||||
var res = await netWorkController.getCourseList(Setting.user!.getId!);
|
||||
if(res == null || res.length == 0){
|
||||
courseList = [];
|
||||
}else{
|
||||
courseList = res;
|
||||
}
|
||||
for(Course course in courseList){
|
||||
await courseDao.insertCourse(course);
|
||||
}
|
||||
return courseList;
|
||||
}
|
||||
|
||||
Future<void> dispos() async {
|
||||
courseDao.deleteAllCourses();
|
||||
}
|
||||
|
||||
Future<List<Course>> getCourses() async {
|
||||
|
||||
List<Map<String, dynamic>> courseMaps = await courseDao.getCourses();
|
||||
List<Course> courses = []; // 用于存储转换后的Course对象列表
|
||||
|
||||
for (var courseMap in courseMaps) {
|
||||
// 使用Course类的构造函数从Map创建Course对象
|
||||
Course course = Course(
|
||||
id: courseMap['id'],
|
||||
userId: courseMap['userId'],
|
||||
courseId: courseMap['courseId'],
|
||||
name: courseMap['name'],
|
||||
credit: courseMap['credit'],
|
||||
teacher: courseMap['teacher'],
|
||||
location: courseMap['location'],
|
||||
remark: courseMap['remark'],
|
||||
startTime: DateTime.parse(courseMap['startTime']),
|
||||
endTime: DateTime.parse(courseMap['endTime']),
|
||||
);
|
||||
courses.add(course);
|
||||
}
|
||||
courseList = courses; // 将Course对象添加到列表中
|
||||
return courseList;
|
||||
}
|
||||
|
||||
Future<int> insertCourse(Course course) async {
|
||||
return await courseDao.insertCourse(course);
|
||||
}
|
||||
|
||||
Future<bool> insertLocalCourse() async {
|
||||
List<Course> localCourseList = await getCourses();
|
||||
return await netWorkController.insertCourseList(localCourseList);
|
||||
}
|
||||
|
||||
Future<int> insertCourseList(List<Course> courseList) async {
|
||||
netWorkController.insertCourseList(courseList);
|
||||
int result = 0;
|
||||
for(Course course in courseList){
|
||||
result += await courseDao.insertCourse(course);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> autoImportCours(int userId,String passwd,int year, int term) async {
|
||||
String ? jsonstr = await netWorkController.getUserCoursejson(userId, passwd, year, term);
|
||||
if(jsonstr == null || jsonstr == ""){
|
||||
return 0;
|
||||
}
|
||||
List<Course> courseList = await getCourseByLogin.dealRawString(jsonstr);
|
||||
return await insertCourseList(courseList);
|
||||
}
|
||||
|
||||
//test_autoImportCours
|
||||
Future<int> test_autoImportCours(String jsonstr) async {
|
||||
List<Course> courseList = await GetCourseByLogin().dealRawString(jsonstr);
|
||||
return await insertCourseList(courseList);
|
||||
}
|
||||
|
||||
|
||||
Future<int> deleteAllCourses() async {
|
||||
|
||||
return await courseDao.deleteAllCourses();
|
||||
}
|
||||
|
||||
Future<int> deleteCourse(int courseId) async {
|
||||
netWorkController.deleteCourse(courseId);
|
||||
return await courseDao.deleteCourseByCourseId(courseId);
|
||||
}
|
||||
|
||||
}
|
||||
import 'package:timemanagerapp/controller/NetWorkController.dart';
|
||||
import 'package:timemanagerapp/database/dao/CourseDao.dart';
|
||||
import 'package:timemanagerapp/entity/Course.dart';
|
||||
import 'package:timemanagerapp/entity/CourseForm.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
import 'package:timemanagerapp/util/GetCourseByLogin.dart';
|
||||
|
||||
import '../util/dataUtil.dart';
|
||||
|
||||
class CourseController {
|
||||
static CourseController getInstance() {
|
||||
return new CourseController();
|
||||
}
|
||||
|
||||
GetCourseByLogin getCourseByLogin = GetCourseByLogin();
|
||||
IdGenerator idGenerator = IdGenerator();
|
||||
List<Course> courseList = []; //实时维护的courseList缓存
|
||||
NetWorkController netWorkController = NetWorkController();
|
||||
|
||||
DateTime termstartdate = Setting.startdate; //Setting.getStartDate();
|
||||
|
||||
// 课表的时间范围
|
||||
final List<List<String>> raspiyane = [
|
||||
["8:00", "8:45"], //1
|
||||
["8:50", "9:35"], //2
|
||||
["10:05", "10:50"], //3
|
||||
["10:55", "11:40"], //4
|
||||
|
||||
["13:30", "14:15"], //5
|
||||
["14:20", "15:05"], //6
|
||||
["15:35", "16:20"], //7
|
||||
["16:25", "17:10"], //8
|
||||
|
||||
["18:30", "19:15"],
|
||||
["19:20", "20:05"],
|
||||
["20:10", "20:55"],
|
||||
["21:10", "21:50"],
|
||||
["22:05", "22:35"],
|
||||
];
|
||||
|
||||
Future<void> addCourseForm(CourseForm courseForm) async {
|
||||
List<Course> courseListToInsert = [];
|
||||
for (int week = courseForm.getStartWeek(); week <= courseForm.getEndWeek(); week++) {
|
||||
for(int day in courseForm.selectedDays){
|
||||
// 计算具体的日期和时间
|
||||
final startDate = termstartdate.add(Duration(
|
||||
days: (7 * (week - 1) + day! - 1),
|
||||
hours: int.parse(raspiyane[courseForm.getStartTime() - 1][0].split(':')[0]),
|
||||
minutes: int.parse(raspiyane[courseForm.getStartTime() - 1][0].split(':')[1]),
|
||||
));
|
||||
|
||||
final endDate = termstartdate.add(Duration(
|
||||
days: (7 * (week - 1) + day! - 1),
|
||||
hours: int.parse(raspiyane[courseForm.getEndTime() - 1][1].split(':')[0]),
|
||||
minutes: int.parse(raspiyane[courseForm.getEndTime() - 1][1].split(':')[1]),
|
||||
));
|
||||
int courseId = await idGenerator.generateId();
|
||||
Course course = Course(
|
||||
id:await idGenerator.generateId(),
|
||||
name: courseForm.getCourse(),
|
||||
userId: Setting.user!.getId!,
|
||||
courseId: courseId,
|
||||
teacher: courseForm.getTeacher(),
|
||||
location: courseForm.getLocation(),
|
||||
start: startDate,
|
||||
end: endDate,
|
||||
credit: courseForm.getCredit(),
|
||||
remark: courseForm.getNote()
|
||||
);
|
||||
courseListToInsert.add(course);
|
||||
}
|
||||
}
|
||||
await insertCourseList(courseListToInsert);
|
||||
}
|
||||
|
||||
Future<List<Course>> getCourses() async {
|
||||
List<Map<String, dynamic>> courseMaps = await CourseDao().getCourses();
|
||||
List<Course> courses = []; // 用于存储转换后的Course对象列表
|
||||
|
||||
for (var courseMap in courseMaps) {
|
||||
// 使用Course类的构造函数从Map创建Course对象
|
||||
Course course = Course(
|
||||
id: courseMap['id'],
|
||||
userId: courseMap['userId'],
|
||||
courseId: courseMap['courseId'],
|
||||
name: courseMap['name'],
|
||||
credit: courseMap['credit'],
|
||||
teacher: courseMap['teacher'],
|
||||
location: courseMap['location'],
|
||||
remark: courseMap['remark'],
|
||||
start: DateTime.parse(courseMap['start']),
|
||||
end: DateTime.parse(courseMap['end']),
|
||||
);
|
||||
courses.add(course);
|
||||
}
|
||||
courseList = courses; // 将Course对象添加到列表中
|
||||
return courseList;
|
||||
}
|
||||
|
||||
Future<int> insertCourse(Course course) async {
|
||||
return await CourseDao().insertCourse(course);
|
||||
}
|
||||
|
||||
Future<int> insertCourseList(List<Course> courseList) async {
|
||||
int result = 0;
|
||||
for(Course course in courseList){
|
||||
result += await CourseDao().insertCourse(course);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> autoImportCours(int stuid,String passwd,int year, int term) async {
|
||||
String jsonstr = await netWorkController.getUserCoursejson(stuid, passwd, year, term);
|
||||
List<Course> courseList = await getCourseByLogin.dealRawString(jsonstr);
|
||||
return await insertCourseList(courseList);
|
||||
}
|
||||
|
||||
//test_autoImportCours
|
||||
Future<int> test_autoImportCours(String jsonstr) async {
|
||||
List<Course> courseList = await GetCourseByLogin().dealRawString(jsonstr);
|
||||
return await insertCourseList(courseList);
|
||||
}
|
||||
|
||||
|
||||
Future<int> deleteAllCourses() async {
|
||||
return await CourseDao().deleteAllCourses();
|
||||
}
|
||||
|
||||
Future<int> deleteCourse(int id) async {
|
||||
return await CourseDao().deleteCourseById(id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -0,0 +1,245 @@
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:timemanagerapp/entity/Course.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
|
||||
class CourseWidgetController {
|
||||
final double pixelToMinuteRatio =
|
||||
0.9 * Setting.pixelToMinuteRatio_ratio; //old:0.9
|
||||
late List<Course> courseList;
|
||||
late DateTime mondayTime;
|
||||
late int weekCount;
|
||||
late DateTime termStartDate;
|
||||
|
||||
CourseWidgetController() {
|
||||
mondayTime = getmondayTime();
|
||||
termStartDate = Setting.startdate;
|
||||
weekCount = getWeekCount();
|
||||
}
|
||||
|
||||
//getInstance
|
||||
static CourseWidgetController getInstance() {
|
||||
return new CourseWidgetController();
|
||||
}
|
||||
|
||||
static final List<Course> testcourseList = [
|
||||
Course(
|
||||
userId: 1,
|
||||
courseId: 2,
|
||||
name: 'Math',
|
||||
credit: 3,
|
||||
teacher: 'Mr. Smith',
|
||||
location: 'Room 101',
|
||||
remark: "null",
|
||||
start: DateTime(2023, 9, 18, 7, 20),
|
||||
end: DateTime(2023, 9, 18, 10, 0)),
|
||||
Course(
|
||||
userId: 1,
|
||||
courseId: 2,
|
||||
name: 'Math',
|
||||
credit: 3,
|
||||
teacher: 'Mr. Smith',
|
||||
location: 'Room 101',
|
||||
remark: "null",
|
||||
start: DateTime(2023, 9, 19, 7, 20),
|
||||
end: DateTime(2023, 9, 19, 10, 0)),
|
||||
Course(
|
||||
userId: 1,
|
||||
courseId: 2,
|
||||
name: 'Math',
|
||||
credit: 3,
|
||||
teacher: 'Mr. Smith',
|
||||
location: 'Room 101',
|
||||
remark: "null",
|
||||
start: DateTime(2023, 9, 20, 7, 20),
|
||||
end: DateTime(2023, 9, 20, 10, 0)),
|
||||
Course(
|
||||
userId: 1,
|
||||
courseId: 2,
|
||||
name: 'Math',
|
||||
credit: 3,
|
||||
teacher: 'Mr. Smith',
|
||||
location: 'Room 101',
|
||||
remark: "null",
|
||||
start: DateTime(2023, 9, 21, 7, 20),
|
||||
end: DateTime(2023, 9, 21, 10, 0)),
|
||||
Course(
|
||||
userId: 1,
|
||||
courseId: 2,
|
||||
name: 'Math',
|
||||
credit: 3,
|
||||
teacher: 'Mr. Smith',
|
||||
location: 'Room 101',
|
||||
remark: "null",
|
||||
start: DateTime(2023, 9, 22, 7, 20),
|
||||
end: DateTime(2023, 9, 22, 10, 0)),
|
||||
Course(
|
||||
userId: 1,
|
||||
courseId: 2,
|
||||
name: 'Math',
|
||||
credit: 3,
|
||||
teacher: 'Mr. Smith',
|
||||
location: 'Room 101',
|
||||
remark: "null",
|
||||
start: DateTime(2023, 9, 23, 7, 20),
|
||||
end: DateTime(2023, 9, 23, 10, 0)),
|
||||
Course(
|
||||
userId: 1,
|
||||
courseId: 2,
|
||||
name: 'Math',
|
||||
credit: 3,
|
||||
teacher: 'Mr. Smith',
|
||||
location: 'Room 101',
|
||||
remark: "null",
|
||||
start: DateTime(2023, 9, 24, 7, 20),
|
||||
end: DateTime(2023, 9, 24, 10, 0)),
|
||||
];
|
||||
|
||||
//时间转换为时间轴的piexl值的函数
|
||||
List<Offset> convertTimeList(List<DateTime> timePoints, double deviceWidth) {
|
||||
List<Offset> convertedTimes = [];
|
||||
for (var time in timePoints) {
|
||||
int hour = time.hour;
|
||||
int minute = time.minute;
|
||||
|
||||
int totalMinutes = (hour - 7) * 60 + minute;
|
||||
double convertedTime = totalMinutes * pixelToMinuteRatio;
|
||||
convertedTimes.add(Offset(deviceWidth * 0.015, convertedTime));
|
||||
}
|
||||
|
||||
return convertedTimes;
|
||||
}
|
||||
|
||||
int getWeekCount() {
|
||||
weekCount = DateTime.now().difference(termStartDate).inDays ~/ 7 + 1;
|
||||
return weekCount;
|
||||
}
|
||||
|
||||
DateTime getmondayTime() {
|
||||
mondayTime = DateTime.now();
|
||||
//获取本周星期一是几号
|
||||
while (mondayTime.weekday != 1) {
|
||||
mondayTime = mondayTime.subtract(Duration(days: 1));
|
||||
}
|
||||
return mondayTime;
|
||||
}
|
||||
|
||||
Map<int, List<Course>> transformCourseMap(List<Course> courseList) {
|
||||
Map<int, List<Course>> courseMap = {};
|
||||
for (var course in courseList) {
|
||||
int weekCount = course.start.difference(termStartDate).inDays ~/ 7 + 1; //
|
||||
if (courseMap.containsKey(weekCount)) {
|
||||
courseMap[weekCount]!.add(course);
|
||||
} else {
|
||||
courseMap[weekCount] = [course];
|
||||
}
|
||||
}
|
||||
return courseMap;
|
||||
}
|
||||
}
|
||||
@ -1,128 +0,0 @@
|
||||
import 'package:timemanagerapp/entity/ScheduleForm.dart';
|
||||
|
||||
import '../database/dao/TaskDao.dart';
|
||||
import '../entity/Task.dart';
|
||||
import '../setting/Setting.dart';
|
||||
import '../util/dataUtil.dart';
|
||||
import 'NetWorkController.dart';
|
||||
|
||||
class TaskController {
|
||||
static IdGenerator idGenerator = IdGenerator();
|
||||
static List<Task> taskList = []; //实时维护的taskList缓存
|
||||
static NetWorkController netWorkController = NetWorkController();
|
||||
static late TaskDao taskDao;
|
||||
|
||||
|
||||
DateTime termstartdate = Setting.startdate; //Setting.getStartDate();
|
||||
|
||||
TaskController(){
|
||||
taskDao = TaskDao();
|
||||
}
|
||||
|
||||
Future<List<Task>> init() async {
|
||||
var res = await netWorkController.getTaskList(Setting.user!.getId!);
|
||||
if(res == null || res.length == 0){
|
||||
taskList = [];
|
||||
}else{
|
||||
taskList = res;
|
||||
}
|
||||
for(Task task in taskList){
|
||||
await taskDao.insertTask(task);
|
||||
}
|
||||
return taskList;
|
||||
}
|
||||
|
||||
Future<void> dispos() async {
|
||||
taskDao.deleteAllTasks();
|
||||
}
|
||||
|
||||
Future<List<Task>> getTasks() async {
|
||||
List<Map<String, dynamic>> taskMaps = await taskDao.getTasks();
|
||||
List<Task> tasks = []; // 用于存储转换后的Task对象列表
|
||||
|
||||
for (var taskMap in taskMaps) {
|
||||
// 使用Task类的构造函数从Map创建Task对象
|
||||
Task task = Task(
|
||||
id: taskMap['id'],
|
||||
userId: taskMap['userId'],
|
||||
content: taskMap['content'],
|
||||
taskId: taskMap['taskId'],
|
||||
name: taskMap['name'],
|
||||
startTime: DateTime.parse(taskMap['startTime']),
|
||||
endTime: DateTime.parse(taskMap['endTime']),
|
||||
);
|
||||
tasks.add(task);
|
||||
}
|
||||
taskList = tasks; // 将Task对象添加到列表中
|
||||
return taskList;
|
||||
}
|
||||
|
||||
//addscheduleForm
|
||||
Future<void> addScheduleForm(ScheduleForm scheduleForm) async {
|
||||
List<Task> taskListToInsert = [];
|
||||
int allTaskId = await idGenerator.generateId();
|
||||
for (int week = scheduleForm.getStartWeek; week <= scheduleForm.getEndWeek; week++) {
|
||||
for (int day in scheduleForm.selectedDays) {
|
||||
// 计算具体的日期和时间
|
||||
final startDate = termstartdate.add(Duration(
|
||||
days: (7 * (week - 1) + day! - 1),
|
||||
hours: scheduleForm.getStartTime.hour,
|
||||
minutes: scheduleForm.getStartTime.minute
|
||||
));
|
||||
|
||||
final endDate = termstartdate.add(Duration(
|
||||
days: (7 * (week - 1) + day! - 1),
|
||||
hours: scheduleForm.getEndTime.hour,
|
||||
minutes: scheduleForm.getEndTime.minute,
|
||||
));
|
||||
Task task = Task(
|
||||
id: await idGenerator.generateId(),
|
||||
name: scheduleForm.getName,
|
||||
userId: Setting.user!.getId!,
|
||||
content: scheduleForm.getContent,
|
||||
taskId: allTaskId,
|
||||
startTime: startDate,
|
||||
endTime: endDate,
|
||||
);
|
||||
taskListToInsert.add(task);
|
||||
}
|
||||
}
|
||||
await insertTaskList(taskListToInsert);
|
||||
}
|
||||
|
||||
|
||||
Future<int> insertTask(Task task) async {
|
||||
netWorkController.insertTask([task]);
|
||||
return await taskDao.insertTask(task);
|
||||
}
|
||||
|
||||
Future<int> insertTaskList(List<Task> taskList) async {
|
||||
netWorkController.insertTask(taskList);
|
||||
int result = 0;
|
||||
for (Task task in taskList) {
|
||||
result += await taskDao.insertTask(task);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
//delete
|
||||
Future<int> deleteTaskByid(int id) async {
|
||||
return await taskDao.deleteTaskByid(id);
|
||||
}
|
||||
|
||||
Future<int> deleteTaskByTaskid(int taskId) async {
|
||||
netWorkController.deleteTask(taskId);
|
||||
return await taskDao.deleteTaskByTaskid(taskId);
|
||||
}
|
||||
|
||||
Future<int> deleteAllTasks() async {
|
||||
// netWorkController.deleteTask(taskId);
|
||||
return await taskDao.deleteAllTasks();
|
||||
}
|
||||
|
||||
//update
|
||||
Future<int> updateTask(Task task) async {
|
||||
return await taskDao.updateTask(task);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,272 +1,88 @@
|
||||
import 'package:timemanagerapp/controller/NetWorkController.dart';
|
||||
import 'package:timemanagerapp/entity/User.dart';
|
||||
|
||||
import '../entity/FreeTime.dart';
|
||||
import '../entity/ScheduleForm.dart';
|
||||
import '../entity/Team.dart';
|
||||
import '../entity/Work.dart';
|
||||
import 'package:timemanagerapp/database/dao/TeamDao.dart';
|
||||
import 'package:timemanagerapp/database/dao/WorkDao.dart';
|
||||
|
||||
import '../setting/Setting.dart';
|
||||
import '../util/dataUtil.dart';
|
||||
|
||||
class TeamController {
|
||||
late int leaderid;
|
||||
static List<Team> allTeamList = []; //实时维护的allTeamList缓存
|
||||
static List<Team> myTeamList = []; //实时维护的myTeamList缓存
|
||||
static List<Team> joindedTeamList = []; //实时维护的teamList缓存
|
||||
static List<Work> workList = []; //实时维护的workList缓存
|
||||
static Map<int,Work> worKIdMap = {};
|
||||
static Map<int,Team> teamIdMap = {};
|
||||
static Map<int,List<Work>> woroListMapByTeamId = {};
|
||||
static Map<int,List<User>> userListMapByTeamId = {};
|
||||
static NetWorkController netWorkController = NetWorkController();
|
||||
static IdGenerator idGenerator = IdGenerator();
|
||||
|
||||
DateTime termstartdate = Setting.startdate; //Setting.getStartDate();
|
||||
|
||||
TeamController() { //leaderid为当前用户的id
|
||||
this.leaderid = Setting.user!.getId!;
|
||||
//TODO: 从服务器中根据leaderid获取myTeamList
|
||||
|
||||
for (var team in myTeamList) {
|
||||
//TODO: 从服务器中根据team.id获取Worklist[team.id]
|
||||
//Wordmaplist[team.id].add()
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
//-----------------------------------Team相关-------------------------------
|
||||
// Future<void> deleteAllTeams() async {
|
||||
// await netWorkController.deleteAllTeams();
|
||||
// }
|
||||
|
||||
Future<List<Team>> getMyTeamList() async {
|
||||
//参考模板
|
||||
myTeamList = [];
|
||||
List<Team>? res = await netWorkController.getMyTeamList(Setting.user!.getId!);
|
||||
if(res==null){
|
||||
return [];
|
||||
}else{
|
||||
// teamIdMap = {};
|
||||
// for(Team team in res){
|
||||
// teamIdMap[team.id!] = team;
|
||||
// }
|
||||
myTeamList = res;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<Team>> getJoinedTeamList() async {
|
||||
if(myTeamList.length==0){
|
||||
await getMyTeamList();
|
||||
}
|
||||
//参考模板
|
||||
joindedTeamList = [];
|
||||
allTeamList = [];
|
||||
List<Team>? res = await netWorkController.getAllTeamListByUserId(Setting.user!.getId!);
|
||||
if(res==null){
|
||||
return [];
|
||||
}else{
|
||||
allTeamList = res;
|
||||
teamIdMap = {};
|
||||
for(Team team in allTeamList){
|
||||
teamIdMap[team.id!] = team;
|
||||
}
|
||||
joindedTeamList.addAll(allTeamList); //对象之间赋值不能直接=
|
||||
for(Team team in myTeamList){
|
||||
// 删除myTeamList中的特定元素
|
||||
joindedTeamList.removeWhere((element) => element.id == team.id);
|
||||
}
|
||||
return joindedTeamList;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Future<void> insertTeamList(List<Team> myTeamList) async {
|
||||
// for (Team team in myTeamList) {
|
||||
// await netWorkController.insertTeam(team);
|
||||
// }
|
||||
// }
|
||||
|
||||
Future<bool> deleteTeam(Team team) async {
|
||||
// List<User> memberList = await getTeamUserList(team.getId!); //级联删除后端数据库实现
|
||||
// for(User user in memberList){
|
||||
// deleteTeamUser(team, user.getId!);
|
||||
// }
|
||||
return await netWorkController.deleteTeam(team.getId!);
|
||||
}
|
||||
|
||||
Future<bool> insertTeam(Team team) async {
|
||||
team.id = await idGenerator.generateId();
|
||||
bool res = await netWorkController.insertTeam(team);
|
||||
print("insertTeam: $res");
|
||||
if(res == false) return false;
|
||||
//添加自己
|
||||
int id = await idGenerator.generateId();
|
||||
await netWorkController.insertTeamUser(id,team.id!, Setting.user!.getUsername!);
|
||||
return true;
|
||||
}
|
||||
|
||||
//joinTeam
|
||||
Future<bool> joinTeam(String teamName) async {
|
||||
//不允许加入已经加入过的的团队
|
||||
for(Team team in allTeamList){
|
||||
if(team.getTeamName == teamName){
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Team ? team = await netWorkController.getTeamByTeamName(teamName);
|
||||
if(team == null){
|
||||
return false;
|
||||
}
|
||||
int id = await idGenerator.generateId();
|
||||
return await netWorkController.insertTeamUser(id,team!.getId!, Setting.user!.getUsername!);
|
||||
}
|
||||
|
||||
|
||||
Future<bool> updateTeam(Team team) async {
|
||||
return await netWorkController.updateTeam(team);
|
||||
}
|
||||
|
||||
//------------------------------------TeamUser相关-------------------------------------
|
||||
Future<List<User>> getTeamUserList(int teamid) async {
|
||||
List<User>? res = await netWorkController.getTeamUserList(teamid);
|
||||
if(res == null){
|
||||
return [];
|
||||
}else{
|
||||
List<User> tmp = [];
|
||||
for(User user in res){
|
||||
if(user.getId != Setting.user!.getId!){ //不显示自己
|
||||
tmp.add(user);
|
||||
}
|
||||
}
|
||||
res = tmp;
|
||||
userListMapByTeamId[teamid] = res;
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
Future<bool> insertTeamUser(int teamid, String membername) async {
|
||||
if(membername == Setting.user!.getUsername){//不允许添加自己
|
||||
return false;
|
||||
}
|
||||
int id = await idGenerator.generateId();
|
||||
return await netWorkController.insertTeamUser(id,teamid, membername);
|
||||
}
|
||||
|
||||
Future<bool> deleteTeamUser(Team team, int userId) async {
|
||||
if(team.getLeaderId == userId){
|
||||
return await deleteTeam(team);
|
||||
}else{
|
||||
return await netWorkController.deleteTeamUser(team.getId!, userId);
|
||||
}
|
||||
}
|
||||
|
||||
//---------------------------Work相关----------------------
|
||||
Future<List<Work>> getWorks() async {
|
||||
workList = [];
|
||||
// myTeamList = [];
|
||||
// joindedTeamList = [];
|
||||
// myTeamList = await getMyTeamList();
|
||||
// joindedTeamList = await getJoinedTeamList();
|
||||
// allTeamList = myTeamList + joindedTeamList;
|
||||
var res = await getJoinedTeamList(); //获取所有的team,初始化
|
||||
if(res == null) {
|
||||
return [];
|
||||
}
|
||||
for(Team team in allTeamList){
|
||||
workList.addAll(await getWorksByTeamId(team.id));
|
||||
}
|
||||
return workList;
|
||||
|
||||
}
|
||||
|
||||
Future<List<Work>> getWorksByTeamId(teamId) async {
|
||||
var res = await netWorkController.getTeamWorkList(teamId);
|
||||
if(res == null){
|
||||
return [];
|
||||
}else{
|
||||
woroListMapByTeamId[teamId] = [];
|
||||
for(int index = 0; index < res.length; index++){
|
||||
res[index].teamName = teamIdMap[teamId]!.getTeamName;
|
||||
woroListMapByTeamId[teamId]!.add(res[index]);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
//addscheduleForm
|
||||
Future<void> addScheduleForm(ScheduleForm scheduleForm,int teamId) async {
|
||||
List<Work> WorkListToInsert = [];
|
||||
int allWorkId = await idGenerator.generateId();
|
||||
for (int week = scheduleForm.getStartWeek; week <= scheduleForm.getEndWeek; week++) {
|
||||
for (int day in scheduleForm.selectedDays) {
|
||||
// 计算具体的日期和时间
|
||||
final startDate = termstartdate.add(Duration(
|
||||
days: (7 * (week - 1) + day! - 1),
|
||||
hours: scheduleForm.getStartTime.hour,
|
||||
minutes: scheduleForm.getStartTime.minute
|
||||
));
|
||||
|
||||
final endDate = termstartdate.add(Duration(
|
||||
days: (7 * (week - 1) + day! - 1),
|
||||
hours: scheduleForm.getEndTime.hour,
|
||||
minutes: scheduleForm.getEndTime.minute,
|
||||
));
|
||||
Work work = Work(
|
||||
id: await idGenerator.generateId(),
|
||||
name: scheduleForm.getName,
|
||||
workId: allWorkId,
|
||||
userId: Setting.user!.getId!,
|
||||
status: "未完成",
|
||||
content: scheduleForm.getContent,
|
||||
teamId: teamId,
|
||||
endTime: endDate,
|
||||
startTime: startDate,
|
||||
);
|
||||
WorkListToInsert.add(work);
|
||||
}
|
||||
}
|
||||
await insertWorkList(WorkListToInsert);
|
||||
}
|
||||
|
||||
//
|
||||
// Future<bool> insertWork(Work work) async {
|
||||
// return await netWorkController.insertTeamWork(work);
|
||||
// }
|
||||
|
||||
Future<void> insertWorkList(List<Work> workList) async {
|
||||
// for (Work work in workList) {
|
||||
await netWorkController.insertTeamWork(workList);
|
||||
// }
|
||||
}
|
||||
|
||||
// Future<void> deleteAllWorks() async {
|
||||
// await netWorkController.deleteAllWorks();
|
||||
// }
|
||||
|
||||
Future<void> deleteWorkByWorkId(int workId) async {
|
||||
await netWorkController.deleteTeamWork(workId);
|
||||
}
|
||||
|
||||
// Future<void> updateWork(Work work) async {
|
||||
// await netWorkController.u(work);
|
||||
// }
|
||||
|
||||
Future<List<FreeTime>> getFreeTime(int teamid)async{
|
||||
var res = await netWorkController.getFreeTime(teamid);
|
||||
if(res == null){
|
||||
return [];
|
||||
}else{
|
||||
return res;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
import 'package:timemanagerapp/controller/NetWorkController.dart';
|
||||
|
||||
import '../entity/Team.dart';
|
||||
import '../entity/Work.dart';
|
||||
import 'package:timemanagerapp/database/dao/TeamDao.dart';
|
||||
import 'package:timemanagerapp/database/dao/WorkDao.dart';
|
||||
|
||||
class TeamController {
|
||||
late int leaderid;
|
||||
List<Team> teamList = []; //实时维护的teamList缓存
|
||||
Map<int, List<Work>> Wordmaplist = {};
|
||||
NetWorkController netWorkController = NetWorkController();
|
||||
|
||||
|
||||
TeamController(int leaderid) {
|
||||
this.leaderid = leaderid;
|
||||
//TODO: 从服务器中根据leaderid获取teamList
|
||||
|
||||
for (var team in teamList) {
|
||||
//TODO: 从服务器中根据team.id获取Worklist[team.id]
|
||||
//Wordmaplist[team.id].add()
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<Team>> getTeams(int userid) async {
|
||||
return await netWorkController.getTeamList(userid);
|
||||
}
|
||||
|
||||
Future<bool> createTeam(Team team) async {
|
||||
return await netWorkController.insertTeam(team);
|
||||
}
|
||||
|
||||
Future<void> insertTeamList(List<Team> teamList) async {
|
||||
for (Team team in teamList) {
|
||||
await TeamDao().insertTeam(team);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllTeams() async {
|
||||
await TeamDao().deleteAllTeams();
|
||||
}
|
||||
|
||||
Future<bool> deleteTeam(int teamid) async {
|
||||
return await netWorkController.deleteTeam(teamid);
|
||||
}
|
||||
|
||||
Future<bool> updateTeam(Team team) async {
|
||||
return await netWorkController.updateTeam(team);
|
||||
}
|
||||
|
||||
Future<void> insertWork(Work work) async {
|
||||
// return await netWorkController.insertWork(work);
|
||||
}
|
||||
|
||||
Future<void> insertWorkList(List<Work> workList) async {
|
||||
for (Work work in workList) {
|
||||
await WorkDao().insertWork(work);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllWorks() async {
|
||||
await WorkDao().deleteAllWorks();
|
||||
}
|
||||
|
||||
Future<void> deleteWork(int id) async {
|
||||
await WorkDao().deleteWorkByid(id);
|
||||
}
|
||||
|
||||
Future<void> updateWork(Work work) async {
|
||||
await WorkDao().updateWork(work);
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getWorks() async {
|
||||
return WorkDao().getWorks();
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getWorksByTeamid(int teamid) async {
|
||||
return WorkDao().getWorksByTeamid(teamid);
|
||||
}
|
||||
|
||||
Future<List<Work>> getSameFreeWork(int teamid){
|
||||
return netWorkController.getSameFreeWork(teamid);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1,196 +0,0 @@
|
||||
import 'dart:ui';
|
||||
|
||||
import 'package:timemanagerapp/entity/Course.dart';
|
||||
import 'package:timemanagerapp/entity/FreeTime.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
|
||||
class TimetableWidgetController {
|
||||
static late DateTime mondayTime = getmondayTime();
|
||||
static late int weekCount = getWeekCount();
|
||||
static late DateTime termStartDate = Setting.startdate;
|
||||
|
||||
static List<DateTime> timePoints = [
|
||||
DateTime(2023, 9, 22, 7, 00),
|
||||
DateTime(2023, 9, 22, 7, 30),
|
||||
DateTime(2023, 9, 22, 8, 0), // 8:00 AM
|
||||
DateTime(2023, 9, 22, 9, 35), // 8:15 PM
|
||||
DateTime(2023, 9, 22, 10, 5),
|
||||
DateTime(2023, 9, 22, 11, 40),
|
||||
DateTime(2023, 9, 22, 12, 30),
|
||||
DateTime(2023, 9, 22, 13, 30),
|
||||
DateTime(2023, 9, 22, 15, 5), // 8:00 AM
|
||||
DateTime(2023, 9, 22, 15, 35), // 12:30 PM
|
||||
DateTime(2023, 9, 22, 17, 10),
|
||||
DateTime(2023, 9, 22, 18, 30),
|
||||
DateTime(2023, 9, 22, 19, 15), // 8:00 AM
|
||||
DateTime(2023, 9, 22, 20, 5), // 12:30 PM
|
||||
DateTime(2023, 9, 22, 20, 55),
|
||||
DateTime(2023, 9, 22, 21, 40),
|
||||
DateTime(2023, 9, 22, 23, 00),
|
||||
];
|
||||
|
||||
TimetableWidgetController() {
|
||||
mondayTime = getmondayTime();
|
||||
termStartDate = Setting.startdate;
|
||||
weekCount = getWeekCount();
|
||||
}
|
||||
|
||||
//getInstance
|
||||
static TimetableWidgetController getInstance() {
|
||||
return new TimetableWidgetController();
|
||||
}
|
||||
|
||||
//时间转换为时间轴的piexl值的函数
|
||||
static List<Offset> convertTimeList(List<DateTime> timePoints) {
|
||||
print("deviceWidth: ${Setting.deviceWidth.toString()}");
|
||||
List<Offset> convertedTimes = [];
|
||||
for (var time in timePoints) {
|
||||
int hour = time.hour;
|
||||
int minute = time.minute;
|
||||
|
||||
int totalMinutes = (hour - 7) * 60 + minute;
|
||||
double convertedTime = totalMinutes * Setting.pixelToMinuteRatio_ratio;
|
||||
convertedTimes.add(Offset(Setting.deviceWidth * 0.015, convertedTime));
|
||||
}
|
||||
|
||||
// print("convertedTimesOffset: $convertedTimes");
|
||||
|
||||
return convertedTimes;
|
||||
}
|
||||
|
||||
//补充从学期开始到现在没有任何任务的空闲时间
|
||||
List<FreeTime> repairFreeTimeBlockList(List freeTimeBlockList) {
|
||||
List<FreeTime> repairedFreeTimeBlockList = [];
|
||||
DateTime termStartDate = Setting.startdate;
|
||||
DateTime termEndDate = termStartDate.add(Duration(days: 7 * Setting.termAllWeekCout));
|
||||
//设置termEndDate的时分秒为23:00:00
|
||||
termEndDate = DateTime(termEndDate.year, termEndDate.month, termEndDate.day, 23, 00, 00);
|
||||
|
||||
Set<DateTime> freeTimeBlockSet = {}; //用于去重,已有的所有空闲时间的日期的集合
|
||||
for (var freeTimeBlock in freeTimeBlockList) {
|
||||
//仅仅比较日期,不比较具体时分秒
|
||||
//仅保留从学期开始到学期结束的空闲时间
|
||||
bool keepFlag = true;
|
||||
if(freeTimeBlock.startTime.isBefore(termStartDate)){
|
||||
keepFlag = false;
|
||||
}
|
||||
if(freeTimeBlock.endTime.isAfter(termEndDate)){
|
||||
keepFlag = false;
|
||||
}
|
||||
if (freeTimeBlock.startTime.hour < 7) {
|
||||
keepFlag = false;
|
||||
}
|
||||
if (freeTimeBlock.endTime.hour > 23) {
|
||||
keepFlag = false;
|
||||
}
|
||||
// if(freeTimeBlock.startTime.compareTo(freeTimeBlock.endTime)==0){ //报错
|
||||
// keepFlag = false; //如果开始时间和结束时间相同,就不保留,但是要添加到freeTimeBlockSet中,表示已经考虑到
|
||||
// freeTimeBlockSet.add(DateTime(freeTimeBlock.startTime.year, freeTimeBlock.startTime.month, freeTimeBlock.startTime.day));
|
||||
// }
|
||||
if(keepFlag){
|
||||
freeTimeBlockSet.add(DateTime(freeTimeBlock.startTime.year, freeTimeBlock.startTime.month, freeTimeBlock.startTime.day));
|
||||
repairedFreeTimeBlockList.add(freeTimeBlock);
|
||||
}else{
|
||||
freeTimeBlockList.remove(freeTimeBlock);
|
||||
}
|
||||
}
|
||||
|
||||
//从学期开始到学期结束的空闲时间
|
||||
for(var date = termStartDate; date.isBefore(termEndDate); date = date.add(Duration(days: 1))){
|
||||
date = DateTime(date.year, date.month, date.day);
|
||||
if(freeTimeBlockSet.contains(date)){
|
||||
//如果已经有了,就不用再添加了
|
||||
continue;
|
||||
}
|
||||
DateTime startTime = DateTime(date.year, date.month, date.day, 7, 0);
|
||||
DateTime endTime = DateTime(date.year, date.month, date.day, 23, 0);
|
||||
FreeTime freeTime = FreeTime(startTime: startTime, endTime: endTime);
|
||||
repairedFreeTimeBlockList.add(freeTime);
|
||||
}
|
||||
|
||||
return repairedFreeTimeBlockList;
|
||||
}
|
||||
|
||||
static int getWeekCount({DateTime ? dateTime}) {
|
||||
dateTime ??= DateTime.now();
|
||||
weekCount = dateTime.difference(termStartDate).inDays ~/ 7 + 1;
|
||||
return weekCount;
|
||||
}
|
||||
|
||||
static DateTime getmondayTime() {
|
||||
mondayTime = DateTime.now();
|
||||
print("获取mondayTime: $mondayTime");
|
||||
//获取本周星期一是几号
|
||||
while (mondayTime.weekday != 1) {
|
||||
mondayTime = mondayTime.subtract(Duration(days: 1));
|
||||
}
|
||||
return mondayTime;
|
||||
}
|
||||
|
||||
static List<String> getSelectDayList(DateTime date) {
|
||||
List<String> selectedDayList = [];
|
||||
//根据data是星期几就selectedDayList添加几个元素
|
||||
int day = date.weekday;
|
||||
switch (day) {
|
||||
case 1:
|
||||
selectedDayList.add("周一");
|
||||
break;
|
||||
case 2:
|
||||
selectedDayList.add("周二");
|
||||
break;
|
||||
case 3:
|
||||
selectedDayList.add("周三");
|
||||
break;
|
||||
case 4:
|
||||
selectedDayList.add("周四");
|
||||
break;
|
||||
case 5:
|
||||
selectedDayList.add("周五");
|
||||
break;
|
||||
case 6:
|
||||
selectedDayList.add("周六");
|
||||
break;
|
||||
case 7:
|
||||
selectedDayList.add("周日");
|
||||
break;
|
||||
}
|
||||
return selectedDayList;
|
||||
}
|
||||
|
||||
Map<int, List> transformTimeBlockMap(List blockList) {
|
||||
Map<int, List> timeblockMap = {};
|
||||
for (var timeBlock in blockList) {
|
||||
int weekCount = timeBlock.startTime.difference(termStartDate).inDays ~/ 7 + 1; //
|
||||
if (timeblockMap.containsKey(weekCount)) {
|
||||
timeblockMap[weekCount]!.add(timeBlock);
|
||||
} else {
|
||||
timeblockMap[weekCount] = [timeBlock];
|
||||
}
|
||||
}
|
||||
return timeblockMap;
|
||||
}
|
||||
|
||||
//初始化任务在周几对应的x坐标
|
||||
var weekListPixel=[0,0.12,0.24,0.36,0.48,0.60,0.72];
|
||||
// Course(this.name, this.teacher, this.location, this.startTime, this.endTime);
|
||||
|
||||
double getdy(timeBlock)
|
||||
{
|
||||
//9是顶上方块的固定偏移
|
||||
double y=((timeBlock.startTime.hour-7)*60+timeBlock.startTime.minute)*Setting.pixelToMinuteRatio_ratio + 9;
|
||||
return y;
|
||||
}
|
||||
|
||||
double getdx(timeBlock)
|
||||
{
|
||||
int x=timeBlock.startTime.weekday-1;
|
||||
return Setting.deviceWidth*weekListPixel[x].toDouble();
|
||||
}
|
||||
|
||||
double getHeight(timeBlock){
|
||||
return ((timeBlock.endTime.hour*60+timeBlock.endTime.minute)-(timeBlock.startTime.hour*60+timeBlock.startTime.minute))*Setting.pixelToMinuteRatio_ratio;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@ -1,133 +0,0 @@
|
||||
// import 'package:timemanagerapp/entity/ScheduleForm.dart';
|
||||
//
|
||||
// import '../database/dao/WorkDao.dart';
|
||||
// import '../entity/Work.dart';
|
||||
// import '../setting/Setting.dart';
|
||||
// import '../util/dataUtil.dart';
|
||||
// import 'NetWorkController.dart';
|
||||
//
|
||||
// class WorkController {
|
||||
// static IdGenerator idGenerator = IdGenerator();
|
||||
// static List<Work> WorkList = []; //实时维护的courseList缓存
|
||||
// static NetWorkController netWorkController = NetWorkController();
|
||||
//
|
||||
// DateTime termstartdate = Setting.startdate; //Setting.getStartDate();
|
||||
//
|
||||
// Future<List<Work>> getWorks() async {
|
||||
// //todo http获取
|
||||
// List<Map<String, dynamic>> workMaps = await WorkDao().getWorks();
|
||||
// List<Work> Works = []; // 用于存储转换后的Work对象列表
|
||||
//
|
||||
// for (var workMap in workMaps) {
|
||||
// // 使用Work类的构造函数从Map创建Work对象
|
||||
// Work work = Work(
|
||||
// id: workMap['id'],
|
||||
// userId: workMap['userId'],
|
||||
// content: workMap['content'],
|
||||
// workId: workMap['workId'],
|
||||
// name: workMap['name'],
|
||||
// startTime: DateTime.parse(workMap['startTime']),
|
||||
// endTime: DateTime.parse(workMap['endTime']),
|
||||
// status: workMap['status'],
|
||||
// teamId: workMap['teamId'],
|
||||
// );
|
||||
// Works.add(work);
|
||||
// }
|
||||
// WorkList = Works; // 将Work对象添加到列表中
|
||||
// return WorkList;
|
||||
// }
|
||||
//
|
||||
// //addscheduleForm
|
||||
// Future<void> addScheduleForm(ScheduleForm scheduleForm,int teamId) async {
|
||||
// List<Work> WorkListToInsert = [];
|
||||
// int allWorkId = await idGenerator.generateId();
|
||||
// for (int week = scheduleForm.getStartWeek; week <= scheduleForm.getEndWeek; week++) {
|
||||
// for (int day in scheduleForm.selectedDays) {
|
||||
// // 计算具体的日期和时间
|
||||
// final startDate = termstartdate.add(Duration(
|
||||
// days: (7 * (week - 1) + day! - 1),
|
||||
// hours: scheduleForm.getStartTime.hour,
|
||||
// minutes: scheduleForm.getStartTime.minute
|
||||
// ));
|
||||
//
|
||||
// final endDate = termstartdate.add(Duration(
|
||||
// days: (7 * (week - 1) + day! - 1),
|
||||
// hours: scheduleForm.getEndTime.hour,
|
||||
// minutes: scheduleForm.getEndTime.minute,
|
||||
// ));
|
||||
// Work work = Work(
|
||||
// id: await idGenerator.generateId(),
|
||||
// name: scheduleForm.getName,
|
||||
// workId: allWorkId,
|
||||
// userId: Setting.user!.getId!,
|
||||
// status: "未完成",
|
||||
// content: scheduleForm.getContent,
|
||||
// teamId: teamId,
|
||||
// endTime: endDate,
|
||||
// startTime: startDate,
|
||||
// );
|
||||
// WorkListToInsert.add(work);
|
||||
// }
|
||||
// }
|
||||
// await insertWorkList(WorkListToInsert);
|
||||
// }
|
||||
//
|
||||
// Future<int> insertWork(Work Work) async {
|
||||
// return await WorkDao().insertWork(Work);
|
||||
// }
|
||||
//
|
||||
// Future<int> insertWorkList(List<Work> workList) async {
|
||||
// int result = 0;
|
||||
// for (Work work in workList) {
|
||||
// result += await WorkDao().insertWork(work);
|
||||
// }
|
||||
// return result;
|
||||
// }
|
||||
//
|
||||
// //模仿Task的数数据操作写work
|
||||
// //query
|
||||
// Future<List<Work>> getWorkList() async {
|
||||
// List<Map<String, dynamic>> workMaps = await WorkDao().getWorks();
|
||||
// List<Work> workList = []; // 用于存储转换后的Work对象列表
|
||||
//
|
||||
// for (var workMap in workMaps) {
|
||||
// // 使用Work类的构造函数从Map创建Work对象
|
||||
// Work work = Work(
|
||||
// id: workMap['id'],
|
||||
// userId: workMap['userId'],
|
||||
// content: workMap['content'],
|
||||
// workId: workMap['workId'],
|
||||
// name: workMap['name'],
|
||||
// startTime: DateTime.parse(workMap['startTime']),
|
||||
// endTime: DateTime.parse(workMap['endTime']),
|
||||
// status: workMap['status'],
|
||||
// teamId: workMap['teamId'],
|
||||
// );
|
||||
// workList.add(work);
|
||||
// }
|
||||
// WorkList = workList; // 将Work对象添加到列表中
|
||||
// return WorkList;
|
||||
// }
|
||||
//
|
||||
// // //delete 模仿Task的数数据操作
|
||||
// // Future<int> deleteWorkByid(int id) async{
|
||||
// // return await WorkDao().deleteWorkByid(id);
|
||||
// // }
|
||||
//
|
||||
//
|
||||
// Future<int> deleteWorkByWorkid(int workid) async {
|
||||
// return await WorkDao().deleteWorkByWorkid(workid);
|
||||
// }
|
||||
//
|
||||
// Future<int> deleteAllWorks() async {
|
||||
// return await WorkDao().deleteAllWorks();
|
||||
// }
|
||||
//
|
||||
// //update
|
||||
// Future<int> updateWork(Work work) async {
|
||||
// return await WorkDao().updateWork(work);
|
||||
// }
|
||||
//
|
||||
//
|
||||
//
|
||||
// }
|
||||
@ -1,108 +1,104 @@
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/entity/Course.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与课相关的函数
|
||||
*/
|
||||
class CourseDao {
|
||||
late Future<Database> _database;
|
||||
|
||||
CourseDao() {
|
||||
_database = MyDatabase.initDatabase();
|
||||
}
|
||||
|
||||
// 其他方法不需要再调用MyDatabase.initDatabase()
|
||||
|
||||
Future<List<Map<String, dynamic>>> getCourses() async {
|
||||
final database = await _database;
|
||||
if (database != null) {
|
||||
return database.query('course', orderBy: 'id ASC');
|
||||
// return database.rawQuery('SELECT * FROM course');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<int> insertCourse(Course course) async {
|
||||
final database = await _database;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
// 插入数据
|
||||
//!!!注意字符串需加双引号
|
||||
var tmp = course.toMap();
|
||||
result += await database.insert('course', course.toMap());
|
||||
// result = await txn.rawInsert('''
|
||||
// INSERT INTO course(userId,courseId,name,credit,teacher,location,remark,start,end)
|
||||
// VALUES(${course.userId},${course.courseId},"${course.name}",${course.credit},"${course.teacher}","${course.location}","${course.remark}","${course.startTime}","${course.endTime}")
|
||||
// ''');
|
||||
// print("课程插入 : " + course.toString());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> updateCourseById(Course course) async {
|
||||
final database = await _database;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
result += await database
|
||||
.update('course', course.toMap(), where: 'id = ?', whereArgs: [course.id]);
|
||||
// result = await txn.rawUpdate('''
|
||||
// UPDATE course SET userId = ${course.userId},courseId = ${course
|
||||
// .courseId},name = "${course.name}",credit = ${course
|
||||
// .credit},teacher = "${course.teacher}",location = "${course
|
||||
// .location}",remark = "${course.remark}",start = "${course
|
||||
// .startTime}",end = "${course.endTime}"
|
||||
// WHERE id = ${course.id}
|
||||
// ''');
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> updateCourseByCourseId(Course course) async {
|
||||
final database = await _database;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
|
||||
result += await database
|
||||
.update('course', course.toMap(), where: 'courseId = ?', whereArgs: [course.courseId]);
|
||||
// result = await txn.rawUpdate('''
|
||||
// UPDATE course SET userId = ${course.userId},courseId = ${course
|
||||
// .courseId},name = "${course.name}",credit = ${course
|
||||
// .credit},teacher = "${course.teacher}",location = "${course
|
||||
// .location}",remark = "${course.remark}",start = "${course
|
||||
// .startTime}",end = "${course.endTime}"
|
||||
// WHERE courseId = ${course.courseId}
|
||||
// ''');
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> deleteCourseById(int id) async {
|
||||
final database = await _database;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
result = await database.delete('course', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> deleteCourseByCourseId(int courseId) async {
|
||||
final database = await _database;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
result = await database
|
||||
.delete('course', where: 'courseId = ?', whereArgs: [courseId]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> deleteAllCourses() async {
|
||||
final database = await _database;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
result = await database.delete('course', where: '1=1');
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/entity/Course.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与课相关的函数
|
||||
*/
|
||||
class CourseDao {
|
||||
//对外暴露实例
|
||||
static CourseDao getInstance() {
|
||||
return new CourseDao();
|
||||
}
|
||||
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getCourses() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.rawQuery('SELECT * FROM course');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<int> insertCourse(Course course) async {
|
||||
final database = await db;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 插入数据
|
||||
//!!!注意字符串需加双引号
|
||||
result = await txn.rawInsert('''
|
||||
INSERT INTO course(userId,courseId,name,credit,teacher,location,remark,start,end)
|
||||
VALUES(${course.userId},${course.courseId},"${course.name}",${course.credit},"${course.teacher}","${course.location}","${course.remark}","${course.start}","${course.end}")
|
||||
''');
|
||||
});
|
||||
// print("课程插入 : " + course.toString());
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> updateCourseById(Course course) async {
|
||||
final database = await db;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
result = await txn.rawUpdate('''
|
||||
UPDATE course SET userId = ${course.userId},courseId = ${course
|
||||
.courseId},name = "${course.name}",credit = ${course
|
||||
.credit},teacher = "${course.teacher}",location = "${course
|
||||
.location}",remark = "${course.remark}",start = "${course
|
||||
.start}",end = "${course.end}"
|
||||
WHERE id = ${course.id}
|
||||
''');
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> updateCourseByCourseId(Course course) async {
|
||||
final database = await db;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
result = await txn.rawUpdate('''
|
||||
UPDATE course SET userId = ${course.userId},courseId = ${course
|
||||
.courseId},name = "${course.name}",credit = ${course
|
||||
.credit},teacher = "${course.teacher}",location = "${course
|
||||
.location}",remark = "${course.remark}",start = "${course
|
||||
.start}",end = "${course.end}"
|
||||
WHERE courseId = ${course.courseId}
|
||||
''');
|
||||
});
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> deleteCourseById(int id) async {
|
||||
final database = await db;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
result = await database.delete('course', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> deleteCourseByCourseId(int courseId) async {
|
||||
final database = await db;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
result = await database
|
||||
.delete('course', where: 'courseId = ?', whereArgs: [courseId]);
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
Future<int> deleteAllCourses() async {
|
||||
final database = await db;
|
||||
int result = 0;
|
||||
if (database != null) {
|
||||
result = await database.delete('course', where: '1=1');
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,68 +1,56 @@
|
||||
import 'package:sqflite/sqflite.dart';
|
||||
|
||||
import '../../entity/Task.dart';
|
||||
import '../../entity/Task.dart';
|
||||
import '../MyDatebase.dart';
|
||||
|
||||
class TaskDao {
|
||||
//对外暴露实例
|
||||
static TaskDao getInstance() {
|
||||
return new TaskDao();
|
||||
}
|
||||
|
||||
late Future<Database> _database;
|
||||
|
||||
TaskDao() {
|
||||
_database = MyDatabase.initDatabase();
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getTasks() async {
|
||||
final database = await _database;
|
||||
if (database != null) {
|
||||
return database.query('tasks', orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<int> insertTask(Task task) async {
|
||||
final database = await _database;
|
||||
if (database != null) {
|
||||
return await database.insert('tasks', task.toMap());
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Future<int> updateTask(Task task) async {
|
||||
final database = await _database;
|
||||
if (database != null) {
|
||||
return await database
|
||||
.update('tasks', task.toMap(), where: 'id = ?', whereArgs: [task.id]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Future<int> deleteTaskByid(int id) async {
|
||||
final database = await _database;
|
||||
if (database != null) {
|
||||
return await database.delete('tasks', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Future<int> deleteTaskByTaskid(int taskid) async {
|
||||
final database = await _database;
|
||||
if (database != null) {
|
||||
return await database.delete('tasks', where: 'taskid = ?', whereArgs: [taskid]);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
Future<int> deleteAllTasks() async {
|
||||
final database = await _database;
|
||||
if (database != null) {
|
||||
return await database.delete('tasks', where: '1=1');
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
import '../../entity/Task.dart';
|
||||
import '../MyDatebase.dart';
|
||||
|
||||
class TaskDao {
|
||||
//对外暴露实例
|
||||
static TaskDao getInstance() {
|
||||
return new TaskDao();
|
||||
}
|
||||
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getTasks() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('Task', orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertTask(Task task) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.insert('Task', task.toMap());
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateTask(Task task) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database
|
||||
.update('Task', task.toMap(), where: 'id = ?', whereArgs: [task.id]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteTaskByid(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Task', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteTaskByTaskid(int taskid) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Task', where: 'taskid = ?', whereArgs: [taskid]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllTasks() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Task', where: '1=1');
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,55 +1,55 @@
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/entity/Team.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与团队相关的函数
|
||||
*/
|
||||
class TeamDao {
|
||||
//对外暴露实例
|
||||
static TeamDao getInstance() {
|
||||
return new TeamDao();
|
||||
}
|
||||
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getTeams() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('Team', orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertTeam(Team team) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.insert('Team', team.toMap());
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateTeam(Team team) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database
|
||||
.update('Team', team.toMap(), where: 'id = ?', whereArgs: [team.id]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Future<void> deleteTeamById(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Team', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Future<void> deleteAllTeams() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Team', where: '1=1');
|
||||
}
|
||||
}
|
||||
}
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/entity/Team.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与团队相关的函数
|
||||
*/
|
||||
class TeamDao {
|
||||
//对外暴露实例
|
||||
static TeamDao getInstance() {
|
||||
return new TeamDao();
|
||||
}
|
||||
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getTeams() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('Team', orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertTeam(Team team) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.insert('Team', team.toMap());
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateTeam(Team team) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database
|
||||
.update('Team', team.toMap(), where: 'id = ?', whereArgs: [team.id]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Future<void> deleteTeamById(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Team', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Future<void> deleteAllTeams() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Team', where: '1=1');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,64 +1,64 @@
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
|
||||
import '../../entity/User.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与用户相关的函数
|
||||
*/
|
||||
class UserDao {
|
||||
//对外暴露实例
|
||||
static UserDao getInstance() {
|
||||
return new UserDao();
|
||||
}
|
||||
|
||||
//获取操作业务的实例
|
||||
//UserService userService=UserService.getInstance();
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getUsers() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return await database.rawQuery('SELECT * FROM users');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertUser(User user) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 插入数据
|
||||
//!!!注意字符串需加双引号
|
||||
await txn.rawInsert('''
|
||||
INSERT INTO users(teamId,username,password,role)
|
||||
VALUES("${user.username}","${user.password}",${user.role})
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteUser(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 删除数据
|
||||
await txn.rawDelete('''
|
||||
DELETE FROM users WHERE id=$id
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllUsers() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 删除数据
|
||||
await txn.rawDelete('''
|
||||
DELETE FROM users
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
|
||||
import '../../entity/User.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与用户相关的函数
|
||||
*/
|
||||
class UserDao {
|
||||
//对外暴露实例
|
||||
static UserDao getInstance() {
|
||||
return new UserDao();
|
||||
}
|
||||
|
||||
//获取操作业务的实例
|
||||
//UserService userService=UserService.getInstance();
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getUsers() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return await database.rawQuery('SELECT * FROM users');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertUser(User user) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 插入数据
|
||||
//!!!注意字符串需加双引号
|
||||
await txn.rawInsert('''
|
||||
INSERT INTO users(teamId,username,password,role)
|
||||
VALUES(${user.teamId},"${user.username}","${user.password}",${user.role})
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteUser(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 删除数据
|
||||
await txn.rawDelete('''
|
||||
DELETE FROM users WHERE id=$id
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllUsers() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.transaction((txn) async {
|
||||
// 删除数据
|
||||
await txn.rawDelete('''
|
||||
DELETE FROM users
|
||||
''');
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,89 +1,76 @@
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/entity/Work.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与团队工作相关的函数
|
||||
*/
|
||||
|
||||
class WorkDao {
|
||||
//对外暴露实例
|
||||
static WorkDao getInstance() {
|
||||
return new WorkDao();
|
||||
}
|
||||
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getWorks() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('works', orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getWorksByTeamid(int teamid) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('works', where: 'teamId = ?', whereArgs: [teamid], orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<int> insertWork(Work work) async {
|
||||
final database = await db;
|
||||
int res = 0;
|
||||
if (database != null) {
|
||||
res += await database.insert('works', work.toMap());
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
|
||||
Future<int> updateWork(Work work) async {
|
||||
final database = await db;
|
||||
int res = 0;
|
||||
if (database != null) {
|
||||
res += await database
|
||||
.update('works', work.toMap(), where: 'id = ?', whereArgs: [work.id]);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
Future<int> deleteWorkByid(int id) async {
|
||||
final database = await db;
|
||||
int res = 0;
|
||||
if (database != null) {
|
||||
res += await database.delete('works', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
Future<int> deleteWorkByWorkid(int workid) async {
|
||||
final database = await db;
|
||||
int res = 0;
|
||||
if (database != null) {
|
||||
res += await database.delete('works', where: 'workId = ?', whereArgs: [workid]);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
Future<int> deleteWorkByTeamid(int teamid) async {
|
||||
final database = await db;
|
||||
int res = 0;
|
||||
if (database != null) {
|
||||
res += await database.delete('works', where: 'teamId = ?', whereArgs: [teamid]);
|
||||
}
|
||||
return res;
|
||||
}
|
||||
|
||||
Future<int> deleteAllWorks() async {
|
||||
final database = await db;
|
||||
int res = 0;
|
||||
if (database != null) {
|
||||
res += await database.delete('works', where: '1=1');
|
||||
}
|
||||
return res;
|
||||
}
|
||||
}
|
||||
import 'package:timemanagerapp/database/MyDatebase.dart';
|
||||
import 'package:timemanagerapp/entity/Work.dart';
|
||||
|
||||
/**
|
||||
* 封装所有要用到的与团队工作相关的函数
|
||||
*/
|
||||
|
||||
class WorkDao {
|
||||
//对外暴露实例
|
||||
static WorkDao getInstance() {
|
||||
return new WorkDao();
|
||||
}
|
||||
|
||||
var db = MyDatabase.initDatabase();
|
||||
|
||||
Future<List<Map<String, dynamic>>> getWorks() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('Work', orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<List<Map<String, dynamic>>> getWorksByTeamid(int teamid) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
return database.query('Work', where: 'teamid = ?', whereArgs: [teamid], orderBy: 'id ASC');
|
||||
} else {
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> insertWork(Work work) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.insert('Work', work.toMap());
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> updateWork(Work work) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database
|
||||
.update('Work', work.toMap(), where: 'id = ?', whereArgs: [work.id]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteWorkByid(int id) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Work', where: 'id = ?', whereArgs: [id]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteWorkByWorkid(int workid) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Work', where: 'workid = ?', whereArgs: [workid]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteWorkByTeamid(int teamid) async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Work', where: 'teamid = ?', whereArgs: [teamid]);
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> deleteAllWorks() async {
|
||||
final database = await db;
|
||||
if (database != null) {
|
||||
await database.delete('Work', where: '1=1');
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,75 +1,75 @@
|
||||
class Clock {
|
||||
int? id;
|
||||
int userId;
|
||||
String text;
|
||||
String img;
|
||||
String music;
|
||||
DateTime continueTime;
|
||||
|
||||
Clock({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.text,
|
||||
required this.img,
|
||||
required this.music,
|
||||
required this.continueTime,
|
||||
});
|
||||
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'userId': userId,
|
||||
'text': "$text",
|
||||
'img': "$img",
|
||||
'music': "$music",
|
||||
'continueTime': "${continueTime.toIso8601String()}",
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getUserId => userId;
|
||||
|
||||
String get getText => text;
|
||||
|
||||
String get getImg => img;
|
||||
|
||||
String get getMusic => music;
|
||||
|
||||
DateTime get getContinueTime => continueTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setText(String newText) {
|
||||
text = newText;
|
||||
}
|
||||
|
||||
set setImg(String newImg) {
|
||||
img = newImg;
|
||||
}
|
||||
|
||||
set setMusic(String newMusic) {
|
||||
music = newMusic;
|
||||
}
|
||||
|
||||
set setContinueTime(DateTime newContinueTime) {
|
||||
continueTime = newContinueTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Clock(id: $id, userId: $userId, text: $text, img: $img, music: $music, continueTime: $continueTime)';
|
||||
}
|
||||
}
|
||||
class Clock {
|
||||
int? id;
|
||||
int userId;
|
||||
String text;
|
||||
String img;
|
||||
String music;
|
||||
DateTime continueTime;
|
||||
|
||||
Clock({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.text,
|
||||
required this.img,
|
||||
required this.music,
|
||||
required this.continueTime,
|
||||
});
|
||||
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'userId': userId,
|
||||
'text': "$text",
|
||||
'img': "$img",
|
||||
'music': "$music",
|
||||
'continueTime': "${continueTime.toIso8601String()}",
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getUserId => userId;
|
||||
|
||||
String get getText => text;
|
||||
|
||||
String get getImg => img;
|
||||
|
||||
String get getMusic => music;
|
||||
|
||||
DateTime get getContinueTime => continueTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setText(String newText) {
|
||||
text = newText;
|
||||
}
|
||||
|
||||
set setImg(String newImg) {
|
||||
img = newImg;
|
||||
}
|
||||
|
||||
set setMusic(String newMusic) {
|
||||
music = newMusic;
|
||||
}
|
||||
|
||||
set setContinueTime(DateTime newContinueTime) {
|
||||
continueTime = newContinueTime;
|
||||
}
|
||||
|
||||
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Clock(id: $id, userId: $userId, text: $text, img: $img, music: $music, continueTime: $continueTime)';
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,125 +1,127 @@
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
|
||||
class Course {
|
||||
int? id;
|
||||
int? userId;
|
||||
int courseId;
|
||||
String name;
|
||||
double credit;
|
||||
String teacher;
|
||||
String location;
|
||||
String remark;
|
||||
DateTime startTime;
|
||||
DateTime endTime;
|
||||
|
||||
Course({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.courseId,
|
||||
required this.name,
|
||||
required this.credit,
|
||||
required this.teacher,
|
||||
required this.location,
|
||||
required this.remark,
|
||||
required this.startTime,
|
||||
required this.endTime,
|
||||
});
|
||||
|
||||
Map<String,dynamic> toMap(){
|
||||
return {
|
||||
'id': id,
|
||||
'userId':userId,
|
||||
'courseId':courseId,
|
||||
'name':"$name",
|
||||
'credit':credit,
|
||||
'teacher':"$teacher",
|
||||
'location':"$location",
|
||||
'remark':"$remark",
|
||||
'startTime':"${startTime.toIso8601String()}",
|
||||
'endTime':"${endTime.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
factory Course.fromJson(Map<String, dynamic> course) {
|
||||
return Course(
|
||||
id: course['id'],
|
||||
userId: course['userId'],
|
||||
courseId: course['courseId'],
|
||||
name: course['name'],
|
||||
credit: 1.0*course['credit'],
|
||||
teacher: course['teacher'],
|
||||
location: course['location'],
|
||||
remark: course['remark'],
|
||||
startTime: DateTime.parse(course['startTime']),
|
||||
endTime: DateTime.parse(course['endTime']),
|
||||
);
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int? get getUserId => userId;
|
||||
|
||||
int get getCourseId => courseId;
|
||||
|
||||
String get getName => name;
|
||||
|
||||
double get getCredit => credit;
|
||||
|
||||
String get getTeacher => teacher;
|
||||
|
||||
String get getLocation => location;
|
||||
|
||||
String get getRemark => remark;
|
||||
|
||||
DateTime get getStartTime => startTime;
|
||||
|
||||
DateTime get getEndTime => endTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setCourseId(int newCourseId) {
|
||||
courseId = newCourseId;
|
||||
}
|
||||
|
||||
set setName(String newName) {
|
||||
name = newName;
|
||||
}
|
||||
|
||||
set setCredit(double newCredit) {
|
||||
credit = newCredit;
|
||||
}
|
||||
|
||||
set setTeacher(String newTeacher) {
|
||||
teacher = newTeacher;
|
||||
}
|
||||
|
||||
set setLocation(String newLocation) {
|
||||
location = newLocation;
|
||||
}
|
||||
|
||||
set setRemark(String newRemark) {
|
||||
remark = newRemark;
|
||||
}
|
||||
|
||||
set setstartTime(DateTime newstartTime) {
|
||||
startTime = newstartTime;
|
||||
}
|
||||
|
||||
set setendTime(DateTime newendTime) {
|
||||
endTime = newendTime;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Course(id: $id, userid: $userId, courseId:$courseId, name: $name, credit: $credit, teacher: $teacher, location: $location, remark: $remark, startTime: $startTime, endTime: $endTime)';
|
||||
}
|
||||
}
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
|
||||
class Course {
|
||||
int? id;
|
||||
int? userId;
|
||||
int courseId;
|
||||
String name;
|
||||
double credit;
|
||||
String teacher;
|
||||
String location;
|
||||
String remark;
|
||||
DateTime start;
|
||||
DateTime end;
|
||||
|
||||
Course({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.courseId,
|
||||
required this.name,
|
||||
required this.credit,
|
||||
required this.teacher,
|
||||
required this.location,
|
||||
required this.remark,
|
||||
required this.start,
|
||||
required this.end,
|
||||
});
|
||||
|
||||
Map<String,dynamic> toMap(){
|
||||
return {
|
||||
'userId':userId,
|
||||
'courseId':courseId,
|
||||
'name':"$name",
|
||||
'credit':credit,
|
||||
'teacher':"$teacher",
|
||||
'location':"$location",
|
||||
'remark':"$remark",
|
||||
'start':"${start.toIso8601String()}",
|
||||
'end':"${end.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
//初始化任务在周几对应的x坐标
|
||||
var weekListPixel=[0,Setting.deviceWidth*0.12,Setting.deviceWidth*0.24,Setting.deviceWidth*0.36,Setting.deviceWidth*0.48,Setting.deviceWidth*0.60,Setting.deviceWidth*0.72];
|
||||
// Course(this.name, this.teacher, this.location, this.start, this.end);
|
||||
double getdy()
|
||||
{
|
||||
double y=(((start.hour-7)*60+start.minute)*0.9)*Setting.pixelToMinuteRatio_ratio;
|
||||
return y;
|
||||
}
|
||||
double getdx()
|
||||
{
|
||||
int x=start.weekday-1;
|
||||
return weekListPixel[x].toDouble();
|
||||
}
|
||||
double getHeight(){
|
||||
return (((end.hour-7)*60+end.minute)*0.9-this.getdy())*Setting.pixelToMinuteRatio_ratio;
|
||||
}
|
||||
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int? get getUserId => userId;
|
||||
|
||||
int get getCourseId => courseId;
|
||||
|
||||
String get getName => name;
|
||||
|
||||
double get getCredit => credit;
|
||||
|
||||
String get getTeacher => teacher;
|
||||
|
||||
String get getLocation => location;
|
||||
|
||||
String get getRemark => remark;
|
||||
|
||||
DateTime get getStart => start;
|
||||
|
||||
DateTime get getEnd => end;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setCourseId(int newCourseId) {
|
||||
courseId = newCourseId;
|
||||
}
|
||||
|
||||
set setName(String newName) {
|
||||
name = newName;
|
||||
}
|
||||
|
||||
set setCredit(double newCredit) {
|
||||
credit = newCredit;
|
||||
}
|
||||
|
||||
set setTeacher(String newTeacher) {
|
||||
teacher = newTeacher;
|
||||
}
|
||||
|
||||
set setLocation(String newLocation) {
|
||||
location = newLocation;
|
||||
}
|
||||
|
||||
set setRemark(String newRemark) {
|
||||
remark = newRemark;
|
||||
}
|
||||
|
||||
set setStart(DateTime newStart) {
|
||||
start = newStart;
|
||||
}
|
||||
|
||||
set setEnd(DateTime newEnd) {
|
||||
end = newEnd;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Course(id: $id, userid: $userId, courseId:$courseId, name: $name, credit: $credit, teacher: $teacher, location: $location, remark: $remark, start: $start, end: $end)';
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,117 +1,117 @@
|
||||
class CourseForm{
|
||||
late String course;
|
||||
late double credit ;
|
||||
late String note;
|
||||
late int startWeek;
|
||||
late int endWeek;
|
||||
late int startTime;
|
||||
late int endTime;
|
||||
late String teacher;
|
||||
late String location;
|
||||
late List<int> selectedDays = [];
|
||||
|
||||
// CourseForm({
|
||||
// required this.course,
|
||||
// required this.credit,
|
||||
// required this.note,
|
||||
// required this.day,
|
||||
// required this.startWeek,
|
||||
// required this.endWeek,
|
||||
// required this.startTime,
|
||||
// required this.endTime,
|
||||
// required this.teacher,
|
||||
// required this.location,
|
||||
// required this.selectedDays,
|
||||
// });
|
||||
|
||||
String setCourse(String course){
|
||||
this.course = course;
|
||||
return this.course;
|
||||
}
|
||||
|
||||
double setCredit(double credit){
|
||||
this.credit = credit;
|
||||
return this.credit;
|
||||
}
|
||||
|
||||
String setNote (String note){
|
||||
this.note = note;
|
||||
return this.note;
|
||||
}
|
||||
|
||||
int setStartWeek (int startWeek){
|
||||
this.startWeek = startWeek;
|
||||
return this.startWeek;
|
||||
}
|
||||
|
||||
int setEndWeek (int endWeek){
|
||||
this.endWeek = endWeek;
|
||||
return this.endWeek;
|
||||
}
|
||||
|
||||
int setStartTime (int startTime){
|
||||
this.startTime = startTime;
|
||||
return this.startTime;
|
||||
}
|
||||
|
||||
int setEndTime (int endTime){
|
||||
this.endTime = endTime;
|
||||
return this.endTime;
|
||||
}
|
||||
|
||||
String setTeacher (String teacher){
|
||||
this.teacher = teacher;
|
||||
return this.teacher;
|
||||
}
|
||||
|
||||
String setLocation (String location){
|
||||
this.location = location;
|
||||
return this.location;
|
||||
}
|
||||
|
||||
List<int> setSelectedDays (List<int> selectedDays){
|
||||
this.selectedDays = selectedDays;
|
||||
return this.selectedDays;
|
||||
}
|
||||
|
||||
String getCourse(){
|
||||
return this.course;
|
||||
}
|
||||
|
||||
double getCredit(){
|
||||
return this.credit;
|
||||
}
|
||||
|
||||
String getNote(){
|
||||
return this.note;
|
||||
}
|
||||
|
||||
int getStartWeek(){
|
||||
return this.startWeek;
|
||||
}
|
||||
|
||||
int getEndWeek(){
|
||||
return this.endWeek;
|
||||
}
|
||||
|
||||
int getStartTime(){
|
||||
return this.startTime;
|
||||
}
|
||||
|
||||
int getEndTime(){
|
||||
return this.endTime;
|
||||
}
|
||||
|
||||
String getTeacher(){
|
||||
return this.teacher;
|
||||
}
|
||||
|
||||
String getLocation(){
|
||||
return this.location;
|
||||
}
|
||||
|
||||
List<int> getSelectedDays(){
|
||||
return this.selectedDays;
|
||||
}
|
||||
|
||||
class CourseForm{
|
||||
late String course;
|
||||
late double credit ;
|
||||
late String note;
|
||||
late int startWeek;
|
||||
late int endWeek;
|
||||
late int startTime;
|
||||
late int endTime;
|
||||
late String teacher;
|
||||
late String location;
|
||||
late List<int> selectedDays = [];
|
||||
|
||||
// CourseForm({
|
||||
// required this.course,
|
||||
// required this.credit,
|
||||
// required this.note,
|
||||
// required this.day,
|
||||
// required this.startWeek,
|
||||
// required this.endWeek,
|
||||
// required this.startTime,
|
||||
// required this.endTime,
|
||||
// required this.teacher,
|
||||
// required this.location,
|
||||
// required this.selectedDays,
|
||||
// });
|
||||
|
||||
String setCourse(String course){
|
||||
this.course = course;
|
||||
return this.course;
|
||||
}
|
||||
|
||||
double setCredit(double credit){
|
||||
this.credit = credit;
|
||||
return this.credit;
|
||||
}
|
||||
|
||||
String setNote (String note){
|
||||
this.note = note;
|
||||
return this.note;
|
||||
}
|
||||
|
||||
int setStartWeek (int startWeek){
|
||||
this.startWeek = startWeek;
|
||||
return this.startWeek;
|
||||
}
|
||||
|
||||
int setEndWeek (int endWeek){
|
||||
this.endWeek = endWeek;
|
||||
return this.endWeek;
|
||||
}
|
||||
|
||||
int setStartTime (int startTime){
|
||||
this.startTime = startTime;
|
||||
return this.startTime;
|
||||
}
|
||||
|
||||
int setEndTime (int endTime){
|
||||
this.endTime = endTime;
|
||||
return this.endTime;
|
||||
}
|
||||
|
||||
String setTeacher (String teacher){
|
||||
this.teacher = teacher;
|
||||
return this.teacher;
|
||||
}
|
||||
|
||||
String setLocation (String location){
|
||||
this.location = location;
|
||||
return this.location;
|
||||
}
|
||||
|
||||
List<int> setSelectedDays (List<int> selectedDays){
|
||||
this.selectedDays = selectedDays;
|
||||
return this.selectedDays;
|
||||
}
|
||||
|
||||
String getCourse(){
|
||||
return this.course;
|
||||
}
|
||||
|
||||
double getCredit(){
|
||||
return this.credit;
|
||||
}
|
||||
|
||||
String getNote(){
|
||||
return this.note;
|
||||
}
|
||||
|
||||
int getStartWeek(){
|
||||
return this.startWeek;
|
||||
}
|
||||
|
||||
int getEndWeek(){
|
||||
return this.endWeek;
|
||||
}
|
||||
|
||||
int getStartTime(){
|
||||
return this.startTime;
|
||||
}
|
||||
|
||||
int getEndTime(){
|
||||
return this.endTime;
|
||||
}
|
||||
|
||||
String getTeacher(){
|
||||
return this.teacher;
|
||||
}
|
||||
|
||||
String getLocation(){
|
||||
return this.location;
|
||||
}
|
||||
|
||||
List<int> getSelectedDays(){
|
||||
return this.selectedDays;
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,83 +0,0 @@
|
||||
class FreeTime {
|
||||
int? id;
|
||||
int? userId;
|
||||
String? content;
|
||||
String? name;
|
||||
DateTime startTime;
|
||||
DateTime endTime;
|
||||
|
||||
FreeTime({
|
||||
this.id,
|
||||
this.userId,
|
||||
this.content,
|
||||
this.name,
|
||||
required this.startTime,
|
||||
required this.endTime,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'id': id,
|
||||
'userId': userId,
|
||||
'content': "$content",
|
||||
'name': "$name",
|
||||
'startTime': "${startTime.toIso8601String()}",
|
||||
'endTime': "${endTime.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
factory FreeTime.fromJson(Map<String, dynamic> task) {
|
||||
return FreeTime(
|
||||
// id: task['id'],
|
||||
// userId: task['userId'],
|
||||
// content: task['content'],
|
||||
// name: task['name'],
|
||||
startTime: DateTime.parse(task['startTime']),
|
||||
endTime: DateTime.parse(task['endTime']),
|
||||
);
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int? get getUserId => userId;
|
||||
|
||||
String? get getContent => content;
|
||||
|
||||
String? get getName => name;
|
||||
|
||||
DateTime get getStartTime => startTime;
|
||||
|
||||
DateTime get getEndTime => endTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setContent(String newContent) {
|
||||
content = newContent;
|
||||
}
|
||||
|
||||
set setName(String newName) {
|
||||
name = newName;
|
||||
}
|
||||
|
||||
set setStartTime(DateTime newStartTime) {
|
||||
startTime = newStartTime;
|
||||
}
|
||||
|
||||
set setEndTime(DateTime newEndTime) {
|
||||
endTime = newEndTime;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'FreeTime(id: $id, userId: $userId, content: $content, name: $name, startTime: $startTime, endTime: $endTime)';
|
||||
}
|
||||
}
|
||||
@ -1,88 +1,82 @@
|
||||
class ScheduleForm {
|
||||
late String content;
|
||||
late String name;
|
||||
late int startWeek;
|
||||
late int endWeek;
|
||||
late DateTime startTime;
|
||||
late DateTime endTime;
|
||||
late List<int> selectedDays = [];
|
||||
|
||||
// ScheduleForm({
|
||||
// this.id,
|
||||
// required this.userId,
|
||||
// required this.content,
|
||||
// required this.scheduleFormId,
|
||||
// required this.name,
|
||||
// required this.startTime,
|
||||
// required this.endTime,
|
||||
// required this.type
|
||||
// });
|
||||
|
||||
// Map<String, dynamic> toMap() {
|
||||
// return {
|
||||
// 'userId': userId,
|
||||
// 'content': "$content",
|
||||
// 'scheduleFormId': scheduleFormId,
|
||||
// 'name': "$name",
|
||||
// 'startTime': "${startTime.toIso8601String()}",
|
||||
// 'endTime': "${endTime.toIso8601String()}"
|
||||
// };
|
||||
// }
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'content': "$content",
|
||||
'name': "$name",
|
||||
'startWeek': startWeek,
|
||||
'endWeek': endWeek,
|
||||
'startTime': startTime,
|
||||
'endTime': endTime,
|
||||
'selectedDays': selectedDays
|
||||
};
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int get getStartWeek => startWeek;
|
||||
int get getEndWeek => endWeek;
|
||||
DateTime get getStartTime => startTime;
|
||||
DateTime get getEndTime => endTime;
|
||||
String get getName => name;
|
||||
String get getContent => content;
|
||||
List<int> get getSelectedDays => selectedDays;
|
||||
|
||||
|
||||
// Setter methods
|
||||
set setStartWeek(int newStartWeek) {
|
||||
startWeek = newStartWeek;
|
||||
}
|
||||
|
||||
set setEndWeek(int newEndWeek) {
|
||||
endWeek = newEndWeek;
|
||||
}
|
||||
|
||||
set setStartTime(DateTime newStartTime) {
|
||||
startTime = newStartTime;
|
||||
}
|
||||
|
||||
set setEndTime(DateTime newEndTime) {
|
||||
endTime = newEndTime;
|
||||
}
|
||||
|
||||
set setName(String newName) {
|
||||
name = newName;
|
||||
}
|
||||
|
||||
set setContent(String newContent) {
|
||||
content = newContent;
|
||||
}
|
||||
|
||||
set setSelectedDays(List<int> newSelectedDays) {
|
||||
selectedDays = newSelectedDays;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'ScheduleForm(content: $content, name: $name, startWeek: $startWeek, endWeek: $endWeek, startTime: $startTime, endTime: $endTime, selectedDays: $selectedDays)';
|
||||
}
|
||||
}
|
||||
class ScheduleForm {
|
||||
int? id;
|
||||
int userId;
|
||||
String content;
|
||||
int ScheduleFormId;
|
||||
String name;
|
||||
DateTime startTime;
|
||||
DateTime endTime;
|
||||
String type;
|
||||
|
||||
ScheduleForm({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.content,
|
||||
required this.ScheduleFormId,
|
||||
required this.name,
|
||||
required this.startTime,
|
||||
required this.endTime,
|
||||
required this.type
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'userId': userId,
|
||||
'content': "$content",
|
||||
'ScheduleFormId': ScheduleFormId,
|
||||
'name': "$name",
|
||||
'startTime': "${startTime.toIso8601String()}",
|
||||
'endTime': "${endTime.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getUserId => userId;
|
||||
|
||||
String get getContent => content;
|
||||
|
||||
int get getScheduleFormId => ScheduleFormId;
|
||||
|
||||
String get getName => name;
|
||||
|
||||
DateTime get getStartTime => startTime;
|
||||
|
||||
DateTime get getEndTime => endTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setContent(String newContent) {
|
||||
content = newContent;
|
||||
}
|
||||
|
||||
set setScheduleFormId(int newScheduleFormId) {
|
||||
ScheduleFormId = newScheduleFormId;
|
||||
}
|
||||
|
||||
set setName(String newName) {
|
||||
name = newName;
|
||||
}
|
||||
|
||||
set setStartTime(DateTime newStartTime) {
|
||||
startTime = newStartTime;
|
||||
}
|
||||
|
||||
set setEndTime(DateTime newEndTime) {
|
||||
endTime = newEndTime;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'ScheduleForm(id: $id, userId: $userId, content: $content, ScheduleFormId: $ScheduleFormId, name: $name, startTime: $startTime, endTime: $endTime)';
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,93 +1,80 @@
|
||||
class Task {
|
||||
int? id;
|
||||
int userId;
|
||||
String content;
|
||||
int taskId;
|
||||
String name;
|
||||
DateTime startTime;
|
||||
DateTime endTime;
|
||||
|
||||
Task({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.content,
|
||||
required this.taskId,
|
||||
required this.name,
|
||||
required this.startTime,
|
||||
required this.endTime,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'id': id,
|
||||
'userId': userId,
|
||||
'content': "$content",
|
||||
'taskId': taskId,
|
||||
'name': "$name",
|
||||
'startTime': "${startTime.toIso8601String()}",
|
||||
'endTime': "${endTime.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
factory Task.fromJson(Map<String, dynamic> task) {
|
||||
return Task(
|
||||
id: task['id'],
|
||||
userId: task['userId'],
|
||||
content: task['content'],
|
||||
taskId: task['taskId'],
|
||||
name: task['name'],
|
||||
startTime: DateTime.parse(task['startTime']),
|
||||
endTime: DateTime.parse(task['endTime']),
|
||||
);
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getUserId => userId;
|
||||
|
||||
String get getContent => content;
|
||||
|
||||
int get getTaskId => taskId;
|
||||
|
||||
String get getName => name;
|
||||
|
||||
DateTime get getStartTime => startTime;
|
||||
|
||||
DateTime get getEndTime => endTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setContent(String newContent) {
|
||||
content = newContent;
|
||||
}
|
||||
|
||||
set setTaskId(int newTaskId) {
|
||||
taskId = newTaskId;
|
||||
}
|
||||
|
||||
set setName(String newName) {
|
||||
name = newName;
|
||||
}
|
||||
|
||||
set setStartTime(DateTime newStartTime) {
|
||||
startTime = newStartTime;
|
||||
}
|
||||
|
||||
set setEndTime(DateTime newEndTime) {
|
||||
endTime = newEndTime;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Task(id: $id, userId: $userId, content: $content, taskId: $taskId, name: $name, startTime: $startTime, endTime: $endTime)';
|
||||
}
|
||||
}
|
||||
class Task {
|
||||
int? id;
|
||||
int userId;
|
||||
String content;
|
||||
int taskId;
|
||||
String name;
|
||||
DateTime startTime;
|
||||
DateTime endTime;
|
||||
|
||||
Task({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.content,
|
||||
required this.taskId,
|
||||
required this.name,
|
||||
required this.startTime,
|
||||
required this.endTime,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'userId': userId,
|
||||
'content': "$content",
|
||||
'taskId': taskId,
|
||||
'name': "$name",
|
||||
'startTime': "${startTime.toIso8601String()}",
|
||||
'endTime': "${endTime.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getUserId => userId;
|
||||
|
||||
String get getContent => content;
|
||||
|
||||
int get getTaskId => taskId;
|
||||
|
||||
String get getName => name;
|
||||
|
||||
DateTime get getStartTime => startTime;
|
||||
|
||||
DateTime get getEndTime => endTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setContent(String newContent) {
|
||||
content = newContent;
|
||||
}
|
||||
|
||||
set setTaskId(int newTaskId) {
|
||||
taskId = newTaskId;
|
||||
}
|
||||
|
||||
set setName(String newName) {
|
||||
name = newName;
|
||||
}
|
||||
|
||||
set setStartTime(DateTime newStartTime) {
|
||||
startTime = newStartTime;
|
||||
}
|
||||
|
||||
set setEndTime(DateTime newEndTime) {
|
||||
endTime = newEndTime;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Task(id: $id, userId: $userId, content: $content, taskId: $taskId, name: $name, startTime: $startTime, endTime: $endTime)';
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,73 +1,53 @@
|
||||
class Team {
|
||||
int? id;
|
||||
int leaderId;
|
||||
String teamName;
|
||||
int maxNumber;
|
||||
String? introduce;
|
||||
|
||||
Team({
|
||||
this.id,
|
||||
required this.leaderId,
|
||||
required this.teamName,
|
||||
required this.maxNumber,
|
||||
this.introduce
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'id': id,
|
||||
'leaderId': leaderId,
|
||||
'teamName': "$teamName",
|
||||
'maxNumber': maxNumber,
|
||||
'introduce': "$introduce"
|
||||
};
|
||||
}
|
||||
|
||||
factory Team.fromJson(Map<String, dynamic> json) {
|
||||
return Team(
|
||||
id: json['id'],
|
||||
leaderId: json['leaderId'],
|
||||
teamName: json['teamName'],
|
||||
maxNumber: json['maxNumber'],
|
||||
introduce: json['introduce'],
|
||||
);
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getLeaderId => leaderId;
|
||||
|
||||
String get getTeamName => teamName;
|
||||
|
||||
int get getMaxNumber => maxNumber;
|
||||
|
||||
String? get getIntroduce => introduce;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setLeaderId(int newLeaderId) {
|
||||
leaderId = newLeaderId;
|
||||
}
|
||||
|
||||
set setTeamName(String newTeamName) {
|
||||
teamName = newTeamName;
|
||||
}
|
||||
|
||||
set setMaxNumber(int newMaxNumber) {
|
||||
maxNumber = newMaxNumber;
|
||||
}
|
||||
|
||||
set setIntroduce(String newIntroduce) {
|
||||
introduce = newIntroduce;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Team{id: $id, leaderId: $leaderId, teamName: $teamName, maxNumber: $maxNumber, introduce: $introduce}';
|
||||
}
|
||||
}
|
||||
class Team {
|
||||
int? id;
|
||||
int leaderId;
|
||||
String teamName;
|
||||
int maxNumber;
|
||||
|
||||
Team({
|
||||
this.id,
|
||||
required this.leaderId,
|
||||
required this.teamName,
|
||||
required this.maxNumber,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'leaderId': leaderId,
|
||||
'teamName': "$teamName",
|
||||
'maxNumber': maxNumber,
|
||||
};
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getLeaderId => leaderId;
|
||||
|
||||
String get getTeamName => teamName;
|
||||
|
||||
int get getMaxNumber => maxNumber;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setLeaderId(int newLeaderId) {
|
||||
leaderId = newLeaderId;
|
||||
}
|
||||
|
||||
set setTeamName(String newTeamName) {
|
||||
teamName = newTeamName;
|
||||
}
|
||||
|
||||
set setMaxNumber(int newMaxNumber) {
|
||||
maxNumber = newMaxNumber;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Team(id: $id, leaderId:$leaderId, teamName:$teamName, maxNumber: $maxNumber)';
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,121 +1,98 @@
|
||||
class Work {
|
||||
late int? id;
|
||||
late int userId;
|
||||
late String status;
|
||||
late String content;
|
||||
late String name;
|
||||
late int teamId;
|
||||
late int workId;
|
||||
late DateTime endTime;
|
||||
late DateTime startTime;
|
||||
late String? teamName;
|
||||
|
||||
Work({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.status,
|
||||
required this.content,
|
||||
required this.teamId,
|
||||
this.teamName,
|
||||
required this.name,
|
||||
required this.workId,
|
||||
required this.endTime,
|
||||
required this.startTime,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'id': id,
|
||||
'userId': userId,
|
||||
'status': "$status",
|
||||
'content': "$content",
|
||||
'teamId': teamId,
|
||||
'name': "$name",
|
||||
'workId': workId,
|
||||
'endTime': "${endTime.toIso8601String()}",
|
||||
'startTime': "${startTime.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
factory Work.fromJson(Map<String, dynamic> work) {
|
||||
return Work(
|
||||
id: work['id'],
|
||||
userId: work['userId'],
|
||||
status: work['status'],
|
||||
content: work['content'],
|
||||
teamId: work['teamId'],
|
||||
name: work['name'],
|
||||
workId: work['workId'],
|
||||
endTime: DateTime.parse(work['endTime']),
|
||||
startTime: DateTime.parse(work['startTime']),
|
||||
);
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getUserId => userId;
|
||||
|
||||
String get getStatus => status;
|
||||
|
||||
String get getContent => content;
|
||||
|
||||
String get getName => name;
|
||||
|
||||
String? get getTeamName => teamName;
|
||||
|
||||
int get getTeamId => teamId;
|
||||
|
||||
int get getWorkId => workId;
|
||||
|
||||
DateTime get getEndTime => endTime;
|
||||
|
||||
DateTime get getStartTime => startTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setStatus(String newStatus) {
|
||||
status = newStatus;
|
||||
}
|
||||
|
||||
set setContent(String newcontent) {
|
||||
content = newcontent;
|
||||
}
|
||||
|
||||
set setTeamId(int newTeamId) {
|
||||
teamId = newTeamId;
|
||||
}
|
||||
|
||||
set setTeamName(String newTeamName) {
|
||||
teamName = newTeamName;
|
||||
}
|
||||
|
||||
set setName(String newName) {
|
||||
name = newName;
|
||||
}
|
||||
|
||||
set setWorkId(int newWorkId) {
|
||||
workId = newWorkId;
|
||||
}
|
||||
|
||||
set setEndTime(DateTime newEndTime) {
|
||||
endTime = newEndTime;
|
||||
}
|
||||
|
||||
set setStartTime(DateTime newStartTime) {
|
||||
startTime = newStartTime;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Work(id: $id, userId:$userId, name:$name, status: $status, content: $content, teamId: $teamId, workId: $workId, endTime: $endTime, startTime: $startTime)';
|
||||
}
|
||||
}
|
||||
class Work {
|
||||
int? id;
|
||||
int userId;
|
||||
String status;
|
||||
String workContent;
|
||||
int teamId;
|
||||
int functionaryId;
|
||||
int workId;
|
||||
DateTime endTime;
|
||||
DateTime startTime;
|
||||
|
||||
Work({
|
||||
this.id,
|
||||
required this.userId,
|
||||
required this.status,
|
||||
required this.workContent,
|
||||
required this.teamId,
|
||||
required this.functionaryId,
|
||||
required this.workId,
|
||||
required this.endTime,
|
||||
required this.startTime,
|
||||
});
|
||||
|
||||
Map<String, dynamic> toMap() {
|
||||
return {
|
||||
'userId': userId,
|
||||
'status': "$status",
|
||||
'workContent': "$workContent",
|
||||
'teamId': teamId,
|
||||
'functionaryId': functionaryId,
|
||||
'workId': workId,
|
||||
'endTime': "${endTime.toIso8601String()}",
|
||||
'startTime': "${startTime.toIso8601String()}"
|
||||
};
|
||||
}
|
||||
|
||||
// Getter methods
|
||||
int? get getId => id;
|
||||
|
||||
int get getUserId => userId;
|
||||
|
||||
String get getStatus => status;
|
||||
|
||||
String get getWorkContent => workContent;
|
||||
|
||||
int get getTeamId => teamId;
|
||||
|
||||
int get getFunctionaryId => functionaryId;
|
||||
|
||||
int get getWorkId => workId;
|
||||
|
||||
DateTime get getEndTime => endTime;
|
||||
|
||||
DateTime get getStartTime => startTime;
|
||||
|
||||
// Setter methods
|
||||
set setId(int newId) {
|
||||
id = newId;
|
||||
}
|
||||
|
||||
set setUserId(int newUserId) {
|
||||
userId = newUserId;
|
||||
}
|
||||
|
||||
set setStatus(String newStatus) {
|
||||
status = newStatus;
|
||||
}
|
||||
|
||||
set setWorkContent(String newWorkContent) {
|
||||
workContent = newWorkContent;
|
||||
}
|
||||
|
||||
set setTeamId(int newTeamId) {
|
||||
teamId = newTeamId;
|
||||
}
|
||||
|
||||
set setFunctionaryId(int newFunctionaryId) {
|
||||
functionaryId = newFunctionaryId;
|
||||
}
|
||||
|
||||
set setWorkId(int newWorkId) {
|
||||
workId = newWorkId;
|
||||
}
|
||||
|
||||
set setEndTime(DateTime newEndTime) {
|
||||
endTime = newEndTime;
|
||||
}
|
||||
|
||||
set setStartTime(DateTime newStartTime) {
|
||||
startTime = newStartTime;
|
||||
}
|
||||
|
||||
// toString method
|
||||
@override
|
||||
String toString() {
|
||||
return 'Work(id: $id, userId:$userId, status: $status, workContent: $workContent, teamId: $teamId, functionaryId: $functionaryId, workId: $workId, endTime: $endTime, startTime: $startTime)';
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,49 +1,31 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:provider/provider.dart';
|
||||
import 'package:timemanagerapp/provider/TeamProvider.dart';
|
||||
import 'package:timemanagerapp/provider/TeamUserProvider.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
import 'package:timemanagerapp/util/MyLogger.dart';
|
||||
import 'package:timemanagerapp/widgets/HomeWidget.dart';
|
||||
import 'package:timemanagerapp/provider/TimeProvider.dart';
|
||||
|
||||
init() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await Setting.init();
|
||||
}
|
||||
|
||||
Future<void> main() async {
|
||||
await init();
|
||||
runApp(MyApp());
|
||||
// Logger();
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
const MyApp({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
Setting.deviceWidth = MediaQuery.of(context).size.width;
|
||||
// print("deviceWidth获取1: ${Setting.deviceWidth}");
|
||||
return MultiProvider( //全局状态管理Timetable
|
||||
providers: [
|
||||
ChangeNotifierProvider(create: (ctx) => TimeProvider()),
|
||||
ChangeNotifierProvider(create: (ctx) => TeamProvider()),
|
||||
ChangeNotifierProvider(create: (ctx) => TeamUserProvider()),
|
||||
],
|
||||
child: MaterialApp(
|
||||
home: Scaffold(
|
||||
body: LayoutBuilder(
|
||||
builder: (context, constraints) {
|
||||
Setting.deviceWidth = constraints.maxWidth;
|
||||
// print("deviceWidth获取2: ${Setting.deviceWidth}");
|
||||
// 在此处使用宽度
|
||||
return HomeWidget();
|
||||
},
|
||||
),
|
||||
),
|
||||
),
|
||||
); // MaterialApp
|
||||
}
|
||||
}
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
import 'package:timemanagerapp/widgets/HomeWidget.dart';
|
||||
|
||||
init() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await Setting.init();
|
||||
}
|
||||
|
||||
void main() async {
|
||||
await init();
|
||||
runApp(MyApp());
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
const MyApp({Key? key}) : super(key: key);
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
Setting.deviceWidth = MediaQuery.of(context).size.width;
|
||||
return MaterialApp(
|
||||
debugShowCheckedModeBanner: false,
|
||||
home: Scaffold(
|
||||
// appBar: AppBar(
|
||||
// title: Text('测试'),
|
||||
// ),
|
||||
body: HomeWidget(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,20 +0,0 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class TeamProvider extends ChangeNotifier {
|
||||
int _updatTeamCount = 0;
|
||||
|
||||
int get updatTeamCount => _updatTeamCount;
|
||||
|
||||
|
||||
set updatTeamCount(int value) {
|
||||
print("provider手动更新Team表");
|
||||
_updatTeamCount = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void updatTeame() {
|
||||
print("provider手动更新Team表");
|
||||
_updatTeamCount = ~_updatTeamCount;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class TeamUserProvider extends ChangeNotifier {
|
||||
int _updatTeamUserCount = 0;
|
||||
|
||||
int get updatTeameCount => _updatTeamUserCount;
|
||||
|
||||
|
||||
set updatTeameUserCount(int value) {
|
||||
print("provider手动更新TeamUser表");
|
||||
_updatTeamUserCount = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void updatTeameUser() {
|
||||
print("provider手动更新TeamUser表");
|
||||
_updatTeamUserCount = ~_updatTeamUserCount;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
@ -1,20 +0,0 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
|
||||
class TimeProvider extends ChangeNotifier {
|
||||
int _updatTimtTablecount = 0;
|
||||
|
||||
int get updatTimtTablecount => _updatTimtTablecount;
|
||||
|
||||
|
||||
set updatTimtTablecount(int value) {
|
||||
print("provider手动更新课表");
|
||||
_updatTimtTablecount = value;
|
||||
notifyListeners();
|
||||
}
|
||||
|
||||
void updateTimetable() {
|
||||
print("provider手动更新课表");
|
||||
_updatTimtTablecount = ~_updatTimtTablecount;
|
||||
notifyListeners();
|
||||
}
|
||||
}
|
||||
@ -1,22 +1,24 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/widgets/AddCourseFormWidget.dart';
|
||||
|
||||
import '../entity/Course.dart';
|
||||
|
||||
class AddCourseRoute extends StatelessWidget {
|
||||
final Course? exitCourse;
|
||||
|
||||
AddCourseRoute({this.exitCourse});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('编辑自定义课程'),
|
||||
),
|
||||
body: AddCourseFormWidget(exitCourse: exitCourse),
|
||||
);
|
||||
}
|
||||
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/widgets/AddCourseFormWidget.dart';
|
||||
|
||||
class AddCourseRoute extends StatelessWidget {
|
||||
final VoidCallback onCourseAdded;
|
||||
|
||||
AddCourseRoute({required this.onCourseAdded});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('添加自定义课程'),
|
||||
),
|
||||
body: AddCourseFormWidget(),
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
dispose() {//返回时调用
|
||||
onCourseAdded();
|
||||
}
|
||||
}
|
||||
@ -1,21 +1,15 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/widgets/AddScheduleFormWidget.dart';
|
||||
|
||||
class AddScheduleRoute extends StatelessWidget {
|
||||
AddScheduleRoute({Key? key, required this.scheduleType, this.teamId, this.exitSchedule}) : super(key: key);
|
||||
|
||||
final String scheduleType; //可选值为task和work
|
||||
final int? teamId;
|
||||
final exitSchedule;
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: scheduleType == 'task' ? Text('编辑个人计划') : Text('编辑团队任务'),
|
||||
),
|
||||
body: AddScheduleFormWidget(scheduleType: scheduleType, teamId: teamId, exitSchedule: exitSchedule),
|
||||
);
|
||||
}
|
||||
}
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/widgets/AddScheduleFormWidget.dart';
|
||||
|
||||
class AddScheduleRoute extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('添加自定义个人计划'),
|
||||
),
|
||||
body: AddScheduleFormWidget(),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,17 +0,0 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../widgets/AddTeamWidget.dart';
|
||||
|
||||
class AddTeamRoute extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('编辑团队信息'),
|
||||
),
|
||||
body: AddTeamWidget(),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,17 +0,0 @@
|
||||
// import 'package:flutter/cupertino.dart';
|
||||
// import 'package:flutter/material.dart';
|
||||
//
|
||||
// import '../widgets/ManageUserTeamWidget.dart';
|
||||
//
|
||||
// class ManageUserTeamRoute extends StatelessWidget {
|
||||
//
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// return Scaffold(
|
||||
// appBar: AppBar(
|
||||
// title: Text('团队成员管理'),
|
||||
// ),
|
||||
// // body: ManageUserTeamWidget(),
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
@ -1,96 +0,0 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/controller/TeamController.dart';
|
||||
|
||||
import '../setting/Setting.dart';
|
||||
import '../widgets/AddTeamWidget.dart';
|
||||
import '../widgets/JoinTeamWidget.dart';
|
||||
import '../widgets/TeamWidget.dart';
|
||||
|
||||
class TeamRoute extends StatelessWidget {
|
||||
//TeamWidgetKey
|
||||
TeamController teamController = TeamController();
|
||||
@override
|
||||
initState() {
|
||||
Setting.init();
|
||||
|
||||
}
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
if(Setting.teamWidgetKey == null) {
|
||||
Setting.teamWidgetKey =
|
||||
GlobalKey(); // 初始化TeamWidgetKey,initState只有StatefulWidget才有
|
||||
}
|
||||
if(Setting.user!.getId == -1){
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('我的团队'),
|
||||
),
|
||||
body: Center(
|
||||
child: Text('请先登录'),
|
||||
),
|
||||
);
|
||||
}
|
||||
else {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('我的团队'),
|
||||
),
|
||||
body: TeamWidget(key: Setting.teamWidgetKey!),
|
||||
floatingActionButton: FloatingActionButton(
|
||||
//添加团队悬浮按钮
|
||||
onPressed: () async {
|
||||
// 弹出选项
|
||||
showDialog(
|
||||
context: context,
|
||||
builder: (BuildContext context) {
|
||||
return AlertDialog(
|
||||
title: Text('选择操作'),
|
||||
content: Column(
|
||||
mainAxisSize: MainAxisSize.min,
|
||||
children: [
|
||||
ElevatedButton(
|
||||
onPressed: () async {
|
||||
// 加入团队功能
|
||||
Navigator.of(context).pop(); //首先关闭弹窗
|
||||
await Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) {
|
||||
return JoinTeamWidget();
|
||||
},
|
||||
),
|
||||
);
|
||||
},
|
||||
child: Text('加入团队'),
|
||||
),
|
||||
ElevatedButton(
|
||||
onPressed: () async {
|
||||
// 创建团队功能
|
||||
Navigator.of(context).pop();
|
||||
await Navigator.push(
|
||||
context,
|
||||
MaterialPageRoute(
|
||||
builder: (context) {
|
||||
return AddTeamWidget();
|
||||
},
|
||||
),
|
||||
);
|
||||
Setting.teamWidgetKey!.currentState!.futureDo();
|
||||
},
|
||||
child: Text('创建团队'),
|
||||
),
|
||||
SizedBox(height: 10),
|
||||
],
|
||||
),
|
||||
);
|
||||
},
|
||||
);
|
||||
},
|
||||
child: Icon(Icons.add),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,16 +1,16 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../widgets/TestWidget.dart';
|
||||
|
||||
class TestRoute extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('开发者测试'),
|
||||
),
|
||||
body: TestWidget(),
|
||||
);
|
||||
}
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
|
||||
import '../widgets/TestWidget.dart';
|
||||
|
||||
class TestRoute extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('开发者测试'),
|
||||
),
|
||||
body: TestWidget(),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,17 @@
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/widgets/AddCourseFormWidget.dart';
|
||||
import 'package:timemanagerapp/widgets/TimetableWidget.dart';
|
||||
|
||||
class TimetableRoute extends StatelessWidget {
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('时间表'),
|
||||
),
|
||||
body: TimetableWidget(),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,18 +0,0 @@
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/widgets/TomatoClockWidget.dart';
|
||||
|
||||
class TomatoClockRoute extends StatelessWidget {
|
||||
final int flag;
|
||||
final double selectedDuration;
|
||||
|
||||
const TomatoClockRoute({super.key, required this.flag,required this.selectedDuration});
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
|
||||
|
||||
return Scaffold(
|
||||
body: TomatoClockWidget(flag:flag,selectedDuration:selectedDuration)
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,17 +1,17 @@
|
||||
// import 'package:flutter/cupertino.dart';
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:timemanagerapp/widgets/UserSettingWidget.dart';
|
||||
//
|
||||
// import '../tests/TestWidget.dart';
|
||||
//
|
||||
// class UserSettingRoute extends StatelessWidget {
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// return Scaffold(
|
||||
// appBar: AppBar(
|
||||
// title: Text('设置'),
|
||||
// ),
|
||||
// body: UserSettingWidget(),
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:timemanagerapp/widgets/UserSettingWidget.dart';
|
||||
|
||||
import '../tests/TestWidget.dart';
|
||||
|
||||
class UserSettingRoute extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('设置'),
|
||||
),
|
||||
body: UserSettingWidgt(),
|
||||
);
|
||||
}
|
||||
}
|
||||
@ -1,140 +1,57 @@
|
||||
import 'dart:core';
|
||||
import 'package:flutter/cupertino.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import '../entity/User.dart';
|
||||
import '../widgets/FreeTimetableWidget.dart';
|
||||
import '../widgets/TeamWidget.dart';
|
||||
import '../widgets/TimetableWidget.dart';
|
||||
|
||||
class Setting {
|
||||
static SharedPreferences? prefs;
|
||||
static bool initFlag = true;
|
||||
static DateTime startdate_init = DateTime(2023, 8, 28);
|
||||
static late DateTime startdate;
|
||||
static int termAllWeekCout = 20; // 一学期的周数
|
||||
static DateTime timeTableStartTime = DateTime(2023, 8, 28, 7, 00); // 一天的开始时间
|
||||
static DateTime timeTableEndTime = DateTime(2023, 8, 28, 23, 00); // 一天的结束时间
|
||||
static late User? user = User(id:-1, username: "null", password: "null", role: 0);
|
||||
static User nullUser = User(id:-1, username: "null", password: "null", role: 0);
|
||||
static double pixelToMinuteRatio_ratio = 300; // 用于调整时间轴的比例
|
||||
static late double deviceWidth = 400; // 用于调整时间轴的宽度
|
||||
static bool isMusicPlaying = false; // 用于番茄钟音乐播放的状态
|
||||
static bool isDeveloperButtonVisible = false; // 假设开发者测试初始状态为不可见
|
||||
|
||||
static GlobalKey<TimetableWidgetState>? timetableWidgetKey;
|
||||
static GlobalKey<TeamWidgetState>? teamWidgetKey;
|
||||
static GlobalKey<FreeTimetableWidgetState>? freeTimetableWidgeKey;
|
||||
|
||||
static late User testUer;
|
||||
|
||||
static init() async {
|
||||
//初始化
|
||||
print("Setting初始化");
|
||||
// prefs!.setString("startdate", startdate.toString());
|
||||
prefs = await SharedPreferences.getInstance();
|
||||
getStartDate();
|
||||
getUser();
|
||||
getIsDeveloperButtonVisible();
|
||||
getpixelToMinuteRatio_ratio();
|
||||
getInitFlag();
|
||||
print("Setting初始化成功");
|
||||
}
|
||||
|
||||
static DateTime getStartDate() {
|
||||
//获取
|
||||
String res = null.toString();
|
||||
if(prefs!.containsKey("startdate")) res = prefs!.getString("startdate")!;
|
||||
if (res == null.toString()) {
|
||||
saveStartDate(startdate_init);
|
||||
return startdate_init;
|
||||
} else {
|
||||
startdate = DateTime.parse(res);
|
||||
return startdate;
|
||||
}
|
||||
}
|
||||
|
||||
static saveStartDate(DateTime startdate) async {
|
||||
//保存
|
||||
Setting.startdate = startdate;
|
||||
await prefs?.setString("startdate", startdate.toString());
|
||||
}
|
||||
|
||||
static User? getUser() {
|
||||
//获取
|
||||
String res = null.toString();
|
||||
if(prefs!.containsKey("user")) res = prefs!.getString("user")!;
|
||||
if (res == null.toString()) {
|
||||
user = nullUser;
|
||||
return nullUser;
|
||||
} else {
|
||||
user = User.parseString(res);
|
||||
return user;
|
||||
}
|
||||
}
|
||||
|
||||
static saveUser(User newuser) async {
|
||||
//保存
|
||||
user = newuser;
|
||||
await prefs?.setString("user", newuser.toString());
|
||||
}
|
||||
|
||||
|
||||
|
||||
//pixelToMinuteRatio_ratio
|
||||
static double getpixelToMinuteRatio_ratio() {
|
||||
//获取
|
||||
double? res;
|
||||
if(prefs!.containsKey("pixelToMinuteRatio_ratio")) res = prefs!.getDouble("pixelToMinuteRatio_ratio")!;
|
||||
if (res == null) {
|
||||
pixelToMinuteRatio_ratio = 1;
|
||||
return 1;
|
||||
} else {
|
||||
pixelToMinuteRatio_ratio = res!;
|
||||
return pixelToMinuteRatio_ratio;
|
||||
}
|
||||
}
|
||||
|
||||
static savepixelToMinuteRatio_ratio(double value) async {
|
||||
//保存
|
||||
pixelToMinuteRatio_ratio = value;
|
||||
await prefs?.setDouble("pixelToMinuteRatio_ratio", value);
|
||||
}
|
||||
|
||||
static bool getIsDeveloperButtonVisible() {
|
||||
//获取
|
||||
bool? res;
|
||||
if(prefs!.containsKey("isDeveloperButtonVisible")) res = prefs!.getBool("isDeveloperButtonVisible")!;
|
||||
if (res == null) {
|
||||
isDeveloperButtonVisible = false;
|
||||
return false;
|
||||
} else {
|
||||
isDeveloperButtonVisible = res!;
|
||||
return isDeveloperButtonVisible;
|
||||
}
|
||||
}
|
||||
|
||||
static saveIsDeveloperButtonVisible(bool value) async {
|
||||
//保存
|
||||
isDeveloperButtonVisible = value;
|
||||
await prefs?.setBool("isDeveloperButtonVisible", value);
|
||||
}
|
||||
|
||||
static getInitFlag() {
|
||||
bool? getInitFlag = prefs!.getBool("initFlag");
|
||||
if (getInitFlag == null) {
|
||||
initFlag = true;
|
||||
return true;
|
||||
} else {
|
||||
initFlag = getInitFlag;
|
||||
return initFlag;
|
||||
}
|
||||
}
|
||||
|
||||
static saveInitFlag(bool value) async {
|
||||
initFlag = value;
|
||||
await prefs?.setBool("initFlag", value);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
import 'dart:ffi';
|
||||
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
|
||||
import '../entity/User.dart';
|
||||
|
||||
class Setting {
|
||||
static SharedPreferences? prefs;
|
||||
static DateTime startdate_init = DateTime(2023, 8, 28);
|
||||
static late DateTime startdate;
|
||||
static late User? user;
|
||||
static double pixelToMinuteRatio_ratio = 1;
|
||||
static late double deviceWidth ;
|
||||
|
||||
static init() async {
|
||||
//初始化
|
||||
print("Setting初始化");
|
||||
prefs = await SharedPreferences.getInstance();
|
||||
saveStartDate(startdate_init); // 用于测试
|
||||
startdate = getStartDate();
|
||||
user = getUser();
|
||||
print("Setting初始化成功");
|
||||
}
|
||||
|
||||
static DateTime getStartDate() {
|
||||
//获取
|
||||
String res = null.toString();
|
||||
if(prefs!.containsKey("startdate")) res = prefs!.getString("startdate")!;
|
||||
if (res == null.toString()) {
|
||||
saveStartDate(startdate_init);
|
||||
return startdate_init;
|
||||
} else {
|
||||
return DateTime.parse(res);
|
||||
}
|
||||
}
|
||||
|
||||
static saveStartDate(DateTime startdate) {
|
||||
//保存
|
||||
prefs?.setString("startdate", startdate.toString());
|
||||
}
|
||||
|
||||
static User? getUser() {
|
||||
//获取
|
||||
String res = null.toString();
|
||||
if(prefs!.containsKey("user")) res = prefs!.getString("user")!;
|
||||
if (res == null.toString()) {
|
||||
return User(id:0, teamId: 0, username: "", password: "", role: 0);
|
||||
} else {
|
||||
return User.parseString(res);
|
||||
}
|
||||
}
|
||||
|
||||
static saveUser(User user) {
|
||||
//保存
|
||||
prefs?.setString("user", user.toString());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,36 +1,36 @@
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
import 'package:timemanagerapp/util/GetCourseByLogin.dart';
|
||||
import 'package:timemanagerapp/widgets/AddCourseFormWidget.dart';
|
||||
import 'package:timemanagerapp/widgets/LoginWidget.dart';
|
||||
import 'package:timemanagerapp/widgets/TimetableWidget.dart';
|
||||
|
||||
|
||||
init() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await Setting.init();
|
||||
}
|
||||
|
||||
void main() async {
|
||||
await init();
|
||||
runApp(MyApp());
|
||||
|
||||
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
home: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('添加课程'),
|
||||
),
|
||||
body: AddCourseFormWidget(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
import 'package:timemanagerapp/util/GetCourseByLogin.dart';
|
||||
import 'package:timemanagerapp/widgets/AddCourseFormWidget.dart';
|
||||
import 'package:timemanagerapp/widgets/LoginWidget.dart';
|
||||
import 'package:timemanagerapp/widgets/TimetableWidget.dart';
|
||||
|
||||
|
||||
init() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await Setting.init();
|
||||
}
|
||||
|
||||
void main() async {
|
||||
await init();
|
||||
runApp(MyApp());
|
||||
|
||||
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
home: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('添加课程'),
|
||||
),
|
||||
body: AddCourseFormWidget(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@ -1,11 +1,11 @@
|
||||
import '../setting/Setting.dart';
|
||||
import 'dart:ui' as ui;
|
||||
|
||||
void init(){
|
||||
Setting.init();
|
||||
}
|
||||
|
||||
void main() {
|
||||
init();
|
||||
print(Setting.getStartDate());
|
||||
}
|
||||
import '../setting/Setting.dart';
|
||||
import 'dart:ui' as ui;
|
||||
|
||||
void init(){
|
||||
Setting.init();
|
||||
}
|
||||
|
||||
void main() {
|
||||
init();
|
||||
print(Setting.getStartDate());
|
||||
}
|
||||
|
||||
@ -1,38 +1,38 @@
|
||||
// import 'dart:developer';
|
||||
//
|
||||
// import 'package:flutter/material.dart';
|
||||
// import 'package:shared_preferences/shared_preferences.dart';
|
||||
// import 'package:timemanagerapp/setting/Setting.dart';
|
||||
// import 'package:timemanagerapp/util/GetCourseByLogin.dart';
|
||||
// import 'package:timemanagerapp/widgets/AddCourseFormWidget.dart';
|
||||
// import 'package:timemanagerapp/widgets/LoginWidget.dart';
|
||||
// import 'package:timemanagerapp/widgets/TimetableWidget.dart';
|
||||
//
|
||||
//
|
||||
// init() async {
|
||||
// WidgetsFlutterBinding.ensureInitialized();
|
||||
// await Setting.init();
|
||||
// }
|
||||
//
|
||||
// void main() async {
|
||||
// await init();
|
||||
// runApp(MyApp());
|
||||
//
|
||||
//
|
||||
// }
|
||||
//
|
||||
// class MyApp extends StatelessWidget {
|
||||
//
|
||||
//
|
||||
// @override
|
||||
// Widget build(BuildContext context) {
|
||||
// return MaterialApp(
|
||||
// home: Scaffold(
|
||||
// appBar: AppBar(
|
||||
// title: Text('课表'),
|
||||
// ),
|
||||
// body: TimetableWidget(),
|
||||
// ),
|
||||
// );
|
||||
// }
|
||||
// }
|
||||
import 'dart:developer';
|
||||
|
||||
import 'package:flutter/material.dart';
|
||||
import 'package:shared_preferences/shared_preferences.dart';
|
||||
import 'package:timemanagerapp/setting/Setting.dart';
|
||||
import 'package:timemanagerapp/util/GetCourseByLogin.dart';
|
||||
import 'package:timemanagerapp/widgets/AddCourseFormWidget.dart';
|
||||
import 'package:timemanagerapp/widgets/LoginWidget.dart';
|
||||
import 'package:timemanagerapp/widgets/TimetableWidget.dart';
|
||||
|
||||
|
||||
init() async {
|
||||
WidgetsFlutterBinding.ensureInitialized();
|
||||
await Setting.init();
|
||||
}
|
||||
|
||||
void main() async {
|
||||
await init();
|
||||
runApp(MyApp());
|
||||
|
||||
|
||||
}
|
||||
|
||||
class MyApp extends StatelessWidget {
|
||||
|
||||
|
||||
@override
|
||||
Widget build(BuildContext context) {
|
||||
return MaterialApp(
|
||||
home: Scaffold(
|
||||
appBar: AppBar(
|
||||
title: Text('课表'),
|
||||
),
|
||||
body: TimetableWidget(),
|
||||
),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||