@veeroute/lss-packer-angular
Version:
OpenAPI client for @veeroute/lss-packer-angular
186 lines (141 loc) • 8.21 kB
Markdown
# @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.  ## Types of packaging ### Slot  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  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  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  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 
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