
* refact: generalized back end structs * refact: fixed front end type, removed dead code * removed test image folder * refact: removed dead structs
90 lines
2.2 KiB
Go
90 lines
2.2 KiB
Go
package ipc
|
|
|
|
import (
|
|
"sort"
|
|
document "textualize/core/Document"
|
|
"textualize/entities"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func (c *Channel) GetProcessedAreasByDocumentId(id string) []entities.ProcessedArea {
|
|
areas := document.GetProcessedAreaCollection().GetAreasByDocumentId(id)
|
|
|
|
areaCount := len(areas)
|
|
readableAreas := make([]entities.ProcessedArea, areaCount)
|
|
for i := 0; i < areaCount; i++ {
|
|
readableAreas[i] = entities.ProcessedArea(*areas[i])
|
|
}
|
|
|
|
sortedAreas := readableAreas
|
|
sort.Slice(sortedAreas, func(i, j int) bool {
|
|
return sortedAreas[i].Order < sortedAreas[j].Order
|
|
})
|
|
|
|
return sortedAreas
|
|
}
|
|
|
|
func (c *Channel) RequestAddProcessedArea(processedArea entities.ProcessedArea) entities.ProcessedArea {
|
|
|
|
for lineIndex, line := range processedArea.Lines {
|
|
for wordIndex, word := range line.Words {
|
|
if word.Id == "" {
|
|
processedArea.Lines[lineIndex].Words[wordIndex].Id = uuid.NewString()
|
|
}
|
|
}
|
|
}
|
|
|
|
document.GetProcessedAreaCollection().AddProcessedArea(processedArea)
|
|
return processedArea
|
|
}
|
|
|
|
func (c *Channel) RequestUpdateProcessedWordById(wordId string, newTextValue string) bool {
|
|
areas := document.GetProcessedAreaCollection().Areas
|
|
|
|
var areaOfWordIndex int = -1
|
|
var lineOfWordIndex int = -1
|
|
var foundWordIndex int = -1
|
|
for areaIndex, area := range areas {
|
|
|
|
for lineIndex, line := range area.Lines {
|
|
|
|
for wordIndex, word := range line.Words {
|
|
if word.Id == wordId {
|
|
areaOfWordIndex = areaIndex
|
|
lineOfWordIndex = lineIndex
|
|
foundWordIndex = wordIndex
|
|
break
|
|
}
|
|
}
|
|
|
|
if foundWordIndex >= 0 {
|
|
break
|
|
}
|
|
}
|
|
|
|
if foundWordIndex >= 0 {
|
|
break
|
|
}
|
|
}
|
|
|
|
if areaOfWordIndex < 0 || lineOfWordIndex < 0 || foundWordIndex < 0 {
|
|
return false
|
|
}
|
|
|
|
wordProps := areas[areaOfWordIndex].Lines[lineOfWordIndex].Words[foundWordIndex]
|
|
areas[areaOfWordIndex].Lines[lineOfWordIndex].Words[foundWordIndex] = entities.ProcessedWord{
|
|
Id: wordProps.Id,
|
|
Direction: wordProps.Direction,
|
|
FullText: newTextValue,
|
|
BoundingBox: wordProps.BoundingBox,
|
|
}
|
|
|
|
if areas[areaOfWordIndex].Lines[lineOfWordIndex].Words[foundWordIndex].FullText == newTextValue {
|
|
successfulSave := c.RequestSaveDocumentCollection()
|
|
return successfulSave
|
|
} else {
|
|
return false
|
|
}
|
|
}
|