reference: #980
Signed-off-by: Jérôme Benoit <jerome.benoit@sap.com>
.DS_Store
node_modules
/dist
.DS_Store
node_modules
/dist
# Created by git for backups. To disable backups in git:
# $ git config --global mergetool.keepBackup false
# Created by git for backups. To disable backups in git:
# $ git config --global mergetool.keepBackup false
```shell
corepack enable
corepack prepare pnpm@latest --activate
pnpm install
```
```shell
corepack enable
corepack prepare pnpm@latest --activate
pnpm install
```
-The simulator UI server must be enabled, use WebSocket and disable authentication. The simulator main configuration file should have a `uiServer` section like this:
+### Configuration
+
+#### Simulator UI Server Configuration
+
+The simulator UI server must be enabled, use WebSocket transport type and have authentication disabled. The simulator main configuration file should have a `uiServer` section like this:
See [here](./../../README.md#charging-stations-simulator-configuration) for more details.
See [here](./../../README.md#charging-stations-simulator-configuration) for more details.
+#### Web UI configuration
+
+Copy the configuration template [assets/config-template.ts](assets/config-template.ts) to `assets/config.ts`.
+
-#### Compiles and run for production
+#### Compiles for production
-#### Compiles and run for development
+#### Compiles and preview locally for production
+
+```shell
+pnpm preview
+```
+
+#### Compiles and run for production
1. With the top 2 buttons you can now stop and afterwards start the simulator and inspect the server console for the number of charging stations, e.g. with the default configuration: `Charging stations simulator ... started with 10 charging station(s)`
2. Each charging station is a row in the table below, try "Stop Charging Station" and refresh with the large blue button and see the status Started turns from Yes into No.
1. With the top 2 buttons you can now stop and afterwards start the simulator and inspect the server console for the number of charging stations, e.g. with the default configuration: `Charging stations simulator ... started with 10 charging station(s)`
2. Each charging station is a row in the table below, try "Stop Charging Station" and refresh with the large blue button and see the status Started turns from Yes into No.
-### Compiles and minifies for production
+### Development
+
+#### Compiles and run for development
+pnpm dev
+```
+
+#### Formats files
+
+```shell
+pnpm format
+#### Lints and fixes files
--- /dev/null
+import { AuthenticationType, type ConfigurationData, Protocol, ProtocolVersion } from '@/types'
+
+const configuration: ConfigurationData = {
+ uiServer: {
+ host: 'localhost',
+ port: 8080,
+ protocol: Protocol.UI,
+ version: ProtocolVersion['0.0.1'],
+ authentication: {
+ enabled: false,
+ type: AuthenticationType.BASIC_AUTH,
+ username: 'admin',
+ password: 'admin'
+ }
+ }
+}
+
+export default configuration
+++ /dev/null
-import type { ConfigurationData } from '@/types'
-
-const configuration: ConfigurationData = {
- uiServer: {
- host: 'localhost',
- port: 8080,
- protocol: 'ui0.0.1'
- }
-}
-
-export default configuration
ProcedureName,
type ProtocolResponse,
type RequestPayload,
type ResponsePayload,
ResponseStatus
} from '@/types'
ProcedureName,
type ProtocolResponse,
type RequestPayload,
type ResponsePayload,
ResponseStatus
} from '@/types'
+// @ts-expect-error: configuration file can be non existent
+// eslint-disable-next-line import/no-unresolved
import configuration from '@/assets/config'
type ResponseHandler = {
import configuration from '@/assets/config'
type ResponseHandler = {
private openWS(): void {
this.ws = new WebSocket(
private openWS(): void {
this.ws = new WebSocket(
- `ws://${configuration.uiServer.host}:${configuration.uiServer.port}`,
- configuration.uiServer.protocol
+ `${configuration.uiServer.secure === true ? ApplicationProtocol.WSS : ApplicationProtocol.WS}://${configuration.uiServer.host}:${configuration.uiServer.port}`,
+ `${configuration.uiServer.protocol}${configuration.uiServer.version}`
)
this.ws.onmessage = this.responseHandler.bind(this)
this.ws.onerror = errorEvent => {
)
this.ws.onmessage = this.responseHandler.bind(this)
this.ws.onerror = errorEvent => {
+import type { AuthenticationType, Protocol, ProtocolVersion } from './UIProtocol'
+
export type ConfigurationData = {
uiServer: UIServerConfigurationSection
}
export type ConfigurationData = {
uiServer: UIServerConfigurationSection
}
type UIServerConfigurationSection = {
host: string
port: number
type UIServerConfigurationSection = {
host: string
port: number
- protocol: string
- username?: string
- password?: string
+ secure?: boolean
+ protocol: Protocol
+ version: ProtocolVersion
+ authentication?: {
+ enabled: boolean
+ type: AuthenticationType
+ username?: string
+ password?: string
+ }
}
export enum ApplicationProtocol {
}
export enum ApplicationProtocol {
- HTTP = 'http',
- WS = 'ws'
+ WS = 'ws',
+ WSS = 'wss'
}
export enum ProtocolVersion {
'0.0.1' = '0.0.1'
}
}
export enum ProtocolVersion {
'0.0.1' = '0.0.1'
}
+export enum AuthenticationType {
+ BASIC_AUTH = 'basic-auth'
+}
+
export type ProtocolRequest = [string, ProcedureName, RequestPayload]
export type ProtocolResponse = [string, ResponsePayload]
export type ProtocolRequest = [string, ProcedureName, RequestPayload]
export type ProtocolResponse = [string, ResponsePayload]
} from './ChargingStationType'
export type { ConfigurationData } from './ConfigurationType'
export {
} from './ChargingStationType'
export type { ConfigurationData } from './ConfigurationType'
export {
+ ApplicationProtocol,
+ AuthenticationType,
type RequestPayload,
type ResponsePayload,
ResponseStatus
type RequestPayload,
type ResponsePayload,
ResponseStatus