Fix update vs create

This commit is contained in:
shamoon 2025-07-02 22:51:56 -07:00
parent d922ec4d6e
commit 3c1073aaef
No known key found for this signature in database
4 changed files with 16 additions and 12 deletions

View File

@ -76,18 +76,18 @@
<div class="modal-footer flex-column"> <div class="modal-footer flex-column">
<div class="d-flex w-100 justify-content-between align-items-center"> <div class="d-flex w-100 justify-content-between align-items-center">
<div class="btn-group" role="group"> <div class="btn-group" role="group">
<input type="radio" class="btn-check" [(ngModel)]="editMode" [value]="EditMode.Create" id="editModeCreate" name="editmode"> <input type="radio" class="btn-check" [(ngModel)]="editMode" [value]="PdfEditorEditMode.Create" id="editModeCreate" name="editmode">
<label for="editModeCreate" class="btn btn-outline-primary btn-sm"> <label for="editModeCreate" class="btn btn-outline-primary btn-sm">
<i-bs name="plus"></i-bs> <i-bs name="plus"></i-bs>
<span class="form-check-label ms-1" i18n>Create new document(s)</span> <span class="form-check-label ms-1" i18n>Create new document(s)</span>
</label> </label>
<input type="radio" class="btn-check" [(ngModel)]="editMode" [value]="EditMode.Update" id="editModeUpdate" name="editmode" [disabled]="hasSplit()"> <input type="radio" class="btn-check" [(ngModel)]="editMode" [value]="PdfEditorEditMode.Update" id="editModeUpdate" name="editmode" [disabled]="hasSplit()">
<label for="editModeUpdate" class="btn btn-outline-primary btn-sm"> <label for="editModeUpdate" class="btn btn-outline-primary btn-sm">
<i-bs name="pencil"></i-bs> <i-bs name="pencil"></i-bs>
<span class="form-check-label ms-2" i18n>Update existing document</span> <span class="form-check-label ms-2" i18n>Update existing document</span>
</label> </label>
</div> </div>
@if (editMode === EditMode.Create) { @if (editMode === PdfEditorEditMode.Create) {
<div class="form-check ms-3"> <div class="form-check ms-3">
<input class="form-check-input" type="checkbox" id="copyMeta" [(ngModel)]="includeMetadata"> <input class="form-check-input" type="checkbox" id="copyMeta" [(ngModel)]="includeMetadata">
<label class="form-check-label" for="copyMeta" i18n>Copy metadata</label> <label class="form-check-label" for="copyMeta" i18n>Copy metadata</label>

View File

@ -19,7 +19,7 @@ interface PageOperation {
loaded?: boolean loaded?: boolean
} }
enum EditMode { export enum PdfEditorEditMode {
Update = 'update', Update = 'update',
Create = 'create', Create = 'create',
} }
@ -36,7 +36,7 @@ enum EditMode {
], ],
}) })
export class PDFEditorComponent extends ConfirmDialogComponent { export class PDFEditorComponent extends ConfirmDialogComponent {
public EditMode = EditMode public PdfEditorEditMode = PdfEditorEditMode
private documentService = inject(DocumentService) private documentService = inject(DocumentService)
activeModal: NgbActiveModal = inject(NgbActiveModal) activeModal: NgbActiveModal = inject(NgbActiveModal)
@ -44,9 +44,8 @@ export class PDFEditorComponent extends ConfirmDialogComponent {
documentID: number documentID: number
pages: PageOperation[] = [] pages: PageOperation[] = []
totalPages = 0 totalPages = 0
editMode: EditMode = EditMode.Create editMode: PdfEditorEditMode = PdfEditorEditMode.Create
deleteOriginal: boolean = false deleteOriginal: boolean = false
updateDocument: boolean = false
includeMetadata: boolean = true includeMetadata: boolean = true
get pdfSrc(): string { get pdfSrc(): string {
@ -88,7 +87,7 @@ export class PDFEditorComponent extends ConfirmDialogComponent {
this.pages[i].splitAfter = !this.pages[i].splitAfter this.pages[i].splitAfter = !this.pages[i].splitAfter
if (this.pages[i].splitAfter) { if (this.pages[i].splitAfter) {
// force create mode // force create mode
this.editMode = EditMode.Create this.editMode = PdfEditorEditMode.Create
} }
} }
@ -117,12 +116,11 @@ export class PDFEditorComponent extends ConfirmDialogComponent {
} }
getOperations() { getOperations() {
const operations = this.pages.map((p, idx) => ({ return this.pages.map((p, idx) => ({
page: p.page, page: p.page,
rotate: p.rotate, rotate: p.rotate,
doc: this.computeDocIndex(idx), doc: this.computeDocIndex(idx),
})) }))
return operations
} }
private computeDocIndex(index: number): number { private computeDocIndex(index: number): number {

View File

@ -1159,6 +1159,7 @@ describe('DocumentDetailComponent', () => {
method: 'edit_pdf', method: 'edit_pdf',
parameters: { parameters: {
operations: [{ page: 1, rotate: 0, doc: 0 }], operations: [{ page: 1, rotate: 0, doc: 0 }],
delete_original: false,
update_document: false, update_document: false,
include_metadata: true, include_metadata: true,
}, },

View File

@ -98,7 +98,10 @@ import { TagsComponent } from '../common/input/tags/tags.component'
import { TextComponent } from '../common/input/text/text.component' import { TextComponent } from '../common/input/text/text.component'
import { UrlComponent } from '../common/input/url/url.component' import { UrlComponent } from '../common/input/url/url.component'
import { PageHeaderComponent } from '../common/page-header/page-header.component' import { PageHeaderComponent } from '../common/page-header/page-header.component'
import { PDFEditorComponent } from '../common/pdf-editor/pdf-editor.component' import {
PDFEditorComponent,
PdfEditorEditMode,
} from '../common/pdf-editor/pdf-editor.component'
import { ShareLinksDialogComponent } from '../common/share-links-dialog/share-links-dialog.component' import { ShareLinksDialogComponent } from '../common/share-links-dialog/share-links-dialog.component'
import { DocumentHistoryComponent } from '../document-history/document-history.component' import { DocumentHistoryComponent } from '../document-history/document-history.component'
import { DocumentNotesComponent } from '../document-notes/document-notes.component' import { DocumentNotesComponent } from '../document-notes/document-notes.component'
@ -1350,7 +1353,9 @@ export class DocumentDetailComponent
this.documentsService this.documentsService
.bulkEdit([this.document.id], 'edit_pdf', { .bulkEdit([this.document.id], 'edit_pdf', {
operations: modal.componentInstance.getOperations(), operations: modal.componentInstance.getOperations(),
update_document: modal.componentInstance.updateDocument, delete_original: modal.componentInstance.deleteOriginal,
update_document:
modal.componentInstance.editMode == PdfEditorEditMode.Update,
include_metadata: modal.componentInstance.includeMetadata, include_metadata: modal.componentInstance.includeMetadata,
}) })
.pipe(first(), takeUntil(this.unsubscribeNotifier)) .pipe(first(), takeUntil(this.unsubscribeNotifier))