@agridea/suibi-module 0.1.0-preview.6 → 0.1.0-preview.68e6607
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 +10 -10
- package/dist/elements/browser/main.js +75 -72
- package/dist/elements/browser/styles.css +1 -1
- package/dist/elements/browser/suibi-module-latest.css +1 -1
- package/dist/elements/browser/suibi-module-latest.js +75 -72
- package/dist/elements/browser/{suibi-module.v0.1.0-preview.6.css → suibi-module.v0.1.0-preview.68e6607.css} +1 -1
- package/dist/elements/browser/suibi-module.v0.1.0-preview.68e6607.js +78 -0
- package/dist/elements/browser/suibi-theme-dark.css +1 -1
- package/dist/elements/browser/version.txt +1 -1
- package/dist/elements/browser/wc-global-utilities.css +1 -0
- package/dist/types/app/app.d.ts +1 -3
- package/dist/types/app/components/add-dashed-button/add-dashed-button.component.d.ts +9 -0
- package/dist/types/app/components/data-preview/data-preview.component.d.ts +4 -2
- package/dist/types/app/components/empty-state/empty-state.component.d.ts +12 -0
- package/dist/types/app/components/gauge-arc/gauge-arc.component.d.ts +49 -0
- package/dist/types/app/{header-bar.d.ts → components/header-bar/header-bar.component.d.ts} +3 -4
- package/dist/types/app/components/inline-table/inline-table.component.d.ts +114 -0
- package/dist/types/app/components/inline-table/inline-table.types.d.ts +161 -0
- package/dist/types/app/components/module-placeholder-page/module-placeholder-page.component.d.ts +6 -0
- package/dist/types/app/components/planning-result/planning-result.component.d.ts +46 -0
- package/dist/types/app/components/planning-result-row/planning-result-row.component.d.ts +34 -0
- package/dist/types/app/components/planning-trigger/planning-trigger.component.d.ts +13 -0
- package/dist/types/app/components/results-page/results-page.component.d.ts +13 -0
- package/dist/types/app/components/suissebilanz-dashboard/suissebilanz-dashboard.component.d.ts +32 -0
- package/dist/types/app/components/suissebilanz-dashboard/suissebilanz-metrics.service.d.ts +21 -0
- package/dist/types/app/components/suissebilanz-minibar/suissebilanz-minibar.component.d.ts +19 -0
- package/dist/types/app/components/validation-page/validation-page.component.d.ts +18 -0
- package/dist/types/app/components/welcome-page/metadata.types.d.ts +1 -1
- package/dist/types/app/components/welcome-page/welcome-page.component.d.ts +5 -3
- package/dist/types/app/components/workflow-stepper/workflow-stepper.component.d.ts +49 -0
- package/dist/types/app/core/data/naebi-data.service.d.ts +38 -28
- package/dist/types/app/core/error/global-error-handler.d.ts +2 -3
- package/dist/types/app/core/i18n/i18n.service.d.ts +5 -3
- package/dist/types/app/core/i18n/locales/fr.d.ts +2 -0
- package/dist/types/app/core/i18n/locales/it.d.ts +2 -0
- package/dist/types/app/core/master-data/master-data.service.d.ts +8 -1
- package/dist/types/app/core/metadata/suibi-metadata.types.d.ts +11 -1
- package/dist/types/app/core/navigation/navigation.service.d.ts +29 -1
- package/dist/types/app/core/planning/planning-balance.service.d.ts +38 -0
- package/dist/types/app/core/planning/planning-balance.types.d.ts +206 -0
- package/dist/types/app/core/planning/planning-balance.utils.d.ts +10 -0
- package/dist/types/app/core/utils/object.util.d.ts +26 -0
- package/dist/types/app/core/validation/capabilities.d.ts +5 -5
- package/dist/types/app/core/validation/global-validation.service.d.ts +19 -4
- package/dist/types/app/jsonforms/filters/code-list-filter-resolvers.d.ts +3 -0
- package/dist/types/app/jsonforms/registry/renderers.registry.d.ts +8 -0
- package/dist/types/app/jsonforms/renderers/controls/selects/animal-category/animal-category-select.renderer.d.ts +1 -1
- package/dist/types/app/jsonforms/renderers/controls/selects/code-list/code-list-select.renderer.d.ts +10 -4
- package/dist/types/app/jsonforms/renderers/layout/array/array-layout.renderer.d.ts +43 -0
- package/dist/types/app/jsonforms/renderers/layout/categorization/selected-category-categorization.renderer.d.ts +3 -0
- package/dist/types/app/jsonforms/renderers/layout/constraint/constraint-layout.renderer.d.ts +1 -0
- package/dist/types/app/jsonforms/renderers/layout/group/base-group.renderer.d.ts +2 -0
- package/dist/types/app/jsonforms/renderers/layout/group/module-toggle-group.renderer.d.ts +38 -0
- package/dist/types/app/nutrient-cycle/animal-stock/animal-stock-detail/animal-stock-detail.component.d.ts +21 -0
- package/dist/types/app/nutrient-cycle/animal-stock/{animal-stock-list.component.d.ts → animal-stock-list/animal-stock-list.component.d.ts} +6 -9
- package/dist/types/app/nutrient-cycle/animal-stock/{animal-stock-master-detail.component.d.ts → animal-stock-master-detail/animal-stock-master-detail.component.d.ts} +2 -3
- package/dist/types/app/nutrient-cycle/animal-stock/index.d.ts +3 -3
- package/dist/types/app/nutrient-cycle/farm-manure-trading/farm-manure-trading-detail/farm-manure-trading-detail.component.d.ts +26 -0
- package/dist/types/app/nutrient-cycle/farm-manure-trading/{farm-manure-trading-list.component.d.ts → farm-manure-trading-list/farm-manure-trading-list.component.d.ts} +9 -9
- package/dist/types/app/nutrient-cycle/farm-manure-trading/{farm-manure-trading-master-detail.component.d.ts → farm-manure-trading-master-detail/farm-manure-trading-master-detail.component.d.ts} +3 -4
- package/dist/types/app/nutrient-cycle/farm-manure-trading/index.d.ts +3 -3
- package/dist/types/app/nutrient-cycle/field-cultivation/arable-land-table/arable-land-table.component.d.ts +21 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/arable-land-table/arable-land-table.config.d.ts +9 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/crop-harvest-table/crop-harvest-table.component.d.ts +21 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/crop-harvest-table/crop-harvest-table.config.d.ts +13 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation-detail/field-cultivation-detail.component.d.ts +22 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation-general/field-cultivation-general.component.d.ts +20 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation-list/field-cultivation-list.component.d.ts +17 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation-master-detail/field-cultivation-master-detail.component.d.ts +29 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation.types.d.ts +41 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation.util.d.ts +6 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/fodder-cropland-table/fodder-cropland-table.component.d.ts +27 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/fodder-cropland-table/fodder-cropland-table.config.d.ts +16 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/index.d.ts +9 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/special-crops-table/special-crops-table.component.d.ts +29 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/special-crops-table/special-crops-table.config.d.ts +61 -0
- package/dist/types/app/nutrient-cycle/field-spreading/fertiliser-table/fertiliser-table.component.d.ts +43 -0
- package/dist/types/app/nutrient-cycle/field-spreading/fertiliser-table/fertiliser-table.config.d.ts +20 -0
- package/dist/types/app/nutrient-cycle/field-spreading/field-spreading.component.d.ts +16 -4
- package/dist/types/app/nutrient-cycle/field-spreading/ingredient.util.d.ts +8 -0
- package/dist/types/app/nutrient-cycle/field-spreading/recycling-table/recycling-table.component.d.ts +31 -0
- package/dist/types/app/nutrient-cycle/field-spreading/recycling-table/recycling-table.config.d.ts +17 -0
- package/dist/types/app/nutrient-cycle/field-spreading/recycling-table/recycling-transaction-unit.util.d.ts +4 -0
- package/dist/types/app/nutrient-cycle/fodder/fodder-master-detail/fodder-master-detail.component.d.ts +25 -0
- package/dist/types/app/nutrient-cycle/fodder/fodder-table/fodder-table.component.d.ts +26 -0
- package/dist/types/app/nutrient-cycle/fodder/fodder-table/fodder-table.config.d.ts +9 -0
- package/dist/types/app/nutrient-cycle/fodder/fodder.types.d.ts +34 -0
- package/dist/types/app/nutrient-cycle/fodder/index.d.ts +3 -0
- package/dist/types/app/nutrient-cycle/fodder/ingredient.util.d.ts +8 -0
- package/dist/types/app/nutrient-cycle/fodder/transaction-unit.util.d.ts +2 -0
- package/dist/types/app/nutrient-cycle/lifetime-performance/index.d.ts +2 -0
- package/dist/types/app/nutrient-cycle/lifetime-performance/lifetime-performance-form.component.d.ts +1 -1
- package/dist/types/app/nutrient-cycle/storage/index.d.ts +4 -0
- package/dist/types/app/nutrient-cycle/storage/storage-detail/storage-detail.component.d.ts +30 -0
- package/dist/types/app/nutrient-cycle/storage/storage-general/storage-general.component.d.ts +29 -0
- package/dist/types/app/nutrient-cycle/storage/storage-list/storage-list.component.d.ts +23 -0
- package/dist/types/app/nutrient-cycle/storage/storage-master-detail/storage-master-detail.component.d.ts +32 -0
- package/dist/types/app/nutrient-cycle/storage/storage.types.d.ts +40 -0
- package/dist/types/environments/environment.d.ts +5 -0
- package/dist/types/shared/material-icons.d.ts +3 -3
- package/package.json +68 -17
- package/dist/elements/browser/suibi-module.v0.1.0-preview.6.js +0 -75
- package/dist/types/app/nutrient-cycle/animal-stock/animal-stock-detail.component.d.ts +0 -22
- package/dist/types/app/nutrient-cycle/farm-manure-trading/farm-manure-trading-detail.component.d.ts +0 -27
- /package/dist/types/app/{core/validation/validation-errors-panel.d.ts → components/validation-errors-panel/validation-errors-panel.component.d.ts} +0 -0
|
@@ -22,3 +22,29 @@ export declare function deepEqual(a: unknown, b: unknown): boolean;
|
|
|
22
22
|
* @returns A deep copy of the value
|
|
23
23
|
*/
|
|
24
24
|
export declare function deepClone<T>(value: T): T;
|
|
25
|
+
/**
|
|
26
|
+
* Recursively drops `ingredient[]` entries whose `quantity` is null/undefined.
|
|
27
|
+
*
|
|
28
|
+
* Inline tables (fertiliser/recycling) pre-populate every nutrient slot in `ingredient[]`
|
|
29
|
+
* so the UI always shows all formula columns, but slots the user never fills in stay as
|
|
30
|
+
* `{ molecularFormula, quantity: null, unit }`. The calculation API rejects any ingredient
|
|
31
|
+
* entry that's present but incomplete, so submitted payloads must omit those still-empty
|
|
32
|
+
* slots entirely rather than send them with a null quantity.
|
|
33
|
+
*/
|
|
34
|
+
export declare function stripIncompleteIngredients<T>(value: T): T;
|
|
35
|
+
/**
|
|
36
|
+
* Sanitizes the planning payload: the calculation API (OpenAPI, no `nullable: true`
|
|
37
|
+
* anywhere) accepts an optional field as *absent* but rejects it when present with a
|
|
38
|
+
* null value ("must be string/number"). The working data model normalizes optional
|
|
39
|
+
* fields to null, so strip them at the submission boundary — mirroring what
|
|
40
|
+
* `stripIncompleteIngredients` does for ingredient slots.
|
|
41
|
+
*
|
|
42
|
+
* - inside `fieldCultivation` entry collections (fodderCropland, arableLand, special,
|
|
43
|
+
* feedingOfCropHarvest, dispenseOfCropHarvest): any null property is dropped
|
|
44
|
+
* (fieldName, userSpecificPlantName, yieldPerSquareMeasure, effectiveYield, …)
|
|
45
|
+
* - `nutrientCycle.fodder.trading.<collection>[].quantity`: null → dropped
|
|
46
|
+
*/
|
|
47
|
+
export declare function sanitizePlanningPayload(data: NaebiDataLike): NaebiDataLike;
|
|
48
|
+
/** Structural type so object.util stays free of a NaebiData import (circular-safe). */
|
|
49
|
+
type NaebiDataLike = Record<string, unknown>;
|
|
50
|
+
export {};
|
|
@@ -5,14 +5,14 @@
|
|
|
5
5
|
* All master data is embedded statically at compile time - no runtime HTTP calls.
|
|
6
6
|
*/
|
|
7
7
|
/**
|
|
8
|
-
* Derives permitted stable systems (
|
|
8
|
+
* Derives permitted stable systems (stableSystem enum strings) for a given animal category.
|
|
9
9
|
*
|
|
10
10
|
* @param animalCategoryPRIF - The PRIF animal category ID
|
|
11
|
-
* @returns Array of permitted
|
|
11
|
+
* @returns Array of permitted stableSystem enum strings (e.g. 'HUS_TETHER')
|
|
12
12
|
*/
|
|
13
|
-
export declare function derivePermittedStableSystems(animalCategoryPRIF: number | null | undefined):
|
|
13
|
+
export declare function derivePermittedStableSystems(animalCategoryPRIF: number | null | undefined): string[];
|
|
14
14
|
/**
|
|
15
15
|
* Pre-computed map for performance (memoized at module load).
|
|
16
|
-
* Maps animalCategoryPRIF -> array of permitted stableSystem
|
|
16
|
+
* Maps animalCategoryPRIF -> array of permitted stableSystem enum strings.
|
|
17
17
|
*/
|
|
18
|
-
export declare const PERMITTED_STABLE_SYSTEMS: Record<number,
|
|
18
|
+
export declare const PERMITTED_STABLE_SYSTEMS: Record<number, string[]>;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { ErrorObject } from 'ajv';
|
|
2
|
-
import { AnimalStockCategory, FarmManureTradingCategory, FarmManureTradingMode, FieldSpreadingCategory, PageId } from '../navigation/navigation.service';
|
|
2
|
+
import { AnimalStockCategory, FarmManureTradingCategory, FarmManureTradingMode, FieldCultivationTab, FieldSpreadingCategory, FodderCategory, FodderMode, PageId, StorageEntryType, StorageTab } from '../navigation/navigation.service';
|
|
3
3
|
export interface EnrichedValidationError extends ErrorObject {
|
|
4
4
|
/** Human-friendly field label (e.g., "Animal Category") */
|
|
5
5
|
fieldLabel?: string;
|
|
@@ -17,8 +17,24 @@ export interface EnrichedValidationError extends ErrorObject {
|
|
|
17
17
|
targetFarmManureTradingIndex?: number;
|
|
18
18
|
/** Category tab inside farm manure trading detail */
|
|
19
19
|
targetFarmManureTradingCategory?: FarmManureTradingCategory;
|
|
20
|
+
/** Navigation target: fodder mode */
|
|
21
|
+
targetFodderMode?: FodderMode;
|
|
22
|
+
/** Navigation target: fodder entry index */
|
|
23
|
+
targetFodderIndex?: number;
|
|
24
|
+
/** Category tab inside fodder detail */
|
|
25
|
+
targetFodderCategory?: FodderCategory;
|
|
20
26
|
/** Category tab inside field spreading */
|
|
21
27
|
targetFieldSpreadingCategory?: FieldSpreadingCategory;
|
|
28
|
+
/** Category tab inside field cultivation */
|
|
29
|
+
targetFieldCultivationTab?: FieldCultivationTab;
|
|
30
|
+
/** Field cultivation detail index */
|
|
31
|
+
targetFieldCultivationIndex?: number;
|
|
32
|
+
/** Storage detail type */
|
|
33
|
+
targetStorageType?: StorageEntryType;
|
|
34
|
+
/** Storage detail index */
|
|
35
|
+
targetStorageIndex?: number;
|
|
36
|
+
/** Storage tab for list-level or scalar navigation */
|
|
37
|
+
targetStorageTab?: StorageTab;
|
|
22
38
|
}
|
|
23
39
|
/**
|
|
24
40
|
* GlobalValidationService
|
|
@@ -31,14 +47,13 @@ export declare class GlobalValidationService {
|
|
|
31
47
|
private readonly dataSvc;
|
|
32
48
|
private readonly ajv;
|
|
33
49
|
private readonly validateFn;
|
|
34
|
-
private readonly rawErrors;
|
|
35
50
|
readonly errors: import("@angular/core").Signal<EnrichedValidationError[]>;
|
|
36
|
-
constructor();
|
|
37
|
-
validate(): void;
|
|
38
51
|
private consolidateErrors;
|
|
39
52
|
private enrichErrors;
|
|
40
53
|
private inferCategory;
|
|
41
54
|
private inferFarmTradingCategory;
|
|
42
55
|
private inferFieldSpreadingCategory;
|
|
56
|
+
private inferFodderCategory;
|
|
57
|
+
private inferStorageTab;
|
|
43
58
|
private inferFieldLabel;
|
|
44
59
|
}
|
|
@@ -20,9 +20,11 @@
|
|
|
20
20
|
*/
|
|
21
21
|
import { MasterDataService } from '../../core/master-data/master-data.service';
|
|
22
22
|
import { I18nService } from '../../core/i18n/i18n.service';
|
|
23
|
+
import { NaebiDataService } from '../../core/data/naebi-data.service';
|
|
23
24
|
import { BaseCodeListEntry } from '../shared/option-sources/code-lists';
|
|
24
25
|
export interface FilterContext {
|
|
25
26
|
data: unknown;
|
|
27
|
+
rootData: unknown;
|
|
26
28
|
get<T = unknown>(pointer: string): T | undefined;
|
|
27
29
|
masterData: MasterDataService;
|
|
28
30
|
locale: string;
|
|
@@ -57,4 +59,5 @@ export declare function registerCodeListFilter(name: string, fn: CodeListFilterR
|
|
|
57
59
|
export declare function evaluateFilter(list: BaseCodeListEntry[], cfg: FilterConfig | undefined, services: {
|
|
58
60
|
masterData: MasterDataService;
|
|
59
61
|
i18n: I18nService;
|
|
62
|
+
naebiData?: NaebiDataService;
|
|
60
63
|
}, data: unknown): BaseCodeListEntry[];
|
|
@@ -3,9 +3,11 @@ import { CodeListSelectRenderer } from '../renderers/controls/selects/code-list/
|
|
|
3
3
|
import { CardGroupRenderer } from '../renderers/layout/group/card-group.renderer';
|
|
4
4
|
import { PlainGroupRenderer } from '../renderers/layout/group/plain-group.renderer';
|
|
5
5
|
import { LogicalGroupRenderer } from '../renderers/layout/group/logical-group.renderer';
|
|
6
|
+
import { ModuleToggleGroupRenderer } from '../renderers/layout/group/module-toggle-group.renderer';
|
|
6
7
|
import { RankedTester } from '@jsonforms/core';
|
|
7
8
|
import { ConstraintLayoutRenderer } from '../renderers/layout/constraint/constraint-layout.renderer';
|
|
8
9
|
import { SelectedCategoryCategorizationRenderer } from '../renderers/layout/categorization/selected-category-categorization.renderer';
|
|
10
|
+
import { CustomArrayLayoutRenderer } from '../renderers/layout/array/array-layout.renderer';
|
|
9
11
|
export declare const CUSTOM_JSONFORMS_RENDERERS: ({
|
|
10
12
|
tester: RankedTester;
|
|
11
13
|
renderer: typeof ConstraintLayoutRenderer;
|
|
@@ -21,10 +23,16 @@ export declare const CUSTOM_JSONFORMS_RENDERERS: ({
|
|
|
21
23
|
} | {
|
|
22
24
|
tester: RankedTester;
|
|
23
25
|
renderer: typeof LogicalGroupRenderer;
|
|
26
|
+
} | {
|
|
27
|
+
tester: RankedTester;
|
|
28
|
+
renderer: typeof ModuleToggleGroupRenderer;
|
|
24
29
|
} | {
|
|
25
30
|
tester: RankedTester;
|
|
26
31
|
renderer: typeof AnimalCategorySelectRenderer;
|
|
27
32
|
} | {
|
|
28
33
|
tester: RankedTester;
|
|
29
34
|
renderer: typeof CodeListSelectRenderer;
|
|
35
|
+
} | {
|
|
36
|
+
tester: RankedTester;
|
|
37
|
+
renderer: typeof CustomArrayLayoutRenderer;
|
|
30
38
|
})[];
|
|
@@ -10,7 +10,7 @@ interface AnimalCategoryPrifEntry {
|
|
|
10
10
|
};
|
|
11
11
|
}
|
|
12
12
|
export declare class AnimalCategorySelectRenderer extends BaseSelectControl<number> {
|
|
13
|
-
options: AnimalCategoryPrifEntry[]
|
|
13
|
+
options: import("@angular/core").InputSignal<AnimalCategoryPrifEntry[]>;
|
|
14
14
|
private readonly masterData;
|
|
15
15
|
constructor(jsonFormsService: JsonFormsAngularService);
|
|
16
16
|
getEventValue: (event: any) => any;
|
package/dist/types/app/jsonforms/renderers/controls/selects/code-list/code-list-select.renderer.d.ts
CHANGED
|
@@ -1,28 +1,34 @@
|
|
|
1
1
|
import { Signal } from '@angular/core';
|
|
2
2
|
import { JsonFormsAngularService } from '@jsonforms/angular';
|
|
3
|
-
import { RankedTester } from '@jsonforms/core';
|
|
3
|
+
import { ControlElement, RankedTester } from '@jsonforms/core';
|
|
4
4
|
import { BaseSelectControl } from '../../../../shared/base-control/base-select-control';
|
|
5
5
|
import { BaseCodeListEntry } from '../../../../shared/option-sources/code-lists';
|
|
6
|
+
export declare function replaceDataPathLeaf(path: string | null | undefined, replacement: string): string | null;
|
|
7
|
+
export declare function deriveSiblingDependencyPath(uischema: ControlElement | null | undefined, path: string | null | undefined, replacement: string): string | null;
|
|
6
8
|
export declare class CodeListSelectRenderer extends BaseSelectControl<number | string> {
|
|
7
9
|
private readonly masterData;
|
|
8
10
|
private readonly i18n;
|
|
11
|
+
private readonly naebiData;
|
|
9
12
|
private readonly formData;
|
|
10
13
|
private readonly controlScope;
|
|
11
14
|
private explicitCodeListKey;
|
|
12
15
|
private controlKey;
|
|
13
16
|
private listKey;
|
|
14
17
|
readonly options: Signal<BaseCodeListEntry[]>;
|
|
18
|
+
readonly isMultiSelect: Signal<boolean>;
|
|
15
19
|
private readonly filterConfig;
|
|
20
|
+
private readonly emptyHintKey;
|
|
16
21
|
private readonly dependsOnDataPath;
|
|
17
|
-
private readonly
|
|
22
|
+
private readonly autoDependsOnDataPath;
|
|
18
23
|
private scopePointerToDataPath;
|
|
19
|
-
private replacePointerLeaf;
|
|
20
24
|
private inferListKeyFromScope;
|
|
21
25
|
private readValueAtPath;
|
|
22
26
|
readonly filteredOptions: Signal<BaseCodeListEntry[]>;
|
|
23
27
|
constructor(jsonFormsService: JsonFormsAngularService);
|
|
24
28
|
getEventValue: (event: any) => any;
|
|
25
29
|
optionLabel(opt: BaseCodeListEntry): string;
|
|
26
|
-
|
|
30
|
+
emptyHint(): string;
|
|
31
|
+
shouldShowEmptyHint(): boolean;
|
|
32
|
+
onSelectionChange(value: number | string | Array<number | string>): void;
|
|
27
33
|
}
|
|
28
34
|
export declare const codeListSelectTester: RankedTester;
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { OnInit } from '@angular/core';
|
|
2
|
+
import { JsonFormsAbstractControl, JsonFormsAngularService } from '@jsonforms/angular';
|
|
3
|
+
import { ArrayLayoutProps, ArrayTranslations, JsonFormsState, OwnPropsOfRenderer, RankedTester, StatePropsOfArrayLayout, UISchemaElement, UISchemaTester } from '@jsonforms/core';
|
|
4
|
+
/**
|
|
5
|
+
* CustomArrayLayoutRenderer
|
|
6
|
+
* Overrides the stock JSONForms `ArrayLayoutRenderer` (rank 4 → this is rank 5) to apply
|
|
7
|
+
* the project UX pattern: centered empty-state placeholder when the array has no entries,
|
|
8
|
+
* and the full-width dashed add-button always anchored below the list.
|
|
9
|
+
*
|
|
10
|
+
* The add button label is driven by `translations.addTooltip` resolved via the JSONForms
|
|
11
|
+
* i18n pipeline — configure per-array labels there.
|
|
12
|
+
*/
|
|
13
|
+
export declare class CustomArrayLayoutRenderer extends JsonFormsAbstractControl<StatePropsOfArrayLayout> implements OnInit {
|
|
14
|
+
noData: boolean;
|
|
15
|
+
/** Indices 0..n-1 used to render per-item cards and drive sort-button disabled state. */
|
|
16
|
+
indices: number[];
|
|
17
|
+
translations: ArrayTranslations;
|
|
18
|
+
showSortButtons: boolean;
|
|
19
|
+
addItem: (path: string, value: unknown) => () => void;
|
|
20
|
+
moveItemUp: (path: string, index: number) => () => void;
|
|
21
|
+
moveItemDown: (path: string, index: number) => () => void;
|
|
22
|
+
removeItems: (path: string, toDelete: number[]) => () => void;
|
|
23
|
+
uischemas: {
|
|
24
|
+
tester: UISchemaTester;
|
|
25
|
+
uischema: UISchemaElement;
|
|
26
|
+
}[];
|
|
27
|
+
constructor(jsonFormsService: JsonFormsAngularService);
|
|
28
|
+
get emptyText(): string;
|
|
29
|
+
get addLabel(): string;
|
|
30
|
+
mapToProps(state: JsonFormsState): StatePropsOfArrayLayout & {
|
|
31
|
+
translations: ArrayTranslations;
|
|
32
|
+
};
|
|
33
|
+
mapAdditionalProps(props: ArrayLayoutProps & {
|
|
34
|
+
translations: ArrayTranslations;
|
|
35
|
+
}): void;
|
|
36
|
+
remove(index: number): void;
|
|
37
|
+
add(): void;
|
|
38
|
+
up(index: number): void;
|
|
39
|
+
down(index: number): void;
|
|
40
|
+
ngOnInit(): void;
|
|
41
|
+
getProps(index: number): OwnPropsOfRenderer;
|
|
42
|
+
}
|
|
43
|
+
export declare const customArrayLayoutRendererTester: RankedTester;
|
|
@@ -19,12 +19,15 @@ export declare class SelectedCategoryCategorizationRenderer extends JsonFormsBas
|
|
|
19
19
|
categoryLabels: string[];
|
|
20
20
|
private readonly categoryKeyToIndex;
|
|
21
21
|
private readonly indexToCategoryKey;
|
|
22
|
+
private _prevCategorySignature;
|
|
22
23
|
readonly selectedTabIndex: import("@angular/core").Signal<number>;
|
|
23
24
|
ngOnInit(): void;
|
|
24
25
|
/**
|
|
25
26
|
* Build bidirectional category key ↔ tab index mapping from UI schema.
|
|
26
27
|
* Reads options.categoryKey from each visible Category element.
|
|
27
28
|
* Example: { base: 0, formOfDetention: 1, feeding: 2 }
|
|
29
|
+
* Skips signal writes when the tab structure hasn't changed (pure data changes
|
|
30
|
+
* fire $state on every keystroke; no need to mark selectedTabIndex stale each time).
|
|
28
31
|
*/
|
|
29
32
|
private buildCategoryMappings;
|
|
30
33
|
onTabChange(newIndex: number): void;
|
|
@@ -21,6 +21,8 @@ export declare class BaseGroupRenderer extends JsonFormsBaseRenderer<GroupLayout
|
|
|
21
21
|
registryRenderers(): JsonFormsRendererRegistryEntry[];
|
|
22
22
|
registryCells(): JsonFormsCellRendererRegistryEntry[] | undefined;
|
|
23
23
|
private subscription;
|
|
24
|
+
private _destroyed;
|
|
25
|
+
private _prevSig?;
|
|
24
26
|
ngOnInit(): void;
|
|
25
27
|
ngOnDestroy(): void;
|
|
26
28
|
protected resolveHost(): ViewContainerRef | undefined;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { OnDestroy, OnInit } from '@angular/core';
|
|
2
|
+
import { JsonFormsBaseRenderer } from '@jsonforms/angular';
|
|
3
|
+
import { GroupLayout, RankedTester } from '@jsonforms/core';
|
|
4
|
+
interface ModuleCard {
|
|
5
|
+
path: string;
|
|
6
|
+
value: boolean;
|
|
7
|
+
label: string;
|
|
8
|
+
description?: string;
|
|
9
|
+
}
|
|
10
|
+
export declare const moduleToggleGroupTester: RankedTester;
|
|
11
|
+
/**
|
|
12
|
+
* Layout renderer for `{ type: 'Group', options: { variant: 'module-toggle' } }`.
|
|
13
|
+
*
|
|
14
|
+
* Renders boolean control children as interactive card-toggles in a horizontal
|
|
15
|
+
* row. Label and description are read from the (already-localised) schema that
|
|
16
|
+
* JSONForms passes into the renderer, so no extra i18n wiring is needed here.
|
|
17
|
+
*/
|
|
18
|
+
export declare class ModuleToggleGroupRenderer extends JsonFormsBaseRenderer<GroupLayout> implements OnInit, OnDestroy {
|
|
19
|
+
private readonly service;
|
|
20
|
+
private readonly cdr;
|
|
21
|
+
private subscription?;
|
|
22
|
+
protected readonly _hidden: import("@angular/core").WritableSignal<boolean>;
|
|
23
|
+
protected readonly _enabled: import("@angular/core").WritableSignal<boolean>;
|
|
24
|
+
protected readonly _label: import("@angular/core").WritableSignal<string | undefined>;
|
|
25
|
+
protected readonly _description: import("@angular/core").WritableSignal<string | undefined>;
|
|
26
|
+
protected readonly _modules: import("@angular/core").WritableSignal<ModuleCard[]>;
|
|
27
|
+
readonly labelId: string;
|
|
28
|
+
hidden: () => boolean;
|
|
29
|
+
enabled: () => boolean;
|
|
30
|
+
label: () => string | undefined;
|
|
31
|
+
description: () => string | undefined;
|
|
32
|
+
modules: () => ModuleCard[];
|
|
33
|
+
ngOnInit(): void;
|
|
34
|
+
ngOnDestroy(): void;
|
|
35
|
+
/** Flip a single module boolean in the JSONForms data store. No-op while the group is disabled. */
|
|
36
|
+
toggle(dataPath: string): void;
|
|
37
|
+
}
|
|
38
|
+
export {};
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { JsonSchema, UISchemaElement } from '@jsonforms/core';
|
|
2
|
+
import { AnimalStockRow } from '../animal-stock.types';
|
|
3
|
+
import { ErrorObject } from 'ajv';
|
|
4
|
+
export declare class AnimalStockDetailComponent {
|
|
5
|
+
private readonly i18n;
|
|
6
|
+
row: import("@angular/core").InputSignal<AnimalStockRow | null>;
|
|
7
|
+
index: import("@angular/core").InputSignal<number | null>;
|
|
8
|
+
rowChange: import("@angular/core").OutputEmitterRef<AnimalStockRow>;
|
|
9
|
+
close: import("@angular/core").OutputEmitterRef<void>;
|
|
10
|
+
itemSchema: import("@angular/core").Signal<JsonSchema>;
|
|
11
|
+
private readonly baseUi;
|
|
12
|
+
localizedUi: import("@angular/core").Signal<UISchemaElement>;
|
|
13
|
+
jsonFormsData: import("@angular/core").Signal<(AnimalStockRow & import("../../../core/schemas/ui-helper-registry").UiHelperDefinitions) | null>;
|
|
14
|
+
readonly renderers: {
|
|
15
|
+
tester: import("@jsonforms/core").RankedTester;
|
|
16
|
+
renderer: any;
|
|
17
|
+
}[];
|
|
18
|
+
readonly suibiAjv: import("ajv").Ajv;
|
|
19
|
+
onDataChange(newData: any): void;
|
|
20
|
+
onValidationErrors(_errors: ErrorObject[] | null | undefined): void;
|
|
21
|
+
}
|
|
@@ -1,15 +1,12 @@
|
|
|
1
|
-
import { EventEmitter, Signal } from '@angular/core';
|
|
2
|
-
import { MatTable } from '@angular/material/table';
|
|
3
1
|
import { CdkDragDrop } from '@angular/cdk/drag-drop';
|
|
4
|
-
import { AnimalStockRow } from '
|
|
2
|
+
import { AnimalStockRow } from '../animal-stock.types';
|
|
5
3
|
export declare class AnimalStockListComponent {
|
|
6
4
|
private readonly masterData;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
reorder: EventEmitter<{
|
|
5
|
+
rows: import("@angular/core").InputSignal<AnimalStockRow[]>;
|
|
6
|
+
select: import("@angular/core").OutputEmitterRef<number>;
|
|
7
|
+
add: import("@angular/core").OutputEmitterRef<void>;
|
|
8
|
+
delete: import("@angular/core").OutputEmitterRef<number>;
|
|
9
|
+
reorder: import("@angular/core").OutputEmitterRef<{
|
|
13
10
|
previousIndex: number;
|
|
14
11
|
currentIndex: number;
|
|
15
12
|
}>;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
|
-
import { AnimalStockRow } from '
|
|
2
|
-
import { LifetimePerformance } from '
|
|
1
|
+
import { AnimalStockRow } from '../animal-stock.types';
|
|
2
|
+
import { LifetimePerformance } from '../../lifetime-performance/lifetime-performance.types';
|
|
3
3
|
export declare class AnimalStockMasterDetailComponent {
|
|
4
4
|
private readonly dataSvc;
|
|
5
5
|
private readonly navigationSvc;
|
|
6
|
-
private readonly rootData;
|
|
7
6
|
constructor();
|
|
8
7
|
readonly rows: import("@angular/core").Signal<AnimalStockRow[]>;
|
|
9
8
|
readonly lifetimePerformance: import("@angular/core").Signal<LifetimePerformance | null>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './animal-stock-list.component';
|
|
2
|
-
export * from './animal-stock-detail.component';
|
|
3
|
-
export * from './animal-stock-master-detail.component';
|
|
1
|
+
export * from './animal-stock-list/animal-stock-list.component';
|
|
2
|
+
export * from './animal-stock-detail/animal-stock-detail.component';
|
|
3
|
+
export * from './animal-stock-master-detail/animal-stock-master-detail.component';
|
|
4
4
|
export * from './animal-stock.types';
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { JsonSchema, UISchemaElement } from '@jsonforms/core';
|
|
2
|
+
import { FarmManureTradingSupply, FarmManureTradingDispense } from '../farm-manure-trading.types';
|
|
3
|
+
type Mode = 'supply' | 'dispense';
|
|
4
|
+
type TradingRow = FarmManureTradingSupply | FarmManureTradingDispense;
|
|
5
|
+
export declare class FarmManureTradingDetailComponent {
|
|
6
|
+
private readonly i18n;
|
|
7
|
+
row: import("@angular/core").InputSignal<TradingRow | null>;
|
|
8
|
+
index: import("@angular/core").InputSignal<number | null>;
|
|
9
|
+
mode: import("@angular/core").InputSignal<Mode>;
|
|
10
|
+
rowChange: import("@angular/core").OutputEmitterRef<TradingRow>;
|
|
11
|
+
close: import("@angular/core").OutputEmitterRef<void>;
|
|
12
|
+
readonly renderers: {
|
|
13
|
+
tester: import("@jsonforms/core").RankedTester;
|
|
14
|
+
renderer: any;
|
|
15
|
+
}[];
|
|
16
|
+
readonly suibiAjv: import("ajv").Ajv;
|
|
17
|
+
private readonly baseSchemas;
|
|
18
|
+
private readonly baseUis;
|
|
19
|
+
itemSchema: import("@angular/core").Signal<JsonSchema>;
|
|
20
|
+
localizedUi: import("@angular/core").Signal<UISchemaElement>;
|
|
21
|
+
detailTitle: import("@angular/core").Signal<string>;
|
|
22
|
+
jsonFormsData: import("@angular/core").Signal<(FarmManureTradingSupply & import("../../../core/schemas/ui-helper-registry").UiHelperDefinitions) | null>;
|
|
23
|
+
onDataChange(event: any): void;
|
|
24
|
+
private applyDerivedFields;
|
|
25
|
+
}
|
|
26
|
+
export {};
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import { FarmManureTradingMode } from '../../core/navigation/navigation.service';
|
|
1
|
+
import { FarmManureTradingSupply, FarmManureTradingDispense } from '../farm-manure-trading.types';
|
|
2
|
+
import { FarmManureTradingMode } from '../../../core/navigation/navigation.service';
|
|
4
3
|
export type TradingMode = FarmManureTradingMode;
|
|
5
4
|
type TradingRow = FarmManureTradingSupply | FarmManureTradingDispense;
|
|
6
5
|
export declare class FarmManureTradingListComponent {
|
|
7
6
|
private readonly masterData;
|
|
8
7
|
private readonly i18n;
|
|
9
|
-
rows:
|
|
10
|
-
selectedIndex:
|
|
11
|
-
mode:
|
|
12
|
-
select:
|
|
13
|
-
add:
|
|
14
|
-
delete:
|
|
8
|
+
rows: import("@angular/core").InputSignal<TradingRow[]>;
|
|
9
|
+
selectedIndex: import("@angular/core").InputSignal<number | null>;
|
|
10
|
+
mode: import("@angular/core").InputSignal<FarmManureTradingMode>;
|
|
11
|
+
select: import("@angular/core").OutputEmitterRef<number>;
|
|
12
|
+
add: import("@angular/core").OutputEmitterRef<void>;
|
|
13
|
+
delete: import("@angular/core").OutputEmitterRef<number>;
|
|
15
14
|
readonly displayedColumns: string[];
|
|
16
15
|
resolveProduct(code: string | null | undefined): string;
|
|
17
16
|
emptyLabel(): string;
|
|
17
|
+
emptyHintLabel(): string;
|
|
18
18
|
addLabel(): string;
|
|
19
19
|
headerLabel(): string;
|
|
20
20
|
onDelete(index: number, event: Event): void;
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { TradingMode } from '
|
|
2
|
-
import { FarmManureTradingSupply, FarmManureTradingDispense } from '
|
|
1
|
+
import { TradingMode } from '../farm-manure-trading-list/farm-manure-trading-list.component';
|
|
2
|
+
import { FarmManureTradingSupply, FarmManureTradingDispense } from '../farm-manure-trading.types';
|
|
3
3
|
export declare class FarmManureTradingMasterDetailComponent {
|
|
4
4
|
private readonly dataSvc;
|
|
5
5
|
private readonly navigationSvc;
|
|
6
|
-
private readonly rootData;
|
|
7
6
|
constructor();
|
|
8
7
|
readonly supplyRows: import("@angular/core").Signal<FarmManureTradingSupply[]>;
|
|
9
8
|
readonly dispenseRows: import("@angular/core").Signal<FarmManureTradingDispense[]>;
|
|
10
|
-
readonly activeTab: import("@angular/core").WritableSignal<import("
|
|
9
|
+
readonly activeTab: import("@angular/core").WritableSignal<import("../../../core/navigation/navigation.service").FarmManureTradingMode>;
|
|
11
10
|
readonly selectedSupplyIndex: import("@angular/core").WritableSignal<number | null>;
|
|
12
11
|
readonly selectedDispenseIndex: import("@angular/core").WritableSignal<number | null>;
|
|
13
12
|
readonly currentDetail: import("@angular/core").Signal<FarmManureTradingSupply | null>;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export * from './farm-manure-trading-list.component';
|
|
2
|
-
export * from './farm-manure-trading-detail.component';
|
|
3
|
-
export * from './farm-manure-trading-master-detail.component';
|
|
1
|
+
export * from './farm-manure-trading-list/farm-manure-trading-list.component';
|
|
2
|
+
export * from './farm-manure-trading-detail/farm-manure-trading-detail.component';
|
|
3
|
+
export * from './farm-manure-trading-master-detail/farm-manure-trading-master-detail.component';
|
|
4
4
|
export * from './farm-manure-trading.types';
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { FieldCultivationArableLand } from '../field-cultivation.types';
|
|
2
|
+
/**
|
|
3
|
+
* ArableLandTableComponent — thin wrapper around InlineTableComponent for the
|
|
4
|
+
* "Grandes cultures" tab: arable-land entries are edited directly in the table
|
|
5
|
+
* (no detail pane). The config provides the columns; the rowTransform clears the
|
|
6
|
+
* yield-related fields when the newly selected crop does not permit yield input.
|
|
7
|
+
*/
|
|
8
|
+
export declare class ArableLandTableComponent {
|
|
9
|
+
readonly entries: import("@angular/core").InputSignal<FieldCultivationArableLand[]>;
|
|
10
|
+
readonly entriesChange: import("@angular/core").OutputEmitterRef<FieldCultivationArableLand[]>;
|
|
11
|
+
/** Column/section config (constant — no signal needed). */
|
|
12
|
+
protected readonly config: import("../../../components/inline-table/inline-table.types").InlineTableConfig;
|
|
13
|
+
/** Cast typed entries to the generic Record[] expected by InlineTableComponent. */
|
|
14
|
+
readonly rowsForTable: import("@angular/core").Signal<Record<string, unknown>[]>;
|
|
15
|
+
onRowsChange(rows: Record<string, unknown>[]): void;
|
|
16
|
+
/**
|
|
17
|
+
* Crop change: clear yield + divergence when the new crop forbids yield input,
|
|
18
|
+
* so no stale values linger under the now-disabled cells.
|
|
19
|
+
*/
|
|
20
|
+
readonly enforceArableRules: (changedKey: string, newValue: unknown, row: Record<string, unknown>) => Record<string, unknown>;
|
|
21
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column and section configuration for the arable-land inline table ("Grandes cultures").
|
|
3
|
+
*
|
|
4
|
+
* Replaces the former list + JSONForms detail pane for arable land: the main entry
|
|
5
|
+
* fields are edited directly in the table. The crop dropdown reuses the
|
|
6
|
+
* `agronomicCropCategoryArableLand` code list as-is, keeping its existing order.
|
|
7
|
+
*/
|
|
8
|
+
import type { InlineTableConfig } from '../../../components/inline-table/inline-table.types';
|
|
9
|
+
export declare const ARABLE_LAND_TABLE_CONFIG: InlineTableConfig;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { FieldCultivationCropHarvest } from '../field-cultivation.types';
|
|
2
|
+
import { CropHarvestTableKind } from './crop-harvest-table.config';
|
|
3
|
+
/**
|
|
4
|
+
* CropHarvestTableComponent — thin wrapper around InlineTableComponent for one of the
|
|
5
|
+
* two crop-harvest tables of the "Général" tab (fed / dispensed).
|
|
6
|
+
*
|
|
7
|
+
* Rows without a selected crop (freshly added) exist only in the local `uiRows`
|
|
8
|
+
* state and are emitted upstream once a crop is picked, so no empty rows ever
|
|
9
|
+
* reach the data store (fodder `uiRows` pattern).
|
|
10
|
+
*/
|
|
11
|
+
export declare class CropHarvestTableComponent {
|
|
12
|
+
readonly entries: import("@angular/core").InputSignal<FieldCultivationCropHarvest[]>;
|
|
13
|
+
readonly kind: import("@angular/core").InputSignal<CropHarvestTableKind>;
|
|
14
|
+
readonly entriesChange: import("@angular/core").OutputEmitterRef<FieldCultivationCropHarvest[]>;
|
|
15
|
+
readonly config: import("@angular/core").Signal<import("../../../components/inline-table/inline-table.types").InlineTableConfig>;
|
|
16
|
+
/** Rows as last edited locally (may contain not-yet-committed empty rows); null = follow data. */
|
|
17
|
+
private readonly uiRows;
|
|
18
|
+
readonly rowsForTable: import("@angular/core").Signal<Record<string, unknown>[]>;
|
|
19
|
+
constructor();
|
|
20
|
+
onRowsChange(rows: Record<string, unknown>[]): void;
|
|
21
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column and section configuration for the two crop-harvest inline tables of the
|
|
3
|
+
* "Général" tab (fed crop harvest / dispensed crop harvest).
|
|
4
|
+
*
|
|
5
|
+
* Both tables share the same columns — the same three fields the JSONForms array
|
|
6
|
+
* detail exposed before (crop, plant name, effective yield) — and differ only by
|
|
7
|
+
* their labels. The crop dropdown reuses the full `agronomicCropCategory` code
|
|
8
|
+
* list, exactly like the former JSONForms control.
|
|
9
|
+
*/
|
|
10
|
+
import type { InlineTableConfig } from '../../../components/inline-table/inline-table.types';
|
|
11
|
+
export type CropHarvestTableKind = 'feeding' | 'dispense';
|
|
12
|
+
export declare const FEEDING_TABLE_CONFIG: InlineTableConfig;
|
|
13
|
+
export declare const DISPENSE_TABLE_CONFIG: InlineTableConfig;
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { JsonSchema, UISchemaElement } from '@jsonforms/core';
|
|
2
|
+
import { FieldCultivationDetailEntry, FieldCultivationDetailMode } from '../field-cultivation.types';
|
|
3
|
+
export declare class FieldCultivationDetailComponent {
|
|
4
|
+
private readonly i18n;
|
|
5
|
+
readonly row: import("@angular/core").InputSignal<FieldCultivationDetailEntry | null>;
|
|
6
|
+
readonly index: import("@angular/core").InputSignal<number | null>;
|
|
7
|
+
readonly mode: import("@angular/core").InputSignal<FieldCultivationDetailMode>;
|
|
8
|
+
readonly rowChange: import("@angular/core").OutputEmitterRef<FieldCultivationDetailEntry>;
|
|
9
|
+
readonly close: import("@angular/core").OutputEmitterRef<void>;
|
|
10
|
+
readonly renderers: {
|
|
11
|
+
tester: import("@jsonforms/core").RankedTester;
|
|
12
|
+
renderer: any;
|
|
13
|
+
}[];
|
|
14
|
+
readonly suibiAjv: import("ajv").Ajv;
|
|
15
|
+
private readonly baseSchemas;
|
|
16
|
+
private readonly baseUis;
|
|
17
|
+
readonly itemSchema: import("@angular/core").Signal<JsonSchema>;
|
|
18
|
+
readonly localizedUi: import("@angular/core").Signal<UISchemaElement>;
|
|
19
|
+
readonly detailTitle: import("@angular/core").Signal<string>;
|
|
20
|
+
readonly jsonFormsData: import("@angular/core").Signal<(import("..").FieldCultivationSpecial & import("../../../core/schemas/ui-helper-registry").UiHelperDefinitions) | null>;
|
|
21
|
+
onDataChange(event: unknown): void;
|
|
22
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { JsonSchema } from '@jsonforms/core';
|
|
2
|
+
import { FieldCultivationData } from '../field-cultivation.types';
|
|
3
|
+
export declare class FieldCultivationGeneralComponent {
|
|
4
|
+
private readonly i18n;
|
|
5
|
+
readonly value: import("@angular/core").InputSignal<FieldCultivationData>;
|
|
6
|
+
readonly valueChange: import("@angular/core").OutputEmitterRef<FieldCultivationData>;
|
|
7
|
+
readonly renderers: {
|
|
8
|
+
tester: import("@jsonforms/core").RankedTester;
|
|
9
|
+
renderer: any;
|
|
10
|
+
}[];
|
|
11
|
+
readonly ajv: import("ajv").Ajv;
|
|
12
|
+
readonly schema: import("@angular/core").Signal<JsonSchema>;
|
|
13
|
+
readonly localizedUi: import("@angular/core").Signal<import("@jsonforms/core").UISchemaElement>;
|
|
14
|
+
readonly jsonFormsData: import("@angular/core").Signal<({
|
|
15
|
+
buildingZoneAreaSize: number | null | undefined;
|
|
16
|
+
outdoorVegetableMainCropAreaSize: number | null | undefined;
|
|
17
|
+
indoorVegetableMainCropAreaSize: number | null | undefined;
|
|
18
|
+
} & import("../../../core/schemas/ui-helper-registry").UiHelperDefinitions) | null>;
|
|
19
|
+
onDataChange(event: unknown): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { FieldCultivationDetailEntry, FieldCultivationDetailMode } from '../field-cultivation.types';
|
|
2
|
+
export declare class FieldCultivationListComponent {
|
|
3
|
+
private readonly masterData;
|
|
4
|
+
private readonly i18n;
|
|
5
|
+
readonly rows: import("@angular/core").InputSignal<FieldCultivationDetailEntry[]>;
|
|
6
|
+
readonly selectedIndex: import("@angular/core").InputSignal<number | null>;
|
|
7
|
+
readonly mode: import("@angular/core").InputSignal<FieldCultivationDetailMode>;
|
|
8
|
+
readonly select: import("@angular/core").OutputEmitterRef<number>;
|
|
9
|
+
readonly add: import("@angular/core").OutputEmitterRef<void>;
|
|
10
|
+
readonly delete: import("@angular/core").OutputEmitterRef<number>;
|
|
11
|
+
readonly displayedColumns: string[];
|
|
12
|
+
resolveCrop(code: string | null | undefined): string;
|
|
13
|
+
emptyLabel(): string;
|
|
14
|
+
emptyHintLabel(): string;
|
|
15
|
+
addLabel(): string;
|
|
16
|
+
onDelete(index: number, event: Event): void;
|
|
17
|
+
}
|