@veeroute/lss-studio-angular
v7.39.3350
Published
OpenAPI client for @veeroute/lss-studio-angular
Readme
@veeroute/[email protected]
Programming interface for the Veeroute Studio tool. # Description The server side of Veeroute Studio. ## Reserved attributes These attribute keys are reserved for specific business logic: | Attribute key | Parent entity | Purpose | | ---------------------| ----------------------|:-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | ICON_NAME | location | The attribute value is written into the web_location_geopoint.icon_name field | | FORCED_GEOPROVIDER | geo_settings | The attribute value defines the geo data provider used for drawing trips on the map; it will be used instead of the value specified in plan_settings.geo_settings.geo_provider | | TRIP_VERIFIED | trip | The attribute value indicates whether the trip has been verified and approved manually | Usage example — overriding the geo provider for drawing trips in Studio: { "plan_settings": { "geo_settings": { "attributes": [ { "key": "FORCED_GEOPROVIDER", "value": "OSRM_EXTERNAL" } ] } } } ## Additional attributes Rules for processing additional attributes when using Universal Extension: * If the entity key does not exist — such an additional attribute is ignored * If the attribute key for the entity already exists — the attribute value will be overwritten after the calculation finishes ## Roles Restrictions on working with a virtual folder: * After creation, a folder cannot change its owner or company. * When a new folder is created not in ROOT, it inherits the owner and the company from the parent folder. Effect of the account role on the virtual file system: ### ADMIN, PARTNER, USER, BOT * Access only to one's own folders (folder.owner_username = account.username) and to files inside those folders * Ability to open any other user's files for editing via a direct file link ### COMPANYOWNER * Access only to folders of one's own company (folder.owner_company_key = account.company_key) and to files inside those folders * Ability to open any other user's files for editing via a direct file link ### OVERLORD * Access to all folders in the environment (folder.owner_company_key = *) and to files inside those folders ## Entity diagram
The version of the OpenAPI document: 7.39.3350
Building
To install the required dependencies and to build the typescript sources run:
npm install
npm run buildPublishing
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:
npm install @veeroute/[email protected] --savewithout publishing (not recommended):
npm install PATH_TO_GENERATED_PACKAGE/dist.tgz --saveIt'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:
npm linkIn your project:
npm link @veeroute/lss-studio-angularNote 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:
import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import { provideApi } from '@veeroute/lss-studio-angular';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideHttpClient(),
provideApi()
],
};NOTE
If you're still using AppModule and haven't migrated yet, you can still import an Angular module:
import { LssStudioApiModule } from '@veeroute/lss-studio-angular';If different from the generated base path, during app bootstrap, you can provide the base path to your service.
import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import { provideApi } from '@veeroute/lss-studio-angular';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideHttpClient(),
provideApi('http://localhost:9999')
],
};// with a custom configuration
import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import { provideApi } from '@veeroute/lss-studio-angular';
export const appConfig: ApplicationConfig = {
providers: [
// ...
provideHttpClient(),
provideApi({
withCredentials: true,
username: 'user',
password: 'password'
})
],
};// with factory building a custom configuration
import { ApplicationConfig } from '@angular/core';
import { provideHttpClient } from '@angular/common/http';
import { provideApi, Configuration } from '@veeroute/lss-studio-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:
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 of style '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 above).
Example value for use in your Configuration-Provider:
new Configuration({
encodeParam: (param: Param) => myFancyParamEncoder(param),
})