|
@@ -1,15 +1,91 @@
|
|
|
-import { Component, OnInit } from '@angular/core';
|
|
|
+import { Component } from '@angular/core';
|
|
|
+import { AlertController } from '@ionic/angular';
|
|
|
|
|
|
@Component({
|
|
|
selector: 'app-tasks',
|
|
|
templateUrl: './tasks.page.html',
|
|
|
styleUrls: ['./tasks.page.scss'],
|
|
|
})
|
|
|
-export class TasksPage implements OnInit {
|
|
|
+export class TasksPage {
|
|
|
+ tasks: { startTime: string; endTime: string; content: string; editing: boolean; startHour: string; startMinute: string; endHour: string; endMinute: string; }[] = [
|
|
|
+ { startTime: '08:00', endTime: '11:30', content: '早间任务', editing: false, startHour: '08', startMinute: '00', endHour: '11', endMinute: '30' },
|
|
|
+ { startTime: '12:00', endTime: '17:30', content: '中间任务', editing: false, startHour: '12', startMinute: '00', endHour: '17', endMinute: '30' },
|
|
|
+ { startTime: '18:00', endTime: '21:30', content: '晚间任务', editing: false, startHour: '18', startMinute: '00', endHour: '21', endMinute: '30' },
|
|
|
+ // Add more tasks as needed
|
|
|
+ ];
|
|
|
|
|
|
- constructor() { }
|
|
|
+ constructor(private alertController: AlertController) {}
|
|
|
|
|
|
- ngOnInit() {
|
|
|
+ editTask(index: number) {
|
|
|
+ this.tasks[index].editing = true;
|
|
|
}
|
|
|
|
|
|
+ async saveTask(index: number) {
|
|
|
+ const task = this.tasks[index];
|
|
|
+ if (this.isValidTime(task.startHour, task.startMinute) && this.isValidTime(task.endHour, task.endMinute)) {
|
|
|
+ task.startTime = `${this.padZero(task.startHour)}:${this.padZero(task.startMinute)}`;
|
|
|
+ task.endTime = `${this.padZero(task.endHour)}:${this.padZero(task.endMinute)}`;
|
|
|
+ task.editing = false;
|
|
|
+ this.sortTasks();
|
|
|
+ } else {
|
|
|
+ const alert = await this.alertController.create({
|
|
|
+ header: '时间错误',
|
|
|
+ message: '小时不能超过24,分钟不能超过60。',
|
|
|
+ buttons: ['确定']
|
|
|
+ });
|
|
|
+ await alert.present();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ addTask() {
|
|
|
+ this.tasks.push({ startTime: '00:00', endTime: '00:00', content: '新任务', editing: true, startHour: '00', startMinute: '00', endHour: '00', endMinute: '00' });
|
|
|
+ }
|
|
|
+
|
|
|
+ deleteTask(index: number) {
|
|
|
+ this.tasks.splice(index, 1);
|
|
|
+ }
|
|
|
+
|
|
|
+ clearTime(task: { startHour: string; startMinute: string; endHour: string; endMinute: string; }, type: 'start' | 'end') {
|
|
|
+ if (type === 'start') {
|
|
|
+ task.startHour = '';
|
|
|
+ task.startMinute = '';
|
|
|
+ } else {
|
|
|
+ task.endHour = '';
|
|
|
+ task.endMinute = '';
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ formatHour(task: { startHour: string; endHour: string; }, type: 'start' | 'end') {
|
|
|
+ if (type === 'start' && task.startHour) {
|
|
|
+ task.startHour = this.padZero(task.startHour);
|
|
|
+ } else if (type === 'end' && task.endHour) {
|
|
|
+ task.endHour = this.padZero(task.endHour);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ formatMinute(task: { startMinute: string; endMinute: string; }, type: 'start' | 'end') {
|
|
|
+ if (type === 'start' && task.startMinute) {
|
|
|
+ task.startMinute = this.padZero(task.startMinute);
|
|
|
+ } else if (type === 'end' && task.endMinute) {
|
|
|
+ task.endMinute = this.padZero(task.endMinute);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ padZero(num: string): string {
|
|
|
+ return num.length < 2 ? '0' + num : num;
|
|
|
+ }
|
|
|
+
|
|
|
+ isValidTime(hour: string, minute: string): boolean {
|
|
|
+ const h = parseInt(hour, 10);
|
|
|
+ const m = parseInt(minute, 10);
|
|
|
+ return h >= 0 && h < 24 && m >= 0 && m < 60;
|
|
|
+ }
|
|
|
+
|
|
|
+ sortTasks() {
|
|
|
+ this.tasks.sort((a, b) => {
|
|
|
+ const aStart = parseInt(a.startHour) * 60 + parseInt(a.startMinute);
|
|
|
+ const bStart = parseInt(b.startHour) * 60 + parseInt(b.startMinute);
|
|
|
+ return aStart - bStart;
|
|
|
+ });
|
|
|
+ }
|
|
|
}
|