@agridea/suibi-module 0.1.0-preview.cf0616d → 0.1.0-preview.f010f7a
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 +71 -71
- package/dist/elements/browser/suibi-module-latest.js +71 -71
- package/dist/elements/browser/suibi-module.v0.1.0-preview.f010f7a.js +78 -0
- package/dist/elements/browser/suibi-theme-dark.css +1 -1
- package/dist/elements/browser/version.txt +1 -1
- package/dist/types/app/components/data-preview/data-preview.component.d.ts +1 -2
- package/dist/types/app/components/{suissebilanz-dashboard → gauge-arc}/gauge-arc.component.d.ts +2 -0
- package/dist/types/app/{header-bar.d.ts → components/header-bar/header-bar.component.d.ts} +2 -2
- package/dist/types/app/components/inline-table/inline-table.component.d.ts +100 -0
- package/dist/types/app/components/inline-table/inline-table.types.d.ts +127 -0
- package/dist/types/app/components/planning-result-row/planning-result-row.component.d.ts +34 -0
- package/dist/types/app/components/results-page/results-page.component.d.ts +9 -0
- package/dist/types/app/components/suissebilanz-dashboard/suissebilanz-dashboard.component.d.ts +8 -2
- package/dist/types/app/components/suissebilanz-dashboard/suissebilanz-metrics.service.d.ts +1 -1
- package/dist/types/app/components/{suissebilanz-dashboard → suissebilanz-minibar}/suissebilanz-minibar.component.d.ts +2 -2
- package/dist/types/app/components/validation-page/validation-page.component.d.ts +1 -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 +1 -4
- package/dist/types/app/core/data/naebi-data.service.d.ts +28 -28
- package/dist/types/app/core/error/global-error-handler.d.ts +2 -3
- package/dist/types/app/core/i18n/i18n.service.d.ts +4 -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 +2 -0
- package/dist/types/app/core/metadata/suibi-metadata.types.d.ts +11 -1
- package/dist/types/app/core/navigation/navigation.service.d.ts +27 -1
- package/dist/types/app/core/validation/global-validation.service.d.ts +19 -1
- package/dist/types/app/jsonforms/filters/code-list-filter-resolvers.d.ts +3 -0
- package/dist/types/app/jsonforms/registry/renderers.registry.d.ts +4 -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/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 +36 -0
- package/dist/types/app/nutrient-cycle/animal-stock/animal-stock-detail.component.d.ts +7 -8
- package/dist/types/app/nutrient-cycle/animal-stock/animal-stock-list.component.d.ts +5 -8
- package/dist/types/app/nutrient-cycle/farm-manure-trading/farm-manure-trading-detail.component.d.ts +8 -9
- package/dist/types/app/nutrient-cycle/farm-manure-trading/farm-manure-trading-list.component.d.ts +6 -7
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation-detail.component.d.ts +22 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation-general.component.d.ts +22 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation-list.component.d.ts +17 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation-master-detail.component.d.ts +37 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation.types.d.ts +40 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/field-cultivation.util.d.ts +6 -0
- package/dist/types/app/nutrient-cycle/field-cultivation/index.d.ts +4 -0
- package/dist/types/app/nutrient-cycle/field-spreading/fertiliser-table/fertiliser-table.component.d.ts +38 -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 -3
- package/dist/types/app/nutrient-cycle/field-spreading/recycling-table/recycling-table.component.d.ts +22 -0
- package/dist/types/app/nutrient-cycle/field-spreading/recycling-table/recycling-table.config.d.ts +16 -0
- package/dist/types/app/nutrient-cycle/fodder/fodder-detail.component.d.ts +31 -0
- package/dist/types/app/nutrient-cycle/fodder/fodder-list.component.d.ts +20 -0
- package/dist/types/app/nutrient-cycle/fodder/fodder-master-detail.component.d.ts +37 -0
- package/dist/types/app/nutrient-cycle/fodder/fodder.types.d.ts +27 -0
- package/dist/types/app/nutrient-cycle/fodder/index.d.ts +4 -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/storage/index.d.ts +4 -0
- package/dist/types/app/nutrient-cycle/storage/storage-detail.component.d.ts +30 -0
- package/dist/types/app/nutrient-cycle/storage/storage-general.component.d.ts +29 -0
- package/dist/types/app/nutrient-cycle/storage/storage-list.component.d.ts +20 -0
- package/dist/types/app/nutrient-cycle/storage/storage-master-detail.component.d.ts +29 -0
- package/dist/types/app/nutrient-cycle/storage/storage.types.d.ts +40 -0
- package/package.json +68 -17
- package/dist/elements/browser/suibi-module.v0.1.0-preview.cf0616d.js +0 -78
- /package/dist/elements/browser/{suibi-module.v0.1.0-preview.cf0616d.css → suibi-module.v0.1.0-preview.f010f7a.css} +0 -0
- /package/dist/types/app/components/{planning-result → planning-trigger}/planning-trigger.component.d.ts +0 -0
- /package/dist/types/app/{core/validation/validation-errors-panel.d.ts → components/validation-errors-panel/validation-errors-panel.component.d.ts} +0 -0
package/dist/types/app/nutrient-cycle/field-spreading/recycling-table/recycling-table.config.d.ts
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Column and section configuration for the Recycling Fertiliser inline table.
|
|
3
|
+
*
|
|
4
|
+
* This is the "uischema" for the Recycling fertilisers tab.
|
|
5
|
+
* The structure mirrors fertiliser-table.config.ts — only the columns differ:
|
|
6
|
+
* - Product field: typeOfManureRecyclingProduct (different code list)
|
|
7
|
+
* - Nutrient columns: Ntot, NSol, P₂O₅, K₂O, Mg expressed in kg/unit (not %)
|
|
8
|
+
* — 5 nutrients vs 4 for mineral fertilisers, no auto-population on product select.
|
|
9
|
+
*
|
|
10
|
+
* To adapt again for a new domain, copy this file and adjust columns + i18n keys.
|
|
11
|
+
*/
|
|
12
|
+
import type { InlineTableConfig } from '../../../components/inline-table/inline-table.types';
|
|
13
|
+
/** Nutrient formulas tracked per recycling entry, in display order. */
|
|
14
|
+
export declare const RECYCLING_NUTRIENT_COLUMNS: readonly ["Ntot", "NSol", "P2O5", "K2O", "Mg"];
|
|
15
|
+
export type RecyclingNutrientFormula = (typeof RECYCLING_NUTRIENT_COLUMNS)[number];
|
|
16
|
+
export declare const RECYCLING_TABLE_CONFIG: InlineTableConfig;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { JsonSchema, UISchemaElement } from '@jsonforms/core';
|
|
2
|
+
import { FodderMode } from '../../core/navigation/navigation.service';
|
|
3
|
+
import { FodderCropFromNonFodderCropland, FodderDispense, FodderSupply } from './fodder.types';
|
|
4
|
+
type FodderRow = FodderSupply | FodderDispense | FodderCropFromNonFodderCropland;
|
|
5
|
+
export declare class FodderDetailComponent {
|
|
6
|
+
private readonly i18n;
|
|
7
|
+
row: import("@angular/core").InputSignal<FodderRow | null>;
|
|
8
|
+
index: import("@angular/core").InputSignal<number | null>;
|
|
9
|
+
mode: import("@angular/core").InputSignal<FodderMode>;
|
|
10
|
+
rowChange: import("@angular/core").OutputEmitterRef<FodderRow>;
|
|
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
|
+
readonly itemSchema: import("@angular/core").Signal<JsonSchema>;
|
|
20
|
+
readonly localizedUi: import("@angular/core").Signal<UISchemaElement>;
|
|
21
|
+
readonly detailTitle: import("@angular/core").Signal<string>;
|
|
22
|
+
readonly jsonFormsData: import("@angular/core").Signal<({
|
|
23
|
+
quantity?: number;
|
|
24
|
+
typeOfFeedstuffProduct?: string;
|
|
25
|
+
transactionUnit?: string;
|
|
26
|
+
ingredient?: import("./fodder.types").FodderIngredient[];
|
|
27
|
+
} & import("../../core/schemas/ui-helper-registry").UiHelperDefinitions) | null>;
|
|
28
|
+
onDataChange(event: unknown): void;
|
|
29
|
+
private applyDerivedFields;
|
|
30
|
+
}
|
|
31
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FodderCropFromNonFodderCropland, FodderDispense, FodderSupply } from './fodder.types';
|
|
2
|
+
import { FodderMode } from '../../core/navigation/navigation.service';
|
|
3
|
+
type FodderRow = FodderSupply | FodderDispense | FodderCropFromNonFodderCropland;
|
|
4
|
+
export declare class FodderListComponent {
|
|
5
|
+
private readonly masterData;
|
|
6
|
+
private readonly i18n;
|
|
7
|
+
rows: import("@angular/core").InputSignal<FodderRow[]>;
|
|
8
|
+
selectedIndex: import("@angular/core").InputSignal<number | null>;
|
|
9
|
+
mode: import("@angular/core").InputSignal<FodderMode>;
|
|
10
|
+
select: import("@angular/core").OutputEmitterRef<number>;
|
|
11
|
+
add: import("@angular/core").OutputEmitterRef<void>;
|
|
12
|
+
delete: import("@angular/core").OutputEmitterRef<number>;
|
|
13
|
+
readonly displayedColumns: string[];
|
|
14
|
+
resolveProduct(code: string | null | undefined): string;
|
|
15
|
+
emptyLabel(): string;
|
|
16
|
+
emptyHintLabel(): string;
|
|
17
|
+
addLabel(): string;
|
|
18
|
+
onDelete(index: number, event: Event): void;
|
|
19
|
+
}
|
|
20
|
+
export {};
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { FodderMode } from '../../core/navigation/navigation.service';
|
|
2
|
+
import { FodderCropFromNonFodderCropland, FodderDispense, FodderSupply } from './fodder.types';
|
|
3
|
+
type FodderRow = FodderSupply | FodderDispense | FodderCropFromNonFodderCropland;
|
|
4
|
+
export declare class FodderMasterDetailComponent {
|
|
5
|
+
private readonly dataSvc;
|
|
6
|
+
private readonly navigationSvc;
|
|
7
|
+
constructor();
|
|
8
|
+
readonly supplyRows: import("@angular/core").Signal<FodderSupply[]>;
|
|
9
|
+
readonly dispenseRows: import("@angular/core").Signal<FodderDispense[]>;
|
|
10
|
+
readonly nonFodderCroplandRows: import("@angular/core").Signal<FodderCropFromNonFodderCropland[]>;
|
|
11
|
+
readonly proportionStorageLoss: import("@angular/core").Signal<number | undefined>;
|
|
12
|
+
readonly totalBalanceErrorMargin: import("@angular/core").Signal<number | undefined>;
|
|
13
|
+
readonly activeTab: import("@angular/core").WritableSignal<FodderMode>;
|
|
14
|
+
readonly selectedSupplyIndex: import("@angular/core").WritableSignal<number | null>;
|
|
15
|
+
readonly selectedDispenseIndex: import("@angular/core").WritableSignal<number | null>;
|
|
16
|
+
readonly selectedNonFodderCroplandIndex: import("@angular/core").WritableSignal<number | null>;
|
|
17
|
+
readonly currentDetail: import("@angular/core").Signal<FodderRow | null>;
|
|
18
|
+
readonly currentIndex: import("@angular/core").Signal<number | null>;
|
|
19
|
+
readonly detailOpen: import("@angular/core").Signal<boolean>;
|
|
20
|
+
readonly activeTabIndex: import("@angular/core").Signal<0 | 1 | 2>;
|
|
21
|
+
onTabChange(index: number): void;
|
|
22
|
+
openDetail(mode: FodderMode, index: number): void;
|
|
23
|
+
closeDetail(): void;
|
|
24
|
+
addEntry(mode: FodderMode): void;
|
|
25
|
+
deleteEntry(mode: FodderMode, index: number): void;
|
|
26
|
+
onDetailChange(payload: FodderRow): void;
|
|
27
|
+
onScalarInput(field: 'proportionStorageLoss' | 'totalBalanceErrorMargin', event: Event): void;
|
|
28
|
+
scalarInputValue(value: number | undefined): string;
|
|
29
|
+
private clearInvalidSelection;
|
|
30
|
+
private selectedIndexSignal;
|
|
31
|
+
private rowsForMode;
|
|
32
|
+
private createEmptyEntry;
|
|
33
|
+
private patchRows;
|
|
34
|
+
private cloneFodder;
|
|
35
|
+
private cloneTrading;
|
|
36
|
+
}
|
|
37
|
+
export {};
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
export interface FodderIngredient {
|
|
2
|
+
quantity?: number;
|
|
3
|
+
molecularFormula?: string;
|
|
4
|
+
unit?: string;
|
|
5
|
+
}
|
|
6
|
+
export interface FodderTradingEntry {
|
|
7
|
+
quantity?: number;
|
|
8
|
+
typeOfFeedstuffProduct?: string;
|
|
9
|
+
transactionUnit?: string;
|
|
10
|
+
ingredient?: FodderIngredient[];
|
|
11
|
+
}
|
|
12
|
+
export interface FodderSupply extends FodderTradingEntry {
|
|
13
|
+
}
|
|
14
|
+
export interface FodderDispense extends FodderTradingEntry {
|
|
15
|
+
}
|
|
16
|
+
export interface FodderCropFromNonFodderCropland extends FodderTradingEntry {
|
|
17
|
+
}
|
|
18
|
+
export interface FodderTradingData {
|
|
19
|
+
supply?: FodderSupply[];
|
|
20
|
+
dispense?: FodderDispense[];
|
|
21
|
+
}
|
|
22
|
+
export interface FodderData {
|
|
23
|
+
trading?: FodderTradingData;
|
|
24
|
+
cropFromNonFodderCropland?: FodderCropFromNonFodderCropland[];
|
|
25
|
+
proportionStorageLoss?: number;
|
|
26
|
+
totalBalanceErrorMargin?: number;
|
|
27
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { JsonSchema, UISchemaElement } from '@jsonforms/core';
|
|
2
|
+
import { ManurePitEntry, SlurryTankEntry, StorageEntryType } from './storage.types';
|
|
3
|
+
export declare class StorageDetailComponent {
|
|
4
|
+
private readonly i18n;
|
|
5
|
+
readonly type: import("@angular/core").InputSignal<StorageEntryType>;
|
|
6
|
+
readonly row: import("@angular/core").InputSignal<ManurePitEntry | SlurryTankEntry | null>;
|
|
7
|
+
readonly rowChange: import("@angular/core").OutputEmitterRef<ManurePitEntry | SlurryTankEntry>;
|
|
8
|
+
readonly close: import("@angular/core").OutputEmitterRef<void>;
|
|
9
|
+
readonly renderers: {
|
|
10
|
+
tester: import("@jsonforms/core").RankedTester;
|
|
11
|
+
renderer: any;
|
|
12
|
+
}[];
|
|
13
|
+
readonly ajv: import("ajv").Ajv;
|
|
14
|
+
readonly schema: import("@angular/core").Signal<JsonSchema>;
|
|
15
|
+
readonly localizedUi: import("@angular/core").Signal<UISchemaElement>;
|
|
16
|
+
readonly detailTitle: import("@angular/core").Signal<string>;
|
|
17
|
+
readonly jsonFormsData: import("@angular/core").Signal<(({
|
|
18
|
+
descriptor?: string;
|
|
19
|
+
cover?: number | null;
|
|
20
|
+
manureFromAnimalStockStored?: import("./storage.types").ManureFromAnimalStockStored[];
|
|
21
|
+
} | {
|
|
22
|
+
descriptor?: string;
|
|
23
|
+
volumeInM3?: number | null;
|
|
24
|
+
depthInM?: number | null;
|
|
25
|
+
cover?: number | null;
|
|
26
|
+
mixingFrequency?: number | null;
|
|
27
|
+
manureDerivation?: string[];
|
|
28
|
+
}) & import("../../core/schemas/ui-helper-registry").UiHelperDefinitions) | null>;
|
|
29
|
+
onDataChange(event: unknown): void;
|
|
30
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { JsonSchema, UISchemaElement } from '@jsonforms/core';
|
|
2
|
+
import { StorageNormalized } from './storage.types';
|
|
3
|
+
type StorageSection = 'manure' | 'slurry' | 'slurryFacilityToggle' | 'general';
|
|
4
|
+
export declare class StorageGeneralComponent {
|
|
5
|
+
private readonly i18n;
|
|
6
|
+
readonly section: import("@angular/core").InputSignal<StorageSection>;
|
|
7
|
+
readonly value: import("@angular/core").InputSignal<StorageNormalized>;
|
|
8
|
+
readonly valueChange: import("@angular/core").OutputEmitterRef<StorageNormalized>;
|
|
9
|
+
readonly renderers: {
|
|
10
|
+
tester: import("@jsonforms/core").RankedTester;
|
|
11
|
+
renderer: any;
|
|
12
|
+
}[];
|
|
13
|
+
readonly ajv: import("ajv").Ajv;
|
|
14
|
+
readonly schema: import("@angular/core").Signal<JsonSchema>;
|
|
15
|
+
readonly localizedUi: import("@angular/core").Signal<UISchemaElement>;
|
|
16
|
+
readonly jsonFormsData: import("@angular/core").Signal<({
|
|
17
|
+
stableStrawLitter: number | null;
|
|
18
|
+
manureSupplyProportionStored: number | null;
|
|
19
|
+
createFacilitySpecificManureProduct: boolean;
|
|
20
|
+
} & import("../../core/schemas/ui-helper-registry").UiHelperDefinitions) | ({
|
|
21
|
+
createFacilitySpecificSlurryProduct: boolean;
|
|
22
|
+
} & import("../../core/schemas/ui-helper-registry").UiHelperDefinitions) | ({
|
|
23
|
+
slurrySupplyProportionStored: number | null;
|
|
24
|
+
slurryTankQuantity: number | null;
|
|
25
|
+
dilutionRatio: number | null;
|
|
26
|
+
} & import("../../core/schemas/ui-helper-registry").UiHelperDefinitions) | null>;
|
|
27
|
+
onDataChange(event: unknown): void;
|
|
28
|
+
}
|
|
29
|
+
export {};
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { ManurePitEntry, SlurryTankEntry, StorageEntryType } from './storage.types';
|
|
2
|
+
export declare class StorageListComponent {
|
|
3
|
+
private readonly i18n;
|
|
4
|
+
private readonly masterData;
|
|
5
|
+
readonly rows: import("@angular/core").InputSignal<(ManurePitEntry | SlurryTankEntry)[]>;
|
|
6
|
+
readonly selectedIndex: import("@angular/core").InputSignal<number | null>;
|
|
7
|
+
readonly type: import("@angular/core").InputSignal<StorageEntryType>;
|
|
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
|
+
readonly headerName: import("@angular/core").Signal<string>;
|
|
13
|
+
readonly headerMeta: import("@angular/core").Signal<string>;
|
|
14
|
+
resolveName(row: ManurePitEntry | SlurryTankEntry, index: number): string;
|
|
15
|
+
resolveMeta(row: ManurePitEntry | SlurryTankEntry): string;
|
|
16
|
+
emptyLabel(): string;
|
|
17
|
+
emptyHintLabel(): string;
|
|
18
|
+
addLabel(): string;
|
|
19
|
+
onDelete(index: number, event: Event): void;
|
|
20
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { StorageTab } from '../../core/navigation/navigation.service';
|
|
2
|
+
import { ManurePitEntry, SlurryTankEntry, StorageEntryType, StorageNormalized } from './storage.types';
|
|
3
|
+
export declare class StorageMasterDetailComponent {
|
|
4
|
+
private readonly dataSvc;
|
|
5
|
+
private readonly navigationSvc;
|
|
6
|
+
constructor();
|
|
7
|
+
readonly storage: import("@angular/core").Signal<StorageNormalized>;
|
|
8
|
+
readonly manurePitRows: import("@angular/core").Signal<ManurePitEntry[]>;
|
|
9
|
+
readonly slurryTankRows: import("@angular/core").Signal<SlurryTankEntry[]>;
|
|
10
|
+
readonly selectedDetailType: import("@angular/core").WritableSignal<StorageEntryType | null>;
|
|
11
|
+
readonly selectedIndex: import("@angular/core").WritableSignal<number | null>;
|
|
12
|
+
readonly manureFacilitySpecificEnabled: import("@angular/core").Signal<boolean>;
|
|
13
|
+
readonly slurryFacilitySpecificEnabled: import("@angular/core").Signal<boolean>;
|
|
14
|
+
readonly detailOpen: import("@angular/core").Signal<boolean>;
|
|
15
|
+
readonly detailType: import("@angular/core").Signal<StorageEntryType>;
|
|
16
|
+
readonly currentDetail: import("@angular/core").Signal<ManurePitEntry | SlurryTankEntry | null>;
|
|
17
|
+
readonly activeTab: import("@angular/core").Signal<StorageTab>;
|
|
18
|
+
openDetail(type: StorageEntryType, index: number): void;
|
|
19
|
+
closeDetail(): void;
|
|
20
|
+
addEntry(type: StorageEntryType): void;
|
|
21
|
+
deleteEntry(type: StorageEntryType, index: number): void;
|
|
22
|
+
onGeneralChange(value: StorageNormalized): void;
|
|
23
|
+
onDetailChange(value: ManurePitEntry | SlurryTankEntry): void;
|
|
24
|
+
private patchRows;
|
|
25
|
+
private patchStorage;
|
|
26
|
+
private normalizeStorage;
|
|
27
|
+
private createEmptyManurePit;
|
|
28
|
+
private createEmptySlurryTank;
|
|
29
|
+
}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
export interface ManureFromAnimalStockStored {
|
|
2
|
+
manureDerivation?: string;
|
|
3
|
+
proportionStored?: number | null;
|
|
4
|
+
}
|
|
5
|
+
export interface ManurePitEntry {
|
|
6
|
+
descriptor?: string;
|
|
7
|
+
cover?: number | null;
|
|
8
|
+
manureFromAnimalStockStored?: ManureFromAnimalStockStored[];
|
|
9
|
+
}
|
|
10
|
+
export interface SlurryTankEntry {
|
|
11
|
+
descriptor?: string;
|
|
12
|
+
volumeInM3?: number | null;
|
|
13
|
+
depthInM?: number | null;
|
|
14
|
+
cover?: number | null;
|
|
15
|
+
mixingFrequency?: number | null;
|
|
16
|
+
manureDerivation?: string[];
|
|
17
|
+
}
|
|
18
|
+
export interface StorageData {
|
|
19
|
+
stableStrawLitter?: number | null;
|
|
20
|
+
manureSupplyProportionStored?: number | null;
|
|
21
|
+
slurrySupplyProportionStored?: number | null;
|
|
22
|
+
createFacilitySpecificManureProduct?: boolean;
|
|
23
|
+
createFacilitySpecificSlurryProduct?: boolean;
|
|
24
|
+
slurryTankQuantity?: number | null;
|
|
25
|
+
dilutionRatio?: number | null;
|
|
26
|
+
manurePit?: ManurePitEntry[];
|
|
27
|
+
slurryTank?: SlurryTankEntry[];
|
|
28
|
+
}
|
|
29
|
+
export interface StorageNormalized {
|
|
30
|
+
stableStrawLitter: number | null;
|
|
31
|
+
manureSupplyProportionStored: number | null;
|
|
32
|
+
slurrySupplyProportionStored: number | null;
|
|
33
|
+
createFacilitySpecificManureProduct: boolean;
|
|
34
|
+
createFacilitySpecificSlurryProduct: boolean;
|
|
35
|
+
slurryTankQuantity: number | null;
|
|
36
|
+
dilutionRatio: number | null;
|
|
37
|
+
manurePit: ManurePitEntry[];
|
|
38
|
+
slurryTank: SlurryTankEntry[];
|
|
39
|
+
}
|
|
40
|
+
export type StorageEntryType = 'manure_pit' | 'slurry_tank';
|
package/package.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@agridea/suibi-module",
|
|
3
|
-
"version": "0.1.0-preview.
|
|
3
|
+
"version": "0.1.0-preview.f010f7a",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"ng": "ng",
|
|
6
|
-
"start": "ng serve
|
|
6
|
+
"start": "ng serve",
|
|
7
7
|
"build": "ng build",
|
|
8
8
|
"watch": "ng build --watch --configuration development",
|
|
9
|
-
"test": "CHROME_BIN=${CHROME_BIN:-/usr/bin/chromium} ng test --browsers=
|
|
9
|
+
"test": "CHROME_BIN=${CHROME_BIN:-/usr/bin/chromium} ng test --browsers=ChromeHeadlessNoSandbox --watch=false",
|
|
10
10
|
"test:chrome": "CHROME_BIN=${CHROME_BIN:-/usr/bin/chromium} ng test --browsers=Chrome --watch=false",
|
|
11
|
-
"test:headless": "CHROME_BIN=${CHROME_BIN:-/usr/bin/chromium} ng test --browsers=
|
|
12
|
-
"test:ci": "CI=true CHROME_BIN=${CHROME_BIN:-/usr/bin/chromium} ng test --browsers=
|
|
11
|
+
"test:headless": "CHROME_BIN=${CHROME_BIN:-/usr/bin/chromium} ng test --browsers=ChromeHeadlessNoSandbox --watch=false --no-progress",
|
|
12
|
+
"test:ci": "CI=true CHROME_BIN=${CHROME_BIN:-/usr/bin/chromium} ng test --browsers=ChromeHeadlessNoSandbox --watch=false --no-progress",
|
|
13
13
|
"build:wc": "ng build --configuration elements && node scripts/alias-wc-bundle.mjs && npm run build:types",
|
|
14
14
|
"build:wc:dev": "ng build --configuration elements-dev",
|
|
15
15
|
"watch:wc": "bash -c 'node scripts/alias-wc-watch.mjs & ng build --configuration elements --watch'",
|
|
@@ -56,26 +56,29 @@
|
|
|
56
56
|
"access": "public"
|
|
57
57
|
},
|
|
58
58
|
"dependencies": {
|
|
59
|
-
"@angular/
|
|
60
|
-
"@angular/
|
|
61
|
-
"@angular/
|
|
62
|
-
"@angular/
|
|
63
|
-
"@angular/
|
|
64
|
-
"@angular/
|
|
65
|
-
"@angular/
|
|
66
|
-
"@angular/
|
|
67
|
-
"@angular/
|
|
59
|
+
"@angular/animations": "^20.3.17",
|
|
60
|
+
"@angular/cdk": "20.2.14",
|
|
61
|
+
"@angular/common": "^20.3.25",
|
|
62
|
+
"@angular/compiler": "^20.3.25",
|
|
63
|
+
"@angular/core": "^20.3.25",
|
|
64
|
+
"@angular/elements": "^20.3.17",
|
|
65
|
+
"@angular/forms": "^20.3.25",
|
|
66
|
+
"@angular/localize": "^20.3.26",
|
|
67
|
+
"@angular/material": "^20.2.14",
|
|
68
|
+
"@angular/platform-browser": "^20.3.17",
|
|
69
|
+
"@angular/router": "^20.3.17",
|
|
68
70
|
"@jsonforms/angular": "^3.6.0",
|
|
69
71
|
"@jsonforms/angular-material": "^3.6.0",
|
|
70
72
|
"@jsonforms/core": "^3.6.0",
|
|
71
73
|
"@microsoft/applicationinsights-web": "^3.3.10",
|
|
74
|
+
"dayjs": "^1.11.10",
|
|
72
75
|
"rxjs": "~7.8.0",
|
|
73
76
|
"tslib": "^2.3.0"
|
|
74
77
|
},
|
|
75
78
|
"devDependencies": {
|
|
76
|
-
"@angular/build": "^20.
|
|
77
|
-
"@angular/cli": "^20.
|
|
78
|
-
"@angular/compiler-cli": "^20.
|
|
79
|
+
"@angular/build": "^20.3.30",
|
|
80
|
+
"@angular/cli": "^20.3.18",
|
|
81
|
+
"@angular/compiler-cli": "^20.3.26",
|
|
79
82
|
"@types/jasmine": "~5.1.0",
|
|
80
83
|
"http-server": "^14.1.1",
|
|
81
84
|
"jasmine-core": "~5.9.0",
|
|
@@ -87,5 +90,53 @@
|
|
|
87
90
|
"ts-node": "^10.9.2",
|
|
88
91
|
"tsx": "^4.20.5",
|
|
89
92
|
"typescript": "~5.9.2"
|
|
93
|
+
},
|
|
94
|
+
"overrides": {
|
|
95
|
+
"@hono/node-server": "^2.0.5",
|
|
96
|
+
"@isaacs/brace-expansion": "^5.0.1",
|
|
97
|
+
"@modelcontextprotocol/sdk": "^1.30.0",
|
|
98
|
+
"@nevware21/ts-utils": "^0.14.0",
|
|
99
|
+
"body-parser": "^1.20.6",
|
|
100
|
+
"brace-expansion": "^2.0.1",
|
|
101
|
+
"diff": "^4.0.4",
|
|
102
|
+
"engine.io": "^6.6.8",
|
|
103
|
+
"fast-uri": "^3.1.4",
|
|
104
|
+
"flatted": "^3.4.2",
|
|
105
|
+
"follow-redirects": "^1.15.12",
|
|
106
|
+
"immutable": "^5.1.8",
|
|
107
|
+
"ip-address": "^10.1.1",
|
|
108
|
+
"lodash": "^4.18.0",
|
|
109
|
+
"path-to-regexp": "^8.4.0",
|
|
110
|
+
"postcss": "^8.5.18",
|
|
111
|
+
"qs": "^6.15.2",
|
|
112
|
+
"rollup": "4.59.0",
|
|
113
|
+
"sigstore": "^4.1.1",
|
|
114
|
+
"socket.io-adapter": "^2.5.7",
|
|
115
|
+
"socket.io-parser": "^4.2.6",
|
|
116
|
+
"tar": "^7.5.21",
|
|
117
|
+
"tmp": "^0.2.6",
|
|
118
|
+
"ws": "^8.20.2",
|
|
119
|
+
"anymatch": {
|
|
120
|
+
"picomatch": "^2.3.2"
|
|
121
|
+
},
|
|
122
|
+
"micromatch": {
|
|
123
|
+
"picomatch": "^2.3.2"
|
|
124
|
+
},
|
|
125
|
+
"karma": {
|
|
126
|
+
"minimatch": "^3.1.4",
|
|
127
|
+
"picomatch": "^2.3.2",
|
|
128
|
+
"brace-expansion": "^2.0.1"
|
|
129
|
+
},
|
|
130
|
+
"@npmcli/package-json": {
|
|
131
|
+
"brace-expansion": "^2.0.1",
|
|
132
|
+
"glob": "^10.5.0"
|
|
133
|
+
},
|
|
134
|
+
"@tufjs/models": {
|
|
135
|
+
"brace-expansion": "^2.0.1"
|
|
136
|
+
},
|
|
137
|
+
"cacache": {
|
|
138
|
+
"brace-expansion": "^2.0.1",
|
|
139
|
+
"glob": "^10.5.0"
|
|
140
|
+
}
|
|
90
141
|
}
|
|
91
142
|
}
|