diff --git a/frontend/pages/viewer/index-edit.vue b/frontend/pages/viewer/index-edit.vue index 82973a94a91cf1ead8aa59266920c895656356e5..a78d721b1a37fc02a2a6edbe79c457664c0c06a0 100644 --- a/frontend/pages/viewer/index-edit.vue +++ b/frontend/pages/viewer/index-edit.vue @@ -144,21 +144,29 @@ export default { this.makeCurrentBoxActive(this.labelCount) this.resetDrawingBox() } - console.log('huhahuha', Object.keys(this.previouslyCreatedBox)[0], Object.values(this.previouslyCreatedBox)[0]) + console.log('huhahuha', Object.keys(this.previouslyCreatedBox)[1], Object.values(this.previouslyCreatedBox)[1]) var i = 0 var tempArray = [] Object.keys(this.boxes).forEach((key) => { - console.log(key) + console.log(key, this.boxes[key]) if (key == Object.keys(this.previouslyCreatedBox)[i] ) { - console.log('PUT' + i) - delete this.previouslyCreatedBox[Object.keys(this.previouslyCreatedBox)[i]] - console.log(this.previouslyCreatedBox) + console.log('key', key) + console.log('prevs', Object.keys(this.previouslyCreatedBox)[i] ) + // console.log('PUT' + i) + // delete this.previouslyCreatedBox[Object.keys(this.previouslyCreatedBox)[i]] + console.log(this.previouslyCreatedBox) } else { + console.log('key', key) + console.log('prevs', Object.keys(this.previouslyCreatedBox)[i] ) console.log('POST' + i) - tempArray.push(Object.values(this.previouslyCreatedBox)[i]) - console.log("asdasd", tempArray) + tempArray.push(this.boxes[i+1]) + console.log('huyhuy',this.boxes[i+1]) + console.log("asdasd", tempArray[i]) } i++ + // for (let idxBox in tempArray) { + // console.log(tempArray[idxBox]) + // } }) }, closeViewer () { @@ -231,7 +239,6 @@ export default { this.drawingBox.active = false }, async saveImage () { - // Validate all content name first if (this.validateAllContents()) { var labelPayload = [] @@ -242,39 +249,89 @@ export default { realHeight: this.$refs.image.naturalHeight } const imagePosition = this.getImagePositionRelativeToScreen(imageAttributes) - for (let idxBox in this.boxes) { - var boxPosition = this.getBoxPositionRelativeToImage(imagePosition, idxBox) - var bWidth = this.boxes[idxBox].width - var bHeight = this.boxes[idxBox].height - var realImageAttr = this.getRealImageAttributes(imageAttributes, boxPosition, bWidth, bHeight) - try { - var content_id = await this.createLabelContent(this.boxes[idxBox].content) - var singleBackendObj = { - // TODO: change temporary image_id of 1 to real image_id - image_id: parseInt(this.image.id), - label_x_center: realImageAttr.xCenter, - label_y_center: realImageAttr.yCenter, - label_width: realImageAttr.width, - label_height: realImageAttr.height, - label_content_id: content_id + var i = 0 + var tempArray = [] + Object.keys(this.boxes).forEach((key) => { + console.log(key, this.boxes[key]) + if (key == Object.keys(this.previouslyCreatedBox)[i] ) { + console.log('key', key) + console.log('prevs', Object.keys(this.previouslyCreatedBox)[i] ) + console.log('PUT' + i) + // edit + // var boxPosition = this.getBoxPositionRelativeToImage(imagePosition, key, this.boxes) + // var bWidth = this.boxes[key].width + // var bHeight = this.boxes[key].height + // var realImageAttr = this.getRealImageAttributes(imageAttributes, boxPosition, bWidth, bHeight) + // try { + // var content_id = await this.createLabelContent(this.boxes[key].content) + // var singleBackendObj = { + // // TODO: change temporary image_id of 1 to real image_id + // image_id: parseInt(this.image.id), + // label_x_center: realImageAttr.xCenter, + // label_y_center: realImageAttr.yCenter, + // label_width: realImageAttr.width, + // label_height: realImageAttr.height, + // label_content_id: content_id + // } + // labelPayload.push(singleBackendObj) + // console.log('labelPayload: ', labelPayload) + // await this.changeLabelsInImage(labelPayload) + // } catch (error) { + // this.showFailedAlert("Error!", error) + // return + // } + delete this.previouslyCreatedBox[Object.keys(this.previouslyCreatedBox)[i]] + console.log(this.previouslyCreatedBox) + } else { + console.log('key', key) + console.log('prevs', Object.keys(this.previouslyCreatedBox)[i] ) + console.log('POST' + i) + tempArray.push(this.boxes[i+1]) + console.log('huyhuy',this.boxes[i+1]) + console.log("asdasd", tempArray[i]) + } + i++ + }) + // push new label + if (tempArray != 0) { + for (let idxBox in tempArray) { + var boxPosition = this.getBoxPositionRelativeToImage(imagePosition, idxBox, tempArray) + var bWidth = tempArray[idxBox].width + var bHeight = tempArray[idxBox].height + var realImageAttr = this.getRealImageAttributes(imageAttributes, boxPosition, bWidth, bHeight) + try { + var content_id = await this.createLabelContent(tempArray[idxBox].content) + var singleBackendObj = { + // TODO: change temporary image_id of 1 to real image_id + image_id: parseInt(this.image.id), + label_x_center: realImageAttr.xCenter, + label_y_center: realImageAttr.yCenter, + label_width: realImageAttr.width, + label_height: realImageAttr.height, + label_content_id: content_id + } + labelPayload.push(singleBackendObj) + console.log('labelPayload: ', labelPayload) + } catch (error) { + this.showFailedAlert("Error!", error) + return } - labelPayload.push(singleBackendObj) - console.log('labelPayload: ', labelPayload) + } + try { + console.log("LABEL PAYLOAD: ", labelPayload) + await this.createAllLabelsInImage(labelPayload) + this.showSuccessAlert("Success!", "Image has been saved!").then(() => { + this.closeViewer() + }) } catch (error) { + console.log(error) this.showFailedAlert("Error!", error) return } - } - try { - console.log("LABEL PAYLOAD: ", labelPayload) - await this.createAllLabelsInImage(labelPayload) + } else { this.showSuccessAlert("Success!", "Image has been saved!").then(() => { this.closeViewer() }) - } catch (error) { - console.log(error) - this.showFailedAlert("Error!", error) - return } } }, @@ -313,9 +370,9 @@ export default { imageTop: imageTop } }, - getBoxPositionRelativeToImage (imagePosition, idxBox) { - var bLeft = this.boxes[idxBox].left - imagePosition.imageLeft - var bTop = this.boxes[idxBox].top - imagePosition.imageTop + getBoxPositionRelativeToImage (imagePosition, idxBox, boxes) { + var bLeft = boxes[idxBox].left - imagePosition.imageLeft + var bTop = boxes[idxBox].top - imagePosition.imageTop if (bLeft < 0) { bLeft = 0 } @@ -347,8 +404,8 @@ export default { const heightRatio = (imageAttributes.realHeight / imageAttributes.screenHeight) var realBoxWidth = widthRatio * bWidth var realBoxHeight = heightRatio * bHeight - var xCenterPosition = widthRatio * boxPosition.left + (realBoxWidth / 2) - var yCenterPosition = heightRatio * boxPosition.top + (realBoxHeight / 2) + var xCenterPosition = widthRatio * boxPosition.lefcreateAllLabelsInImagep + (realBoxHeight / 2) + var yCenterPosition = widthRatio * boxPosition.lefcreateAllLabelsInImagep + (realBoxWidth / 2) return { xCenter: xCenterPosition, yCenter: yCenterPosition, @@ -379,6 +436,16 @@ export default { console.log("Label" , error) throw error } + }, + async changeLabelsInImage (labelPayload, id) { + var url ='api/label' + id + try { + var response = await this.$axios.put(url, labelPayload) + return response.data.status + } catch (error) { + console.log('Edit Label', error) + throw error + } } } }