UNPKG

@veeroute/lss-packer-angular

Version:

OpenAPI client for @veeroute/lss-packer-angular

186 lines (141 loc) 8.21 kB
# @veeroute/lss-packer-angular@7.37.3331 Programming interface for Veeroute Packer. # Description The service is designed to compute the placement of goods inside the given packagings. ![overview](../images/packer_overview.png) ## Types of packaging ### Slot ![slot](../images/packer_slot.svg) Loaded pallets are stacked on top of each other; a slot is the place where a stack of pallets is set. A slot has no physical body — therefore the slot\'s `body` dimensions are zero. ### Pallet ![pallet](../images/packer_pallet.svg) If a pallet is fully filled with the same product, such a pallet is called a **mono-pallet**, and the following loading rules apply: 1. The maximum allowed pallet height including the loaded goods is taken into account. 1. The maximum allowed weight of the loaded pallet is taken into account. 1. Product packagings can be placed only parallel to the pallet walls. 1. Packagings can be rotated around the vertical Z axis only and only at right angles. 1. To equalize the height between positions (in order to place another pallet on top), empty spaces can be added to the layered placement. After mono-pallets have been formed, the remaining items of the same SKU are placed on the next pallet. Such a pallet is divided by a cardboard partition into zones so that each zone contains products of only one SKU, and the zones have the following constraints: 1. The zones are rectangular. 1. The aspect ratio of a zone\'s sides can be any. 1. One side of any zone always touches the edge of the pallet. 1. The allowed number of zones on a pallet: from 2 to 6. 1. Each zone is filled according to the mono-pallet filling rules. 1. The placement height of all goods does not exceed 50 mm so that another pallet can be placed on top. 1. It is allowed to form pallets with different placement heights for different positions (height difference greater than 50 mm) if these are the topmost pallets in the stack. ### Mixbox ![mixbox](../images/packer_mixbox.svg) If at the steps described above it is not possible to place the items so that a pallet has the required height or weight, mixboxes are used: 1. A mixbox can only be placed in a single layer. 1. A single mixbox can contain different products; in this case it is divided by partitions similarly to a pallet (the only difference is that the height of the packed goods is not equalized). 1. Mixboxes can be mixed with item positions on the same pallet. 1. The same product can be packed in different mixboxes. ## Coordinate system ![coordinates](../images/packer_coordinates.svg) To indicate the location of packagings and goods, a local coordinate system is used, in which the coordinates of a specific object are given relative to the near lower-left corner of the parent object, where: * Horizontal plane — axes **X**, **Y** * Vertical — axis **Z** Axis-to-dimension mapping for goods and packagings: * Width — along axis **X** * Length — along axis **Y** * Height — along axis **Z** ## Entity diagram ![erd](../uml/packer.svg) The version of the OpenAPI document: 7.37.3331 ## 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-packer-angular@7.37.3331 --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-packer-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-packer-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 { LssPackerApiModule } from '@veeroute/lss-packer-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-packer-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-packer-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-packer-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