Skip to content
Snippets Groups Projects
Commit 6c4ac44d authored by yz's avatar yz
Browse files

feat: todolist1

parent c7831e1f
No related branches found
No related tags found
No related merge requests found
...@@ -2,10 +2,16 @@ ...@@ -2,10 +2,16 @@
import CommonConstants from '../public/CommonConstant'; import CommonConstants from '../public/CommonConstant';
import {LocalPage} from '../pages/LocalPage' import {LocalPage} from '../pages/LocalPage'
import {Login} from '../pages/LoginPage' import {Login} from '../pages/LoginPage'
import webAPI from '../public/WebAPI';
import TodoItemModel from '../viewmodel/TodoItemModel';
@Entry @Entry
@Component @Component
struct Index { struct Index {
@State state:number = 0
@State totalTasks: Array<TodoItemModel> = [] //待获取的todolist数据
@State currentIndex: number = 0; //导航栏下标 @State currentIndex: number = 0; //导航栏下标
private tabsController: TabsController = new TabsController(); private tabsController: TabsController = new TabsController();
...@@ -37,10 +43,17 @@ struct Index { ...@@ -37,10 +43,17 @@ struct Index {
Column() { Column() {
Tabs({ barPosition: BarPosition.End, controller: this.tabsController }) { Tabs({ barPosition: BarPosition.End, controller: this.tabsController }) {
TabContent() { TabContent() {
LocalPage() LocalPage({state:this.state, totalTasks:this.totalTasks})
// Login()
} }
.tabBar(this.tabBarBuilder('TodoList', 0, $r('app.media.ic_01_on'), $r('app.media.ic_01_off'))) .onWillShow(async ()=>{
if(webAPI.token == '') this.state = 0
else {
this.totalTasks = await webAPI.getItems()
if(this.totalTasks.length == 0) this.state = 1
else this.state = 2
}
})
.tabBar(this.tabBarBuilder('待办', 0, $r('app.media.ic_01_on'), $r('app.media.ic_01_off')))
TabContent() { TabContent() {
Login() Login()
......
...@@ -3,24 +3,25 @@ import ToDoItem from '../view/TodoItem' ...@@ -3,24 +3,25 @@ import ToDoItem from '../view/TodoItem'
import CommonConstants from '../public/CommonConstant' import CommonConstants from '../public/CommonConstant'
import TodoItemModel from '../viewmodel/TodoItemModel' import TodoItemModel from '../viewmodel/TodoItemModel'
import AddItem from '../view/AddItem'; import AddItem from '../view/AddItem';
import ItemDetail from '../view/ItemDetail'
import { promptAction } from '@kit.ArkUI';
@Component @Component
@Preview
export struct LocalPage { export struct LocalPage {
@Provide('localPageStack') LocalPageStack: NavPathStack = new NavPathStack(); //router @Link state:number
@Link totalTasks: Array<TodoItemModel>
@Provide('localPageStack') LocalPageStack: NavPathStack = new NavPathStack(); //router
@Builder @Builder
PageMap(name: string) { PageMap(name: string) {
if(name.substring(0, 10) == 'ItemDetail') { if(name.substring(0, 10) == 'ItemDetail') {
// ItemDetail({content: this.totalTasks[parseInt(name.substring(10))]}) ItemDetail({content: this.totalTasks[parseInt(name.substring(10))]})
} }
else if(name == 'AddItem') { else if(name == 'AddItem') {
AddItem() AddItem()
} }
} }
@State totalTasks: Array<ToDoItem> = [] //待获取的todolist数据
build() { build() {
Navigation(this.LocalPageStack) { Navigation(this.LocalPageStack) {
Row() { //顶栏 Row() { //顶栏
...@@ -46,32 +47,51 @@ export struct LocalPage { ...@@ -46,32 +47,51 @@ export struct LocalPage {
left: CommonConstants.rb_margin_left left: CommonConstants.rb_margin_left
}) })
.onClick(() => { .onClick(() => {
if(this.state == 0) {
promptAction.showToast({ message: '登录以添加事项' })
return
}
this.LocalPageStack.pushDestination({name:"AddItem", onPop: ()=> { this.LocalPageStack.pushDestination({name:"AddItem", onPop: ()=> {
// this.totalTasks = DataModel.getData() //返回时更新数据(应对添加数据的情况) // this.totalTasks = DataModel.getData() //返回时更新数据(应对添加数据的情况)
}}) }})
}) })
} }
Scroll() { //事项 if(this.state == 0) {
Column({space: CommonConstants.column_space}) { Text('登录以查看你的待办事项')
ForEach(this.totalTasks, (item: TodoItemModel, index: number) => { .margin({top: 40})
ToDoItem({totalTasks: $totalTasks, myIndex: index, myTask: item}) .fontSize(20)
.onClick(() => { //点击进入详情页 .fontColor('grey')
this.LocalPageStack.pushDestination({name: 'ItemDetail' + index, onPop: ()=> { }
// this.totalTasks = DataModel.getData() //返回时更新数据(应对删除数据的情况) else if(this.state == 1) {
}}) Text('暂无待办,点击右上角创建一个吧!')
// item.itemName = '1' //在这里的改变无法被子组件察觉,而且不会存储 .margin({top: 20})
}) .padding(20)
}, (item:string) => JSON.stringify(item)) .fontSize(20)
.fontColor('grey')
}
else {
Scroll() { //事项
Column({space: CommonConstants.column_space}) {
ForEach(this.totalTasks, (item: TodoItemModel, index: number) => {
ToDoItem({totalTasks: $totalTasks, myIndex: index, myTask: item})
.onClick(() => { //点击进入详情页
this.LocalPageStack.pushDestination({name: 'ItemDetail' + index, onPop: ()=> {
// this.totalTasks = DataModel.getData() //返回时更新数据(应对删除数据的情况)
}})
// item.itemName = '1' //在这里的改变无法被子组件察觉,而且不会存储
})
}, (item:string) => JSON.stringify(item))
}
.margin({bottom:10})
} }
.margin({bottom:10}) .align(Alignment.Top)
.margin({top: 10})
.width('100%')
.height('100%')
.backgroundColor($r("app.color.grey"))
.scrollBar(BarState.On)
} }
.align(Alignment.Top)
.margin({top: 10})
.width('100%')
.height('100%')
.backgroundColor($r("app.color.grey"))
.scrollBar(BarState.On)
} }
.hideTitleBar(true) .hideTitleBar(true)
.navDestination(this.PageMap) .navDestination(this.PageMap)
......
...@@ -3,10 +3,6 @@ import CommonConstants from '../public/CommonConstant' ...@@ -3,10 +3,6 @@ import CommonConstants from '../public/CommonConstant'
import webAPI from '../public/WebAPI'; import webAPI from '../public/WebAPI';
import { promptAction } from '@kit.ArkUI'; import { promptAction } from '@kit.ArkUI';
interface userInfo {
username: string
}
@Component @Component
export default struct UserPage { export default struct UserPage {
@Consume('loginPageStack') LoginPageStack: NavPathStack @Consume('loginPageStack') LoginPageStack: NavPathStack
...@@ -14,8 +10,8 @@ export default struct UserPage { ...@@ -14,8 +10,8 @@ export default struct UserPage {
@State name:string = '' @State name:string = ''
async aboutToAppear(): Promise<void> { async aboutToAppear(): Promise<void> {
const res:userInfo = JSON.parse(await webAPI.getCurrentUser()) await webAPI.getCurrentUser()
this.name = res.username; this.name = webAPI.userName;
} }
build() { build() {
......
import { http } from '@kit.NetworkKit' import { http } from '@kit.NetworkKit'
import TodoItemModel from '../viewmodel/TodoItemModel';
import { promptAction } from '@kit.ArkUI';
interface httpResult { interface httpResult {
code: string; code: string;
...@@ -6,14 +8,21 @@ interface httpResult { ...@@ -6,14 +8,21 @@ interface httpResult {
result: string result: string
} }
interface userInfo {
id: number
username: string
}
export default class webAPI { export default class webAPI {
static token = '' static token = ''
static userId = -1
static userName = ''
static async getCurrentUser(): Promise<string> { static async getCurrentUser(): Promise<string> {
/* /*
获取当前用户信息,返回string类型结果 获取当前用户信息,返回string类型结果
* 1. 未登录:unLogin * 1. 未登录:unLogin
* 2. 已登录:json格式的userInfo * 2. 已登录:success(用户信息存储在this)
* 3. 其他:error * 3. 其他:error
*/ */
// 如果 token 为空,直接返回未登录 // 如果 token 为空,直接返回未登录
...@@ -31,7 +40,10 @@ export default class webAPI { ...@@ -31,7 +40,10 @@ export default class webAPI {
}) })
if (data.responseCode === 200) { if (data.responseCode === 200) {
const outerResult: httpResult = JSON.parse(data.result + '') const outerResult: httpResult = JSON.parse(data.result + '')
result = JSON.stringify(outerResult.result) const user:userInfo = JSON.parse(JSON.stringify(outerResult.result))
webAPI.userId = user.id
webAPI.userName = user.username
result = 'success'
} }
// for debug // for debug
// console.log(String(JSON.stringify(data))) // console.log(String(JSON.stringify(data)))
...@@ -77,12 +89,11 @@ export default class webAPI { ...@@ -77,12 +89,11 @@ export default class webAPI {
return result return result
} }
static async registerAPI(name: string, phone: string, psw: string): Promise<string> { static async registerAPI(name: string, phone: string, psw: string): Promise<string> {
/* /*
用户登录,返回string类型结果 用户注册,返回string类型结果
* 1. 成功:success * 1. 成功:success
* 2. 失败:failed(大概率是手机号/密码错误 * 2. 失败:error(大概率是手机号已存在
*/ */
let httpRequest = http.createHttp() let httpRequest = http.createHttp()
let result = 'error' // 默认返回 error let result = 'error' // 默认返回 error
...@@ -115,4 +126,79 @@ export default class webAPI { ...@@ -115,4 +126,79 @@ export default class webAPI {
return result return result
} }
static async getItems(): Promise<Array<TodoItemModel>> {
/*
获取当前用户的todos,返回TodoItemModel
*/
if(webAPI.token == '') {
promptAction.showToast({ message: '未登录,获取items失败' })
return []
}
let httpRequest = http.createHttp()
try {
const data = await httpRequest.request(`localhost:8080/api/todolist/${webAPI.userId}`, {
method: http.RequestMethod.GET,
header: {
'token': webAPI.token
}
});
if (data.responseCode === 200) {
const resultJson: httpResult = JSON.parse(data.result + '')
let resultValue: Array<TodoItemModel> = []
if (Array.isArray(resultJson.result)) {
resultValue = resultJson.result
}
return resultValue
}
// for debug
// console.log(String(JSON.stringify(data)))
} catch (error) {
console.error('Login API error:', error)
} finally {
httpRequest.destroy()
}
// promptAction.showToast({ message: '获取items出错' })
return []
}
static async addSingleItem(name: string, ddl: string, desc: string): Promise<string> {
/*
新建事项,返回string类型结果
* 1. 成功:success
* 2. 失败:error
*/
if(webAPI.token == '') {
promptAction.showToast({ message: '未登录,添加事项失败' })
return 'error'
}
let httpRequest = http.createHttp()
let result = 'error' // 默认返回 error
try {
const data = await httpRequest.request('localhost:8080/api/todolist/add', {
method: http.RequestMethod.POST,
header: {
'token': webAPI.token
},
extraData: {
"name": name,
"ddl": ddl,
"description": desc,
"userId": webAPI.userId
},
})
if (data.responseCode === 200) {
result = 'success'
} else {
result = 'error'
}
// for debug
console.log(String(JSON.stringify(data)))
} catch (error) {
console.error('Registration API error:', error)
result = 'error'
} finally {
httpRequest.destroy()
}
return result
}
} }
\ No newline at end of file
...@@ -2,13 +2,7 @@ ...@@ -2,13 +2,7 @@
import CommonConstants from '../public/CommonConstant' import CommonConstants from '../public/CommonConstant'
import { http } from '@kit.NetworkKit' import { http } from '@kit.NetworkKit'
import { promptAction } from '@kit.ArkUI'; import { promptAction } from '@kit.ArkUI';
import DataModel from '../viewmodel/DataModel'; import webAPI from '../public/WebAPI';
import TodoItemModel from '../viewmodel/TodoItemModel';
interface HttpError {
message: string;
code: number;
}
interface SysTimeResponse { interface SysTimeResponse {
sysTime1: string; sysTime1: string;
...@@ -16,14 +10,11 @@ interface SysTimeResponse { ...@@ -16,14 +10,11 @@ interface SysTimeResponse {
} }
@Component @Component
@Preview
export default struct AddItem { export default struct AddItem {
@Consume('localPageStack') LocalPageStack: NavPathStack @Consume('localPageStack') LocalPageStack: NavPathStack
@State itemName: string = '' @State itemName: string = ''
@State itemDisc: string = '' @State itemDisc: string = ''
@State itemTime: string = '获取当前时间'
build() { build() {
NavDestination() { NavDestination() {
...@@ -244,74 +235,41 @@ export default struct AddItem { ...@@ -244,74 +235,41 @@ export default struct AddItem {
.height('400vp') .height('400vp')
.borderRadius(CommonConstants.border_radius) .borderRadius(CommonConstants.border_radius)
.justifyContent(FlexAlign.Center) .justifyContent(FlexAlign.Center)
.alignItems(VerticalAlign.Top ) .alignItems(VerticalAlign.Top)
/* Column() {
Row() {
Text('时间')
.fontSize(CommonConstants.detail_title_font_size)
.fontWeight(FontWeight.Bold)
.width(CommonConstants.add_name_width)
.margin({
left: CommonConstants.detail_margin_Left
})
Button(this.itemTime)
.margin({ left: CommonConstants.input_margin_left })
.onClick(() => {
this.requestTime();
})
}
}*/
/* .margin({
top: CommonConstants.list_margin_top
})
.width(CommonConstants.list_width)
.height(CommonConstants.time_height)
.backgroundColor($r('app.color.white'))
.borderRadius(CommonConstants.border_radius)
.justifyContent(FlexAlign.Center)
.alignItems(HorizontalAlign.Start)*/
} }
private requestTime() { private async requestTime(): Promise<string> {
let httpRequest = http.createHttp(); let httpRequest = http.createHttp()
httpRequest.request('http://quan.suning.com/getSysTime.do', { // 苏宁时间戳API let res = ''
method: http.RequestMethod.GET, try {
}).then((data) => { const data = await httpRequest.request('http://quan.suning.com/getSysTime.do', { // 苏宁时间戳API
method: http.RequestMethod.GET
})
if (data.responseCode === 200) { if (data.responseCode === 200) {
let response = data.result + ""; let response = data.result + ""
console.info('Response: ' + response); console.info('Response: ' + response)
const json_res = JSON.parse(data.result + "") as SysTimeResponse const json_res = JSON.parse(data.result + "") as SysTimeResponse
this.itemTime = json_res.sysTime2.substring(0,10) res = json_res.sysTime2.substring(0, 10)
} else { } else {
promptAction.showToast({ console.error('Request failed with response code: ' + data.responseCode)
message: '时间请求失败,请重试!'
})
console.error('Request failed with response code: ' + data.responseCode);
} }
}).catch((err:HttpError) => { } catch (err) {
promptAction.showToast({ console.error('Request error: ' + JSON.stringify(err))
message: '时间请求失败,请重试!' } finally {
}) httpRequest.destroy()
console.error('Request error: ' + JSON.stringify(err)); }
}).finally(() => { return res
httpRequest.destroy(); // 销毁HTTP请求对象
});
} }
private addItem() { private async addItem() {
this.requestTime() let time = ''
let result = DataModel.addData(new TodoItemModel(this.itemName, this.itemDisc, this.itemTime, '', false)) while(time == '') {
if(result == -1) { time = await this.requestTime()
promptAction.showToast({
message: '添加失败,已有该目标项!'
})
} }
else if(result == 0) { const res = await webAPI.addSingleItem(this.itemName, time, this.itemDisc)
if(res == 'error') {
promptAction.showToast({ promptAction.showToast({
message: '添加失败,请检查是否填写完整!' message: '添加失败!'
}) })
} }
else { else {
......
// 事项详情页面 // 事项详情页面
import CommonConstants from '../public/CommonConstant' import CommonConstants from '../public/CommonConstant'
import DataModel from '../viewmodel/DataModel'
import TodoItemModel from '../viewmodel/TodoItemModel' import TodoItemModel from '../viewmodel/TodoItemModel'
import { promptAction } from '@kit.ArkUI' import { promptAction } from '@kit.ArkUI'
@Component @Component
@Preview
export default struct ItemDetail { export default struct ItemDetail {
@Consume('localPageStack') LocalPageStack: NavPathStack @Consume('localPageStack') LocalPageStack: NavPathStack
content: TodoItemModel = new TodoItemModel('', '', '', '', false) content: TodoItemModel = new TodoItemModel(0, '', '', '', false)
build() { build() {
NavDestination() { NavDestination() {
...@@ -195,7 +193,7 @@ export default struct ItemDetail { ...@@ -195,7 +193,7 @@ export default struct ItemDetail {
.width(CommonConstants.detail_width) .width(CommonConstants.detail_width)
.margin({ left: CommonConstants.detail_margin_Left }) .margin({ left: CommonConstants.detail_margin_Left })
Text(this.content.itemName) Text(this.content.name)
.fontSize(CommonConstants.detail_font_size) .fontSize(CommonConstants.detail_font_size)
.width(CommonConstants.detail_width) .width(CommonConstants.detail_width)
.textAlign(TextAlign.Start) .textAlign(TextAlign.Start)
...@@ -218,7 +216,7 @@ export default struct ItemDetail { ...@@ -218,7 +216,7 @@ export default struct ItemDetail {
.width(CommonConstants.detail_width) .width(CommonConstants.detail_width)
.margin({ left: CommonConstants.detail_margin_Left }) .margin({ left: CommonConstants.detail_margin_Left })
Text(this.content.itemDisc) Text(this.content.description)
.fontSize(CommonConstants.detail_font_size) .fontSize(CommonConstants.detail_font_size)
.width(CommonConstants.detail_width) .width(CommonConstants.detail_width)
.textAlign(TextAlign.Start) .textAlign(TextAlign.Start)
...@@ -237,13 +235,13 @@ export default struct ItemDetail { ...@@ -237,13 +235,13 @@ export default struct ItemDetail {
// 时间行 // 时间行
Column() { Column() {
Row() { Row() {
Text('时间') Text('截止日期')
.fontSize(CommonConstants.detail_title_font_size) .fontSize(CommonConstants.detail_title_font_size)
.fontWeight(FontWeight.Bold) .fontWeight(FontWeight.Bold)
.width(CommonConstants.detail_width) .width(CommonConstants.detail_width)
.margin({ left: CommonConstants.detail_margin_Left }) .margin({ left: CommonConstants.detail_margin_Left })
Text(this.content.itemTime) Text(this.content.ddl.substring(0,10))
.fontSize(CommonConstants.detail_font_size) .fontSize(CommonConstants.detail_font_size)
.width(CommonConstants.detail_width) .width(CommonConstants.detail_width)
.textAlign(TextAlign.Start) .textAlign(TextAlign.Start)
...@@ -259,36 +257,36 @@ export default struct ItemDetail { ...@@ -259,36 +257,36 @@ export default struct ItemDetail {
} }
// 如果已完成,显示完成时间 // 如果已完成,显示完成时间
if (this.content.isCompleted) { // if (this.content.isDone) {
Column() { // Column() {
Row() { // Row() {
Text('完成时间') // Text('完成时间')
.fontSize(CommonConstants.detail_title_font_size) // .fontSize(CommonConstants.detail_title_font_size)
.fontWeight(FontWeight.Bold) // .fontWeight(FontWeight.Bold)
.width(CommonConstants.detail_width) // .width(CommonConstants.detail_width)
.margin({ left: CommonConstants.detail_margin_Left }) // .margin({ left: CommonConstants.detail_margin_Left })
//
Text(this.content.completeTime) // Text(this.content.completeTime)
.fontSize(CommonConstants.detail_font_size) // .fontSize(CommonConstants.detail_font_size)
.width(CommonConstants.detail_width) // .width(CommonConstants.detail_width)
.textAlign(TextAlign.Start) // .textAlign(TextAlign.Start)
.margin({ left: 10 }) // .margin({ left: 10 })
} // }
} // }
.margin({ top: CommonConstants.list_margin_top }) // .margin({ top: CommonConstants.list_margin_top })
.width(CommonConstants.list_width) // .width(CommonConstants.list_width)
.height(CommonConstants.time_height) // .height(CommonConstants.time_height)
.backgroundColor($r('app.color.white')) // .backgroundColor($r('app.color.white'))
.borderRadius(CommonConstants.border_radius) // .borderRadius(CommonConstants.border_radius)
.justifyContent(FlexAlign.Start) // .justifyContent(FlexAlign.Start)
.alignItems(HorizontalAlign.Start) // .alignItems(HorizontalAlign.Start)
} // }
} }
} }
private deleteItem() { private deleteItem() {
DataModel.deleteData(this.content) //todo
promptAction.showToast({ promptAction.showToast({
message: '删除成功!' message: '删除成功!'
}) })
......
...@@ -20,7 +20,7 @@ export default struct ToDoItem { ...@@ -20,7 +20,7 @@ export default struct ToDoItem {
@State myIndex: number = 0 //本项的下标 @State myIndex: number = 0 //本项的下标
@State myTask: TodoItemModel = new TodoItemModel('', '', '', '', false) //本项的详情 @State myTask: TodoItemModel = new TodoItemModel(0, '', '', '', false) //本项的详情
// 加了state才能察觉到元素的改变,不加无法察觉 // 加了state才能察觉到元素的改变,不加无法察觉
@Consume('localPageStack') LocalPageStack: NavPathStack @Consume('localPageStack') LocalPageStack: NavPathStack
...@@ -39,18 +39,18 @@ export default struct ToDoItem { ...@@ -39,18 +39,18 @@ export default struct ToDoItem {
build() { build() {
Row() { Row() {
if(this.myTask.isCompleted) { if(this.myTask.isDone) {
this.labelIcon($r('app.media.ic_ok')) this.labelIcon($r('app.media.ic_ok'))
} }
else { else {
this.labelIcon($r('app.media.ic_default')) this.labelIcon($r('app.media.ic_default'))
} }
Text(this.myTask.itemName) Text(this.myTask.name)
.fontSize(CommonConstants.item_font_size) .fontSize(CommonConstants.item_font_size)
.fontWeight(CommonConstants.item_font_weight) .fontWeight(CommonConstants.item_font_weight)
.opacity(this.myTask.isCompleted ? CommonConstants.opacity_completed : CommonConstants.opacity_default) .opacity(this.myTask.isDone ? CommonConstants.opacity_completed : CommonConstants.opacity_default)
.decoration({type: this.myTask.isCompleted ? TextDecorationType.LineThrough : TextDecorationType.None}) .decoration({type: this.myTask.isDone ? TextDecorationType.LineThrough : TextDecorationType.None})
} }
.backgroundColor($r('app.color.white')) .backgroundColor($r('app.color.white'))
.width(CommonConstants.list_width) .width(CommonConstants.list_width)
...@@ -59,9 +59,9 @@ export default struct ToDoItem { ...@@ -59,9 +59,9 @@ export default struct ToDoItem {
} }
async markComplete() { async markComplete() {
this.myTask.isCompleted = !this.myTask.isCompleted this.myTask.isDone = !this.myTask.isDone
// this.myTask.itemName = 'aaa' //在这里的改变可以被察觉 // this.myTask.itemName = 'aaa' //在这里的改变可以被察觉
if(this.myTask.isCompleted) { //已完成 if(this.myTask.isDone) { //已完成
//请求时间 //请求时间
let httpRequest = http.createHttp(); let httpRequest = http.createHttp();
let finishTime = '' let finishTime = ''
...@@ -87,18 +87,16 @@ export default struct ToDoItem { ...@@ -87,18 +87,16 @@ export default struct ToDoItem {
httpRequest.destroy(); // 销毁HTTP请求对象 httpRequest.destroy(); // 销毁HTTP请求对象
//请求结果 //请求结果
if(finishTime == '') { //请求失败,不操作 if(finishTime == '') { //请求失败,不操作
this.myTask.isCompleted = !this.myTask.isCompleted this.myTask.isDone = !this.myTask.isDone
promptAction.showToast({ promptAction.showToast({
message: '时间请求失败,请重试!' message: '时间请求失败,请重试!'
}) })
return return
} }
else { else {
this.myTask.completeTime = finishTime
} }
} }
else { //更新后状态:未完成 else { //更新后状态:未完成
this.myTask.completeTime = ''
} }
//替换原来的对象 //替换原来的对象
this.myTask = JSON.parse(JSON.stringify(this.myTask)) this.myTask = JSON.parse(JSON.stringify(this.myTask))
......
// 数据处理
import TodoItemModel from './TodoItemModel'
import {preferences} from '@kit.ArkData'
let context = getContext(this)
let preference: preferences.Preferences
export class DataModel {
private items: Array<TodoItemModel> = []
getData(): Array<TodoItemModel> {
return this.items
}
deleteData(item: TodoItemModel) {
let indexToRemove = this.items.indexOf(item);
if (indexToRemove !== -1) {
this.items.splice(indexToRemove, 1);
this.addPreference()
}
}
addData(item: TodoItemModel) {
if(item.itemName == '' || item.itemDisc == '' || item.itemTime == '获取当前时间') {
return 0;
}
for(let i=0; i<this.items.length; i++) {
if(this.items[i].itemName == item.itemName
&& this.items[i].itemDisc == item.itemDisc
&& this.items[i].itemTime == item.itemTime) {
return -1;
}
}
this.items.push(item)
this.addPreference()
return 1
}
updateData(item: TodoItemModel) {
for(let i=0; i<this.items.length; i++) {
if(this.items[i].itemName == item.itemName
&& this.items[i].itemDisc == item.itemDisc
&& this.items[i].itemTime == item.itemTime) {
this.items[i] = item
this.addPreference()
return 0
}
}
return -1
}
async getPreferences() {
try {
console.log('get Preferences')
preference = await preferences.getPreferences(context, 'items')
}
catch (err) {
console.error(err)
}
}
async addPreference() {
try {
await preference.put('item', JSON.stringify(this.items))
}
catch (err) {
console.error(err)
}
await preference.flush()
}
async getPreferenceData() {
try {
console.log('get PreferenceData')
let res = await preference.get('item', '')
if(res.toString() != '') {
this.items = JSON.parse(res.toString())
}
}
catch (err) {
console.warn('getPreferenceData err')
console.error(err)
}
}
}
export default new DataModel()
\ No newline at end of file
// TodoItem数据类 // TodoItem数据类
export default class TodoItemModel { export default class TodoItemModel {
itemName: string id: number
name: string
description: string
ddl: string
isDone: boolean
itemDisc: string constructor(id: number, name: string, description: string, ddl: string, isDone: boolean) {
this.id = id
itemTime: string this.name = name
this.description = description
completeTime: string this.ddl = ddl
this.isDone = isDone
isCompleted: boolean
constructor(itemName: string, itemDisc: string, itemTime: string, completeTime: string, isCompleted: boolean) {
this.itemName = itemName
this.itemDisc = itemDisc
this.itemTime = itemTime
this.completeTime = completeTime
this.isCompleted = isCompleted
} }
} }
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment