提交 a98d71df 编写于 作者: X xjh22222228

fix(#90): fix edit and delete

上级 ce4bac4a
......@@ -4,7 +4,7 @@
import { Component, OnInit, Input } from '@angular/core'
import { NzMessageService } from 'ng-zorro-antd/message'
import { getToken } from '../../utils/user'
import { setWebsiteList, copyText, deleteByWeb } from '../../utils'
import { setWebsiteList, copyText, deleteByWeb, getTextContent, updateByWeb } from '../../utils'
import { websiteList } from '../../store'
import { INavProps, ITagProp, INavFourProp } from '../../types'
import * as __tag from '../../../data/tag.json'
......@@ -61,21 +61,26 @@ export class CardComponent implements OnInit {
}
handleOk(payload: INavFourProp) {
this.dataSource.name = payload.name
this.dataSource.createdAt = payload.createdAt
this.dataSource.desc = payload.desc
this.dataSource.icon = payload.icon
this.dataSource.url = payload.url
this.dataSource.rate = payload.rate
this.dataSource.urls = payload.urls
this.dataSource.top = payload.top
this.message.success('修改成功!')
updateByWeb({
...this.dataSource,
name: getTextContent(this.dataSource.name),
desc: getTextContent(this.dataSource.desc)
}, payload)
setWebsiteList(this.websiteList)
const keys = Object.keys(payload)
for (let k of keys) {
this.dataSource[k] = payload[k]
}
this.message.success('修改成功!')
this.toggleModal()
}
confirmDel() {
deleteByWeb(this.dataSource)
deleteByWeb({
...this.dataSource,
name: getTextContent(this.dataSource.name),
desc: getTextContent(this.dataSource.desc)
})
}
}
......@@ -2,7 +2,7 @@
// See https://github.com/xjh22222228/nav
import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core'
import { getLogoUrl } from '../../utils'
import { getLogoUrl, getTextContent } from '../../utils'
import { FormBuilder, FormGroup, Validators } from '@angular/forms'
import { ITagProp, INavFourProp } from '../../types'
import { NzMessageService } from 'ng-zorro-antd/message'
......@@ -62,14 +62,8 @@ export class CreateWebComponent implements OnInit {
const detail = this.detail as INavFourProp
if (this.detail && this.visible) {
const divEl = document.createElement('div')
divEl.innerHTML = detail.name
const name = divEl.innerText
divEl.innerHTML = detail.desc
const desc = divEl.innerText
this.validateForm.get('title')!.setValue(name)
this.validateForm.get('desc')!.setValue(desc)
this.validateForm.get('title')!.setValue(getTextContent(detail.name))
this.validateForm.get('desc')!.setValue(getTextContent(detail.desc))
this.validateForm.get('icon')!.setValue(detail.icon || '')
this.validateForm.get('url')!.setValue(detail.url || '')
this.validateForm.get('top')!.setValue(detail.top ?? false)
......
......@@ -395,3 +395,41 @@ export function deleteByWeb(data: INavFourProp) {
f(websiteList)
setWebsiteList(websiteList)
}
export function updateByWeb(prevData: INavFourProp, nextData: INavFourProp) {
const keys = Object.keys(nextData)
function f(arr: any[]) {
for (let i = 0; i < arr.length; i++) {
const item = arr[i]
if (item.name) {
if (
item.name === prevData.name &&
item.desc === prevData.desc &&
item.top === prevData.top &&
item.createdAt === prevData.createdAt
) {
for (let k of keys) {
item[k] = nextData[k]
}
break
}
continue
}
if (Array.isArray(item.nav)) {
f(item.nav)
}
}
}
f(websiteList)
setWebsiteList(websiteList)
}
export function getTextContent(value: string): string {
if (!value) return ''
const div = document.createElement('div')
div.innerHTML = value
return div.textContent
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册