@myrmidon/cadmus-graph-ui
Version:
Cadmus - semantic graph components.
266 lines (257 loc) • 10.8 kB
TypeScript
import * as i0 from '@angular/core';
import { OnInit, OnDestroy } from '@angular/core';
import { Observable } from 'rxjs';
import { PageEvent } from '@angular/material/paginator';
import { MatSnackBar } from '@angular/material/snack-bar';
import { DialogService } from '@myrmidon/ngx-mat-tools';
import { DataPage } from '@myrmidon/ngx-tools';
import { ThesaurusEntry } from '@myrmidon/cadmus-core';
import { NodeFilter, UriNode, GraphService, TripleFilter, UriTriple } from '@myrmidon/cadmus-api';
import { PagedListStoreService } from '@myrmidon/paged-data-browsers';
import { FormControl, FormGroup, FormBuilder } from '@angular/forms';
import { RefLookupService, RefLookupFilter } from '@myrmidon/cadmus-refs-lookup';
/**
* Graph nodes list repository.
*/
declare class NodeListRepository implements PagedListStoreService<NodeFilter, UriNode> {
private _graphService;
private readonly _store;
private readonly _loading$;
private readonly _filter$;
private readonly _linkedNode$;
private readonly _classNodes$;
get loading$(): Observable<boolean | undefined>;
get filter$(): Observable<NodeFilter>;
get page$(): Observable<DataPage<UriNode>>;
get linkedNode$(): Observable<UriNode | undefined>;
get classNodes$(): Observable<UriNode[] | undefined>;
constructor(_graphService: GraphService);
getLinkedNode(): UriNode | undefined;
getClassNodes(): UriNode[];
loadPage(pageNumber: number, pageSize: number, filter: NodeFilter): Observable<DataPage<UriNode>>;
reset(): Promise<void>;
setFilter(filter: NodeFilter): Promise<void>;
getFilter(): NodeFilter;
setPage(pageNumber: number, pageSize: number): Promise<void>;
/**
* Set the linked node used in filter.
*
* @param node The node or undefined.
*/
setLinkedNode(node?: UriNode): void;
/**
* Set the linked node used in filter by its ID.
*
* @param id The node ID.
*/
setLinkedNodeId(id?: number): void;
/**
* Add the specified node to the filter class nodes.
* If the node already exists, nothing is done.
*
* @param node The node to add.
*/
addClassNode(node: UriNode): void;
/**
* Set the class node IDs in the filter.
*
* @param ids The class nodes IDs or undefined.
*/
setClassNodeIds(ids?: number[]): void;
/**
* Delete the specified node from the filter class nodes.
* If the node does not exist, nothing is done.
*
* @param id The node's ID.
*/
deleteClassNode(id: number): void;
static ɵfac: i0.ɵɵFactoryDeclaration<NodeListRepository, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<NodeListRepository>;
}
/**
* List of graph nodes. This includes a graph node filter, a list, and a graph
* editor.
*/
declare class GraphNodeListComponent {
private _repository;
private _graphService;
private _dialogService;
private _snackbar;
loading$: Observable<boolean | undefined>;
page$: Observable<DataPage<UriNode>>;
/**
* The currently edited node if any.
*/
readonly editedNode: i0.ModelSignal<UriNode | undefined>;
/**
* The optional set of thesaurus entries for node's tags.
*/
readonly tagEntries: i0.InputSignal<ThesaurusEntry[] | undefined>;
/**
* True if this node list should have a walker button for each node.
*/
readonly hasWalker: i0.InputSignal<boolean | undefined>;
/**
* Emitted when walking a specific node is requested.
*/
readonly nodeWalk: i0.OutputEmitterRef<UriNode>;
constructor(_repository: NodeListRepository, _graphService: GraphService, _dialogService: DialogService, _snackbar: MatSnackBar);
onPageChange(event: PageEvent): void;
addNode(): void;
editNode(node: UriNode): void;
onNodeChange(node: UriNode): void;
onEditorClose(): void;
deleteNode(node: UriNode): void;
walkNode(node: UriNode): void;
reset(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GraphNodeListComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<GraphNodeListComponent, "cadmus-graph-node-list", never, { "editedNode": { "alias": "editedNode"; "required": false; "isSignal": true; }; "tagEntries": { "alias": "tagEntries"; "required": false; "isSignal": true; }; "hasWalker": { "alias": "hasWalker"; "required": false; "isSignal": true; }; }, { "editedNode": "editedNodeChange"; "nodeWalk": "nodeWalk"; }, never, never, true, never>;
}
/**
* Graph node editor.
*/
declare class GraphNodeEditorComponent {
/**
* The node being edited. A new node has ID=0 and no uri.
*/
readonly node: i0.ModelSignal<UriNode | undefined>;
/**
* The optional set of thesaurus entries for node's tags.
*/
readonly tagEntries: i0.InputSignal<ThesaurusEntry[] | undefined>;
/**
* Emitted when the user requested to close the editor.
*/
readonly editorClose: i0.OutputEmitterRef<void>;
isNew: boolean;
uri: FormControl<string | null>;
label: FormControl<string | null>;
isClass: FormControl<boolean>;
tag: FormControl<string | null>;
form: FormGroup;
constructor(formBuilder: FormBuilder);
private updateForm;
private getNode;
cancel(): void;
save(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GraphNodeEditorComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<GraphNodeEditorComponent, "cadmus-graph-node-editor", never, { "node": { "alias": "node"; "required": false; "isSignal": true; }; "tagEntries": { "alias": "tagEntries"; "required": false; "isSignal": true; }; }, { "node": "nodeChange"; "editorClose": "editorClose"; }, never, never, true, never>;
}
/**
* Graph nodes list repository.
*/
declare class GraphTripleListRepository implements PagedListStoreService<TripleFilter, UriTriple> {
private _graphService;
private readonly _store;
private readonly _loading$;
private readonly _filter$;
private readonly _subjectNode$;
private readonly _predicateNode$;
private readonly _objectNode$;
get loading$(): Observable<boolean | undefined>;
get filter$(): Observable<TripleFilter>;
get page$(): Observable<DataPage<UriTriple>>;
get subjectNode$(): Observable<UriNode | undefined>;
get predicateNode$(): Observable<UriNode | undefined>;
get objectNode$(): Observable<UriNode | undefined>;
constructor(_graphService: GraphService);
reset(): Promise<void>;
loadPage(pageNumber: number, pageSize: number, filter: TripleFilter): Observable<DataPage<UriTriple>>;
setFilter(filter: TripleFilter): Promise<void>;
getFilter(): TripleFilter;
setPage(pageNumber: number, pageSize: number): Promise<void>;
/**
* Set the node term used in filter.
*
* @param node The node or null/undefined.
* @param type The type: subject, predicate, object.
*/
setTerm(node: UriNode | null | undefined, type: 'S' | 'P' | 'O'): void;
/**
* Set the node term used in filter by its ID.
*
* @param id The node ID or null/undefined.
* @param type The type: subject, predicate, object.
*/
setTermId(id: number | null | undefined, type: 'S' | 'P' | 'O'): void;
selectTerm(type: 'S' | 'P' | 'O'): Observable<UriNode | undefined>;
getTerm(type: 'S' | 'P' | 'O'): UriNode | undefined;
static ɵfac: i0.ɵɵFactoryDeclaration<GraphTripleListRepository, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<GraphTripleListRepository>;
}
declare class GraphTripleListComponent {
private _graphService;
private _dialogService;
private _snackbar;
private _repository;
page$: Observable<DataPage<UriTriple>>;
loading$: Observable<boolean | undefined>;
editedTriple?: UriTriple;
/**
* The optional set of thesaurus entries for triple's tags.
*/
constructor(_graphService: GraphService, _dialogService: DialogService, _snackbar: MatSnackBar, _repository: GraphTripleListRepository);
onPageChange(event: PageEvent): void;
addTriple(): void;
editTriple(triple: UriTriple): void;
onTripleChange(triple: UriTriple): void;
onEditorClose(): void;
deleteTriple(triple: UriTriple): void;
reset(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GraphTripleListComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<GraphTripleListComponent, "cadmus-graph-triple-list", never, {}, {}, never, never, true, never>;
}
interface GraphNodeLookupFilter extends RefLookupFilter {
isClass?: boolean | null;
tag?: string;
}
/**
* Graph node lookup service.
*/
declare class GraphNodeLookupService implements RefLookupService {
private _graphService;
constructor(_graphService: GraphService);
lookup(filter: GraphNodeLookupFilter, options?: any): Observable<any[]>;
getName(item: any): string;
static ɵfac: i0.ɵɵFactoryDeclaration<GraphNodeLookupService, never>;
static ɵprov: i0.ɵɵInjectableDeclaration<GraphNodeLookupService>;
}
declare class GraphTripleEditorComponent implements OnInit, OnDestroy {
lookupService: GraphNodeLookupService;
private _snackbar;
private _graphService;
private _sub?;
readonly triple: i0.ModelSignal<UriTriple | undefined>;
/**
* The optional set of thesaurus entries for triple's tags.
*/
/**
* Emitted when the user requested to close the editor.
*/
readonly editorClose: i0.OutputEmitterRef<void>;
isNew: boolean;
subjectNode: FormControl<UriNode | null>;
predicateNode: FormControl<UriNode | null>;
objectNode: FormControl<UriNode | null>;
isLiteral: FormControl<boolean>;
literal: FormControl<string | null>;
literalLang: FormControl<string | null>;
literalType: FormControl<string | null>;
tag: FormControl<string | null>;
form: FormGroup;
constructor(formBuilder: FormBuilder, lookupService: GraphNodeLookupService, _snackbar: MatSnackBar, _graphService: GraphService);
ngOnInit(): void;
ngOnDestroy(): void;
onSubjectChange(node?: unknown): void;
onPredicateChange(node?: unknown): void;
onObjectChange(node?: unknown): void;
private getNode;
private updateForm;
private getTriple;
cancel(): void;
save(): void;
static ɵfac: i0.ɵɵFactoryDeclaration<GraphTripleEditorComponent, never>;
static ɵcmp: i0.ɵɵComponentDeclaration<GraphTripleEditorComponent, "cadmus-graph-triple-editor", never, { "triple": { "alias": "triple"; "required": false; "isSignal": true; }; }, { "triple": "tripleChange"; "editorClose": "editorClose"; }, never, never, true, never>;
}
export { GraphNodeEditorComponent, GraphNodeListComponent, GraphNodeLookupService, GraphTripleEditorComponent, GraphTripleListComponent, GraphTripleListRepository, NodeListRepository };
export type { GraphNodeLookupFilter };