UNPKG

@veeroute/lss-agro-angular

Version:

OpenAPI client for @veeroute/lss-agro-angular

186 lines (141 loc) 11.2 kB
# @veeroute/lss-agro-angular@7.33.3222 Veeroute Agro API. # Description The service is designed to calculate the work plan of production facilities. ## Objects overview ![objects](../images/agro_objects.svg) ### Field - produces a certain crop of a certain moisture content - products from the field can only be moved to the Elevator or Factory ### Elevator - consists of Gates, Dryers, short-term and long-term storage areas - dries the grain (if the moisture content of the crop is more than acceptable) - stores dry grain in short-term storage places (warehouses), while unloading and loading grain is allowed within one day - stores dry grain in long-term storage places (sleeves, trenches, mounds) - when stored in one storage, only one type of culture can be located - sells surplus grain to the Market - production processes inside the facility: drying, loading / unloading to a storage location, storage ### Factory - consists of Gates, Dryers, Bunkers, Consumers - [if drying is present] dries the grain (if the moisture content of the crop is more than allowed) - stores dry grain in Bunkers (short-term storage tied to a specific crop) - maintains a minimum supply of grain for consumption in the Bunkers - Consumes grain from Bunkers - buys the missing grain from the Market - production processes inside the facility: drying, loading / unloading to a storage location, storage, consumption ### Market - buys grain from elevators - sells grain to factories ## Project The project reflects the planned sequence of operations on agricultural crops, the types of operations are described below. ### HARVEST Crop harvesting: - between production facilities (Field and Elevator or Field) - the operation takes place within one day - on the Field there is a determination of grain moisture | | Object (target_key) | Subobject (target_detail_key) | |-------------|---------------------|-------------------------------| | Source | Field | - | | Destination | Elevator or Factory | Gate | ### DRY Drying culture: - inside the production facility (Elevator or Field) - duration of the operation - days - during the drying process, the mass and type of humidity changes (WET -> DRY) - the source indicates the mass of raw culture - in the appointment, the resulting mass of dry culture is indicated | | Object (target_key) | Subobject (target_detail_key) | |-------------|---------------------|-------------------------------| | Source | Elevator or Factory | Gate | | Destination | Elevator or Factory | Dryer | ### LOAD Loading culture from the Gate to the Storage Location (long-term, short-term, silo): - between parts of one production facility (Elevator or Field) - the operation takes place within one day | | Object (target_key) | Subobject (target_detail_key) | |-------------|---------------------|--------------------------------------------------| | Source | Elevator or Factory | Gate or Dryer | | Destination | Elevator or Factory | Storage location (long-term, short-term, bunker) | ### UNLOAD Unloading the culture from the storage place to the gate: - between parts of one production facility (Elevator) - the operation takes place within one day | | Object (target_key) | Subobject (target_detail_key) | |-------------|---------------------|--------------------------------------------------| | Source | Elevator | Storage location (long-term, short-term, bunker) | | Destination | Elevator | Gate | ### STORE Culture storage: - the operation takes place within one day - storage location does not change | | Object (target_key) | Subobject (target_detail_key) | |-------------|---------------------|--------------------------------------------------| | Source | Elevator or Factory | Storage location (long-term, short-term, bunker) | | Destination | Elevator or Factory | The same storage location | ### RELOCATE Transportation between production facilities: - between production facilities (Elevator and Field) - the operation takes place within one day | | Object (target_key) | Subobject (target_detail_key) | |-------------|---------------------|-------------------------------| | Source | Elevator | Gate | | Destination | Factory | Gate | ### CONSUMPTION Field crop consumption: - between parts of one production facility (Field) - the operation takes place within one day - consumption comes from the Bunker - in addition, we can consume directly from the Gate or Dryer without laying in the Bunker | | Object (target_key) | Subobject (target_detail_key) | |-------------|---------------------|-------------------------------| | Source | Factory | Hopper or Gate or Dryer | | Destination | Factory | Consumer | ### SELL Sale of culture: - between production facilities (Elevator and Market) - the operation takes place within one day | | Object (target_key) | Subobject (target_detail_key) | |-------------|---------------------|-------------------------------| | Source | Elevator | Gate | | Destination | Market | Contract | ### BUY Buying culture: - between production facilities (Market and Factory) - the operation takes place within one day | | Object (target_key) | Subobject (target_detail_key) | |-------------|---------------------|-------------------------------| | Source | Market | Contract | | Destination | Factory | Gate | ## Entity relationship diagram ![erd](../uml/agro.svg) The version of the OpenAPI document: 7.33.3222 ## Building To install the required dependencies and to build the typescript sources run: ```console npm install npm run build ``` ## Publishing First build the package then run `npm publish dist` (don't forget to specify the `dist` folder!) ## Consuming Navigate to the folder of your consuming project and run one of next commands. _published:_ ```console npm install @veeroute/lss-agro-angular@7.33.3222 --save ``` _without publishing (not recommended):_ ```console npm install PATH_TO_GENERATED_PACKAGE/dist.tgz --save ``` _It's important to take the tgz file, otherwise you'll get trouble with links on windows_ _using `npm link`:_ In PATH_TO_GENERATED_PACKAGE/dist: ```console npm link ``` In your project: ```console npm link @veeroute/lss-agro-angular ``` __Note for Windows users:__ The Angular CLI has troubles to use linked npm packages. Please refer to this issue <https://github.com/angular/angular-cli/issues/8284> for a solution / workaround. Published packages are not effected by this issue. ### General usage In your Angular project: ```typescript import { ApplicationConfig } from '@angular/core'; import { provideHttpClient } from '@angular/common/http'; import { provideApi } from '@veeroute/lss-agro-angular'; export const appConfig: ApplicationConfig = { providers: [ // ... provideHttpClient(), provideApi() ], }; ``` **NOTE** If you're still using `AppModule` and haven't [migrated](https://angular.dev/reference/migrations/standalone) yet, you can still import an Angular module: ```typescript import { LssAgroApiModule } from '@veeroute/lss-agro-angular'; ``` If different from the generated base path, during app bootstrap, you can provide the base path to your service. ```typescript import { ApplicationConfig } from '@angular/core'; import { provideHttpClient } from '@angular/common/http'; import { provideApi } from '@veeroute/lss-agro-angular'; export const appConfig: ApplicationConfig = { providers: [ // ... provideHttpClient(), provideApi('http://localhost:9999') ], }; ``` ```typescript // with a custom configuration import { ApplicationConfig } from '@angular/core'; import { provideHttpClient } from '@angular/common/http'; import { provideApi } from '@veeroute/lss-agro-angular'; export const appConfig: ApplicationConfig = { providers: [ // ... provideHttpClient(), provideApi({ withCredentials: true, username: 'user', password: 'password' }) ], }; ``` ```typescript // with factory building a custom configuration import { ApplicationConfig } from '@angular/core'; import { provideHttpClient } from '@angular/common/http'; import { provideApi, Configuration } from '@veeroute/lss-agro-angular'; export const appConfig: ApplicationConfig = { providers: [ // ... provideHttpClient(), { provide: Configuration, useFactory: (authService: AuthService) => new Configuration({ basePath: 'http://localhost:9999', withCredentials: true, username: authService.getUsername(), password: authService.getPassword(), }), deps: [AuthService], multi: false } ], }; ``` ### Using multiple OpenAPI files / APIs In order to use multiple APIs generated from different OpenAPI files, you can create an alias name when importing the modules in order to avoid naming conflicts: ```typescript import { provideApi as provideUserApi } from 'my-user-api-path'; import { provideApi as provideAdminApi } from 'my-admin-api-path'; import { HttpClientModule } from '@angular/common/http'; import { environment } from '../environments/environment'; export const appConfig: ApplicationConfig = { providers: [ // ... provideHttpClient(), provideUserApi(environment.basePath), provideAdminApi(environment.basePath), ], }; ``` ### Customizing path parameter encoding Without further customization, only [path-parameters][parameter-locations-url] of [style][style-values-url] 'simple' and Dates for format 'date-time' are encoded correctly. Other styles (e.g. "matrix") are not that easy to encode and thus are best delegated to other libraries (e.g.: [@honoluluhenk/http-param-expander]). To implement your own parameter encoding (or call another library), pass an arrow-function or method-reference to the `encodeParam` property of the Configuration-object (see [General Usage](#general-usage) above). Example value for use in your Configuration-Provider: ```typescript new Configuration({ encodeParam: (param: Param) => myFancyParamEncoder(param), }) ``` [parameter-locations-url]: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#parameter-locations [style-values-url]: https://github.com/OAI/OpenAPI-Specification/blob/main/versions/3.1.0.md#style-values [@honoluluhenk/http-param-expander]: https://www.npmjs.com/package/@honoluluhenk/http-param-expander