You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

152 lines
4.3 KiB

import electron from "@/plugins/electron"
import { addTodo, removeTodo } from "@/store/action/todo"
import { Button, ButtonGroup, ControlGroup, FormGroup, HotkeysProvider, InputGroup } from "@blueprintjs/core"
import { Cell, Column, Table2 } from "@blueprintjs/table"
import cs from "classnames"
import _ from "lodash"
import React, { useEffect, useRef, useState } from "react"
import { connect } from "react-redux"
import Dialog from "./Dialog"
import style from "./index.module.scss"
import useLocation from "./useLocation"
export interface HomeProps {
add(text: string): void
todo: ITodo[]
remove(id: number): void
}
let keyGen = 0
function Home(props: HomeProps) {
const [isOpen, setIsOpen] = useState<boolean>(false)
const keyRef = useRef<HTMLInputElement>(null)
function delItem() {
let key = keyRef.current?.value
if (key) {
let index = _.findIndex(clockList, { key: +key })
if (index != -1) {
var list = [...clockList]
list.splice(index, 1)
setClockList(list)
keyRef.current!.value = ""
}
}
}
const { save, get } = useLocation()
const [clockList, setClockList] = useState<Record<string, any>[]>([])
const keyList = _.map(clockList, "key")
const titleList = _.map(clockList, "title")
const timeList = _.map(clockList, "time")
const descList = _.map(clockList, "desc")
function onConfrim(title: string, time: string, desc: string) {
if (title && time) {
const value = {
key: ++keyGen,
title: title,
time: time,
desc: desc,
}
setClockList([...clockList, value])
setIsOpen(false)
}
}
useEffect(() => {
;(async () => {
let list = await electron.ipcRenderer.invoke("@func:clock:getData")
if (list) {
setClockList(list)
const keyList = _.map(list, "key")
if (keyList.length) {
keyGen = Math.max(...keyList)
}
}
})()
}, [])
useEffect(() => {
electron.ipcRenderer.send("@func:clock:saveData", clockList)
}, [clockList])
return (
<div className={cs(style.container, "container")}>
<div className={style.title}></div>
<div className={style.opeation}>
<ButtonGroup>
<Button
icon="insert"
onClick={() => {
setIsOpen(true)
}}
>
</Button>
<Button icon="refresh"></Button>
</ButtonGroup>
</div>
<table>
<thead>
<tr>
<th>Month</th>
<th>Savings</th>
</tr>
</thead>
<tfoot>
<tr>
<td>Sum</td>
<td>$180</td>
</tr>
</tfoot>
<tbody>
<tr>
<td>January</td>
<td>$100</td>
</tr>
<tr>
<td>February</td>
<td>$80</td>
</tr>
</tbody>
</table>
{/* <HotkeysProvider>
<Table2 numRows={titleList.length}>
<Column name="KEY" cellRenderer={index => <Cell>{keyList[index]}</Cell>}></Column>
<Column name="标题" cellRenderer={index => <Cell>{titleList[index]}</Cell>}></Column>
<Column name="时间" cellRenderer={index => <Cell>{timeList[index]}</Cell>}></Column>
<Column name="描述" cellRenderer={index => <Cell>{descList[index]}</Cell>}></Column>
</Table2>
</HotkeysProvider> */}
<div style={{ margin: "10px 0" }}>
<FormGroup helperText="需要填入指定的闹钟进行删除" label="Key" labelFor="text-input" labelInfo="(required)">
<ControlGroup fill={false} vertical={false}>
<InputGroup inputRef={keyRef} id="text-input" placeholder="请输入Key值进行删除" />
<Button onClick={() => delItem()} icon="trash" intent="danger" type="submit">
</Button>
</ControlGroup>
</FormGroup>
</div>
<Dialog isOpen={isOpen} setIsOpen={setIsOpen} onConfrim={onConfrim}></Dialog>
</div>
)
}
const mapStateToProps = (state: any) => {
return {
todo: state.todo,
}
}
const mapDispatchToProps = (dispatch: any) => ({
add: (text: string) => dispatch(addTodo(text)),
remove: (id: string | number) => dispatch(removeTodo(id)),
})
export default connect(mapStateToProps, mapDispatchToProps)(Home)