feat:delete block particle

pr675
Hufe921 3 years ago
parent 3543e3983e
commit 867195a526

@ -984,13 +984,19 @@ export class Draw {
return { x, y, index }
}
private _clearPage(pageNo: number) {
const ctx = this.ctxList[pageNo]
const pageDom = this.pageList[pageNo]
ctx.clearRect(0, 0, pageDom.width, pageDom.height)
this.blockParticle.clear()
}
private _drawPage(positionList: IElementPosition[], rowList: IRow[], pageNo: number) {
const { pageMode } = this.options
const margins = this.getMargins()
const innerWidth = this.getInnerWidth()
const ctx = this.ctxList[pageNo]
const pageDom = this.pageList[pageNo]
ctx.clearRect(0, 0, pageDom.width, pageDom.height)
this._clearPage(pageNo)
// 绘制背景
this.background.render(ctx)
// 绘制页边距

@ -1,3 +1,4 @@
import { ElementType } from '../../../../dataset/enum/Element'
import { IRowElement } from '../../../../interface/Row'
import { Draw } from '../../Draw'
import { BaseBlock } from './modules/BaseBlock'
@ -44,4 +45,23 @@ export class BlockParticle {
}
}
public clear() {
if (!this.blockMap.size) return
const elementList = this.draw.getElementList()
const blockElementIds: string[] = []
for (let e = 0; e < elementList.length; e++) {
const element = elementList[e]
if (element.type === ElementType.BLOCK) {
blockElementIds.push(element.id!)
}
}
this.blockMap.forEach(block => {
const id = block.getBlockElement().id!
if (!blockElementIds.includes(id)) {
block.remove()
this.blockMap.delete(id)
}
})
}
}

@ -21,6 +21,10 @@ export class BaseBlock {
this.blockContainer.append(this.blockItem)
}
public getBlockElement(): IRowElement {
return this.element
}
private _createBlockItem(): HTMLDivElement {
const blockItem = document.createElement('div')
blockItem.classList.add('block-item')
@ -48,4 +52,8 @@ export class BaseBlock {
this.blockItem.style.top = `${preY + y}px`
}
public remove() {
this.blockItem.remove()
}
}
Loading…
Cancel
Save