Getting help
Every license includes Support Basic ticket capacity.
Optional Starter / Business / Priority packs add ticket budget and faster response targets.
Support is assistance capacity only — it does not expand warranty or indemnity.
- Defects and integration questions against documented APIs count as tickets.
- Custom feature work, host redesign, and unrelated Angular coaching do not.
-
Licensing / sales:
sales@gerald-neumann.dev
Compare support packs
Current packages
Install from GitHub Packages (@gerald-neumann/*). Versions below match the
sibling library repos as of this site update.
Peers: gn-vgantt expects gn-vtable ^1.4.0; optional chips
gn-vquery ^1.3.0.
gn-vquery — supported API
Chip query model + Custom Element chip bar. Compilers for MyERP Advanced Query and
ReSpecT REQL WHERE. Prefer the package root for new integrations.
Core (happy path)
| Surface |
Notes |
VQueryChip, field config / options, operators |
Chip + catalog model |
chipsToAdvancedQuery, chipsToReqlWhere, compileVQuery |
Dialect compilers |
GnVQueryChipBarElement, registerGnVQueryChipBar |
Custom Element (GN_VQUERY_CHIP_BAR_TAG) |
Events: chips-change, preset-chip-remove, notice |
Host wiring |
commitPendingDraft(), focusDraft() |
Toolbar / focus |
serializeVQueryChips / deserializeVQueryChips |
Persistence |
applyCompiledQueryToVTable / ToVGantt |
Table / Gantt reload glue |
styles/vquery-chip-bar.css, bubble CSS, --vquery-* |
Versioned style contract (light DOM) |
Field catalog knobs
options / loadOptions / suggestOptions (+ debounce / require-match)
multiValue, includeInFreeText, yearMonthFreeText, quarterMonthField
facets, operators, hint
Compile snapshot
| Chip |
Advanced Query |
REQL |
| Free-text |
OR across text fields with includeInFreeText !== false |
Same participation |
Text ~ CSV |
OR of field~term |
LIKE / terms |
Equality = CSV |
OR of equalities; negated → AND of != |
IN / OR of comparisons |
| Quarter facet |
OR of month equalities via quarterMonthField |
Same |
import {
compileVQuery,
applyCompiledQueryToVTable,
registerGnVQueryChipBar,
} from '@gerald-neumann/gn-vquery';
registerGnVQueryChipBar();
const compiled = compileVQuery(chips, fields, 'reql-where');
applyCompiledQueryToVTable(table, setQuery, compiled);
gn-vtable — supported host API
<gn-vtable> is the table host. Columns use
<vtable-column>. Outline / WBS chrome uses
<vtable-outline-prefix>.
Controlled state (two-way models)
| State |
Bind |
| Search | [(searchTerm)] |
| Sort | [(sortColumns)] |
| Column filters | [(columnFilters)] |
| Pivot | [(pivotConfig)] |
| Group levels | [(groupByLevels)] |
| Column order / widths | [(columnOrder)] / [(columnWidths)] |
| Selection ids | [(selectedRowIds)] (null = uncontrolled) |
Prefer two-way bindings. (selectionChange) remains for the rich
{ selectedRows, selectedRowIds } payload.
Key inputs
- Data:
dataProvider, columns, chunkSize, preFetchChunks, maxCachedChunks, initialLoadStrategy, reloadMode
- Layout: prefer
layoutPreset (default | stretch-fill | overview-card)
- Grouping / outline:
groupingStrategy, showGroupRail, outlineMode, outlineParentField, outlineColumn
- Selection / edit:
selectionMode, selectionUi, rowIdField, inlineEditActivation
- Chrome:
customTranslations, iconLibrary / iconLibraries, action templates
Store-construction-only inputs (chunkSize, prefetch / cache / concurrency,
initialLoadStrategy, performanceLogger) are read once when the
internal store is created.
Imperative methods (frozen)
reload(options?), remeasureScrollport(), setScrollTop(px)
setSearchTerm / clearSearch
expandAllGroups / collapseAllGroups / level helpers
getSelectedRows / getSelectedRowIds
clearColumnFilter / clearAllColumnFilters / resetColumnWidths
- Inline edit:
startEdit / applyEdit / commitEdit / endEdit / cancelEdit
Provider contract
fetchData(params) → Observable<VTableResponse<T>>
fetchDataCount(params) → Observable<number>
- Grouped:
fetchGroups + fetchGroupRows (both optional hooks)
fetchChildren is deprecated and is not called. Handle
(outlineToggle) in the host instead.
import {
GnVTableComponent,
VTableColumnDirective,
type VTableDataProvider,
} from '@gerald-neumann/gn-vtable';
gn-vgantt — supported host API
<gn-vgantt> / GnVGanttComponent is the product host.
The timeline component is package-private. There is no host
[(schedule)] model — use scheduleRows() for a readonly snapshot.
Key bindings
- Data:
dataProvider (required), columns, chunkSize, rowHeight
- Time / layout:
timeScale, tablePaneWidth, layoutMode, cascade, holiday inputs, highlightWeekends
- Navigation:
selectedId, pinnedId, focusId, highlightedRowIds
- Kind / chrome:
kindCatalog (prefer), kindGraph, outlineMode, show* flags, reorder / reparent
- Persist:
persistMode (auto | output | provider), commitDebounceMs
Outputs
(commit) → GnVGanttCommitOutput (+ persistHandledBy)
(rowCreate), (rowOpen)
(barChange) / (linkChange) — deprecated; analytics only
Imperative methods
reloadTable(), scrollToId(), flashRow()
scheduleRows(), setPersistStatus()
Providers
GnVGanttDataProvider<T> extends VTableDataProvider<T> with:
fetchTimeDomain? / fetchLinks? — required for HTTP / windowed mode
commit? — optional; driven by persistMode
setPinnedId? / setMaxDepth? / setVisibleKinds?
toggleOutlineExpanded? — memory trees; HTTP typically stamps __expanded
Shipped: HttpVGanttProvider, MemoryVGanttProvider.
Chip filters (optional gn-vquery)
import { applyCompiledQueryToVGantt, compileVQuery } from '@gerald-neumann/gn-vquery';
const compiled = compileVQuery(chips, fields, 'reql-where');
applyCompiledQueryToVGantt(
gantt,
(q) => provider.setChipFilterQuery(q, 'reql-where'),
compiled,
);
Turn [showSearchBar] off when the chip bar owns filtering.
HTTP provider forwards chipFilterQuery + dialect on
/rows, /count, and /domain.
Gantt REST contract (HTTP provider)
Reference shape used by the demo API and HttpVGanttProvider.
Hosts may implement the same endpoints or map domain APIs behind a thin provider.
| Method |
Path |
Purpose |
POST |
{base}/rows |
VTableDataParams → chunked GnVGanttRow page |
POST |
{base}/count |
Filtered total for virtualization |
GET / POST |
{base}/domain |
Time domain for current filter / pin |
POST |
{base}/links |
Batch links for visible ids (+ overscan) |
POST |
{base}/commit |
Optional persist; host may handle (commit) instead |
Export tiers
Deep-importing package-private paths is unsupported. Prefer documented inputs,
outputs, models, methods, and CSS tokens.
| Import |
Promise |
@gerald-neumann/gn-vquery |
Stable host path |
@gerald-neumann/gn-vquery/advanced |
Internal helpers — may change in minors |
@gerald-neumann/gn-vtable |
Supported host API |
@gerald-neumann/gn-vtable/advanced |
Implementation helpers — may change in minors |
@gerald-neumann/gn-vgantt |
Supported host API |
@gerald-neumann/gn-vgantt/advanced |
detectIssues / proposeFix, schedule math — may change in minors |
…/themes/{bootstrap,material,tailwind} |
Theme entry points (vtable + vgantt) |