@myrmidon/cadmus-refs-asserted-ids 10.0.7 → 10.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -16,6 +16,7 @@ This project was generated using [Angular CLI](https://github.com/angular/angula
|
|
|
16
16
|
- [Asserted Composite ID](#asserted-composite-id)
|
|
17
17
|
- [Asserted Composite IDs](#asserted-composite-ids)
|
|
18
18
|
- [History](#history)
|
|
19
|
+
- [10.0.8](#1008)
|
|
19
20
|
- [10.0.5](#1005)
|
|
20
21
|
- [10.0.4](#1004)
|
|
21
22
|
- [10.0.3](#1003)
|
|
@@ -378,6 +379,10 @@ A collection of asserted composite IDs.
|
|
|
378
379
|
|
|
379
380
|
## History
|
|
380
381
|
|
|
382
|
+
### 10.0.8
|
|
383
|
+
|
|
384
|
+
- 2025-08-06: automatically update scope in asserted composite ID only when not updating form and lookup is external and scope is empty.
|
|
385
|
+
|
|
381
386
|
### 10.0.5
|
|
382
387
|
|
|
383
388
|
- 2025-06-27:
|
|
@@ -686,6 +686,7 @@ class AssertedCompositeIdComponent {
|
|
|
686
686
|
lookupService;
|
|
687
687
|
lookupDefs;
|
|
688
688
|
_updatingForm;
|
|
689
|
+
_lookupConfigDirty = true;
|
|
689
690
|
extLookupConfigs;
|
|
690
691
|
targetExpanded = false;
|
|
691
692
|
// form
|
|
@@ -830,6 +831,10 @@ class AssertedCompositeIdComponent {
|
|
|
830
831
|
this.extMoreRequest.emit(event);
|
|
831
832
|
}
|
|
832
833
|
onExtLookupConfigChange(config) {
|
|
834
|
+
if (this._lookupConfigDirty || this._updatingForm) {
|
|
835
|
+
this._lookupConfigDirty = false;
|
|
836
|
+
return;
|
|
837
|
+
}
|
|
833
838
|
// update scope if external lookup config is selected
|
|
834
839
|
const external = !this.target.value?.name;
|
|
835
840
|
if (this._updatingForm || !external) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"myrmidon-cadmus-refs-asserted-ids.mjs","sources":["../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/services/item-ref-lookup.service.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/services/pin-ref-lookup.service.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/pin-target-lookup/pin-target-lookup.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/pin-target-lookup/pin-target-lookup.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-composite-id/asserted-composite-id.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-composite-id/asserted-composite-id.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-composite-ids/asserted-composite-ids.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-composite-ids/asserted-composite-ids.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/scoped-pin-lookup/scoped-pin-lookup.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/scoped-pin-lookup/scoped-pin-lookup.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-id/asserted-id.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-id/asserted-id.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-ids/asserted-ids.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-ids/asserted-ids.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/public-api.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/myrmidon-cadmus-refs-asserted-ids.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n// myrmidon\r\nimport { DataPage } from '@myrmidon/ngx-tools';\r\n\r\n// bricks\r\nimport {\r\n RefLookupFilter,\r\n RefLookupService,\r\n} from '@myrmidon/cadmus-refs-lookup';\r\n\r\n// cadmus\r\nimport { ItemService } from '@myrmidon/cadmus-api';\r\nimport { Item } from '@myrmidon/cadmus-core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ItemRefLookupService implements RefLookupService {\r\n constructor(private _itemService: ItemService) {}\r\n\r\n public lookup(filter: RefLookupFilter, options?: any): Observable<Item[]> {\r\n return this._itemService\r\n .getItems(\r\n {\r\n title: filter.text,\r\n },\r\n 1,\r\n filter.limit || 10\r\n )\r\n .pipe(map((page: DataPage<Item>) => page.items));\r\n }\r\n\r\n getName(item: Item): string {\r\n return item?.title;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { map, Observable, of } from 'rxjs';\r\n\r\n// myrmidon\r\nimport { DataPage, ErrorWrapper } from '@myrmidon/ngx-tools';\r\n\r\n// bricks\r\nimport {\r\n RefLookupFilter,\r\n RefLookupService,\r\n} from '@myrmidon/cadmus-refs-lookup';\r\n\r\n// cadmus\r\nimport { ItemService } from '@myrmidon/cadmus-api';\r\nimport { DataPinInfo, IndexLookupDefinition } from '@myrmidon/cadmus-core';\r\n\r\n/**\r\n * Pin-based lookup filter. This is a RefLookupFilter with the addition\r\n * of the item ID and part ID, which are used to filter the results\r\n * by the ItemPinLookupComponent.\r\n */\r\nexport interface PinRefLookupFilter extends RefLookupFilter {\r\n itemId?: string;\r\n partId?: string;\r\n}\r\n\r\n/**\r\n * Cadmus pin-based lookup data service. The text being searched here is just\r\n * the pin's value, according to the options specified. These options correspond\r\n * to an index lookup definition. The resulting items are of type DataPinInfo.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PinRefLookupService implements RefLookupService {\r\n constructor(private _itemService: ItemService) {}\r\n\r\n public getName(item: any | undefined): string {\r\n return item?.value || '';\r\n }\r\n\r\n private buildQuery(\r\n def: IndexLookupDefinition,\r\n filter: PinRefLookupFilter\r\n ): string {\r\n const sb: string[] = [];\r\n const AND = ' AND ';\r\n\r\n if (def.typeId) {\r\n sb.push(`[partTypeId=${def.typeId}]`);\r\n }\r\n if (def.roleId) {\r\n if (sb.length) {\r\n sb.push(AND);\r\n }\r\n sb.push(`[roleId=${def.roleId}]`);\r\n }\r\n if (def.name) {\r\n if (sb.length) {\r\n sb.push(AND);\r\n }\r\n sb.push(`[name=${def.name}]`);\r\n }\r\n if (filter.itemId) {\r\n if (sb.length) {\r\n sb.push(AND);\r\n }\r\n sb.push(`[itemId=${filter.itemId}]`);\r\n }\r\n if (filter.partId) {\r\n if (sb.length) {\r\n sb.push(AND);\r\n }\r\n sb.push(`[partId=${filter.partId}]`);\r\n }\r\n if (filter.text) {\r\n if (sb.length) {\r\n sb.push(AND);\r\n }\r\n // for other operators see backend SqlQueryBuilderBase.cs\r\n sb.push(`[value*=${filter.text}]`); // *= is \"contains\"\r\n }\r\n\r\n return sb.join('');\r\n }\r\n\r\n public lookup(filter: PinRefLookupFilter, options?: any): Observable<any[]> {\r\n // the index lookup definition is required\r\n const def = options as IndexLookupDefinition;\r\n if (!def) {\r\n return of([]);\r\n }\r\n\r\n // build the corresponding pin query\r\n const query = this.buildQuery(def, filter);\r\n\r\n // search the index\r\n return this._itemService.searchPins(query, 1, filter.limit).pipe(\r\n map((w: ErrorWrapper<DataPage<DataPinInfo>>) => {\r\n if (w.error) {\r\n console.error(w.error);\r\n return [];\r\n } else {\r\n return w.value?.items || [];\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n effect,\r\n Inject,\r\n input,\r\n model,\r\n OnDestroy,\r\n OnInit,\r\n output,\r\n} from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n Subscription,\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n forkJoin,\r\n take,\r\n} from 'rxjs';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n// material\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n// myrmidon\r\nimport { FlatLookupPipe } from '@myrmidon/ngx-tools';\r\n\r\n// bricks\r\nimport {\r\n RefLookupSetEvent,\r\n RefLookupComponent,\r\n RefLookupConfig,\r\n RefLookupSetComponent,\r\n} from '@myrmidon/cadmus-refs-lookup';\r\n\r\n// cadmus\r\nimport { ItemService, ThesaurusService } from '@myrmidon/cadmus-api';\r\nimport {\r\n DataPinInfo,\r\n IndexLookupDefinition,\r\n IndexLookupDefinitions,\r\n Item,\r\n Part,\r\n ThesaurusEntry,\r\n} from '@myrmidon/cadmus-core';\r\n\r\n// local\r\nimport {\r\n PinRefLookupFilter,\r\n PinRefLookupService,\r\n} from '../services/pin-ref-lookup.service';\r\nimport { ItemRefLookupService } from '../services/item-ref-lookup.service';\r\n\r\n// from Cadmus general parts\r\nconst METADATA_PART_ID = 'it.vedph.metadata';\r\ninterface MetadataPart extends Part {\r\n metadata: {\r\n type?: string;\r\n name: string;\r\n value: string;\r\n }[];\r\n}\r\n\r\n/**\r\n * Pin lookup data used internally by the component.\r\n */\r\nexport interface PinLookupData {\r\n pin: DataPinInfo;\r\n item?: Item;\r\n metaPart?: MetadataPart;\r\n}\r\n\r\n/**\r\n * A pin-based target. This includes pin's name and value, and\r\n * the item's ID and optional part IDs. The label is a user friendly\r\n * string representation of the target, while the gid is a globally\r\n * unique identifier for the target.\r\n */\r\nexport interface PinTarget {\r\n gid: string;\r\n label: string;\r\n itemId?: string;\r\n partId?: string;\r\n partTypeId?: string;\r\n roleId?: string;\r\n name?: string;\r\n value?: string;\r\n}\r\n\r\n/*\r\n * Scoped pin-based lookup component. This component provides a list\r\n * of pin-based searches, with a lookup control. Whenever the user\r\n * picks a pin value, he gets the details about its item and part, and\r\n * item's metadata part, if any. He can then use these data to build\r\n * some EID by variously assembling these components.\r\n */\r\n@Component({\r\n selector: 'cadmus-pin-target-lookup',\r\n templateUrl: './pin-target-lookup.component.html',\r\n styleUrls: ['./pin-target-lookup.component.css'],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n ClipboardModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatTooltipModule,\r\n // myrmidon\r\n FlatLookupPipe,\r\n // bricks\r\n RefLookupComponent,\r\n RefLookupSetComponent,\r\n ],\r\n})\r\nexport class PinTargetLookupComponent implements OnInit, OnDestroy {\r\n private readonly _subs: Subscription[] = [];\r\n private _updatingForm = false;\r\n private _startWithByTypeMode?: boolean;\r\n\r\n /**\r\n * True when the by-type pin lookup mode is active.\r\n * User can change mode unless modeSwitching is false.\r\n */\r\n public readonly pinByTypeMode = model<boolean>();\r\n\r\n /**\r\n * True when the user can switch between by-type and by-item mode.\r\n */\r\n public readonly canSwitchMode = model<boolean>();\r\n /**\r\n * True when the user can edit the target's gid/label for internal\r\n * targets.\r\n */\r\n public readonly canEditTarget = input<boolean>();\r\n /**\r\n * The lookup definitions to be used for the by-type lookup. If\r\n * not specified, the lookup definitions will be got via injection\r\n * when available; if the injected definitions are empty, the\r\n * lookup definitions will be built from the model-types thesaurus;\r\n * if this is not available either, the by-type lookup will be\r\n * disabled.\r\n */\r\n public readonly lookupDefinitions = model<IndexLookupDefinitions>();\r\n /**\r\n * The optional configurations for using external lookup services.\r\n */\r\n public readonly extLookupConfigs = input<RefLookupConfig[]>([]);\r\n\r\n /**\r\n * The target to be edited.\r\n */\r\n public readonly target = model<PinTarget>();\r\n\r\n /**\r\n * The default value for part type key when the by-type mode is active.\r\n */\r\n public readonly defaultPartTypeKey = input<string>();\r\n\r\n /**\r\n * Emitted when user closes the editor.\r\n */\r\n public readonly editorClose = output();\r\n\r\n /**\r\n * Emitted when the user requests more items from an external lookup.\r\n */\r\n public readonly extMoreRequest = output<RefLookupSetEvent>();\r\n\r\n /**\r\n * Emitted when the user changes the external lookup configuration.\r\n */\r\n public readonly extLookupConfigChange = output<RefLookupConfig>();\r\n\r\n // by type\r\n public modelEntries: ThesaurusEntry[];\r\n public partTypeKeys: string[];\r\n // by item\r\n public itemParts: Part[];\r\n // form - by item\r\n public item: FormControl<Item | null>;\r\n public itemPart: FormControl<Part | null>;\r\n // form - by type\r\n public partTypeKey: FormControl<string | null>;\r\n // form - both\r\n public gid: FormControl<string | null>;\r\n public label: FormControl<string | null>;\r\n public byTypeMode: FormControl<boolean>;\r\n public external: FormControl<boolean>;\r\n public form: FormGroup;\r\n\r\n public filter: PinRefLookupFilter;\r\n public pinFilterOptions?: IndexLookupDefinition;\r\n public lookupData?: PinLookupData;\r\n\r\n constructor(\r\n @Inject('indexLookupDefinitions')\r\n private _presetLookupDefs: IndexLookupDefinitions,\r\n public itemLookupService: ItemRefLookupService,\r\n public pinLookupService: PinRefLookupService,\r\n private _itemService: ItemService,\r\n private _thesService: ThesaurusService,\r\n private _snackbar: MatSnackBar,\r\n formBuilder: FormBuilder\r\n ) {\r\n this.partTypeKeys = [];\r\n this.itemParts = [];\r\n this.modelEntries = [];\r\n // this is the default filter for the pin lookup, which will\r\n // be merged with values provided by user here\r\n this.filter = {\r\n text: '',\r\n limit: 10,\r\n };\r\n // form\r\n this.item = formBuilder.control(null);\r\n this.itemPart = formBuilder.control(null);\r\n this.partTypeKey = formBuilder.control(null);\r\n this.gid = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(300),\r\n ]);\r\n this.label = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(300),\r\n ]);\r\n this.byTypeMode = formBuilder.control(false, { nonNullable: true });\r\n this.external = formBuilder.control(false, { nonNullable: true });\r\n this.form = formBuilder.group({\r\n item: this.item,\r\n itemPart: this.itemPart,\r\n partTypeKey: this.partTypeKey,\r\n gid: this.gid,\r\n label: this.label,\r\n byTypeMode: this.byTypeMode,\r\n external: this.external,\r\n });\r\n\r\n // when pinByTypeMode changes, adjust form\r\n effect(() => {\r\n if (!this._updatingForm) {\r\n if (!this.byTypeMode.value) {\r\n this._startWithByTypeMode = this.pinByTypeMode();\r\n } else {\r\n this.byTypeMode.setValue(this.pinByTypeMode() || false, {\r\n emitEvent: false,\r\n });\r\n this.byTypeMode.updateValueAndValidity();\r\n }\r\n }\r\n });\r\n\r\n // when target changes, update form\r\n effect(() => {\r\n const target = this.target();\r\n console.log('target changed', target);\r\n this.updateForm(target);\r\n });\r\n }\r\n\r\n private emitTargetChange(): void {\r\n if (!this._updatingForm) {\r\n this.target.set(this.getTarget());\r\n }\r\n }\r\n\r\n private forceByItem(): void {\r\n this.pinByTypeMode.set(false);\r\n this.canSwitchMode.set(false);\r\n }\r\n\r\n private setupKeys(): void {\r\n // use DI presets if no lookup definitions\r\n if (!this.lookupDefinitions()) {\r\n this.lookupDefinitions.set(this._presetLookupDefs);\r\n }\r\n // keys are all the defined lookup searches\r\n this.partTypeKeys = Object.keys(this.lookupDefinitions()!);\r\n\r\n // if no keys, get them from thesaurus model-types;\r\n // if this is not available, just force by item mode.\r\n if (!this.partTypeKeys.length) {\r\n if (this.modelEntries?.length) {\r\n // set lookupDefinitions from thesaurus entries\r\n const defs: IndexLookupDefinitions = {};\r\n this.modelEntries.forEach((e) => {\r\n defs[e.value] = {\r\n name: e.value,\r\n typeId: e.id,\r\n };\r\n });\r\n this.lookupDefinitions.set(defs);\r\n // set type keys from thesaurus entries\r\n this.partTypeKeys = this.modelEntries.map((e) => e.value);\r\n }\r\n }\r\n\r\n // if still no keys, force by item mode\r\n if (!this.partTypeKeys.length) {\r\n this.forceByItem();\r\n } else {\r\n // set default key\r\n this.partTypeKey.setValue(\r\n this.defaultPartTypeKey() || this.partTypeKeys[0]\r\n );\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n // set start mode if required\r\n if (this._startWithByTypeMode) {\r\n this.byTypeMode.setValue(true);\r\n }\r\n\r\n // whenever item changes (by lookup), update item's parts and filter\r\n this._subs.push(\r\n this.item.valueChanges\r\n .pipe(distinctUntilChanged(), debounceTime(300))\r\n .subscribe((item) => {\r\n this.itemPart.setValue(null, { emitEvent: false });\r\n this.itemParts = item?.parts || [];\r\n this.filter = {\r\n ...this.filter,\r\n itemId: item?.id,\r\n };\r\n })\r\n );\r\n\r\n // whenever itemPart changes (by user selection), update target and\r\n // eventually gid\r\n this._subs.push(\r\n this.itemPart.valueChanges\r\n .pipe(distinctUntilChanged(), debounceTime(300))\r\n .subscribe((part) => {\r\n if (!this.gid.value || this.gid.pristine) {\r\n this.gid.setValue(this.buildGid());\r\n }\r\n this.filter = {\r\n ...this.filter,\r\n partId: part?.id,\r\n };\r\n this.updateTarget(true);\r\n })\r\n );\r\n\r\n // whenever partTypeKey changes, update filter's options\r\n this._subs.push(\r\n this.partTypeKey.valueChanges\r\n .pipe(distinctUntilChanged(), debounceTime(300))\r\n .subscribe((key) => {\r\n this.pinFilterOptions = key\r\n ? this.lookupDefinitions()![key]\r\n : undefined;\r\n })\r\n );\r\n\r\n // whenever external changes, set required validator in label\r\n // (true for external, false for internal)\r\n this._subs.push(\r\n this.external.valueChanges\r\n .pipe(distinctUntilChanged(), debounceTime(300))\r\n .subscribe((external) => {\r\n if (external) {\r\n this.label.setValidators([\r\n Validators.required,\r\n Validators.maxLength(300),\r\n ]);\r\n } else {\r\n this.label.setValidators([Validators.maxLength(300)]);\r\n }\r\n this.label.updateValueAndValidity();\r\n })\r\n );\r\n\r\n // load model-types thesaurus entries\r\n this._thesService.getThesaurus('model-types', true).subscribe({\r\n next: (t) => {\r\n this.modelEntries = t.entries || [];\r\n if (this.modelEntries?.length) {\r\n this.setupKeys();\r\n } else {\r\n this.forceByItem();\r\n }\r\n },\r\n error: () => {\r\n this.forceByItem();\r\n },\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n for (let i = 0; i < this._subs.length; i++) {\r\n this._subs[i].unsubscribe();\r\n }\r\n }\r\n\r\n private buildGid(): string | null {\r\n // the GID is the part ID if any, or the item ID, followed by\r\n // the pin's value (=EID)\r\n const pin = this.lookupData?.pin;\r\n if (!pin?.value) {\r\n return null;\r\n }\r\n return pin.partId\r\n ? `P${pin.partId}/${pin.value}`\r\n : `I${pin.itemId}/${pin.value}`;\r\n }\r\n\r\n private buildLabel(): string | null {\r\n if (!this.lookupData?.pin) {\r\n return null;\r\n }\r\n const sb: string[] = [];\r\n // pin value\r\n if (this.lookupData.pin.value) {\r\n sb.push(this.lookupData.pin.value);\r\n sb.push(' | ');\r\n }\r\n // item title\r\n sb.push(this.lookupData.item?.title || this.lookupData.pin?.itemId);\r\n // part type and role\r\n if (this.lookupData.pin.partTypeId) {\r\n const e = this.modelEntries?.find(\r\n (e) => e.id === this.lookupData!.pin.partTypeId\r\n );\r\n sb.push(' (');\r\n sb.push(e?.value || this.lookupData.pin.partTypeId);\r\n if (this.lookupData.pin.roleId) {\r\n sb.push(`, ${this.lookupData.pin.roleId}`);\r\n }\r\n sb.push(')');\r\n }\r\n return sb.join('');\r\n }\r\n\r\n private getTarget(): PinTarget {\r\n if (this.external.value) {\r\n return {\r\n gid: this.gid.value || '',\r\n label: this.label.value || '',\r\n };\r\n } else {\r\n const pin = this.lookupData?.pin;\r\n return {\r\n gid: this.gid.value || '',\r\n label: this.label.value || '',\r\n itemId: pin?.itemId || '',\r\n partId: pin?.partId || '',\r\n partTypeId: pin?.partTypeId || '',\r\n roleId: pin?.roleId || '',\r\n name: pin?.name || '',\r\n value: pin?.value || '',\r\n };\r\n }\r\n }\r\n\r\n private emitChange(): void {\r\n this.target.set(this.getTarget());\r\n }\r\n\r\n private updateTarget(suppressEmit = false): void {\r\n this._updatingForm = true;\r\n\r\n if (!this.external.value) {\r\n this.gid.setValue(this.buildGid());\r\n this.gid.updateValueAndValidity();\r\n this.gid.markAsDirty();\r\n this.label.setValue(this.buildLabel());\r\n this.label.updateValueAndValidity();\r\n this.label.markAsDirty();\r\n }\r\n\r\n this._updatingForm = false;\r\n\r\n if (!suppressEmit) {\r\n this.emitTargetChange();\r\n }\r\n }\r\n\r\n private updateTargetFromData(): void {\r\n // Update GID and label without emitting changes\r\n if (!this.external.value) {\r\n this.gid.setValue(this.buildGid(), { emitEvent: false });\r\n this.gid.updateValueAndValidity();\r\n this.label.setValue(this.buildLabel(), { emitEvent: false });\r\n this.label.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private updateForm(target?: PinTarget): void {\r\n this._updatingForm = true;\r\n\r\n try {\r\n // reset if no target\r\n if (!target) {\r\n this.lookupData = undefined;\r\n this.item.reset();\r\n this.itemPart.reset();\r\n this.gid.reset();\r\n this.label.reset();\r\n return;\r\n }\r\n\r\n // set gid and label\r\n this.gid.setValue(target.gid || '', { emitEvent: false });\r\n this.label.setValue(target.label || '', { emitEvent: false });\r\n // reset lookup\r\n this.lookupData = {\r\n pin: {\r\n itemId: target.itemId || '',\r\n partId: target.partId || '',\r\n partTypeId: target.partTypeId || '',\r\n roleId: target.roleId || '',\r\n name: target.name || '',\r\n value: target.value || '',\r\n },\r\n };\r\n\r\n // if target is internal, get item\r\n if (target.itemId) {\r\n this._itemService.getItem(target.itemId, true, true).subscribe({\r\n next: (item) => {\r\n this._updatingForm = true;\r\n this.item.setValue(item, { emitEvent: false });\r\n this.form.markAsPristine();\r\n this.external.setValue(false, { emitEvent: false });\r\n this.updateTargetFromData();\r\n this._updatingForm = false;\r\n },\r\n error: (error) => {\r\n if (error) {\r\n console.error('Item service error', error);\r\n }\r\n this._updatingForm = true;\r\n this.external.setValue(false, { emitEvent: false });\r\n this._updatingForm = false;\r\n },\r\n });\r\n } else {\r\n this.external.setValue(true, {\r\n emitEvent: false,\r\n });\r\n this.updateTargetFromData();\r\n }\r\n } finally {\r\n // ensure flag is reset even if there's an error\r\n if (!target?.itemId) {\r\n this._updatingForm = false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Called when the item lookup changes (item is looked up\r\n * by its title).\r\n *\r\n * @param item The item got from lookup.\r\n */\r\n public onItemLookupChange(item: unknown): void {\r\n if (!item) {\r\n this.itemPart.setValue(null);\r\n this.itemParts = [];\r\n return;\r\n }\r\n // load item's parts\r\n this._itemService.getItem((item as Item)!.id, true, true).subscribe({\r\n next: (i) => {\r\n // setting the item will trigger its parts update\r\n this.item.setValue(i);\r\n this.updateTarget(true); // suppress emit to avoid double emission\r\n },\r\n error: (error) => {\r\n if (error) {\r\n console.error('Error getting item', error);\r\n }\r\n this.itemPart.setValue(null);\r\n this.itemParts = [];\r\n this.updateTarget(true); // suppress emit to avoid double emission\r\n },\r\n });\r\n }\r\n\r\n private loadItemInfo(pin?: DataPinInfo): void {\r\n if (!pin) {\r\n return;\r\n }\r\n forkJoin({\r\n item: this._itemService.getItem(pin.itemId, false, true),\r\n part: this._itemService.getPartFromTypeAndRole(\r\n pin.itemId,\r\n METADATA_PART_ID,\r\n undefined,\r\n true\r\n ),\r\n })\r\n .pipe(take(1))\r\n .subscribe({\r\n next: (result) => {\r\n this.lookupData = {\r\n pin: pin,\r\n item: result.item!,\r\n metaPart: result.part as MetadataPart,\r\n };\r\n this.updateTarget(true); // suppress emit to avoid double emission\r\n },\r\n error: (error) => {\r\n this.lookupData = undefined;\r\n console.error('Error loading item/metadata', error);\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Called when the pin lookup change. A pin is looked up by its\r\n * name and value (=the filter's text), and optionally by:\r\n * - its index lookup definition (selected by partTypeKey).\r\n * - its item (defined by item, in filter).\r\n * - its part (defined by itemPart, in filter).\r\n *\r\n * @param info The pin info from pin lookup.\r\n */\r\n public onPinLookupChange(info: unknown): void {\r\n this.loadItemInfo(info as DataPinInfo);\r\n }\r\n\r\n public onExtItemChange(event: RefLookupSetEvent): void {\r\n if (event.item) {\r\n this._updatingForm = true;\r\n setTimeout(() => {\r\n this.gid.setValue(event.itemId, { emitEvent: false });\r\n this.gid.updateValueAndValidity();\r\n this.gid.markAsDirty();\r\n\r\n this.label.setValue(event.itemLabel, { emitEvent: false });\r\n this.label.updateValueAndValidity();\r\n this.label.markAsDirty();\r\n\r\n this._updatingForm = false;\r\n });\r\n }\r\n }\r\n\r\n public onExtMoreRequest(event: RefLookupSetEvent): void {\r\n this.extMoreRequest.emit(event);\r\n }\r\n\r\n public onCopied(): void {\r\n this._snackbar.open('Copied to clipboard', 'OK', {\r\n duration: 1500,\r\n });\r\n }\r\n\r\n public onExtConfigChange(config: RefLookupConfig): void {\r\n this.extLookupConfigChange.emit(config);\r\n }\r\n\r\n public close(): void {\r\n this.editorClose.emit();\r\n }\r\n\r\n public save(): void {\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n this.emitTargetChange();\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- external -->\r\n <mat-checkbox [formControl]=\"external\">external</mat-checkbox>\r\n <!-- mode switcher -->\r\n @if (!external.value) {\r\n <div>\r\n @if (canSwitchMode()) {\r\n <mat-checkbox [formControl]=\"byTypeMode\"> by type</mat-checkbox>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- label -->\r\n <div>\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n @if ($any(label).errors?.required && (label.dirty || label.touched)) {\r\n <mat-error>label required</mat-error>\r\n } @if ( $any(label).errors?.maxLength && (label.dirty || label.touched)\r\n ) {\r\n <mat-error>label too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && label.value) {\r\n <div class=\"info\"><span class=\"label\">label</span>{{ label.value }}</div>\r\n }\r\n </div>\r\n\r\n <!-- gid -->\r\n <div id=\"gid-container\">\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>GID</mat-label>\r\n <input matInput [formControl]=\"gid\" />\r\n @if ($any(gid).errors?.required && (gid.dirty || gid.touched)) {\r\n <mat-error>GID required</mat-error>\r\n } @if ($any(gid).errors?.maxLength && (gid.dirty || gid.touched)) {\r\n <mat-error>GID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && gid.value) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span> <span class=\"gid\">{{ gid.value }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- external lookup set -->\r\n @if (external.value && extLookupConfigs().length) {\r\n <fieldset>\r\n <legend>external lookup</legend>\r\n <cadmus-refs-lookup-set\r\n [configs]=\"extLookupConfigs()\"\r\n (itemChange)=\"onExtItemChange($event)\"\r\n (moreRequest)=\"onExtMoreRequest($event)\"\r\n (configChange)=\"onExtConfigChange($any($event))\"\r\n />\r\n </fieldset>\r\n }\r\n\r\n <!-- BY ITEM -->\r\n @if (!external.value) {\r\n <fieldset>\r\n <legend>internal lookup</legend>\r\n <div class=\"form-row\">\r\n @if (!byTypeMode.value) {\r\n <fieldset class=\"form-row\">\r\n <legend>pin filters</legend>\r\n <!-- item filter -->\r\n <cadmus-refs-lookup\r\n [service]=\"itemLookupService\"\r\n label=\"item\"\r\n (itemChange)=\"onItemLookupChange($event)\"\r\n />\r\n <!-- part filter -->\r\n @if (itemParts.length) {\r\n <mat-form-field>\r\n <mat-label>part</mat-label>\r\n <mat-select [formControl]=\"itemPart\">\r\n <mat-option [value]=\"null\">(any)</mat-option>\r\n @for (p of itemParts; track p) {\r\n <mat-option [value]=\"p\">{{\r\n p.typeId | flatLookup : modelEntries : \"id\" : \"value\"\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-hint>parts: {{ itemParts.length }}</mat-hint>\r\n </mat-form-field>\r\n }\r\n </fieldset>\r\n }\r\n <!-- BY TYPE -->\r\n @if (byTypeMode.value) {\r\n <div>\r\n <!-- part type filter -->\r\n @if (partTypeKeys.length) {\r\n <mat-form-field>\r\n <mat-label>part type</mat-label>\r\n <mat-select [formControl]=\"partTypeKey\">\r\n @for (k of partTypeKeys; track k) {\r\n <mat-option [value]=\"k\">{{ k }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n <!-- PIN -->\r\n @if (partTypeKey.value) {\r\n <div>\r\n <!-- pin lookup -->\r\n <cadmus-refs-lookup\r\n [service]=\"pinLookupService\"\r\n [baseFilter]=\"filter\"\r\n [options]=\"pinFilterOptions\"\r\n label=\"pin\"\r\n (itemChange)=\"onPinLookupChange($event)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n <!-- data -->\r\n @if (lookupData?.pin?.name) {\r\n <mat-expansion-panel id=\"data\">\r\n <mat-expansion-panel-header>pin data</mat-expansion-panel-header>\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <th></th>\r\n <th>source</th>\r\n <th>value</th>\r\n </thead>\r\n <tbody>\r\n <!-- pin name -->\r\n @if (lookupData?.pin?.name) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.name\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin name</td>\r\n <td>{{ lookupData!.pin.name }}</td>\r\n </tr>\r\n }\r\n <!-- pin value -->\r\n @if (lookupData?.pin?.value) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin value</td>\r\n <td>{{ lookupData!.pin.value }}</td>\r\n </tr>\r\n }\r\n <!-- item ID -->\r\n @if (lookupData?.pin?.itemId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.itemId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item ID</td>\r\n <td>{{ lookupData!.pin.itemId }}</td>\r\n </tr>\r\n }\r\n <!-- item title -->\r\n @if (lookupData?.item?.title) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData!.item!.title\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item title</td>\r\n <td>{{ lookupData!.item!.title }}</td>\r\n </tr>\r\n }\r\n <!-- part ID -->\r\n @if (lookupData?.pin?.partId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.partId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part ID</td>\r\n <td>{{ lookupData!.pin.partId }}</td>\r\n </tr>\r\n }\r\n <!-- part type ID -->\r\n @if (lookupData?.pin?.partTypeId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.partTypeId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part type ID</td>\r\n <td>{{ lookupData!.pin!.partTypeId }}</td>\r\n </tr>\r\n }\r\n <!-- part role ID -->\r\n @if (lookupData?.pin?.roleId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.roleId!\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part role ID</td>\r\n <td>{{ lookupData!.pin!.roleId }}</td>\r\n </tr>\r\n }\r\n <!-- part's metadata -->\r\n @for ( m of lookupData?.metaPart?.metadata || []; track m; let i =\r\n $index) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"m.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"metadata\">{{ m.name }}</td>\r\n <td class=\"metadata\">{{ m.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </mat-expansion-panel>\r\n }\r\n </fieldset>\r\n }\r\n\r\n <!-- buttons -->\r\n <div class=\"button-row\" id=\"toolbar\">\r\n <button mat-icon-button type=\"button\" (click)=\"close()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-flat-button type=\"submit\" [disabled]=\"form.invalid\">\r\n <mat-icon>check_circle</mat-icon>\r\n target\r\n </button>\r\n </div>\r\n</form>\r\n","import { Component, effect, Inject, input, model, output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { debounceTime, filter } from 'rxjs/operators';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n// material\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n// myrmidon\r\nimport { RamStorageService } from '@myrmidon/ngx-tools';\r\n\r\n// bricks\r\nimport { Assertion, AssertionComponent } from '@myrmidon/cadmus-refs-assertion';\r\n\r\n// cadmus\r\nimport { IndexLookupDefinitions, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\nimport {\r\n LOOKUP_CONFIGS_KEY,\r\n RefLookupConfig,\r\n RefLookupSetEvent,\r\n} from '@myrmidon/cadmus-refs-lookup';\r\n\r\n// local\r\nimport { PinRefLookupService } from '../services/pin-ref-lookup.service';\r\nimport {\r\n PinTarget,\r\n PinTargetLookupComponent,\r\n} from '../pin-target-lookup/pin-target-lookup.component';\r\n\r\n/**\r\n * An asserted composite ID. This can be an external ID, having only the ID value\r\n * as its target.gid property; or a lookup ID, with a pin-based target.\r\n * In both cases, we can add a tag, a scope, and an assertion.\r\n */\r\nexport interface AssertedCompositeId {\r\n target: PinTarget;\r\n tag?: string;\r\n scope?: string;\r\n assertion?: Assertion;\r\n}\r\n\r\n/**\r\n * An asserted composite ID editor. This allows the user to edit an asserted\r\n * composite ID, which can be an external ID or a lookup ID.\r\n */\r\n@Component({\r\n selector: 'cadmus-refs-asserted-composite-id',\r\n templateUrl: './asserted-composite-id.component.html',\r\n styleUrls: ['./asserted-composite-id.component.css'],\r\n imports: [\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatTooltipModule,\r\n // bricks\r\n AssertionComponent,\r\n // local\r\n PinTargetLookupComponent,\r\n ],\r\n})\r\nexport class AssertedCompositeIdComponent {\r\n private _updatingForm: boolean | undefined;\r\n\r\n public extLookupConfigs: RefLookupConfig[];\r\n public targetExpanded = false;\r\n // form\r\n public target: FormControl<PinTarget | null>;\r\n public scope: FormControl<string | null>;\r\n public tag: FormControl<string | null>;\r\n public assertion: FormControl<Assertion | null>;\r\n public form: FormGroup;\r\n\r\n // asserted-id-scopes\r\n public readonly idScopeEntries = input<ThesaurusEntry[]>();\r\n\r\n // asserted-id-tags\r\n public readonly idTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // assertion-tags\r\n public readonly assTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-types\r\n public readonly refTypeEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-tags\r\n public readonly refTagEntries = input<ThesaurusEntry[]>();\r\n\r\n /**\r\n * The ID being edited.\r\n */\r\n public readonly id = model<AssertedCompositeId>();\r\n\r\n /**\r\n * True if the UI has a submit button.\r\n */\r\n public readonly hasSubmit = input<boolean>();\r\n\r\n /**\r\n * True when the internal UI preselected mode should be by type rather than\r\n * by item. User can change mode unless modeSwitching is false.\r\n */\r\n public readonly pinByTypeMode = input<boolean>();\r\n\r\n /**\r\n * True when the user can switch between by-type and by-item mode in\r\n * the internal UI.\r\n */\r\n public readonly canSwitchMode = input<boolean>();\r\n\r\n /**\r\n * True when the user can edit the target's gid/label for internal targets.\r\n */\r\n public readonly canEditTarget = input<boolean>();\r\n\r\n /**\r\n * The lookup definitions to be used for the by-type lookup in the internal UI.\r\n * If not specified, the lookup definitions will be got via injection\r\n * when available; if the injected definitions are empty, the\r\n * lookup definitions will be built from the model-types thesaurus;\r\n * if this is not available either, the by-type lookup will be\r\n * disabled.\r\n */\r\n public readonly lookupDefinitions = input<IndexLookupDefinitions>();\r\n\r\n /**\r\n * The default part type key to be used.\r\n */\r\n public readonly defaultPartTypeKey = input<string>();\r\n\r\n /**\r\n * Emitted whenever the user requests to close the editor.\r\n */\r\n public readonly editorClose = output();\r\n\r\n /**\r\n * Emitted when the user requests more.\r\n */\r\n public readonly extMoreRequest = output<RefLookupSetEvent>();\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n public lookupService: PinRefLookupService,\r\n @Inject('indexLookupDefinitions')\r\n public lookupDefs: IndexLookupDefinitions,\r\n settings: RamStorageService\r\n ) {\r\n // form\r\n this.target = formBuilder.control(null, Validators.required);\r\n this.scope = formBuilder.control(null, Validators.maxLength(500));\r\n this.tag = formBuilder.control(null, Validators.maxLength(50));\r\n this.assertion = formBuilder.control(null);\r\n this.form = formBuilder.group({\r\n target: this.target,\r\n scope: this.scope,\r\n tag: this.tag,\r\n assertion: this.assertion,\r\n });\r\n\r\n // external lookup configs\r\n this.extLookupConfigs =\r\n settings.retrieve<RefLookupConfig[]>(LOOKUP_CONFIGS_KEY) || [];\r\n\r\n // when id changes, update form\r\n effect(() => {\r\n const id = this.id();\r\n this.updateForm(id);\r\n });\r\n\r\n // when form changes, emit id change\r\n this.form.valueChanges\r\n .pipe(\r\n // react only on user changes, when form is valid\r\n filter(() => !this._updatingForm && this.form.valid),\r\n debounceTime(300),\r\n takeUntilDestroyed()\r\n )\r\n .subscribe((_) => {\r\n this.emitIdChange();\r\n });\r\n }\r\n\r\n public onAssertionChange(assertion: Assertion | undefined): void {\r\n this.assertion.setValue(assertion || null);\r\n }\r\n\r\n public onTargetChange(target?: PinTarget): void {\r\n this.target.setValue(target!);\r\n this.target.markAsDirty();\r\n this.target.updateValueAndValidity();\r\n if (this.form.valid) {\r\n this.targetExpanded = false;\r\n }\r\n }\r\n\r\n private updateForm(id: AssertedCompositeId | undefined): void {\r\n this._updatingForm = true;\r\n if (!id) {\r\n this.form.reset();\r\n } else {\r\n this.target.setValue(id.target, { emitEvent: false });\r\n this.scope.setValue(id.scope || null, { emitEvent: false });\r\n this.tag.setValue(id.tag || null, { emitEvent: false });\r\n this.assertion.setValue(id.assertion || null, { emitEvent: false });\r\n this.form.markAsPristine();\r\n }\r\n this._updatingForm = false;\r\n }\r\n\r\n private getId(): AssertedCompositeId {\r\n const external = !this.target.value?.name;\r\n const target = this.target.value;\r\n return {\r\n target: external\r\n ? {\r\n gid: target?.gid || '',\r\n label: target?.label || target?.gid || '',\r\n }\r\n : target!,\r\n scope: this.scope.value?.trim() || '',\r\n tag: this.tag.value?.trim(),\r\n assertion: this.assertion.value || undefined,\r\n };\r\n }\r\n\r\n public emitIdChange(): void {\r\n if (!this.hasSubmit()) {\r\n this.id.set(this.getId());\r\n }\r\n }\r\n\r\n public onEditorClose(): void {\r\n this.targetExpanded = false;\r\n }\r\n\r\n public onExtMoreRequest(event: RefLookupSetEvent): void {\r\n this.extMoreRequest.emit(event);\r\n }\r\n\r\n public onExtLookupConfigChange(config: RefLookupConfig): void {\r\n // update scope if external lookup config is selected\r\n const external = !this.target.value?.name;\r\n if (this._updatingForm || !external) {\r\n return;\r\n }\r\n if (\r\n !this.scope.value ||\r\n this.extLookupConfigs.some((c) => c.name === this.scope.value)\r\n ) {\r\n this.scope.setValue(config.name || null);\r\n this.scope.markAsDirty();\r\n this.scope.updateValueAndValidity();\r\n }\r\n }\r\n\r\n public cancel(): void {\r\n this.editorClose.emit();\r\n }\r\n\r\n public save(): void {\r\n if (this.form.valid) {\r\n this.id.set(this.getId());\r\n }\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries(); track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag.errors)?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries(); track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- scope (free) -->\r\n @else {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if ( $any(scope.errors)?.maxLength && (scope.dirty || scope.touched) )\r\n {\r\n <mat-error>scope too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- label and GID -->\r\n @if (target.value?.label) {\r\n <div class=\"info\">\r\n <span class=\"label\">label</span>{{ target.value?.label }}\r\n </div>\r\n } @if (target.value?.gid) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span>{{ target.value?.gid }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- target -->\r\n <div class=\"boxed\">\r\n <mat-expansion-panel [(expanded)]=\"targetExpanded\">\r\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\r\n <cadmus-pin-target-lookup\r\n [pinByTypeMode]=\"pinByTypeMode()\"\r\n [canSwitchMode]=\"canSwitchMode()\"\r\n [canEditTarget]=\"canEditTarget()\"\r\n [lookupDefinitions]=\"lookupDefinitions()\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey()\"\r\n [target]=\"target.value || undefined\"\r\n [extLookupConfigs]=\"extLookupConfigs\"\r\n (targetChange)=\"onTargetChange($event)\"\r\n (editorClose)=\"onEditorClose()\"\r\n (extMoreRequest)=\"onExtMoreRequest($event)\"\r\n (extLookupConfigChange)=\"onExtLookupConfigChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n <!-- assertion -->\r\n <br />\r\n <div class=\"boxed\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n\r\n <!-- buttons -->\r\n @if (hasSubmit()) {\r\n <div>\r\n <button mat-icon-button type=\"button\" (click)=\"cancel()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-icon-button type=\"submit\" [disabled]=\"form.invalid\">\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n</form>\r\n","import { Component, input, Input, output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { take } from 'rxjs';\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { IndexLookupDefinitions, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\nimport { DialogService } from '@myrmidon/ngx-mat-tools';\r\n\r\nimport {\r\n AssertedCompositeId,\r\n AssertedCompositeIdComponent,\r\n} from '../asserted-composite-id/asserted-composite-id.component';\r\n\r\n/**\r\n * Asserted composite IDs editor.\r\n */\r\n@Component({\r\n selector: 'cadmus-refs-asserted-composite-ids',\r\n templateUrl: './asserted-composite-ids.component.html',\r\n styleUrls: ['./asserted-composite-ids.component.css'],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n AssertedCompositeIdComponent,\r\n ],\r\n})\r\nexport class AssertedCompositeIdsComponent {\r\n private _ids: AssertedCompositeId[];\r\n private _editedIndex: number;\r\n public edited?: AssertedCompositeId;\r\n\r\n /**\r\n * The asserted IDs.\r\n */\r\n @Input()\r\n public get ids(): AssertedCompositeId[] {\r\n return this._ids;\r\n }\r\n public set ids(value: AssertedCompositeId[]) {\r\n if (this._ids !== value) {\r\n this._ids = value || [];\r\n this.updateForm(value);\r\n }\r\n }\r\n\r\n // asserted-id-scopes\r\n public readonly idScopeEntries = input<ThesaurusEntry[]>();\r\n\r\n // asserted-id-tags\r\n public readonly idTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // assertion-tags\r\n public readonly assTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-types\r\n public readonly refTypeEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-tags\r\n public readonly refTagEntries = input<ThesaurusEntry[]>();\r\n\r\n /**\r\n * True when the internal UI preselected mode should be by type rather than\r\n * by item. User can change mode unless modeSwitching is false.\r\n */\r\n public readonly pinByTypeMode = input<boolean>();\r\n\r\n /**\r\n * True when the user can switch between by-type and by-item mode in\r\n * the internal UI.\r\n */\r\n public readonly canSwitchMode = input<boolean>();\r\n\r\n /**\r\n * True when the user can edit the target's gid/label for internal targets.\r\n */\r\n public readonly canEditTarget = input<boolean>();\r\n\r\n /**\r\n * The lookup definitions to be used for the by-type lookup in the internal UI.\r\n * If not specified, the lookup definitions will be got via injection\r\n * when available; if the injected definitions are empty, the\r\n * lookup definitions will be built from the model-types thesaurus;\r\n * if this is not available either, the by-type lookup will be\r\n * disabled.\r\n */\r\n public readonly lookupDefinitions = input<IndexLookupDefinitions>();\r\n\r\n /**\r\n * The default part type key.\r\n */\r\n public readonly defaultPartTypeKey = input<string>();\r\n\r\n /**\r\n * Emitted whenever any ID changes.\r\n */\r\n public readonly idsChange = output<AssertedCompositeId[]>();\r\n\r\n public entries: FormControl<AssertedCompositeId[]>;\r\n public form: FormGroup;\r\n\r\n constructor(formBuilder: FormBuilder, private _dialogService: DialogService) {\r\n this._ids = [];\r\n this._editedIndex = -1;\r\n this.entries = formBuilder.control([], { nonNullable: true });\r\n // form\r\n this.form = formBuilder.group({\r\n ids: this.entries,\r\n });\r\n }\r\n\r\n private updateForm(ids: AssertedCompositeId[]): void {\r\n if (!ids?.length) {\r\n this.form.reset();\r\n return;\r\n }\r\n this.entries.setValue(ids, { emitEvent: false });\r\n this.entries.updateValueAndValidity();\r\n this.form.markAsPristine();\r\n }\r\n\r\n private emitIdsChange(): void {\r\n this.idsChange.emit(this.entries.value);\r\n }\r\n\r\n public addId(): void {\r\n this.editId(\r\n {\r\n target: { gid: '', label: '' },\r\n },\r\n -1\r\n );\r\n }\r\n\r\n public editId(id: AssertedCompositeId, index: number): void {\r\n this._editedIndex = index;\r\n this.edited = id;\r\n }\r\n\r\n public closeId(): void {\r\n this._editedIndex = -1;\r\n this.edited = undefined;\r\n }\r\n\r\n public saveId(entry: AssertedCompositeId): void {\r\n const entries = [...this.entries.value];\r\n if (this._editedIndex === -1) {\r\n entries.push(entry);\r\n } else {\r\n entries.splice(this._editedIndex, 1, entry);\r\n }\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.closeId();\r\n }\r\n\r\n public deleteId(index: number): void {\r\n this._dialogService\r\n .confirm('Confirmation', 'Delete ID?')\r\n .pipe(take(1))\r\n .subscribe((yes) => {\r\n if (yes) {\r\n if (this._editedIndex === index) {\r\n this.closeId();\r\n }\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.emitIdsChange();\r\n }\r\n });\r\n }\r\n\r\n public moveIdUp(index: number): void {\r\n if (index < 1) {\r\n return;\r\n }\r\n const entry = this.entries.value[index];\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n entries.splice(index - 1, 0, entry);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.emitIdsChange();\r\n }\r\n\r\n public moveIdDown(index: number): void {\r\n if (index + 1 >= this.entries.value.length) {\r\n return;\r\n }\r\n const entry = this.entries.value[index];\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n entries.splice(index + 1, 0, entry);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.emitIdsChange();\r\n }\r\n\r\n public onIdChange(id?: AssertedCompositeId): void {\r\n this.saveId(id!);\r\n this.emitIdsChange();\r\n }\r\n}\r\n","<form [formGroup]=\"form\">\r\n <!-- buttons -->\r\n <button type=\"button\" class=\"mat-primary\" mat-flat-button (click)=\"addId()\">\r\n <mat-icon>add_circle</mat-icon> ID\r\n </button>\r\n <!-- list -->\r\n @if (entries.value.length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>scope</th>\r\n <th>type</th>\r\n <th>label</th>\r\n <th>gid</th>\r\n <th>ass.</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for ( entry of entries.value; track entry; let i = $index; let first =\r\n $first; let last = $last) {\r\n <tr [class.selected]=\"entry === edited\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this ID\"\r\n (click)=\"editId(entry, i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveIdUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveIdDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete this ID\"\r\n (click)=\"deleteId(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.scope }}</td>\r\n <td>\r\n <mat-icon>{{ entry?.target?.name ? \"login\" : \"logout\" }}</mat-icon>\r\n </td>\r\n <td>{{ entry?.target?.label }}</td>\r\n <td>{{ entry?.target?.gid }}</td>\r\n <td>{{ entry?.assertion ? \"Y\" : \"N\" }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n }\r\n\r\n <!-- editor -->\r\n <mat-expansion-panel [expanded]=\"edited\" [disabled]=\"!edited\">\r\n <mat-expansion-panel-header\r\n ><mat-icon>{{ edited?.target?.name ? \"login\" : \"logout\" }}</mat-icon> ID\r\n {{ edited?.target?.label }}</mat-expansion-panel-header\r\n >\r\n <cadmus-refs-asserted-composite-id\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [hasSubmit]=\"true\"\r\n [pinByTypeMode]=\"pinByTypeMode()\"\r\n [canSwitchMode]=\"canSwitchMode()\"\r\n [canEditTarget]=\"canEditTarget()\"\r\n [lookupDefinitions]=\"lookupDefinitions()\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey()\"\r\n [id]=\"edited\"\r\n (idChange)=\"onIdChange($event)\"\r\n (editorClose)=\"closeId()\"\r\n />\r\n </mat-expansion-panel>\r\n</form>\r\n","import { Component, Inject, output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { forkJoin, of, take } from 'rxjs';\r\n\r\n// material\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n// bricks\r\nimport { RefLookupComponent } from '@myrmidon/cadmus-refs-lookup';\r\n\r\n// cadmus\r\nimport { ItemService } from '@myrmidon/cadmus-api';\r\nimport {\r\n DataPinInfo,\r\n IndexLookupDefinitions,\r\n Item,\r\n Part,\r\n} from '@myrmidon/cadmus-core';\r\n\r\n// local\r\nimport { PinRefLookupService } from '../services/pin-ref-lookup.service';\r\n\r\n// from Cadmus general parts\r\nconst METADATA_PART_ID = 'it.vedph.metadata';\r\ninterface MetadataPart extends Part {\r\n metadata: {\r\n type?: string;\r\n name: string;\r\n value: string;\r\n }[];\r\n}\r\n\r\ninterface LookupInfo {\r\n pin: DataPinInfo;\r\n item?: Item;\r\n part?: MetadataPart;\r\n}\r\n\r\n/*\r\n * Scoped pin-based lookup component. This component provides a list\r\n * of pin-based searches, with a lookup control. Whenever the user\r\n * picks a pin value, he gets the details about its item and part, and\r\n * item's metadata part, if any. He can then use these data to build\r\n * some EID by variously assembling these components.\r\n */\r\n@Component({\r\n selector: 'cadmus-scoped-pin-lookup',\r\n templateUrl: './scoped-pin-lookup.component.html',\r\n styleUrls: ['./scoped-pin-lookup.component.css'],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n // bricks\r\n RefLookupComponent,\r\n ],\r\n})\r\nexport class ScopedPinLookupComponent {\r\n // lookup\r\n public key: FormControl<string | null>;\r\n public keyForm: FormGroup;\r\n public keys: string[];\r\n public info?: LookupInfo;\r\n // builder\r\n public id: FormControl<string | null>;\r\n public idForm: FormGroup;\r\n\r\n /**\r\n * Emitted whenever the user picks an ID.\r\n */\r\n public readonly idPick = output<string>();\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n private _itemService: ItemService,\r\n public lookupService: PinRefLookupService,\r\n @Inject('indexLookupDefinitions')\r\n public lookupDefs: IndexLookupDefinitions\r\n ) {\r\n // lookup\r\n // keys are all the defined lookup searches\r\n this.keys = Object.keys(lookupDefs);\r\n // the selected key defines the lookup scope\r\n this.key = formBuilder.control(null);\r\n this.keyForm = formBuilder.group({\r\n key: this.key,\r\n });\r\n // id\r\n this.id = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(300),\r\n ]);\r\n this.idForm = formBuilder.group({\r\n id: this.id,\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n // pre-select a unique key\r\n if (this.keys.length === 1) {\r\n this.key.setValue(this.keys[0]);\r\n this.key.markAsDirty();\r\n this.key.updateValueAndValidity();\r\n }\r\n }\r\n\r\n public onItemChange(item: unknown): void {\r\n const info: LookupInfo = {\r\n pin: item as DataPinInfo,\r\n };\r\n // lookup item and its metadata part if any\r\n forkJoin({\r\n item: item\r\n ? this._itemService.getItem((item as DataPinInfo).itemId, false, true)\r\n : of(null),\r\n part: item\r\n ? this._itemService.getPartFromTypeAndRole(\r\n (item as DataPinInfo).itemId,\r\n METADATA_PART_ID,\r\n undefined,\r\n true\r\n )\r\n : of(null),\r\n })\r\n .pipe(take(1))\r\n .subscribe({\r\n next: (result) => {\r\n if (result.item) {\r\n info.item = result.item;\r\n info.part = result.part as MetadataPart;\r\n this.info = info;\r\n }\r\n },\r\n error: (error) => {\r\n console.error(\r\n error ? JSON.stringify(error) : 'Error loading item/metadata'\r\n );\r\n },\r\n });\r\n }\r\n\r\n public appendIdComponent(type: string, metaIndex = -1): void {\r\n let id = this.id.value || '';\r\n\r\n switch (type) {\r\n case 'pin':\r\n id += this.info?.pin.value;\r\n break;\r\n case 'itemId':\r\n id += this.info!.item?.id || '';\r\n break;\r\n case 'partId':\r\n id += this.info!.part?.id || '';\r\n break;\r\n case 'partTypeId':\r\n id += this.info!.part?.typeId || '';\r\n break;\r\n case 'partRoleId':\r\n id += this.info!.part?.roleId || '';\r\n break;\r\n case 'metadata':\r\n id += this.info!.part!.metadata[metaIndex].value;\r\n break;\r\n }\r\n\r\n this.id.setValue(id);\r\n this.id.markAsDirty();\r\n this.id.updateValueAndValidity();\r\n }\r\n\r\n public pickId(): void {\r\n if (this.idForm.invalid) {\r\n return;\r\n }\r\n this.idPick.emit(this.id.value!);\r\n this.info = undefined;\r\n }\r\n\r\n public resetId(): void {\r\n this.id.reset();\r\n this.id.markAsDirty();\r\n this.id.updateValueAndValidity();\r\n }\r\n}\r\n","<div>\r\n <!-- lookup -->\r\n <div>\r\n <form [formGroup]=\"keyForm\" class=\"form-row\">\r\n <!-- key -->\r\n @if (keys.length > 1) {\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <mat-select [formControl]=\"key\">\r\n @for (k of keys; track k) {\r\n <mat-option [value]=\"k\">{{ k }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ($any(key).errors?.required && (key.dirty || key.touched)) {\r\n <mat-error>type required</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <cadmus-refs-lookup\r\n [service]=\"lookupService\"\r\n label=\"pin\"\r\n [options]=\"key.value ? lookupDefs[key.value] : undefined\"\r\n (itemChange)=\"onItemChange($event)\"\r\n />\r\n </form>\r\n </div>\r\n\r\n <!-- builder -->\r\n @if (info) {\r\n <mat-expansion-panel [expanded]=\"info\" [disabled]=\"!info\">\r\n <mat-expansion-panel-header>ID builder</mat-expansion-panel-header>\r\n <!-- ID -->\r\n <div>\r\n <form [formGroup]=\"idForm\" (submit)=\"pickId()\">\r\n <mat-form-field style=\"width: 100%\">\r\n <input matInput [formControl]=\"id\" />\r\n @if ($any(id).errors?.required && (id.dirty || id.touched)) {\r\n <mat-error>ID required</mat-error>\r\n } @if ($any(id).errors?.maxLength && (id.dirty || id.touched)) {\r\n <mat-error>ID too long</mat-error>\r\n }\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matSuffix\r\n (click)=\"resetId()\"\r\n [disabled]=\"!id.value\"\r\n >\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matSuffix\r\n (click)=\"pickId()\"\r\n [disabled]=\"idForm.invalid\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </form>\r\n </div>\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <th></th>\r\n <th>source</th>\r\n <th>value</th>\r\n </thead>\r\n <tbody>\r\n <!-- pin -->\r\n <tr class=\"fit-width\">\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('pin')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin</td>\r\n <td>{{ info!.pin.value }}</td>\r\n </tr>\r\n <!-- item ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('itemId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>item ID</td>\r\n <td>{{ info!.item?.id }}</td>\r\n </tr>\r\n <!-- item title -->\r\n <tr>\r\n <td></td>\r\n <td>item title</td>\r\n <td>{{ info!.item?.title }}</td>\r\n </tr>\r\n <!-- part ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('partId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>part ID</td>\r\n <td>{{ info!.part?.id }}</td>\r\n </tr>\r\n <!-- part type ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('partTypeId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>part type ID</td>\r\n <td>{{ info!.part?.typeId }}</td>\r\n </tr>\r\n <!-- part role ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('partRoleId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>part role ID</td>\r\n <td>{{ info!.part?.roleId }}</td>\r\n </tr>\r\n <!-- part's metadata -->\r\n @for (m of info!.part?.metadata; track m; let i = $index) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('metadata', i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"metadata\">{{ m.name }}</td>\r\n <td class=\"metadata\">{{ m.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </mat-expansion-panel>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n effect,\r\n Inject,\r\n input,\r\n model,\r\n OnDestroy,\r\n OnInit,\r\n output,\r\n} from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n// material\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\n// bricks\r\nimport { Assertion, AssertionComponent } from '@myrmidon/cadmus-refs-assertion';\r\n\r\n// cadmus\r\nimport { IndexLookupDefinitions, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\n\r\n// local\r\nimport { PinRefLookupService } from '../services/pin-ref-lookup.service';\r\nimport { ScopedPinLookupComponent } from '../scoped-pin-lookup/scoped-pin-lookup.component';\r\n\r\n/**\r\n * An asserted ID.\r\n */\r\nexport interface AssertedId {\r\n tag?: string;\r\n value: string;\r\n label?: string;\r\n scope: string;\r\n assertion?: Assertion;\r\n}\r\n\r\n/**\r\n * Asserted ID editor component.\r\n */\r\n@Component({\r\n selector: 'cadmus-refs-asserted-id',\r\n templateUrl: './asserted-id.component.html',\r\n styleUrls: ['./asserted-id.component.css'],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n // bricks\r\n AssertionComponent,\r\n ScopedPinLookupComponent,\r\n ],\r\n})\r\nexport class AssertedIdComponent implements OnInit, OnDestroy {\r\n private _sub?: Subscription;\r\n private _updatingForm: boolean | undefined;\r\n\r\n public tag: FormControl<string | null>;\r\n public value: FormControl<string | null>;\r\n public label: FormControl<string | null>;\r\n public scope: FormControl<string | null>;\r\n public assertion: FormControl<Assertion | null>;\r\n public form: FormGroup;\r\n\r\n public lookupExpanded: boolean;\r\n\r\n // asserted-id-scopes\r\n public readonly idScopeEntries = input<ThesaurusEntry[]>();\r\n\r\n // asserted-id-tags\r\n public readonly idTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // assertion-tags\r\n public readonly assTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-types\r\n public readonly refTypeEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-tags\r\n public readonly refTagEntries = input<ThesaurusEntry[]>();\r\n\r\n /**\r\n * The asserted ID being edited.\r\n */\r\n public readonly id = model<AssertedId>();\r\n\r\n /**\r\n * True to hide the pin-based EID lookup UI.\r\n */\r\n public readonly noEidLookup = input<boolean>();\r\n\r\n /**\r\n * True to show the submit button.\r\n */\r\n public readonly hasSubmit = input<boolean>();\r\n\r\n /**\r\n * Emitted when the editor is closed.\r\n */\r\n public readonly editorClose = output();\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n public lookupService: PinRefLookupService,\r\n @Inject('indexLookupDefinitions')\r\n public lookupDefs: IndexLookupDefinitions\r\n ) {\r\n this.tag = formBuilder.control(null, Validators.maxLength(50));\r\n this.value = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(500),\r\n ]);\r\n this.label = formBuilder.control(null, Validators.maxLength(500));\r\n this.scope = formBuilder.control(null, Validators.maxLength(500));\r\n this.assertion = formBuilder.control(null);\r\n this.form = formBuilder.group({\r\n tag: this.tag,\r\n value: this.value,\r\n label: this.label,\r\n scope: this.scope,\r\n assertion: this.assertion,\r\n });\r\n this.lookupExpanded = false;\r\n\r\n // when id changes, update form\r\n effect(() => {\r\n this.updateForm(this.id());\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this._sub = this.form.valueChanges\r\n .pipe(debounceTime(300))\r\n .subscribe((_) => {\r\n if (!this._updatingForm) {\r\n this.emitIdChange();\r\n }\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._sub?.unsubscribe();\r\n }\r\n\r\n public onAssertionChange(assertion: Assertion | undefined): void {\r\n this.assertion.setValue(assertion || null);\r\n }\r\n\r\n public onIdPick(id: string): void {\r\n this.value.setValue(id);\r\n this.value.markAsDirty();\r\n this.value.updateValueAndValidity();\r\n this.lookupExpanded = false;\r\n }\r\n\r\n private updateForm(value: AssertedId | undefined): void {\r\n this._updatingForm = true;\r\n if (!value) {\r\n this.form.reset();\r\n } else {\r\n this.tag.setValue(value.tag || null);\r\n this.value.setValue(value.value);\r\n this.label.setValue(value.label || null);\r\n this.scope.setValue(value.scope);\r\n this.assertion.setValue(value.assertion || null);\r\n this.form.markAsPristine();\r\n }\r\n this._updatingForm = false;\r\n }\r\n\r\n private getId(): AssertedId {\r\n return {\r\n tag: this.tag.value?.trim(),\r\n value: this.value.value?.trim() || '',\r\n label: this.label.value?.trim() || undefined,\r\n scope: this.scope.value?.trim() || '',\r\n assertion: this.assertion.value || undefined,\r\n };\r\n }\r\n\r\n public emitIdChange(): void {\r\n if (!this.hasSubmit()) {\r\n this.id.set(this.getId());\r\n }\r\n }\r\n\r\n public cancel(): void {\r\n this.editorClose.emit();\r\n }\r\n\r\n public save(): void {\r\n if (this.form.valid) {\r\n this.id.set(this.getId());\r\n }\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries(); track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag.errors)?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries(); track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- scope (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if ($any(scope.errors)?.maxLength && (scope.dirty || scope.touched)) {\r\n <mat-error>scope too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- value -->\r\n <mat-form-field>\r\n <mat-label>value</mat-label>\r\n <input matInput [formControl]=\"value\" />\r\n @if ($any(value.errors)?.required && (value.dirty || value.touched)) {\r\n <mat-error>value required</mat-error>\r\n } @if ($any(value.errors)?.maxLength && (value.dirty || value.touched))\r\n {\r\n <mat-error>value too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- label -->\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n @if ($any(label.errors)?.maxLength && (label.dirty || label.touched)) {\r\n <mat-error>label too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- lookup -->\r\n @if (!noEidLookup()) {\r\n <div>\r\n <mat-expansion-panel [(expanded)]=\"lookupExpanded\">\r\n <mat-expansion-panel-header>lookup</mat-expansion-panel-header>\r\n <cadmus-scoped-pin-lookup (idPick)=\"onIdPick($event)\" />\r\n </mat-expansion-panel>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- assertion -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n <!-- buttons -->\r\n @if (hasSubmit()) {\r\n <div>\r\n <button mat-icon-button type=\"button\" (click)=\"cancel()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-icon-button type=\"submit\" [disabled]=\"form.invalid\">\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n</form>\r\n","import { Component, effect, input, model, output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { take } from 'rxjs';\r\n\r\n// material\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n// myrmidon\r\nimport { DialogService } from '@myrmidon/ngx-mat-tools';\r\n\r\n// cadmus\r\nimport { ThesaurusEntry } from '@myrmidon/cadmus-core';\r\n\r\n// local\r\nimport {\r\n AssertedId,\r\n AssertedIdComponent,\r\n} from '../asserted-id/asserted-id.component';\r\n\r\n/**\r\n * Asserted IDs editor.\r\n */\r\n@Component({\r\n selector: 'cadmus-refs-asserted-ids',\r\n templateUrl: './asserted-ids.component.html',\r\n styleUrls: ['./asserted-ids.component.css'],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n // bricks\r\n AssertedIdComponent\r\n],\r\n})\r\nexport class AssertedIdsComponent {\r\n private _editedIndex: number;\r\n public edited?: AssertedId;\r\n\r\n /**\r\n * The asserted IDs.\r\n */\r\n public readonly ids = model<AssertedId[]>([]);\r\n\r\n // asserted-id-scopes\r\n public readonly idScopeEntries = input<ThesaurusEntry[]>();\r\n\r\n // asserted-id-tags\r\n public readonly idTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // assertion-tags\r\n public readonly assTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-types\r\n public readonly refTypeEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-tags\r\n public readonly refTagEntries = input<ThesaurusEntry[]>();\r\n\r\n public entries: FormControl<AssertedId[]>;\r\n public form: FormGroup;\r\n\r\n constructor(formBuilder: FormBuilder, private _dialogService: DialogService) {\r\n this._editedIndex = -1;\r\n this.entries = formBuilder.control([], { nonNullable: true });\r\n // form\r\n this.form = formBuilder.group({\r\n ids: this.entries,\r\n });\r\n\r\n // when ids change, update form\r\n effect(() => {\r\n this.updateForm(this.ids());\r\n });\r\n }\r\n\r\n private updateForm(ids: AssertedId[]): void {\r\n if (!ids?.length) {\r\n this.form.reset();\r\n return;\r\n }\r\n this.entries.setValue(ids, { emitEvent: false });\r\n this.entries.updateValueAndValidity();\r\n this.form.markAsPristine();\r\n }\r\n\r\n public addId(): void {\r\n this.editId(\r\n {\r\n scope: '',\r\n value: '',\r\n },\r\n -1\r\n );\r\n }\r\n\r\n public editId(id: AssertedId, index: number): void {\r\n this._editedIndex = index;\r\n this.edited = id;\r\n }\r\n\r\n public closeId(): void {\r\n this._editedIndex = -1;\r\n this.edited = undefined;\r\n }\r\n\r\n public saveId(entry: AssertedId): void {\r\n const entries = [...this.entries.value];\r\n if (this._editedIndex === -1) {\r\n entries.push(entry);\r\n } else {\r\n entries.splice(this._editedIndex, 1, entry);\r\n }\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.closeId();\r\n }\r\n\r\n public deleteId(index: number): void {\r\n this._dialogService\r\n .confirm('Confirmation', 'Delete ID?')\r\n .pipe(take(1))\r\n .subscribe((yes) => {\r\n if (yes) {\r\n if (this._editedIndex === index) {\r\n this.closeId();\r\n }\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.ids.set(this.entries.value);\r\n }\r\n });\r\n }\r\n\r\n public moveIdUp(index: number): void {\r\n if (index < 1) {\r\n return;\r\n }\r\n const entry = this.entries.value[index];\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n entries.splice(index - 1, 0, entry);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.ids.set(this.entries.value);\r\n }\r\n\r\n public moveIdDown(index: number): void {\r\n if (index + 1 >= this.entries.value.length) {\r\n return;\r\n }\r\n const entry = this.entries.value[index];\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n entries.splice(index + 1, 0, entry);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.ids.set(this.entries.value);\r\n }\r\n\r\n public onIdChange(id?: AssertedId): void {\r\n this.saveId(id!);\r\n this.ids.set(this.entries.value);\r\n }\r\n}\r\n","<form [formGroup]=\"form\">\r\n <div>\r\n <button type=\"button\" mat-flat-button class=\"mat-primary\" (click)=\"addId()\">\r\n <mat-icon>add_circle</mat-icon> ID\r\n </button>\r\n </div>\r\n @if (entries.value.length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>scope</th>\r\n <th>value</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for ( entry of entries.value; track entry; let i = $index; let first =\r\n $first; let last = $last) {\r\n <tr [class.selected]=\"entry === edited\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this ID\"\r\n (click)=\"editId(entry, i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveIdUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveIdDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete this ID\"\r\n (click)=\"deleteId(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.scope }}</td>\r\n <td>{{ entry.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n }\r\n\r\n <mat-expansion-panel [expanded]=\"edited\" [disabled]=\"!edited\">\r\n <mat-expansion-panel-header\r\n >ID {{ edited?.value }}</mat-expansion-panel-header\r\n >\r\n <cadmus-refs-asserted-id\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [hasSubmit]=\"true\"\r\n [id]=\"edited\"\r\n (idChange)=\"onIdChange($event)\"\r\n (editorClose)=\"closeId()\"\r\n />\r\n </mat-expansion-panel>\r\n</form>\r\n","/*\r\n * Public API Surface of cadmus-refs-asserted-ids\r\n */\r\n\r\nexport * from './lib/asserted-composite-id/asserted-composite-id.component';\r\nexport * from './lib/asserted-composite-ids/asserted-composite-ids.component';\r\nexport * from './lib/asserted-id/asserted-id.component';\r\nexport * from './lib/asserted-ids/asserted-ids.component';\r\nexport * from './lib/pin-target-lookup/pin-target-lookup.component';\r\nexport * from './lib/scoped-pin-lookup/scoped-pin-lookup.component';\r\n\r\nexport * from './lib/services/item-ref-lookup.service';\r\nexport * from './lib/services/pin-ref-lookup.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["METADATA_PART_ID","i1.ItemRefLookupService","i2.PinRefLookupService","i3","i5","i7","i9","i10","i11","i12","debounceTime","i1","i4","i6","i8"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"myrmidon-cadmus-refs-asserted-ids.mjs","sources":["../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/services/item-ref-lookup.service.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/services/pin-ref-lookup.service.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/pin-target-lookup/pin-target-lookup.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/pin-target-lookup/pin-target-lookup.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-composite-id/asserted-composite-id.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-composite-id/asserted-composite-id.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-composite-ids/asserted-composite-ids.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-composite-ids/asserted-composite-ids.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/scoped-pin-lookup/scoped-pin-lookup.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/scoped-pin-lookup/scoped-pin-lookup.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-id/asserted-id.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-id/asserted-id.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-ids/asserted-ids.component.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/lib/asserted-ids/asserted-ids.component.html","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/public-api.ts","../../../../projects/myrmidon/cadmus-refs-asserted-ids/src/myrmidon-cadmus-refs-asserted-ids.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\nimport { Observable, map } from 'rxjs';\r\n\r\n// myrmidon\r\nimport { DataPage } from '@myrmidon/ngx-tools';\r\n\r\n// bricks\r\nimport {\r\n RefLookupFilter,\r\n RefLookupService,\r\n} from '@myrmidon/cadmus-refs-lookup';\r\n\r\n// cadmus\r\nimport { ItemService } from '@myrmidon/cadmus-api';\r\nimport { Item } from '@myrmidon/cadmus-core';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class ItemRefLookupService implements RefLookupService {\r\n constructor(private _itemService: ItemService) {}\r\n\r\n public lookup(filter: RefLookupFilter, options?: any): Observable<Item[]> {\r\n return this._itemService\r\n .getItems(\r\n {\r\n title: filter.text,\r\n },\r\n 1,\r\n filter.limit || 10\r\n )\r\n .pipe(map((page: DataPage<Item>) => page.items));\r\n }\r\n\r\n getName(item: Item): string {\r\n return item?.title;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { map, Observable, of } from 'rxjs';\r\n\r\n// myrmidon\r\nimport { DataPage, ErrorWrapper } from '@myrmidon/ngx-tools';\r\n\r\n// bricks\r\nimport {\r\n RefLookupFilter,\r\n RefLookupService,\r\n} from '@myrmidon/cadmus-refs-lookup';\r\n\r\n// cadmus\r\nimport { ItemService } from '@myrmidon/cadmus-api';\r\nimport { DataPinInfo, IndexLookupDefinition } from '@myrmidon/cadmus-core';\r\n\r\n/**\r\n * Pin-based lookup filter. This is a RefLookupFilter with the addition\r\n * of the item ID and part ID, which are used to filter the results\r\n * by the ItemPinLookupComponent.\r\n */\r\nexport interface PinRefLookupFilter extends RefLookupFilter {\r\n itemId?: string;\r\n partId?: string;\r\n}\r\n\r\n/**\r\n * Cadmus pin-based lookup data service. The text being searched here is just\r\n * the pin's value, according to the options specified. These options correspond\r\n * to an index lookup definition. The resulting items are of type DataPinInfo.\r\n */\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class PinRefLookupService implements RefLookupService {\r\n constructor(private _itemService: ItemService) {}\r\n\r\n public getName(item: any | undefined): string {\r\n return item?.value || '';\r\n }\r\n\r\n private buildQuery(\r\n def: IndexLookupDefinition,\r\n filter: PinRefLookupFilter\r\n ): string {\r\n const sb: string[] = [];\r\n const AND = ' AND ';\r\n\r\n if (def.typeId) {\r\n sb.push(`[partTypeId=${def.typeId}]`);\r\n }\r\n if (def.roleId) {\r\n if (sb.length) {\r\n sb.push(AND);\r\n }\r\n sb.push(`[roleId=${def.roleId}]`);\r\n }\r\n if (def.name) {\r\n if (sb.length) {\r\n sb.push(AND);\r\n }\r\n sb.push(`[name=${def.name}]`);\r\n }\r\n if (filter.itemId) {\r\n if (sb.length) {\r\n sb.push(AND);\r\n }\r\n sb.push(`[itemId=${filter.itemId}]`);\r\n }\r\n if (filter.partId) {\r\n if (sb.length) {\r\n sb.push(AND);\r\n }\r\n sb.push(`[partId=${filter.partId}]`);\r\n }\r\n if (filter.text) {\r\n if (sb.length) {\r\n sb.push(AND);\r\n }\r\n // for other operators see backend SqlQueryBuilderBase.cs\r\n sb.push(`[value*=${filter.text}]`); // *= is \"contains\"\r\n }\r\n\r\n return sb.join('');\r\n }\r\n\r\n public lookup(filter: PinRefLookupFilter, options?: any): Observable<any[]> {\r\n // the index lookup definition is required\r\n const def = options as IndexLookupDefinition;\r\n if (!def) {\r\n return of([]);\r\n }\r\n\r\n // build the corresponding pin query\r\n const query = this.buildQuery(def, filter);\r\n\r\n // search the index\r\n return this._itemService.searchPins(query, 1, filter.limit).pipe(\r\n map((w: ErrorWrapper<DataPage<DataPinInfo>>) => {\r\n if (w.error) {\r\n console.error(w.error);\r\n return [];\r\n } else {\r\n return w.value?.items || [];\r\n }\r\n })\r\n );\r\n }\r\n}\r\n","import {\r\n Component,\r\n effect,\r\n Inject,\r\n input,\r\n model,\r\n OnDestroy,\r\n OnInit,\r\n output,\r\n} from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport {\r\n Subscription,\r\n debounceTime,\r\n distinctUntilChanged,\r\n filter,\r\n forkJoin,\r\n take,\r\n} from 'rxjs';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n// material\r\nimport { ClipboardModule } from '@angular/cdk/clipboard';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatSnackBar } from '@angular/material/snack-bar';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n// myrmidon\r\nimport { FlatLookupPipe } from '@myrmidon/ngx-tools';\r\n\r\n// bricks\r\nimport {\r\n RefLookupSetEvent,\r\n RefLookupComponent,\r\n RefLookupConfig,\r\n RefLookupSetComponent,\r\n} from '@myrmidon/cadmus-refs-lookup';\r\n\r\n// cadmus\r\nimport { ItemService, ThesaurusService } from '@myrmidon/cadmus-api';\r\nimport {\r\n DataPinInfo,\r\n IndexLookupDefinition,\r\n IndexLookupDefinitions,\r\n Item,\r\n Part,\r\n ThesaurusEntry,\r\n} from '@myrmidon/cadmus-core';\r\n\r\n// local\r\nimport {\r\n PinRefLookupFilter,\r\n PinRefLookupService,\r\n} from '../services/pin-ref-lookup.service';\r\nimport { ItemRefLookupService } from '../services/item-ref-lookup.service';\r\n\r\n// from Cadmus general parts\r\nconst METADATA_PART_ID = 'it.vedph.metadata';\r\ninterface MetadataPart extends Part {\r\n metadata: {\r\n type?: string;\r\n name: string;\r\n value: string;\r\n }[];\r\n}\r\n\r\n/**\r\n * Pin lookup data used internally by the component.\r\n */\r\nexport interface PinLookupData {\r\n pin: DataPinInfo;\r\n item?: Item;\r\n metaPart?: MetadataPart;\r\n}\r\n\r\n/**\r\n * A pin-based target. This includes pin's name and value, and\r\n * the item's ID and optional part IDs. The label is a user friendly\r\n * string representation of the target, while the gid is a globally\r\n * unique identifier for the target.\r\n */\r\nexport interface PinTarget {\r\n gid: string;\r\n label: string;\r\n itemId?: string;\r\n partId?: string;\r\n partTypeId?: string;\r\n roleId?: string;\r\n name?: string;\r\n value?: string;\r\n}\r\n\r\n/*\r\n * Scoped pin-based lookup component. This component provides a list\r\n * of pin-based searches, with a lookup control. Whenever the user\r\n * picks a pin value, he gets the details about its item and part, and\r\n * item's metadata part, if any. He can then use these data to build\r\n * some EID by variously assembling these components.\r\n */\r\n@Component({\r\n selector: 'cadmus-pin-target-lookup',\r\n templateUrl: './pin-target-lookup.component.html',\r\n styleUrls: ['./pin-target-lookup.component.css'],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n ClipboardModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatTooltipModule,\r\n // myrmidon\r\n FlatLookupPipe,\r\n // bricks\r\n RefLookupComponent,\r\n RefLookupSetComponent,\r\n ],\r\n})\r\nexport class PinTargetLookupComponent implements OnInit, OnDestroy {\r\n private readonly _subs: Subscription[] = [];\r\n private _updatingForm = false;\r\n private _startWithByTypeMode?: boolean;\r\n\r\n /**\r\n * True when the by-type pin lookup mode is active.\r\n * User can change mode unless modeSwitching is false.\r\n */\r\n public readonly pinByTypeMode = model<boolean>();\r\n\r\n /**\r\n * True when the user can switch between by-type and by-item mode.\r\n */\r\n public readonly canSwitchMode = model<boolean>();\r\n /**\r\n * True when the user can edit the target's gid/label for internal\r\n * targets.\r\n */\r\n public readonly canEditTarget = input<boolean>();\r\n /**\r\n * The lookup definitions to be used for the by-type lookup. If\r\n * not specified, the lookup definitions will be got via injection\r\n * when available; if the injected definitions are empty, the\r\n * lookup definitions will be built from the model-types thesaurus;\r\n * if this is not available either, the by-type lookup will be\r\n * disabled.\r\n */\r\n public readonly lookupDefinitions = model<IndexLookupDefinitions>();\r\n /**\r\n * The optional configurations for using external lookup services.\r\n */\r\n public readonly extLookupConfigs = input<RefLookupConfig[]>([]);\r\n\r\n /**\r\n * The target to be edited.\r\n */\r\n public readonly target = model<PinTarget>();\r\n\r\n /**\r\n * The default value for part type key when the by-type mode is active.\r\n */\r\n public readonly defaultPartTypeKey = input<string>();\r\n\r\n /**\r\n * Emitted when user closes the editor.\r\n */\r\n public readonly editorClose = output();\r\n\r\n /**\r\n * Emitted when the user requests more items from an external lookup.\r\n */\r\n public readonly extMoreRequest = output<RefLookupSetEvent>();\r\n\r\n /**\r\n * Emitted when the user changes the external lookup configuration.\r\n */\r\n public readonly extLookupConfigChange = output<RefLookupConfig>();\r\n\r\n // by type\r\n public modelEntries: ThesaurusEntry[];\r\n public partTypeKeys: string[];\r\n // by item\r\n public itemParts: Part[];\r\n // form - by item\r\n public item: FormControl<Item | null>;\r\n public itemPart: FormControl<Part | null>;\r\n // form - by type\r\n public partTypeKey: FormControl<string | null>;\r\n // form - both\r\n public gid: FormControl<string | null>;\r\n public label: FormControl<string | null>;\r\n public byTypeMode: FormControl<boolean>;\r\n public external: FormControl<boolean>;\r\n public form: FormGroup;\r\n\r\n public filter: PinRefLookupFilter;\r\n public pinFilterOptions?: IndexLookupDefinition;\r\n public lookupData?: PinLookupData;\r\n\r\n constructor(\r\n @Inject('indexLookupDefinitions')\r\n private _presetLookupDefs: IndexLookupDefinitions,\r\n public itemLookupService: ItemRefLookupService,\r\n public pinLookupService: PinRefLookupService,\r\n private _itemService: ItemService,\r\n private _thesService: ThesaurusService,\r\n private _snackbar: MatSnackBar,\r\n formBuilder: FormBuilder\r\n ) {\r\n this.partTypeKeys = [];\r\n this.itemParts = [];\r\n this.modelEntries = [];\r\n // this is the default filter for the pin lookup, which will\r\n // be merged with values provided by user here\r\n this.filter = {\r\n text: '',\r\n limit: 10,\r\n };\r\n // form\r\n this.item = formBuilder.control(null);\r\n this.itemPart = formBuilder.control(null);\r\n this.partTypeKey = formBuilder.control(null);\r\n this.gid = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(300),\r\n ]);\r\n this.label = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(300),\r\n ]);\r\n this.byTypeMode = formBuilder.control(false, { nonNullable: true });\r\n this.external = formBuilder.control(false, { nonNullable: true });\r\n this.form = formBuilder.group({\r\n item: this.item,\r\n itemPart: this.itemPart,\r\n partTypeKey: this.partTypeKey,\r\n gid: this.gid,\r\n label: this.label,\r\n byTypeMode: this.byTypeMode,\r\n external: this.external,\r\n });\r\n\r\n // when pinByTypeMode changes, adjust form\r\n effect(() => {\r\n if (!this._updatingForm) {\r\n if (!this.byTypeMode.value) {\r\n this._startWithByTypeMode = this.pinByTypeMode();\r\n } else {\r\n this.byTypeMode.setValue(this.pinByTypeMode() || false, {\r\n emitEvent: false,\r\n });\r\n this.byTypeMode.updateValueAndValidity();\r\n }\r\n }\r\n });\r\n\r\n // when target changes, update form\r\n effect(() => {\r\n const target = this.target();\r\n console.log('target changed', target);\r\n this.updateForm(target);\r\n });\r\n }\r\n\r\n private emitTargetChange(): void {\r\n if (!this._updatingForm) {\r\n this.target.set(this.getTarget());\r\n }\r\n }\r\n\r\n private forceByItem(): void {\r\n this.pinByTypeMode.set(false);\r\n this.canSwitchMode.set(false);\r\n }\r\n\r\n private setupKeys(): void {\r\n // use DI presets if no lookup definitions\r\n if (!this.lookupDefinitions()) {\r\n this.lookupDefinitions.set(this._presetLookupDefs);\r\n }\r\n // keys are all the defined lookup searches\r\n this.partTypeKeys = Object.keys(this.lookupDefinitions()!);\r\n\r\n // if no keys, get them from thesaurus model-types;\r\n // if this is not available, just force by item mode.\r\n if (!this.partTypeKeys.length) {\r\n if (this.modelEntries?.length) {\r\n // set lookupDefinitions from thesaurus entries\r\n const defs: IndexLookupDefinitions = {};\r\n this.modelEntries.forEach((e) => {\r\n defs[e.value] = {\r\n name: e.value,\r\n typeId: e.id,\r\n };\r\n });\r\n this.lookupDefinitions.set(defs);\r\n // set type keys from thesaurus entries\r\n this.partTypeKeys = this.modelEntries.map((e) => e.value);\r\n }\r\n }\r\n\r\n // if still no keys, force by item mode\r\n if (!this.partTypeKeys.length) {\r\n this.forceByItem();\r\n } else {\r\n // set default key\r\n this.partTypeKey.setValue(\r\n this.defaultPartTypeKey() || this.partTypeKeys[0]\r\n );\r\n }\r\n }\r\n\r\n public ngOnInit(): void {\r\n // set start mode if required\r\n if (this._startWithByTypeMode) {\r\n this.byTypeMode.setValue(true);\r\n }\r\n\r\n // whenever item changes (by lookup), update item's parts and filter\r\n this._subs.push(\r\n this.item.valueChanges\r\n .pipe(distinctUntilChanged(), debounceTime(300))\r\n .subscribe((item) => {\r\n this.itemPart.setValue(null, { emitEvent: false });\r\n this.itemParts = item?.parts || [];\r\n this.filter = {\r\n ...this.filter,\r\n itemId: item?.id,\r\n };\r\n })\r\n );\r\n\r\n // whenever itemPart changes (by user selection), update target and\r\n // eventually gid\r\n this._subs.push(\r\n this.itemPart.valueChanges\r\n .pipe(distinctUntilChanged(), debounceTime(300))\r\n .subscribe((part) => {\r\n if (!this.gid.value || this.gid.pristine) {\r\n this.gid.setValue(this.buildGid());\r\n }\r\n this.filter = {\r\n ...this.filter,\r\n partId: part?.id,\r\n };\r\n this.updateTarget(true);\r\n })\r\n );\r\n\r\n // whenever partTypeKey changes, update filter's options\r\n this._subs.push(\r\n this.partTypeKey.valueChanges\r\n .pipe(distinctUntilChanged(), debounceTime(300))\r\n .subscribe((key) => {\r\n this.pinFilterOptions = key\r\n ? this.lookupDefinitions()![key]\r\n : undefined;\r\n })\r\n );\r\n\r\n // whenever external changes, set required validator in label\r\n // (true for external, false for internal)\r\n this._subs.push(\r\n this.external.valueChanges\r\n .pipe(distinctUntilChanged(), debounceTime(300))\r\n .subscribe((external) => {\r\n if (external) {\r\n this.label.setValidators([\r\n Validators.required,\r\n Validators.maxLength(300),\r\n ]);\r\n } else {\r\n this.label.setValidators([Validators.maxLength(300)]);\r\n }\r\n this.label.updateValueAndValidity();\r\n })\r\n );\r\n\r\n // load model-types thesaurus entries\r\n this._thesService.getThesaurus('model-types', true).subscribe({\r\n next: (t) => {\r\n this.modelEntries = t.entries || [];\r\n if (this.modelEntries?.length) {\r\n this.setupKeys();\r\n } else {\r\n this.forceByItem();\r\n }\r\n },\r\n error: () => {\r\n this.forceByItem();\r\n },\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n for (let i = 0; i < this._subs.length; i++) {\r\n this._subs[i].unsubscribe();\r\n }\r\n }\r\n\r\n private buildGid(): string | null {\r\n // the GID is the part ID if any, or the item ID, followed by\r\n // the pin's value (=EID)\r\n const pin = this.lookupData?.pin;\r\n if (!pin?.value) {\r\n return null;\r\n }\r\n return pin.partId\r\n ? `P${pin.partId}/${pin.value}`\r\n : `I${pin.itemId}/${pin.value}`;\r\n }\r\n\r\n private buildLabel(): string | null {\r\n if (!this.lookupData?.pin) {\r\n return null;\r\n }\r\n const sb: string[] = [];\r\n // pin value\r\n if (this.lookupData.pin.value) {\r\n sb.push(this.lookupData.pin.value);\r\n sb.push(' | ');\r\n }\r\n // item title\r\n sb.push(this.lookupData.item?.title || this.lookupData.pin?.itemId);\r\n // part type and role\r\n if (this.lookupData.pin.partTypeId) {\r\n const e = this.modelEntries?.find(\r\n (e) => e.id === this.lookupData!.pin.partTypeId\r\n );\r\n sb.push(' (');\r\n sb.push(e?.value || this.lookupData.pin.partTypeId);\r\n if (this.lookupData.pin.roleId) {\r\n sb.push(`, ${this.lookupData.pin.roleId}`);\r\n }\r\n sb.push(')');\r\n }\r\n return sb.join('');\r\n }\r\n\r\n private getTarget(): PinTarget {\r\n if (this.external.value) {\r\n return {\r\n gid: this.gid.value || '',\r\n label: this.label.value || '',\r\n };\r\n } else {\r\n const pin = this.lookupData?.pin;\r\n return {\r\n gid: this.gid.value || '',\r\n label: this.label.value || '',\r\n itemId: pin?.itemId || '',\r\n partId: pin?.partId || '',\r\n partTypeId: pin?.partTypeId || '',\r\n roleId: pin?.roleId || '',\r\n name: pin?.name || '',\r\n value: pin?.value || '',\r\n };\r\n }\r\n }\r\n\r\n private emitChange(): void {\r\n this.target.set(this.getTarget());\r\n }\r\n\r\n private updateTarget(suppressEmit = false): void {\r\n this._updatingForm = true;\r\n\r\n if (!this.external.value) {\r\n this.gid.setValue(this.buildGid());\r\n this.gid.updateValueAndValidity();\r\n this.gid.markAsDirty();\r\n this.label.setValue(this.buildLabel());\r\n this.label.updateValueAndValidity();\r\n this.label.markAsDirty();\r\n }\r\n\r\n this._updatingForm = false;\r\n\r\n if (!suppressEmit) {\r\n this.emitTargetChange();\r\n }\r\n }\r\n\r\n private updateTargetFromData(): void {\r\n // Update GID and label without emitting changes\r\n if (!this.external.value) {\r\n this.gid.setValue(this.buildGid(), { emitEvent: false });\r\n this.gid.updateValueAndValidity();\r\n this.label.setValue(this.buildLabel(), { emitEvent: false });\r\n this.label.updateValueAndValidity();\r\n }\r\n }\r\n\r\n private updateForm(target?: PinTarget): void {\r\n this._updatingForm = true;\r\n\r\n try {\r\n // reset if no target\r\n if (!target) {\r\n this.lookupData = undefined;\r\n this.item.reset();\r\n this.itemPart.reset();\r\n this.gid.reset();\r\n this.label.reset();\r\n return;\r\n }\r\n\r\n // set gid and label\r\n this.gid.setValue(target.gid || '', { emitEvent: false });\r\n this.label.setValue(target.label || '', { emitEvent: false });\r\n // reset lookup\r\n this.lookupData = {\r\n pin: {\r\n itemId: target.itemId || '',\r\n partId: target.partId || '',\r\n partTypeId: target.partTypeId || '',\r\n roleId: target.roleId || '',\r\n name: target.name || '',\r\n value: target.value || '',\r\n },\r\n };\r\n\r\n // if target is internal, get item\r\n if (target.itemId) {\r\n this._itemService.getItem(target.itemId, true, true).subscribe({\r\n next: (item) => {\r\n this._updatingForm = true;\r\n this.item.setValue(item, { emitEvent: false });\r\n this.form.markAsPristine();\r\n this.external.setValue(false, { emitEvent: false });\r\n this.updateTargetFromData();\r\n this._updatingForm = false;\r\n },\r\n error: (error) => {\r\n if (error) {\r\n console.error('Item service error', error);\r\n }\r\n this._updatingForm = true;\r\n this.external.setValue(false, { emitEvent: false });\r\n this._updatingForm = false;\r\n },\r\n });\r\n } else {\r\n this.external.setValue(true, {\r\n emitEvent: false,\r\n });\r\n this.updateTargetFromData();\r\n }\r\n } finally {\r\n // ensure flag is reset even if there's an error\r\n if (!target?.itemId) {\r\n this._updatingForm = false;\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Called when the item lookup changes (item is looked up\r\n * by its title).\r\n *\r\n * @param item The item got from lookup.\r\n */\r\n public onItemLookupChange(item: unknown): void {\r\n if (!item) {\r\n this.itemPart.setValue(null);\r\n this.itemParts = [];\r\n return;\r\n }\r\n // load item's parts\r\n this._itemService.getItem((item as Item)!.id, true, true).subscribe({\r\n next: (i) => {\r\n // setting the item will trigger its parts update\r\n this.item.setValue(i);\r\n this.updateTarget(true); // suppress emit to avoid double emission\r\n },\r\n error: (error) => {\r\n if (error) {\r\n console.error('Error getting item', error);\r\n }\r\n this.itemPart.setValue(null);\r\n this.itemParts = [];\r\n this.updateTarget(true); // suppress emit to avoid double emission\r\n },\r\n });\r\n }\r\n\r\n private loadItemInfo(pin?: DataPinInfo): void {\r\n if (!pin) {\r\n return;\r\n }\r\n forkJoin({\r\n item: this._itemService.getItem(pin.itemId, false, true),\r\n part: this._itemService.getPartFromTypeAndRole(\r\n pin.itemId,\r\n METADATA_PART_ID,\r\n undefined,\r\n true\r\n ),\r\n })\r\n .pipe(take(1))\r\n .subscribe({\r\n next: (result) => {\r\n this.lookupData = {\r\n pin: pin,\r\n item: result.item!,\r\n metaPart: result.part as MetadataPart,\r\n };\r\n this.updateTarget(true); // suppress emit to avoid double emission\r\n },\r\n error: (error) => {\r\n this.lookupData = undefined;\r\n console.error('Error loading item/metadata', error);\r\n },\r\n });\r\n }\r\n\r\n /**\r\n * Called when the pin lookup change. A pin is looked up by its\r\n * name and value (=the filter's text), and optionally by:\r\n * - its index lookup definition (selected by partTypeKey).\r\n * - its item (defined by item, in filter).\r\n * - its part (defined by itemPart, in filter).\r\n *\r\n * @param info The pin info from pin lookup.\r\n */\r\n public onPinLookupChange(info: unknown): void {\r\n this.loadItemInfo(info as DataPinInfo);\r\n }\r\n\r\n public onExtItemChange(event: RefLookupSetEvent): void {\r\n if (event.item) {\r\n this._updatingForm = true;\r\n setTimeout(() => {\r\n this.gid.setValue(event.itemId, { emitEvent: false });\r\n this.gid.updateValueAndValidity();\r\n this.gid.markAsDirty();\r\n\r\n this.label.setValue(event.itemLabel, { emitEvent: false });\r\n this.label.updateValueAndValidity();\r\n this.label.markAsDirty();\r\n\r\n this._updatingForm = false;\r\n });\r\n }\r\n }\r\n\r\n public onExtMoreRequest(event: RefLookupSetEvent): void {\r\n this.extMoreRequest.emit(event);\r\n }\r\n\r\n public onCopied(): void {\r\n this._snackbar.open('Copied to clipboard', 'OK', {\r\n duration: 1500,\r\n });\r\n }\r\n\r\n public onExtConfigChange(config: RefLookupConfig): void {\r\n this.extLookupConfigChange.emit(config);\r\n }\r\n\r\n public close(): void {\r\n this.editorClose.emit();\r\n }\r\n\r\n public save(): void {\r\n if (this.form.invalid) {\r\n this.form.markAllAsTouched();\r\n return;\r\n }\r\n this.emitTargetChange();\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div class=\"form-row\">\r\n <!-- external -->\r\n <mat-checkbox [formControl]=\"external\">external</mat-checkbox>\r\n <!-- mode switcher -->\r\n @if (!external.value) {\r\n <div>\r\n @if (canSwitchMode()) {\r\n <mat-checkbox [formControl]=\"byTypeMode\"> by type</mat-checkbox>\r\n }\r\n </div>\r\n }\r\n </div>\r\n\r\n <div class=\"form-row\">\r\n <!-- label -->\r\n <div>\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n @if ($any(label).errors?.required && (label.dirty || label.touched)) {\r\n <mat-error>label required</mat-error>\r\n } @if ( $any(label).errors?.maxLength && (label.dirty || label.touched)\r\n ) {\r\n <mat-error>label too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && label.value) {\r\n <div class=\"info\"><span class=\"label\">label</span>{{ label.value }}</div>\r\n }\r\n </div>\r\n\r\n <!-- gid -->\r\n <div id=\"gid-container\">\r\n @if (external.value || canEditTarget()) {\r\n <mat-form-field>\r\n <mat-label>GID</mat-label>\r\n <input matInput [formControl]=\"gid\" />\r\n @if ($any(gid).errors?.required && (gid.dirty || gid.touched)) {\r\n <mat-error>GID required</mat-error>\r\n } @if ($any(gid).errors?.maxLength && (gid.dirty || gid.touched)) {\r\n <mat-error>GID too long</mat-error>\r\n }\r\n </mat-form-field>\r\n } @if (!external.value && !canEditTarget() && gid.value) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span> <span class=\"gid\">{{ gid.value }}</span>\r\n </div>\r\n }\r\n </div>\r\n </div>\r\n\r\n <!-- external lookup set -->\r\n @if (external.value && extLookupConfigs().length) {\r\n <fieldset>\r\n <legend>external lookup</legend>\r\n <cadmus-refs-lookup-set\r\n [configs]=\"extLookupConfigs()\"\r\n (itemChange)=\"onExtItemChange($event)\"\r\n (moreRequest)=\"onExtMoreRequest($event)\"\r\n (configChange)=\"onExtConfigChange($any($event))\"\r\n />\r\n </fieldset>\r\n }\r\n\r\n <!-- BY ITEM -->\r\n @if (!external.value) {\r\n <fieldset>\r\n <legend>internal lookup</legend>\r\n <div class=\"form-row\">\r\n @if (!byTypeMode.value) {\r\n <fieldset class=\"form-row\">\r\n <legend>pin filters</legend>\r\n <!-- item filter -->\r\n <cadmus-refs-lookup\r\n [service]=\"itemLookupService\"\r\n label=\"item\"\r\n (itemChange)=\"onItemLookupChange($event)\"\r\n />\r\n <!-- part filter -->\r\n @if (itemParts.length) {\r\n <mat-form-field>\r\n <mat-label>part</mat-label>\r\n <mat-select [formControl]=\"itemPart\">\r\n <mat-option [value]=\"null\">(any)</mat-option>\r\n @for (p of itemParts; track p) {\r\n <mat-option [value]=\"p\">{{\r\n p.typeId | flatLookup : modelEntries : \"id\" : \"value\"\r\n }}</mat-option>\r\n }\r\n </mat-select>\r\n <mat-hint>parts: {{ itemParts.length }}</mat-hint>\r\n </mat-form-field>\r\n }\r\n </fieldset>\r\n }\r\n <!-- BY TYPE -->\r\n @if (byTypeMode.value) {\r\n <div>\r\n <!-- part type filter -->\r\n @if (partTypeKeys.length) {\r\n <mat-form-field>\r\n <mat-label>part type</mat-label>\r\n <mat-select [formControl]=\"partTypeKey\">\r\n @for (k of partTypeKeys; track k) {\r\n <mat-option [value]=\"k\">{{ k }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n </div>\r\n }\r\n <!-- PIN -->\r\n @if (partTypeKey.value) {\r\n <div>\r\n <!-- pin lookup -->\r\n <cadmus-refs-lookup\r\n [service]=\"pinLookupService\"\r\n [baseFilter]=\"filter\"\r\n [options]=\"pinFilterOptions\"\r\n label=\"pin\"\r\n (itemChange)=\"onPinLookupChange($event)\"\r\n />\r\n </div>\r\n }\r\n </div>\r\n <!-- data -->\r\n @if (lookupData?.pin?.name) {\r\n <mat-expansion-panel id=\"data\">\r\n <mat-expansion-panel-header>pin data</mat-expansion-panel-header>\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <th></th>\r\n <th>source</th>\r\n <th>value</th>\r\n </thead>\r\n <tbody>\r\n <!-- pin name -->\r\n @if (lookupData?.pin?.name) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.name\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin name</td>\r\n <td>{{ lookupData!.pin.name }}</td>\r\n </tr>\r\n }\r\n <!-- pin value -->\r\n @if (lookupData?.pin?.value) {\r\n <tr>\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Copy value\"\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin value</td>\r\n <td>{{ lookupData!.pin.value }}</td>\r\n </tr>\r\n }\r\n <!-- item ID -->\r\n @if (lookupData?.pin?.itemId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.itemId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item ID</td>\r\n <td>{{ lookupData!.pin.itemId }}</td>\r\n </tr>\r\n }\r\n <!-- item title -->\r\n @if (lookupData?.item?.title) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData!.item!.title\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>item title</td>\r\n <td>{{ lookupData!.item!.title }}</td>\r\n </tr>\r\n }\r\n <!-- part ID -->\r\n @if (lookupData?.pin?.partId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.partId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part ID</td>\r\n <td>{{ lookupData!.pin.partId }}</td>\r\n </tr>\r\n }\r\n <!-- part type ID -->\r\n @if (lookupData?.pin?.partTypeId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.partTypeId\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part type ID</td>\r\n <td>{{ lookupData!.pin!.partTypeId }}</td>\r\n </tr>\r\n }\r\n <!-- part role ID -->\r\n @if (lookupData?.pin?.roleId) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"lookupData!.pin!.roleId!\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td>part role ID</td>\r\n <td>{{ lookupData!.pin!.roleId }}</td>\r\n </tr>\r\n }\r\n <!-- part's metadata -->\r\n @for ( m of lookupData?.metaPart?.metadata || []; track m; let i =\r\n $index) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n [cdkCopyToClipboard]=\"m.value\"\r\n (cdkCopyToClipboardCopied)=\"onCopied()\"\r\n >\r\n <mat-icon class=\"mat-primary\">content_copy</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"metadata\">{{ m.name }}</td>\r\n <td class=\"metadata\">{{ m.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </mat-expansion-panel>\r\n }\r\n </fieldset>\r\n }\r\n\r\n <!-- buttons -->\r\n <div class=\"button-row\" id=\"toolbar\">\r\n <button mat-icon-button type=\"button\" (click)=\"close()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-flat-button type=\"submit\" [disabled]=\"form.invalid\">\r\n <mat-icon>check_circle</mat-icon>\r\n target\r\n </button>\r\n </div>\r\n</form>\r\n","import { Component, effect, Inject, input, model, output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { debounceTime, filter } from 'rxjs/operators';\r\nimport { takeUntilDestroyed } from '@angular/core/rxjs-interop';\r\n\r\n// material\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n// myrmidon\r\nimport { RamStorageService } from '@myrmidon/ngx-tools';\r\n\r\n// bricks\r\nimport { Assertion, AssertionComponent } from '@myrmidon/cadmus-refs-assertion';\r\n\r\n// cadmus\r\nimport { IndexLookupDefinitions, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\nimport {\r\n LOOKUP_CONFIGS_KEY,\r\n RefLookupConfig,\r\n RefLookupSetEvent,\r\n} from '@myrmidon/cadmus-refs-lookup';\r\n\r\n// local\r\nimport { PinRefLookupService } from '../services/pin-ref-lookup.service';\r\nimport {\r\n PinTarget,\r\n PinTargetLookupComponent,\r\n} from '../pin-target-lookup/pin-target-lookup.component';\r\n\r\n/**\r\n * An asserted composite ID. This can be an external ID, having only the ID value\r\n * as its target.gid property; or a lookup ID, with a pin-based target.\r\n * In both cases, we can add a tag, a scope, and an assertion.\r\n */\r\nexport interface AssertedCompositeId {\r\n target: PinTarget;\r\n tag?: string;\r\n scope?: string;\r\n assertion?: Assertion;\r\n}\r\n\r\n/**\r\n * An asserted composite ID editor. This allows the user to edit an asserted\r\n * composite ID, which can be an external ID or a lookup ID.\r\n */\r\n@Component({\r\n selector: 'cadmus-refs-asserted-composite-id',\r\n templateUrl: './asserted-composite-id.component.html',\r\n styleUrls: ['./asserted-composite-id.component.css'],\r\n imports: [\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n MatTooltipModule,\r\n // bricks\r\n AssertionComponent,\r\n // local\r\n PinTargetLookupComponent,\r\n ],\r\n})\r\nexport class AssertedCompositeIdComponent {\r\n private _updatingForm: boolean | undefined;\r\n private _lookupConfigDirty = true;\r\n\r\n public extLookupConfigs: RefLookupConfig[];\r\n public targetExpanded = false;\r\n // form\r\n public target: FormControl<PinTarget | null>;\r\n public scope: FormControl<string | null>;\r\n public tag: FormControl<string | null>;\r\n public assertion: FormControl<Assertion | null>;\r\n public form: FormGroup;\r\n\r\n // asserted-id-scopes\r\n public readonly idScopeEntries = input<ThesaurusEntry[]>();\r\n\r\n // asserted-id-tags\r\n public readonly idTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // assertion-tags\r\n public readonly assTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-types\r\n public readonly refTypeEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-tags\r\n public readonly refTagEntries = input<ThesaurusEntry[]>();\r\n\r\n /**\r\n * The ID being edited.\r\n */\r\n public readonly id = model<AssertedCompositeId>();\r\n\r\n /**\r\n * True if the UI has a submit button.\r\n */\r\n public readonly hasSubmit = input<boolean>();\r\n\r\n /**\r\n * True when the internal UI preselected mode should be by type rather than\r\n * by item. User can change mode unless modeSwitching is false.\r\n */\r\n public readonly pinByTypeMode = input<boolean>();\r\n\r\n /**\r\n * True when the user can switch between by-type and by-item mode in\r\n * the internal UI.\r\n */\r\n public readonly canSwitchMode = input<boolean>();\r\n\r\n /**\r\n * True when the user can edit the target's gid/label for internal targets.\r\n */\r\n public readonly canEditTarget = input<boolean>();\r\n\r\n /**\r\n * The lookup definitions to be used for the by-type lookup in the internal UI.\r\n * If not specified, the lookup definitions will be got via injection\r\n * when available; if the injected definitions are empty, the\r\n * lookup definitions will be built from the model-types thesaurus;\r\n * if this is not available either, the by-type lookup will be\r\n * disabled.\r\n */\r\n public readonly lookupDefinitions = input<IndexLookupDefinitions>();\r\n\r\n /**\r\n * The default part type key to be used.\r\n */\r\n public readonly defaultPartTypeKey = input<string>();\r\n\r\n /**\r\n * Emitted whenever the user requests to close the editor.\r\n */\r\n public readonly editorClose = output();\r\n\r\n /**\r\n * Emitted when the user requests more.\r\n */\r\n public readonly extMoreRequest = output<RefLookupSetEvent>();\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n public lookupService: PinRefLookupService,\r\n @Inject('indexLookupDefinitions')\r\n public lookupDefs: IndexLookupDefinitions,\r\n settings: RamStorageService\r\n ) {\r\n // form\r\n this.target = formBuilder.control(null, Validators.required);\r\n this.scope = formBuilder.control(null, Validators.maxLength(500));\r\n this.tag = formBuilder.control(null, Validators.maxLength(50));\r\n this.assertion = formBuilder.control(null);\r\n this.form = formBuilder.group({\r\n target: this.target,\r\n scope: this.scope,\r\n tag: this.tag,\r\n assertion: this.assertion,\r\n });\r\n\r\n // external lookup configs\r\n this.extLookupConfigs =\r\n settings.retrieve<RefLookupConfig[]>(LOOKUP_CONFIGS_KEY) || [];\r\n\r\n // when id changes, update form\r\n effect(() => {\r\n const id = this.id();\r\n this.updateForm(id);\r\n });\r\n\r\n // when form changes, emit id change\r\n this.form.valueChanges\r\n .pipe(\r\n // react only on user changes, when form is valid\r\n filter(() => !this._updatingForm && this.form.valid),\r\n debounceTime(300),\r\n takeUntilDestroyed()\r\n )\r\n .subscribe((_) => {\r\n this.emitIdChange();\r\n });\r\n }\r\n\r\n public onAssertionChange(assertion: Assertion | undefined): void {\r\n this.assertion.setValue(assertion || null);\r\n }\r\n\r\n public onTargetChange(target?: PinTarget): void {\r\n this.target.setValue(target!);\r\n this.target.markAsDirty();\r\n this.target.updateValueAndValidity();\r\n if (this.form.valid) {\r\n this.targetExpanded = false;\r\n }\r\n }\r\n\r\n private updateForm(id: AssertedCompositeId | undefined): void {\r\n this._updatingForm = true;\r\n if (!id) {\r\n this.form.reset();\r\n } else {\r\n this.target.setValue(id.target, { emitEvent: false });\r\n this.scope.setValue(id.scope || null, { emitEvent: false });\r\n this.tag.setValue(id.tag || null, { emitEvent: false });\r\n this.assertion.setValue(id.assertion || null, { emitEvent: false });\r\n this.form.markAsPristine();\r\n }\r\n this._updatingForm = false;\r\n }\r\n\r\n private getId(): AssertedCompositeId {\r\n const external = !this.target.value?.name;\r\n const target = this.target.value;\r\n return {\r\n target: external\r\n ? {\r\n gid: target?.gid || '',\r\n label: target?.label || target?.gid || '',\r\n }\r\n : target!,\r\n scope: this.scope.value?.trim() || '',\r\n tag: this.tag.value?.trim(),\r\n assertion: this.assertion.value || undefined,\r\n };\r\n }\r\n\r\n public emitIdChange(): void {\r\n if (!this.hasSubmit()) {\r\n this.id.set(this.getId());\r\n }\r\n }\r\n\r\n public onEditorClose(): void {\r\n this.targetExpanded = false;\r\n }\r\n\r\n public onExtMoreRequest(event: RefLookupSetEvent): void {\r\n this.extMoreRequest.emit(event);\r\n }\r\n\r\n public onExtLookupConfigChange(config: RefLookupConfig): void {\r\n if (this._lookupConfigDirty || this._updatingForm) {\r\n this._lookupConfigDirty = false;\r\n return;\r\n }\r\n\r\n // update scope if external lookup config is selected\r\n const external = !this.target.value?.name;\r\n if (this._updatingForm || !external) {\r\n return;\r\n }\r\n if (\r\n !this.scope.value ||\r\n this.extLookupConfigs.some((c) => c.name === this.scope.value)\r\n ) {\r\n this.scope.setValue(config.name || null);\r\n this.scope.markAsDirty();\r\n this.scope.updateValueAndValidity();\r\n }\r\n }\r\n\r\n public cancel(): void {\r\n this.editorClose.emit();\r\n }\r\n\r\n public save(): void {\r\n if (this.form.valid) {\r\n this.id.set(this.getId());\r\n }\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries(); track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag.errors)?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries()?.length) {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries(); track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- scope (free) -->\r\n @else {\r\n <mat-form-field class=\"short-text\">\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if ( $any(scope.errors)?.maxLength && (scope.dirty || scope.touched) )\r\n {\r\n <mat-error>scope too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- label and GID -->\r\n @if (target.value?.label) {\r\n <div class=\"info\">\r\n <span class=\"label\">label</span>{{ target.value?.label }}\r\n </div>\r\n } @if (target.value?.gid) {\r\n <div class=\"info\">\r\n <span class=\"label\">GID</span>{{ target.value?.gid }}\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- target -->\r\n <div class=\"boxed\">\r\n <mat-expansion-panel [(expanded)]=\"targetExpanded\">\r\n <mat-expansion-panel-header>target</mat-expansion-panel-header>\r\n <cadmus-pin-target-lookup\r\n [pinByTypeMode]=\"pinByTypeMode()\"\r\n [canSwitchMode]=\"canSwitchMode()\"\r\n [canEditTarget]=\"canEditTarget()\"\r\n [lookupDefinitions]=\"lookupDefinitions()\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey()\"\r\n [target]=\"target.value || undefined\"\r\n [extLookupConfigs]=\"extLookupConfigs\"\r\n (targetChange)=\"onTargetChange($event)\"\r\n (editorClose)=\"onEditorClose()\"\r\n (extMoreRequest)=\"onExtMoreRequest($event)\"\r\n (extLookupConfigChange)=\"onExtLookupConfigChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n <!-- assertion -->\r\n <br />\r\n <div class=\"boxed\">\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n </div>\r\n\r\n <!-- buttons -->\r\n @if (hasSubmit()) {\r\n <div>\r\n <button mat-icon-button type=\"button\" (click)=\"cancel()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-icon-button type=\"submit\" [disabled]=\"form.invalid\">\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n</form>\r\n","import { Component, input, Input, output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { take } from 'rxjs';\r\n\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatCheckboxModule } from '@angular/material/checkbox';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\n\r\nimport { IndexLookupDefinitions, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\nimport { DialogService } from '@myrmidon/ngx-mat-tools';\r\n\r\nimport {\r\n AssertedCompositeId,\r\n AssertedCompositeIdComponent,\r\n} from '../asserted-composite-id/asserted-composite-id.component';\r\n\r\n/**\r\n * Asserted composite IDs editor.\r\n */\r\n@Component({\r\n selector: 'cadmus-refs-asserted-composite-ids',\r\n templateUrl: './asserted-composite-ids.component.html',\r\n styleUrls: ['./asserted-composite-ids.component.css'],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n MatButtonModule,\r\n MatCheckboxModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n AssertedCompositeIdComponent,\r\n ],\r\n})\r\nexport class AssertedCompositeIdsComponent {\r\n private _ids: AssertedCompositeId[];\r\n private _editedIndex: number;\r\n public edited?: AssertedCompositeId;\r\n\r\n /**\r\n * The asserted IDs.\r\n */\r\n @Input()\r\n public get ids(): AssertedCompositeId[] {\r\n return this._ids;\r\n }\r\n public set ids(value: AssertedCompositeId[]) {\r\n if (this._ids !== value) {\r\n this._ids = value || [];\r\n this.updateForm(value);\r\n }\r\n }\r\n\r\n // asserted-id-scopes\r\n public readonly idScopeEntries = input<ThesaurusEntry[]>();\r\n\r\n // asserted-id-tags\r\n public readonly idTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // assertion-tags\r\n public readonly assTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-types\r\n public readonly refTypeEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-tags\r\n public readonly refTagEntries = input<ThesaurusEntry[]>();\r\n\r\n /**\r\n * True when the internal UI preselected mode should be by type rather than\r\n * by item. User can change mode unless modeSwitching is false.\r\n */\r\n public readonly pinByTypeMode = input<boolean>();\r\n\r\n /**\r\n * True when the user can switch between by-type and by-item mode in\r\n * the internal UI.\r\n */\r\n public readonly canSwitchMode = input<boolean>();\r\n\r\n /**\r\n * True when the user can edit the target's gid/label for internal targets.\r\n */\r\n public readonly canEditTarget = input<boolean>();\r\n\r\n /**\r\n * The lookup definitions to be used for the by-type lookup in the internal UI.\r\n * If not specified, the lookup definitions will be got via injection\r\n * when available; if the injected definitions are empty, the\r\n * lookup definitions will be built from the model-types thesaurus;\r\n * if this is not available either, the by-type lookup will be\r\n * disabled.\r\n */\r\n public readonly lookupDefinitions = input<IndexLookupDefinitions>();\r\n\r\n /**\r\n * The default part type key.\r\n */\r\n public readonly defaultPartTypeKey = input<string>();\r\n\r\n /**\r\n * Emitted whenever any ID changes.\r\n */\r\n public readonly idsChange = output<AssertedCompositeId[]>();\r\n\r\n public entries: FormControl<AssertedCompositeId[]>;\r\n public form: FormGroup;\r\n\r\n constructor(formBuilder: FormBuilder, private _dialogService: DialogService) {\r\n this._ids = [];\r\n this._editedIndex = -1;\r\n this.entries = formBuilder.control([], { nonNullable: true });\r\n // form\r\n this.form = formBuilder.group({\r\n ids: this.entries,\r\n });\r\n }\r\n\r\n private updateForm(ids: AssertedCompositeId[]): void {\r\n if (!ids?.length) {\r\n this.form.reset();\r\n return;\r\n }\r\n this.entries.setValue(ids, { emitEvent: false });\r\n this.entries.updateValueAndValidity();\r\n this.form.markAsPristine();\r\n }\r\n\r\n private emitIdsChange(): void {\r\n this.idsChange.emit(this.entries.value);\r\n }\r\n\r\n public addId(): void {\r\n this.editId(\r\n {\r\n target: { gid: '', label: '' },\r\n },\r\n -1\r\n );\r\n }\r\n\r\n public editId(id: AssertedCompositeId, index: number): void {\r\n this._editedIndex = index;\r\n this.edited = id;\r\n }\r\n\r\n public closeId(): void {\r\n this._editedIndex = -1;\r\n this.edited = undefined;\r\n }\r\n\r\n public saveId(entry: AssertedCompositeId): void {\r\n const entries = [...this.entries.value];\r\n if (this._editedIndex === -1) {\r\n entries.push(entry);\r\n } else {\r\n entries.splice(this._editedIndex, 1, entry);\r\n }\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.closeId();\r\n }\r\n\r\n public deleteId(index: number): void {\r\n this._dialogService\r\n .confirm('Confirmation', 'Delete ID?')\r\n .pipe(take(1))\r\n .subscribe((yes) => {\r\n if (yes) {\r\n if (this._editedIndex === index) {\r\n this.closeId();\r\n }\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.emitIdsChange();\r\n }\r\n });\r\n }\r\n\r\n public moveIdUp(index: number): void {\r\n if (index < 1) {\r\n return;\r\n }\r\n const entry = this.entries.value[index];\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n entries.splice(index - 1, 0, entry);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.emitIdsChange();\r\n }\r\n\r\n public moveIdDown(index: number): void {\r\n if (index + 1 >= this.entries.value.length) {\r\n return;\r\n }\r\n const entry = this.entries.value[index];\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n entries.splice(index + 1, 0, entry);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.emitIdsChange();\r\n }\r\n\r\n public onIdChange(id?: AssertedCompositeId): void {\r\n this.saveId(id!);\r\n this.emitIdsChange();\r\n }\r\n}\r\n","<form [formGroup]=\"form\">\r\n <!-- buttons -->\r\n <button type=\"button\" class=\"mat-primary\" mat-flat-button (click)=\"addId()\">\r\n <mat-icon>add_circle</mat-icon> ID\r\n </button>\r\n <!-- list -->\r\n @if (entries.value.length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>scope</th>\r\n <th>type</th>\r\n <th>label</th>\r\n <th>gid</th>\r\n <th>ass.</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for ( entry of entries.value; track entry; let i = $index; let first =\r\n $first; let last = $last) {\r\n <tr [class.selected]=\"entry === edited\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this ID\"\r\n (click)=\"editId(entry, i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveIdUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveIdDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete this ID\"\r\n (click)=\"deleteId(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.scope }}</td>\r\n <td>\r\n <mat-icon>{{ entry?.target?.name ? \"login\" : \"logout\" }}</mat-icon>\r\n </td>\r\n <td>{{ entry?.target?.label }}</td>\r\n <td>{{ entry?.target?.gid }}</td>\r\n <td>{{ entry?.assertion ? \"Y\" : \"N\" }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n }\r\n\r\n <!-- editor -->\r\n <mat-expansion-panel [expanded]=\"edited\" [disabled]=\"!edited\">\r\n <mat-expansion-panel-header\r\n ><mat-icon>{{ edited?.target?.name ? \"login\" : \"logout\" }}</mat-icon> ID\r\n {{ edited?.target?.label }}</mat-expansion-panel-header\r\n >\r\n <cadmus-refs-asserted-composite-id\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [hasSubmit]=\"true\"\r\n [pinByTypeMode]=\"pinByTypeMode()\"\r\n [canSwitchMode]=\"canSwitchMode()\"\r\n [canEditTarget]=\"canEditTarget()\"\r\n [lookupDefinitions]=\"lookupDefinitions()\"\r\n [defaultPartTypeKey]=\"defaultPartTypeKey()\"\r\n [id]=\"edited\"\r\n (idChange)=\"onIdChange($event)\"\r\n (editorClose)=\"closeId()\"\r\n />\r\n </mat-expansion-panel>\r\n</form>\r\n","import { Component, Inject, output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { forkJoin, of, take } from 'rxjs';\r\n\r\n// material\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatSelectModule } from '@angular/material/select';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatButtonModule } from '@angular/material/button';\r\n\r\n// bricks\r\nimport { RefLookupComponent } from '@myrmidon/cadmus-refs-lookup';\r\n\r\n// cadmus\r\nimport { ItemService } from '@myrmidon/cadmus-api';\r\nimport {\r\n DataPinInfo,\r\n IndexLookupDefinitions,\r\n Item,\r\n Part,\r\n} from '@myrmidon/cadmus-core';\r\n\r\n// local\r\nimport { PinRefLookupService } from '../services/pin-ref-lookup.service';\r\n\r\n// from Cadmus general parts\r\nconst METADATA_PART_ID = 'it.vedph.metadata';\r\ninterface MetadataPart extends Part {\r\n metadata: {\r\n type?: string;\r\n name: string;\r\n value: string;\r\n }[];\r\n}\r\n\r\ninterface LookupInfo {\r\n pin: DataPinInfo;\r\n item?: Item;\r\n part?: MetadataPart;\r\n}\r\n\r\n/*\r\n * Scoped pin-based lookup component. This component provides a list\r\n * of pin-based searches, with a lookup control. Whenever the user\r\n * picks a pin value, he gets the details about its item and part, and\r\n * item's metadata part, if any. He can then use these data to build\r\n * some EID by variously assembling these components.\r\n */\r\n@Component({\r\n selector: 'cadmus-scoped-pin-lookup',\r\n templateUrl: './scoped-pin-lookup.component.html',\r\n styleUrls: ['./scoped-pin-lookup.component.css'],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n // bricks\r\n RefLookupComponent,\r\n ],\r\n})\r\nexport class ScopedPinLookupComponent {\r\n // lookup\r\n public key: FormControl<string | null>;\r\n public keyForm: FormGroup;\r\n public keys: string[];\r\n public info?: LookupInfo;\r\n // builder\r\n public id: FormControl<string | null>;\r\n public idForm: FormGroup;\r\n\r\n /**\r\n * Emitted whenever the user picks an ID.\r\n */\r\n public readonly idPick = output<string>();\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n private _itemService: ItemService,\r\n public lookupService: PinRefLookupService,\r\n @Inject('indexLookupDefinitions')\r\n public lookupDefs: IndexLookupDefinitions\r\n ) {\r\n // lookup\r\n // keys are all the defined lookup searches\r\n this.keys = Object.keys(lookupDefs);\r\n // the selected key defines the lookup scope\r\n this.key = formBuilder.control(null);\r\n this.keyForm = formBuilder.group({\r\n key: this.key,\r\n });\r\n // id\r\n this.id = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(300),\r\n ]);\r\n this.idForm = formBuilder.group({\r\n id: this.id,\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n // pre-select a unique key\r\n if (this.keys.length === 1) {\r\n this.key.setValue(this.keys[0]);\r\n this.key.markAsDirty();\r\n this.key.updateValueAndValidity();\r\n }\r\n }\r\n\r\n public onItemChange(item: unknown): void {\r\n const info: LookupInfo = {\r\n pin: item as DataPinInfo,\r\n };\r\n // lookup item and its metadata part if any\r\n forkJoin({\r\n item: item\r\n ? this._itemService.getItem((item as DataPinInfo).itemId, false, true)\r\n : of(null),\r\n part: item\r\n ? this._itemService.getPartFromTypeAndRole(\r\n (item as DataPinInfo).itemId,\r\n METADATA_PART_ID,\r\n undefined,\r\n true\r\n )\r\n : of(null),\r\n })\r\n .pipe(take(1))\r\n .subscribe({\r\n next: (result) => {\r\n if (result.item) {\r\n info.item = result.item;\r\n info.part = result.part as MetadataPart;\r\n this.info = info;\r\n }\r\n },\r\n error: (error) => {\r\n console.error(\r\n error ? JSON.stringify(error) : 'Error loading item/metadata'\r\n );\r\n },\r\n });\r\n }\r\n\r\n public appendIdComponent(type: string, metaIndex = -1): void {\r\n let id = this.id.value || '';\r\n\r\n switch (type) {\r\n case 'pin':\r\n id += this.info?.pin.value;\r\n break;\r\n case 'itemId':\r\n id += this.info!.item?.id || '';\r\n break;\r\n case 'partId':\r\n id += this.info!.part?.id || '';\r\n break;\r\n case 'partTypeId':\r\n id += this.info!.part?.typeId || '';\r\n break;\r\n case 'partRoleId':\r\n id += this.info!.part?.roleId || '';\r\n break;\r\n case 'metadata':\r\n id += this.info!.part!.metadata[metaIndex].value;\r\n break;\r\n }\r\n\r\n this.id.setValue(id);\r\n this.id.markAsDirty();\r\n this.id.updateValueAndValidity();\r\n }\r\n\r\n public pickId(): void {\r\n if (this.idForm.invalid) {\r\n return;\r\n }\r\n this.idPick.emit(this.id.value!);\r\n this.info = undefined;\r\n }\r\n\r\n public resetId(): void {\r\n this.id.reset();\r\n this.id.markAsDirty();\r\n this.id.updateValueAndValidity();\r\n }\r\n}\r\n","<div>\r\n <!-- lookup -->\r\n <div>\r\n <form [formGroup]=\"keyForm\" class=\"form-row\">\r\n <!-- key -->\r\n @if (keys.length > 1) {\r\n <mat-form-field>\r\n <mat-label>type</mat-label>\r\n <mat-select [formControl]=\"key\">\r\n @for (k of keys; track k) {\r\n <mat-option [value]=\"k\">{{ k }}</mat-option>\r\n }\r\n </mat-select>\r\n @if ($any(key).errors?.required && (key.dirty || key.touched)) {\r\n <mat-error>type required</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n <cadmus-refs-lookup\r\n [service]=\"lookupService\"\r\n label=\"pin\"\r\n [options]=\"key.value ? lookupDefs[key.value] : undefined\"\r\n (itemChange)=\"onItemChange($event)\"\r\n />\r\n </form>\r\n </div>\r\n\r\n <!-- builder -->\r\n @if (info) {\r\n <mat-expansion-panel [expanded]=\"info\" [disabled]=\"!info\">\r\n <mat-expansion-panel-header>ID builder</mat-expansion-panel-header>\r\n <!-- ID -->\r\n <div>\r\n <form [formGroup]=\"idForm\" (submit)=\"pickId()\">\r\n <mat-form-field style=\"width: 100%\">\r\n <input matInput [formControl]=\"id\" />\r\n @if ($any(id).errors?.required && (id.dirty || id.touched)) {\r\n <mat-error>ID required</mat-error>\r\n } @if ($any(id).errors?.maxLength && (id.dirty || id.touched)) {\r\n <mat-error>ID too long</mat-error>\r\n }\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matSuffix\r\n (click)=\"resetId()\"\r\n [disabled]=\"!id.value\"\r\n >\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button\r\n mat-icon-button\r\n type=\"button\"\r\n matSuffix\r\n (click)=\"pickId()\"\r\n [disabled]=\"idForm.invalid\"\r\n >\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </mat-form-field>\r\n </form>\r\n </div>\r\n <!-- table -->\r\n <table>\r\n <thead>\r\n <th></th>\r\n <th>source</th>\r\n <th>value</th>\r\n </thead>\r\n <tbody>\r\n <!-- pin -->\r\n <tr class=\"fit-width\">\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('pin')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>pin</td>\r\n <td>{{ info!.pin.value }}</td>\r\n </tr>\r\n <!-- item ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('itemId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>item ID</td>\r\n <td>{{ info!.item?.id }}</td>\r\n </tr>\r\n <!-- item title -->\r\n <tr>\r\n <td></td>\r\n <td>item title</td>\r\n <td>{{ info!.item?.title }}</td>\r\n </tr>\r\n <!-- part ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('partId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>part ID</td>\r\n <td>{{ info!.part?.id }}</td>\r\n </tr>\r\n <!-- part type ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('partTypeId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>part type ID</td>\r\n <td>{{ info!.part?.typeId }}</td>\r\n </tr>\r\n <!-- part role ID -->\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('partRoleId')\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>part role ID</td>\r\n <td>{{ info!.part?.roleId }}</td>\r\n </tr>\r\n <!-- part's metadata -->\r\n @for (m of info!.part?.metadata; track m; let i = $index) {\r\n <tr>\r\n <td>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n (click)=\"appendIdComponent('metadata', i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">add_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td class=\"metadata\">{{ m.name }}</td>\r\n <td class=\"metadata\">{{ m.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n </mat-expansion-panel>\r\n }\r\n</div>\r\n","import {\r\n Component,\r\n effect,\r\n Inject,\r\n input,\r\n model,\r\n OnDestroy,\r\n OnInit,\r\n output,\r\n} from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n Validators,\r\n} from '@angular/forms';\r\nimport { Subscription } from 'rxjs';\r\nimport { debounceTime } from 'rxjs/operators';\r\n\r\n// material\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatFormFieldModule } from '@angular/material/form-field';\r\nimport { MatInputModule } from '@angular/material/input';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatSelectModule } from '@angular/material/select';\r\n\r\n// bricks\r\nimport { Assertion, AssertionComponent } from '@myrmidon/cadmus-refs-assertion';\r\n\r\n// cadmus\r\nimport { IndexLookupDefinitions, ThesaurusEntry } from '@myrmidon/cadmus-core';\r\n\r\n// local\r\nimport { PinRefLookupService } from '../services/pin-ref-lookup.service';\r\nimport { ScopedPinLookupComponent } from '../scoped-pin-lookup/scoped-pin-lookup.component';\r\n\r\n/**\r\n * An asserted ID.\r\n */\r\nexport interface AssertedId {\r\n tag?: string;\r\n value: string;\r\n label?: string;\r\n scope: string;\r\n assertion?: Assertion;\r\n}\r\n\r\n/**\r\n * Asserted ID editor component.\r\n */\r\n@Component({\r\n selector: 'cadmus-refs-asserted-id',\r\n templateUrl: './asserted-id.component.html',\r\n styleUrls: ['./asserted-id.component.css'],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatFormFieldModule,\r\n MatIconModule,\r\n MatInputModule,\r\n MatSelectModule,\r\n // bricks\r\n AssertionComponent,\r\n ScopedPinLookupComponent,\r\n ],\r\n})\r\nexport class AssertedIdComponent implements OnInit, OnDestroy {\r\n private _sub?: Subscription;\r\n private _updatingForm: boolean | undefined;\r\n\r\n public tag: FormControl<string | null>;\r\n public value: FormControl<string | null>;\r\n public label: FormControl<string | null>;\r\n public scope: FormControl<string | null>;\r\n public assertion: FormControl<Assertion | null>;\r\n public form: FormGroup;\r\n\r\n public lookupExpanded: boolean;\r\n\r\n // asserted-id-scopes\r\n public readonly idScopeEntries = input<ThesaurusEntry[]>();\r\n\r\n // asserted-id-tags\r\n public readonly idTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // assertion-tags\r\n public readonly assTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-types\r\n public readonly refTypeEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-tags\r\n public readonly refTagEntries = input<ThesaurusEntry[]>();\r\n\r\n /**\r\n * The asserted ID being edited.\r\n */\r\n public readonly id = model<AssertedId>();\r\n\r\n /**\r\n * True to hide the pin-based EID lookup UI.\r\n */\r\n public readonly noEidLookup = input<boolean>();\r\n\r\n /**\r\n * True to show the submit button.\r\n */\r\n public readonly hasSubmit = input<boolean>();\r\n\r\n /**\r\n * Emitted when the editor is closed.\r\n */\r\n public readonly editorClose = output();\r\n\r\n constructor(\r\n formBuilder: FormBuilder,\r\n public lookupService: PinRefLookupService,\r\n @Inject('indexLookupDefinitions')\r\n public lookupDefs: IndexLookupDefinitions\r\n ) {\r\n this.tag = formBuilder.control(null, Validators.maxLength(50));\r\n this.value = formBuilder.control(null, [\r\n Validators.required,\r\n Validators.maxLength(500),\r\n ]);\r\n this.label = formBuilder.control(null, Validators.maxLength(500));\r\n this.scope = formBuilder.control(null, Validators.maxLength(500));\r\n this.assertion = formBuilder.control(null);\r\n this.form = formBuilder.group({\r\n tag: this.tag,\r\n value: this.value,\r\n label: this.label,\r\n scope: this.scope,\r\n assertion: this.assertion,\r\n });\r\n this.lookupExpanded = false;\r\n\r\n // when id changes, update form\r\n effect(() => {\r\n this.updateForm(this.id());\r\n });\r\n }\r\n\r\n public ngOnInit(): void {\r\n this._sub = this.form.valueChanges\r\n .pipe(debounceTime(300))\r\n .subscribe((_) => {\r\n if (!this._updatingForm) {\r\n this.emitIdChange();\r\n }\r\n });\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n this._sub?.unsubscribe();\r\n }\r\n\r\n public onAssertionChange(assertion: Assertion | undefined): void {\r\n this.assertion.setValue(assertion || null);\r\n }\r\n\r\n public onIdPick(id: string): void {\r\n this.value.setValue(id);\r\n this.value.markAsDirty();\r\n this.value.updateValueAndValidity();\r\n this.lookupExpanded = false;\r\n }\r\n\r\n private updateForm(value: AssertedId | undefined): void {\r\n this._updatingForm = true;\r\n if (!value) {\r\n this.form.reset();\r\n } else {\r\n this.tag.setValue(value.tag || null);\r\n this.value.setValue(value.value);\r\n this.label.setValue(value.label || null);\r\n this.scope.setValue(value.scope);\r\n this.assertion.setValue(value.assertion || null);\r\n this.form.markAsPristine();\r\n }\r\n this._updatingForm = false;\r\n }\r\n\r\n private getId(): AssertedId {\r\n return {\r\n tag: this.tag.value?.trim(),\r\n value: this.value.value?.trim() || '',\r\n label: this.label.value?.trim() || undefined,\r\n scope: this.scope.value?.trim() || '',\r\n assertion: this.assertion.value || undefined,\r\n };\r\n }\r\n\r\n public emitIdChange(): void {\r\n if (!this.hasSubmit()) {\r\n this.id.set(this.getId());\r\n }\r\n }\r\n\r\n public cancel(): void {\r\n this.editorClose.emit();\r\n }\r\n\r\n public save(): void {\r\n if (this.form.valid) {\r\n this.id.set(this.getId());\r\n }\r\n }\r\n}\r\n","<form [formGroup]=\"form\" (submit)=\"save()\">\r\n <div>\r\n <div class=\"form-row\">\r\n <!-- tag (bound) -->\r\n @if (idTagEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <mat-select [formControl]=\"tag\">\r\n @for (e of idTagEntries(); track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- tag (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>tag</mat-label>\r\n <input matInput [formControl]=\"tag\" />\r\n @if ($any(tag.errors)?.maxLength && (tag.dirty || tag.touched)) {\r\n <mat-error>tag too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- scope (bound) -->\r\n @if (idScopeEntries()?.length) {\r\n <mat-form-field>\r\n <mat-label>scope</mat-label>\r\n <mat-select [formControl]=\"scope\">\r\n @for (e of idScopeEntries(); track e) {\r\n <mat-option [value]=\"e.id\">{{ e.value }}</mat-option>\r\n }\r\n </mat-select>\r\n </mat-form-field>\r\n }\r\n <!-- scope (free) -->\r\n @else {\r\n <mat-form-field>\r\n <mat-label>scope</mat-label>\r\n <input matInput [formControl]=\"scope\" />\r\n @if ($any(scope.errors)?.maxLength && (scope.dirty || scope.touched)) {\r\n <mat-error>scope too long</mat-error>\r\n }\r\n </mat-form-field>\r\n }\r\n\r\n <!-- value -->\r\n <mat-form-field>\r\n <mat-label>value</mat-label>\r\n <input matInput [formControl]=\"value\" />\r\n @if ($any(value.errors)?.required && (value.dirty || value.touched)) {\r\n <mat-error>value required</mat-error>\r\n } @if ($any(value.errors)?.maxLength && (value.dirty || value.touched))\r\n {\r\n <mat-error>value too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- label -->\r\n <mat-form-field>\r\n <mat-label>label</mat-label>\r\n <input matInput [formControl]=\"label\" />\r\n @if ($any(label.errors)?.maxLength && (label.dirty || label.touched)) {\r\n <mat-error>label too long</mat-error>\r\n }\r\n </mat-form-field>\r\n\r\n <!-- lookup -->\r\n @if (!noEidLookup()) {\r\n <div>\r\n <mat-expansion-panel [(expanded)]=\"lookupExpanded\">\r\n <mat-expansion-panel-header>lookup</mat-expansion-panel-header>\r\n <cadmus-scoped-pin-lookup (idPick)=\"onIdPick($event)\" />\r\n </mat-expansion-panel>\r\n </div>\r\n }\r\n </div>\r\n\r\n <!-- assertion -->\r\n <mat-expansion-panel>\r\n <mat-expansion-panel-header>assertion</mat-expansion-panel-header>\r\n <cadmus-refs-assertion\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [assertion]=\"assertion.value || undefined\"\r\n (assertionChange)=\"onAssertionChange($event)\"\r\n />\r\n </mat-expansion-panel>\r\n </div>\r\n\r\n <!-- buttons -->\r\n @if (hasSubmit()) {\r\n <div>\r\n <button mat-icon-button type=\"button\" (click)=\"cancel()\">\r\n <mat-icon class=\"mat-warn\">close</mat-icon>\r\n </button>\r\n <button mat-icon-button type=\"submit\" [disabled]=\"form.invalid\">\r\n <mat-icon class=\"mat-primary\">check_circle</mat-icon>\r\n </button>\r\n </div>\r\n }\r\n</form>\r\n","import { Component, effect, input, model, output } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n} from '@angular/forms';\r\nimport { take } from 'rxjs';\r\n\r\n// material\r\nimport { MatButtonModule } from '@angular/material/button';\r\nimport { MatExpansionModule } from '@angular/material/expansion';\r\nimport { MatIconModule } from '@angular/material/icon';\r\nimport { MatTooltipModule } from '@angular/material/tooltip';\r\n\r\n// myrmidon\r\nimport { DialogService } from '@myrmidon/ngx-mat-tools';\r\n\r\n// cadmus\r\nimport { ThesaurusEntry } from '@myrmidon/cadmus-core';\r\n\r\n// local\r\nimport {\r\n AssertedId,\r\n AssertedIdComponent,\r\n} from '../asserted-id/asserted-id.component';\r\n\r\n/**\r\n * Asserted IDs editor.\r\n */\r\n@Component({\r\n selector: 'cadmus-refs-asserted-ids',\r\n templateUrl: './asserted-ids.component.html',\r\n styleUrls: ['./asserted-ids.component.css'],\r\n imports: [\r\n FormsModule,\r\n ReactiveFormsModule,\r\n // material\r\n MatButtonModule,\r\n MatExpansionModule,\r\n MatIconModule,\r\n MatTooltipModule,\r\n // bricks\r\n AssertedIdComponent\r\n],\r\n})\r\nexport class AssertedIdsComponent {\r\n private _editedIndex: number;\r\n public edited?: AssertedId;\r\n\r\n /**\r\n * The asserted IDs.\r\n */\r\n public readonly ids = model<AssertedId[]>([]);\r\n\r\n // asserted-id-scopes\r\n public readonly idScopeEntries = input<ThesaurusEntry[]>();\r\n\r\n // asserted-id-tags\r\n public readonly idTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // assertion-tags\r\n public readonly assTagEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-types\r\n public readonly refTypeEntries = input<ThesaurusEntry[]>();\r\n\r\n // doc-reference-tags\r\n public readonly refTagEntries = input<ThesaurusEntry[]>();\r\n\r\n public entries: FormControl<AssertedId[]>;\r\n public form: FormGroup;\r\n\r\n constructor(formBuilder: FormBuilder, private _dialogService: DialogService) {\r\n this._editedIndex = -1;\r\n this.entries = formBuilder.control([], { nonNullable: true });\r\n // form\r\n this.form = formBuilder.group({\r\n ids: this.entries,\r\n });\r\n\r\n // when ids change, update form\r\n effect(() => {\r\n this.updateForm(this.ids());\r\n });\r\n }\r\n\r\n private updateForm(ids: AssertedId[]): void {\r\n if (!ids?.length) {\r\n this.form.reset();\r\n return;\r\n }\r\n this.entries.setValue(ids, { emitEvent: false });\r\n this.entries.updateValueAndValidity();\r\n this.form.markAsPristine();\r\n }\r\n\r\n public addId(): void {\r\n this.editId(\r\n {\r\n scope: '',\r\n value: '',\r\n },\r\n -1\r\n );\r\n }\r\n\r\n public editId(id: AssertedId, index: number): void {\r\n this._editedIndex = index;\r\n this.edited = id;\r\n }\r\n\r\n public closeId(): void {\r\n this._editedIndex = -1;\r\n this.edited = undefined;\r\n }\r\n\r\n public saveId(entry: AssertedId): void {\r\n const entries = [...this.entries.value];\r\n if (this._editedIndex === -1) {\r\n entries.push(entry);\r\n } else {\r\n entries.splice(this._editedIndex, 1, entry);\r\n }\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.closeId();\r\n }\r\n\r\n public deleteId(index: number): void {\r\n this._dialogService\r\n .confirm('Confirmation', 'Delete ID?')\r\n .pipe(take(1))\r\n .subscribe((yes) => {\r\n if (yes) {\r\n if (this._editedIndex === index) {\r\n this.closeId();\r\n }\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.ids.set(this.entries.value);\r\n }\r\n });\r\n }\r\n\r\n public moveIdUp(index: number): void {\r\n if (index < 1) {\r\n return;\r\n }\r\n const entry = this.entries.value[index];\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n entries.splice(index - 1, 0, entry);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.ids.set(this.entries.value);\r\n }\r\n\r\n public moveIdDown(index: number): void {\r\n if (index + 1 >= this.entries.value.length) {\r\n return;\r\n }\r\n const entry = this.entries.value[index];\r\n const entries = [...this.entries.value];\r\n entries.splice(index, 1);\r\n entries.splice(index + 1, 0, entry);\r\n this.entries.setValue(entries);\r\n this.entries.markAsDirty();\r\n this.entries.updateValueAndValidity();\r\n this.ids.set(this.entries.value);\r\n }\r\n\r\n public onIdChange(id?: AssertedId): void {\r\n this.saveId(id!);\r\n this.ids.set(this.entries.value);\r\n }\r\n}\r\n","<form [formGroup]=\"form\">\r\n <div>\r\n <button type=\"button\" mat-flat-button class=\"mat-primary\" (click)=\"addId()\">\r\n <mat-icon>add_circle</mat-icon> ID\r\n </button>\r\n </div>\r\n @if (entries.value.length) {\r\n <table>\r\n <thead>\r\n <tr>\r\n <th></th>\r\n <th>scope</th>\r\n <th>value</th>\r\n </tr>\r\n </thead>\r\n <tbody>\r\n @for ( entry of entries.value; track entry; let i = $index; let first =\r\n $first; let last = $last) {\r\n <tr [class.selected]=\"entry === edited\">\r\n <td class=\"fit-width\">\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Edit this ID\"\r\n (click)=\"editId(entry, i)\"\r\n >\r\n <mat-icon class=\"mat-primary\">edit</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID up\"\r\n [disabled]=\"first\"\r\n (click)=\"moveIdUp(i)\"\r\n >\r\n <mat-icon>arrow_upward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Move this ID down\"\r\n [disabled]=\"last\"\r\n (click)=\"moveIdDown(i)\"\r\n >\r\n <mat-icon>arrow_downward</mat-icon>\r\n </button>\r\n <button\r\n type=\"button\"\r\n mat-icon-button\r\n matTooltip=\"Delete this ID\"\r\n (click)=\"deleteId(i)\"\r\n >\r\n <mat-icon class=\"mat-warn\">remove_circle</mat-icon>\r\n </button>\r\n </td>\r\n <td>{{ entry.scope }}</td>\r\n <td>{{ entry.value }}</td>\r\n </tr>\r\n }\r\n </tbody>\r\n </table>\r\n }\r\n\r\n <mat-expansion-panel [expanded]=\"edited\" [disabled]=\"!edited\">\r\n <mat-expansion-panel-header\r\n >ID {{ edited?.value }}</mat-expansion-panel-header\r\n >\r\n <cadmus-refs-asserted-id\r\n [idScopeEntries]=\"idScopeEntries()\"\r\n [idTagEntries]=\"idTagEntries()\"\r\n [assTagEntries]=\"assTagEntries()\"\r\n [refTypeEntries]=\"refTypeEntries()\"\r\n [refTagEntries]=\"refTagEntries()\"\r\n [hasSubmit]=\"true\"\r\n [id]=\"edited\"\r\n (idChange)=\"onIdChange($event)\"\r\n (editorClose)=\"closeId()\"\r\n />\r\n </mat-expansion-panel>\r\n</form>\r\n","/*\r\n * Public API Surface of cadmus-refs-asserted-ids\r\n */\r\n\r\nexport * from './lib/asserted-composite-id/asserted-composite-id.component';\r\nexport * from './lib/asserted-composite-ids/asserted-composite-ids.component';\r\nexport * from './lib/asserted-id/asserted-id.component';\r\nexport * from './lib/asserted-ids/asserted-ids.component';\r\nexport * from './lib/pin-target-lookup/pin-target-lookup.component';\r\nexport * from './lib/scoped-pin-lookup/scoped-pin-lookup.component';\r\n\r\nexport * from './lib/services/item-ref-lookup.service';\r\nexport * from './lib/services/pin-ref-lookup.service';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["METADATA_PART_ID","i1.ItemRefLookupService","i2.PinRefLookupService","i3","i5","i7","i9","i10","i11","i12","debounceTime","i1","i4","i6","i8"],"mappings":"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"}
|
package/index.d.ts
CHANGED
|
@@ -205,6 +205,7 @@ declare class AssertedCompositeIdComponent {
|
|
|
205
205
|
lookupService: PinRefLookupService;
|
|
206
206
|
lookupDefs: IndexLookupDefinitions;
|
|
207
207
|
private _updatingForm;
|
|
208
|
+
private _lookupConfigDirty;
|
|
208
209
|
extLookupConfigs: RefLookupConfig[];
|
|
209
210
|
targetExpanded: boolean;
|
|
210
211
|
target: FormControl<PinTarget | null>;
|