Start adding column edit dialog

This commit is contained in:
2025-12-15 22:05:58 +10:30
parent c44b7d1b72
commit 845aa1ee04

View File

@@ -1,15 +1,34 @@
import { ChangeDetectionStrategy, Component, model } from '@angular/core'; import {
ChangeDetectionStrategy,
Component,
model,
signal,
} from '@angular/core';
import { AccordionModule } from 'primeng/accordion'; import { AccordionModule } from 'primeng/accordion';
import { Column } from '../duckdb.service'; import { Column } from '../duckdb.service';
import { Checkbox, CheckboxChangeEvent } from 'primeng/checkbox'; import { Checkbox } from 'primeng/checkbox';
import { FormsModule } from '@angular/forms'; import { FormsModule } from '@angular/forms';
import { Button } from 'primeng/button'; import { Button } from 'primeng/button';
import { Tooltip } from 'primeng/tooltip'; import { Tooltip } from 'primeng/tooltip';
import { Dialog } from 'primeng/dialog';
import { FloatLabel } from 'primeng/floatlabel';
import { InputText } from 'primeng/inputtext';
import { Select } from 'primeng/select';
@Component({ @Component({
selector: 'app-column-editor', selector: 'app-column-editor',
standalone: true, standalone: true,
imports: [AccordionModule, Checkbox, FormsModule, Button, Tooltip], imports: [
AccordionModule,
Checkbox,
FormsModule,
Button,
Tooltip,
Dialog,
FloatLabel,
InputText,
Select,
],
template: ` template: `
<p-accordion [value]="0"> <p-accordion [value]="0">
<p-accordion-panel [value]="0"> <p-accordion-panel [value]="0">
@@ -45,12 +64,40 @@ import { Tooltip } from 'primeng/tooltip';
</p-accordion-content> </p-accordion-content>
</p-accordion-panel> </p-accordion-panel>
</p-accordion> </p-accordion>
<p-dialog [(visible)]="editDialogVisible" header="Edit Column">
@let editingColumn = this.editingColumn();
@if (editingColumn) {
<p-float-label>
<input
pInputText
id="column-edit-name"
[(ngModel)]="editingColumn.name"
/>
<label for="column-edit-name">Name</label>
</p-float-label>
<p-float-label>
<p-select inputId="column-edit-type"></p-select>
<label for="column-edit-type">Type</label>
</p-float-label>
<div class="flex items-center gap-2">
<p-check-box
[(ngModel)]="editingColumn.enabled"
[binary]="true"
inputId="column-edit-enabled"
></p-check-box>
<label for="column-edit-enabled">Enabled</label>
</div>
}
</p-dialog>
`, `,
changeDetection: ChangeDetectionStrategy.OnPush, changeDetection: ChangeDetectionStrategy.OnPush,
}) })
export class ColumnEditorComponent { export class ColumnEditorComponent {
columns = model<Column[]>(); columns = model<Column[]>();
protected editDialogVisible = signal(false);
protected editingColumn = signal<Column | null>(null);
protected checkboxChanged(index: number) { protected checkboxChanged(index: number) {
this.columns.update((columns) => { this.columns.update((columns) => {
if (columns) { if (columns) {
@@ -65,5 +112,11 @@ export class ColumnEditorComponent {
}); });
} }
protected editColumn(index: number) {} protected editColumn(index: number) {
const columns = this.columns();
if (columns) {
this.editingColumn.set(columns[index]);
this.editDialogVisible.set(true);
}
}
} }