├── src
├── assets
│ ├── .gitkeep
│ ├── icons
│ │ ├── icon-128x128.png
│ │ ├── icon-144x144.png
│ │ ├── icon-152x152.png
│ │ ├── icon-192x192.png
│ │ ├── icon-384x384.png
│ │ ├── icon-512x512.png
│ │ ├── icon-72x72.png
│ │ └── icon-96x96.png
│ └── configs
│ │ └── reset
│ │ ├── robots.json
│ │ ├── poses.json
│ │ └── cmd-lists.json
├── app
│ ├── app.component.css
│ ├── poses
│ │ ├── pose-detail
│ │ │ ├── pose-detail.component.css
│ │ │ ├── pose-detail.component.html
│ │ │ └── pose-detail.component.ts
│ │ ├── poses.component.css
│ │ ├── shared
│ │ │ ├── pose.model.ts
│ │ │ └── pose.service.ts
│ │ ├── pose-form
│ │ │ ├── pose-form.component.css
│ │ │ ├── pose-form.component.html
│ │ │ └── pose-form.component.ts
│ │ ├── poses.component.ts
│ │ └── poses.component.html
│ ├── robots
│ │ ├── robot-detail
│ │ │ ├── robot-detail.component.css
│ │ │ ├── robot-detail.component.html
│ │ │ └── robot-detail.component.ts
│ │ ├── robots.component.css
│ │ ├── shared
│ │ │ ├── robot.model.ts
│ │ │ ├── robot-util.ts
│ │ │ └── robot.service.ts
│ │ ├── robot-form
│ │ │ ├── robot-form.component.css
│ │ │ ├── robot-form.component.ts
│ │ │ └── robot-form.component.html
│ │ ├── robots.component.ts
│ │ └── robots.component.html
│ ├── viewer
│ │ ├── input-dialog
│ │ │ ├── input-dialog.component.css
│ │ │ ├── input-dialog-data.ts
│ │ │ ├── input-dialog.component.html
│ │ │ └── input-dialog.component.ts
│ │ ├── select-dialog
│ │ │ ├── select-dialog.component.css
│ │ │ ├── select-dialog-data.ts
│ │ │ ├── select-dialog.component.html
│ │ │ └── select-dialog.component.ts
│ │ ├── viewer.component.css
│ │ ├── shared
│ │ │ ├── text-position.enum.ts
│ │ │ ├── markers
│ │ │ │ ├── icon.model.ts
│ │ │ │ ├── marker.ts
│ │ │ │ ├── ros-marker.ts
│ │ │ │ ├── grid-marker.ts
│ │ │ │ ├── base-marker.ts
│ │ │ │ ├── orientation-marker.ts
│ │ │ │ ├── robot-status-marker.ts
│ │ │ │ ├── icon-marker.ts
│ │ │ │ ├── text-marker.ts
│ │ │ │ └── path-marker.ts
│ │ │ ├── viewer-state.ts
│ │ │ ├── protocol
│ │ │ │ ├── protocol.model.ts
│ │ │ │ ├── protocol-agent.ts
│ │ │ │ ├── robot-command-request.model.ts
│ │ │ │ ├── robot-command-response.model.ts
│ │ │ │ └── protocol-manager.ts
│ │ │ ├── base-viewer-component.ts
│ │ │ ├── base-viewer.ts
│ │ │ └── abstract-viewer-component.ts
│ │ ├── viewer.component.html
│ │ └── viewer.component.ts
│ ├── cmd-lists
│ │ ├── cmd-list-detail
│ │ │ ├── cmd-list-detail.component.css
│ │ │ ├── cmd-list-detail.component.html
│ │ │ └── cmd-list-detail.component.ts
│ │ ├── cmd-lists.component.css
│ │ ├── shared
│ │ │ ├── cmd-list.model.ts
│ │ │ └── cmd-list.service.ts
│ │ ├── cmd-list-form
│ │ │ ├── cmd-list-form.component.css
│ │ │ ├── cmd-list-form.component.html
│ │ │ └── cmd-list-form.component.ts
│ │ ├── cmd-lists.component.html
│ │ └── cmd-lists.component.ts
│ ├── home
│ │ ├── home.component.css
│ │ ├── home.component.html
│ │ └── home.component.ts
│ ├── sidenav
│ │ ├── sidenav.component.css
│ │ ├── sidenav.component.ts
│ │ └── sidenav.component.html
│ ├── app.component.html
│ ├── settings
│ │ ├── settings.component.css
│ │ ├── shared
│ │ │ ├── setting.model.ts
│ │ │ └── setting.service.ts
│ │ ├── setting-detail
│ │ │ ├── setting-detail.component.css
│ │ │ ├── setting-detail.component.html
│ │ │ └── setting-detail.component.ts
│ │ ├── settings.component.html
│ │ └── settings.component.ts
│ ├── shared
│ │ ├── pickable-model.ts
│ │ ├── material-color.ts
│ │ ├── ros
│ │ │ ├── connection-state.enum.ts
│ │ │ ├── topic-subscriber.ts
│ │ │ ├── messages
│ │ │ │ ├── robo-cmd.model.ts
│ │ │ │ ├── int-parameter.model.ts
│ │ │ │ ├── str-parameter.model.ts
│ │ │ │ ├── bool-parameter.model.ts
│ │ │ │ ├── double-parameter.model.ts
│ │ │ │ ├── robo-res-list.model.ts
│ │ │ │ ├── robo-cmd-list.model.ts
│ │ │ │ ├── robo-res.model.ts
│ │ │ │ ├── reconfigure-service-request.model.ts
│ │ │ │ ├── reconfigure-service-response.model.ts
│ │ │ │ ├── group-state.model.ts
│ │ │ │ ├── occupancy-grid.model.ts
│ │ │ │ ├── map-meta-data.model.ts
│ │ │ │ └── config.model.ts
│ │ │ └── pose.ts
│ │ ├── pickable-service.ts
│ │ ├── storage
│ │ │ ├── storage-data.ts
│ │ │ ├── storage-detail.ts
│ │ │ ├── storage-service.ts
│ │ │ └── storage-component.ts
│ │ ├── store
│ │ │ ├── key-value-store.ts
│ │ │ ├── store.service.ts
│ │ │ └── local-storage-store.ts
│ │ ├── config
│ │ │ ├── initializer.service.ts
│ │ │ └── config.service.ts
│ │ └── material-color-options.ts
│ ├── app.component.ts
│ ├── commands
│ │ ├── shared
│ │ │ ├── command.model.ts
│ │ │ └── command-info.model.ts
│ │ ├── commands.component.css
│ │ ├── commands.component.ts
│ │ └── commands.component.html
│ ├── app-routing.module.ts
│ └── app.module.ts
├── styles.css
├── environments
│ ├── environment.prod.ts
│ └── environment.ts
├── main.ts
├── index.html
├── test.ts
├── manifest.webmanifest
└── polyfills.ts
├── docs
├── _config.yml
├── figs
│ ├── en.png
│ ├── ja.png
│ └── amr-if-ui_00.png
├── index.md
├── index_en.md
├── install.md
├── deploy.md
├── deploy_en.md
├── install_en.md
└── setup.md
├── img
└── AMR-IF-UI.png
├── LICENSE_HEADER
├── .editorconfig
├── tsconfig.app.json
├── tsconfig.spec.json
├── browserslist
├── ngsw-config.json
├── tsconfig.json
├── .gitignore
├── karma.conf.js
├── LICENSE
├── package.json
├── tslint.json
└── angular.json
/src/assets/.gitkeep:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/src/app/app.component.css:
--------------------------------------------------------------------------------
1 |
--------------------------------------------------------------------------------
/docs/_config.yml:
--------------------------------------------------------------------------------
1 | theme: jekyll-theme-cayman
--------------------------------------------------------------------------------
/docs/figs/en.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/docs/figs/en.png
--------------------------------------------------------------------------------
/docs/figs/ja.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/docs/figs/ja.png
--------------------------------------------------------------------------------
/img/AMR-IF-UI.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/img/AMR-IF-UI.png
--------------------------------------------------------------------------------
/LICENSE_HEADER:
--------------------------------------------------------------------------------
1 | Copyright (C) 2020 TOSHIBA Corporation.
2 | SPDX-License-Identifier: BSD-2-Clause
--------------------------------------------------------------------------------
/src/app/poses/pose-detail/pose-detail.component.css:
--------------------------------------------------------------------------------
1 | .grid-container {
2 | margin: 20px;
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/robots/robot-detail/robot-detail.component.css:
--------------------------------------------------------------------------------
1 | .grid-container {
2 | margin: 20px;
3 | }
4 |
--------------------------------------------------------------------------------
/docs/figs/amr-if-ui_00.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/docs/figs/amr-if-ui_00.png
--------------------------------------------------------------------------------
/src/app/viewer/input-dialog/input-dialog.component.css:
--------------------------------------------------------------------------------
1 | .form-container > * {
2 | width: 100%;
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/viewer/select-dialog/select-dialog.component.css:
--------------------------------------------------------------------------------
1 | .form-container > * {
2 | width: 100%;
3 | }
4 |
--------------------------------------------------------------------------------
/src/app/cmd-lists/cmd-list-detail/cmd-list-detail.component.css:
--------------------------------------------------------------------------------
1 | .grid-container {
2 | margin: 20px;
3 | }
4 |
--------------------------------------------------------------------------------
/src/assets/icons/icon-128x128.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/src/assets/icons/icon-128x128.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-144x144.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/src/assets/icons/icon-144x144.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-152x152.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/src/assets/icons/icon-152x152.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-192x192.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/src/assets/icons/icon-192x192.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-384x384.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/src/assets/icons/icon-384x384.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-512x512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/src/assets/icons/icon-512x512.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-72x72.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/src/assets/icons/icon-72x72.png
--------------------------------------------------------------------------------
/src/assets/icons/icon-96x96.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/AMR-IF/AMR-IF-UI/HEAD/src/assets/icons/icon-96x96.png
--------------------------------------------------------------------------------
/src/app/home/home.component.css:
--------------------------------------------------------------------------------
1 | .home-container {
2 | padding: 0;
3 | margin: 0;
4 | width: 100%;
5 | height: 100%;
6 | }
7 |
--------------------------------------------------------------------------------
/src/app/sidenav/sidenav.component.css:
--------------------------------------------------------------------------------
1 | .sidenav-container {
2 | height: 100%;
3 | }
4 |
5 | .sidenav {
6 | width: 55px;
7 | }
8 |
--------------------------------------------------------------------------------
/src/app/app.component.html:
--------------------------------------------------------------------------------
1 |
5 |
6 |

4 |
5 | 本パッケージは、NEDOロボット活用型市場化適用技術開発プロジェクト(2017-2020)で開発された、移動ロボット (Autonomout Mobile Robot: AMR) 用のWeb GUIインターフェースです。
6 |
7 |
8 |
9 | ## 目次
10 |
11 | - [1. 環境構築](setup)
12 | - [2. インストール](install)
13 | - [3. デプロイ](deploy)
14 | - [4. UI要素と機能](gui)
15 |
16 |
--------------------------------------------------------------------------------
/src/app/shared/storage/storage-data.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2020 TOSHIBA Corporation.
3 | * SPDX-License-Identifier: BSD-2-Clause
4 | */
5 |
6 | import { PickableModel } from '../pickable-model';
7 |
8 | /**
9 | * ストレージモデルデータです。
10 | */
11 | export interface StorageData
4 |
5 | This package is a Web GUI interface package for mobile robots (Autonomous Mobile Robot: AMR) that is released from the NEDO Technology Development Project for Robot Commercialization Applications (Shijyouka Project, robo-marc Project, FY2017-2020.
6 |
7 |
8 |
9 | ## Table of Contents
10 |
11 | - [1. Setup](setup_en)
12 | - [2. Installation](install_en)
13 | - [3. Deployment](deploy_en)
14 | - [4. UI Elements and Functions](gui_en)
15 |
16 |
--------------------------------------------------------------------------------
/src/app/robots/shared/robot-util.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2020 TOSHIBA Corporation.
3 | * SPDX-License-Identifier: BSD-2-Clause
4 | */
5 |
6 | import { Robot } from './robot.model';
7 |
8 | /**
9 | * ロボットユーティリティです。
10 | */
11 | export class RobotUtil {
12 | /**
13 | * URLを取得する。
14 | *
15 | * @param robot ロボット
16 | * @return ロボットのURL
17 | */
18 | static getURL(robot: Robot): string {
19 | if (window.location.protocol === 'https:') {
20 | return 'wss://' + robot.address + ':' + robot.port;
21 | } else {
22 | return 'ws://' + robot.address + ':' + robot.port;
23 | }
24 | }
25 | }
26 |
--------------------------------------------------------------------------------
/src/app/commands/shared/command-info.model.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2020 TOSHIBA Corporation.
3 | * SPDX-License-Identifier: BSD-2-Clause
4 | */
5 |
6 | /**
7 | * コマンドインフォです。
8 | */
9 | export interface CommandInfo {
10 | /** タイプ */
11 | type: string;
12 |
13 | /** リクエストトピックネーム */
14 | request: string;
15 |
16 | /** レスポンストピックネーム */
17 | response: string;
18 |
19 | /** コマンド */
20 | cmd: string;
21 |
22 | /** パラメータカウント */
23 | paramCount: number;
24 |
25 | /** パラメータインデックス */
26 | paramIndex: number;
27 |
28 | /** パラメータ */
29 | param: string;
30 |
31 | /** オートコンプリート */
32 | autocomplete: string[];
33 | }
34 |
--------------------------------------------------------------------------------
/src/app/shared/ros/messages/occupancy-grid.model.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2020 TOSHIBA Corporation.
3 | * SPDX-License-Identifier: BSD-2-Clause
4 | */
5 |
6 | import { MapMetaData } from './map-meta-data.model';
7 |
8 | /**
9 | * オキュパンシーグリッドです。
10 | * @see http://docs.ros.org/kinetic/api/nav_msgs/html/msg/OccupancyGrid.html
11 | */
12 | export interface OccupancyGrid {
13 | /** ヘッダー */
14 | header: any;
15 |
16 | /** MetaData for the map */
17 | info: MapMetaData;
18 |
19 | /** The map data, in row-major order, starting with (0,0). Occupancy probabilities are in the range [0,100]. Unknown is -1. */
20 | data: Int8Array;
21 | }
22 |
--------------------------------------------------------------------------------
/src/app/viewer/shared/markers/marker.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2020 TOSHIBA Corporation.
3 | * SPDX-License-Identifier: BSD-2-Clause
4 | */
5 |
6 | /**
7 | * マーカーです。
8 | */
9 | export interface Marker {
10 | /**
11 | * ビューが変化した際にアップデートする。
12 | */
13 | update(): void;
14 |
15 | /**
16 | * 表示する。
17 | */
18 | show(): void;
19 |
20 | /**
21 | * 非表示にする。
22 | */
23 | hide(): void;
24 |
25 | /**
26 | * 表示か非表示かを返却する。
27 | *
28 | * @return true(表示)/false(非表示)
29 | */
30 | isVisibled(): boolean;
31 |
32 | /**
33 | * 破棄する。
34 | */
35 | dispose(): void;
36 |
37 | /**
38 | * 削除する。
39 | */
40 | remove(): void;
41 | }
42 |
--------------------------------------------------------------------------------
/src/app/shared/ros/messages/map-meta-data.model.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2020 TOSHIBA Corporation.
3 | * SPDX-License-Identifier: BSD-2-Clause
4 | */
5 |
6 | import * as ROSLIB from 'roslib';
7 |
8 | /**
9 | * MapMetaDataメッセージです。
10 | * @see http://docs.ros.org/kinetic/api/nav_msgs/html/msg/MapMetaData.html
11 | */
12 | export interface MapMetaData {
13 | /** The map resolution [m/cell] */
14 | resolution: number;
15 |
16 | /** Map width [cells] */
17 | width: number;
18 |
19 | /** Map height [cells] */
20 | height: number;
21 |
22 | /** The origin of the map [m, m, rad]. This is the real-world pose of the cell (0,0) in the map. */
23 | origin: ROSLIB.Pose;
24 | }
25 |
--------------------------------------------------------------------------------
/ngsw-config.json:
--------------------------------------------------------------------------------
1 | {
2 | "$schema": "./node_modules/@angular/service-worker/config/schema.json",
3 | "index": "/index.html",
4 | "assetGroups": [
5 | {
6 | "name": "app",
7 | "installMode": "prefetch",
8 | "resources": {
9 | "files": [
10 | "/index.html",
11 | "/manifest.webmanifest",
12 | "/*.css",
13 | "/*.js"
14 | ]
15 | }
16 | }, {
17 | "name": "assets",
18 | "installMode": "lazy",
19 | "updateMode": "prefetch",
20 | "resources": {
21 | "files": [
22 | "/assets/**",
23 | "/*.(eot|svg|cur|jpg|png|webp|gif|otf|ttf|woff|woff2|ani)"
24 | ]
25 | }
26 | }
27 | ]
28 | }
29 |
--------------------------------------------------------------------------------
/src/app/robots/robot-detail/robot-detail.component.html:
--------------------------------------------------------------------------------
1 |
5 |
6 | | Id | 18 |Name | 19 |Value | 20 |
|---|---|---|
| {{ row.id }} | 23 |{{ row.name }} | 24 |{{ row.value }} | 25 |
| Id | 20 |Name | 21 |Commands | 22 |
|---|---|---|
| {{ row.id }} | 25 |{{ row.name }} | 26 |{{ toStringBrief(row.commands, 80) }} | 27 |
| Id | 20 |Name | 21 |Color | 22 |Namespace | 23 |Address | 24 |Port | 25 |
|---|---|---|---|---|---|
| {{ row.id }} | 28 |{{ row.name }} | 29 |{{ row.color }} | 30 |{{ row.namespace }} | 31 |{{ row.address }} | 32 |{{ row.port }} | 33 |
| Id | 20 |Name | 21 |Color | 22 |Position | 23 |Orientation | 24 |
|---|---|---|---|---|
| {{row.id}} | 27 |{{row.name}} | 28 |{{row.color}} | 29 |30 | ({{ row.rospose.position.x | number }}, 31 | {{ row.rospose.position.y | number }}, 32 | {{ row.rospose.position.z | number }}) 33 | | 34 |35 | ({{ row.rospose.orientation.y | number }}, 36 | {{ row.rospose.orientation.z | number }}, 37 | {{ row.rospose.orientation.w | number }}) 38 | | 39 |
73 |
74 | ポートは以下のように "--port" オプションで変更可能です。
75 |
76 | ```shell
77 | $ ng server --port 8080
78 | ```
79 | 1023番以下のポートにする場合は root 権限が必要ですので、コマンドの前に sudo などが必要です。
80 |
--------------------------------------------------------------------------------
/docs/deploy.md:
--------------------------------------------------------------------------------
1 | # AMR-IF-UI: デプロイ
2 |
3 |
4 |
5 | - [1. デプロイメント](#1-デプロイメント)
6 | - [1.1. ビルド](#11-ビルド)
7 | - [1.2. ベースURLの変更](#12-ベースurlの変更)
8 |
9 |
10 |
11 | ## 1. デプロイメント
12 |
13 | AMR-IF-UI は、Angularフレームワークで構築されており、
14 | AOT (Ahead-of-time) コンパイラで事前にトランスパイル (ビルドする) することで、
15 | ブラウザでのロード速度を向上させることができる事ができ、
16 | nodejs/npm 等がインストールされていないWebサーバ上へデプロイ(配置)することができます。
17 | (ただし、AMR-IF-UI自体は ROS/Robot Web Tools に依存していますので、
18 | 必要なパッケージは別途インストールする必要があります。)
19 |
20 | ### 1.1. ビルド
21 |
22 | AMR-IF-UI のプロジェクトルートディレクトリで ng build コマンドを入力します。
23 |
24 | ```shell
25 | $ ls
26 | LICENSE README.md browserslist img
27 | ngsw-config.json package-lock.json src tsconfig.json
28 | tslint.json LICENSE_HEADER angular.json karma.conf.js
29 | package.json tsconfig.app.json tsconfig.spec.json
30 | $ ng build
31 | Compiling @angular/cdk/keycodes : es2015 as esm2015
32 | Compiling @angular/animations : es2015 as esm2015
33 | :
34 | 中略
35 | :
36 | chunk {vendor} vendor-es5.js, vendor-es5.js.map (vendor) 7.42 MB [initial] [rendered]
37 | Date: 2021-09-23T14:35:03.634Z - Hash: 36137cafdae0110f8877 - Time: 101231ms
38 |
39 | ```
40 |
41 | dist/AMR-IF-UI というディレクトリが作成されており、
42 | その中にデプロイ可能なパッケージが生成されています。
43 |
44 | ```shell
45 | $ cd dist/AMR-IF-UI/
46 | $ ls
47 | assets main-es2015.js main-es5.js manifest.webmanifest
48 | :
49 | styles-es2015.js styles-es5.js vendor-es2015.js vendor-es5.js
50 | $
51 | ```
52 |
53 | このディレクトリ内のファイルをHTTPサーバの公開可能なディレクトリへコピーすることで、
54 | このプロジェクトを公開可能です。
55 |
56 | 仮に、いま "/var/www/data" が空であり、 apache の Document Root であると仮定すると
57 | ```shell
58 | $ sudo cp * /var/www/data/
59 | ```
60 |
61 | apacheが動作していれば、http://localhost にアクセスすると以下の画面が表示されます。
62 |
63 | - [http://localhost](http://localhost)
64 |
65 |
66 |
67 | ### 1.2. ベースURLの変更
68 |
69 | Webサーバのドキュメントルートで公開するのではなく、
70 | 場合によっては特定の階層下のURLで公開したいことがあります。
71 |
72 | その場合は、build するときに、--base-href= オプションを使用して
73 | 公開する階層のパスを指定します。
74 |
75 | ```shell
76 | $ cd
68 |
69 | ### 1.2. Chaging base URL
70 |
71 | In some cases, you may want to publish at a URL below a specific
72 | directory instead of publishing at the document root of the web server.
73 |
74 | In that case, when building, use the "--base-href=option" to specify the
75 | path of the hierarchy to expose.
76 |
77 |
78 | ```shell
79 | $ cd
79 |
80 | The port-number can be changed with "--port" option.
81 |
82 | ```shell
83 | $ ng server --port 8080
84 | ```
85 |
86 | If you use under 1023 port, since root privilege is required, use sudo before the command.
87 |
--------------------------------------------------------------------------------
/src/app/viewer/shared/markers/base-marker.ts:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2020 TOSHIBA Corporation.
3 | * SPDX-License-Identifier: BSD-2-Clause
4 | */
5 |
6 | import 'pixi.js';
7 | import { Subscription, Subject, Observable } from 'rxjs';
8 | import { BaseViewer } from '../base-viewer';
9 | import { Marker } from './marker';
10 |
11 | /**
12 | * ベースマーカーです。
13 | */
14 | export class BaseMarker implements Marker {
15 | /** ビューワー */
16 | viewer: BaseViewer;
17 |
18 | /** ルートコンテナ */
19 | root: PIXI.Container;
20 |
21 | /** サブスクリプション */
22 | subscription: Subscription;
23 |
24 | /** ビジブル */
25 | visible = true;
26 |
27 | /** ビジブルサブジェクト */
28 | visibleSubject: Subject| Order | 14 |Id | 15 |Cmd | 16 |Params | 17 |OK_nextid | 18 |NG_nextid | 19 |Operations | 20 |
|---|---|---|---|---|---|---|
| 24 | {{ indexOf(row) }} 25 | | 26 | 27 |
28 | |
36 |
37 |
38 | |
55 |
56 |
57 |
61 |
103 | |
106 |
107 |
108 | |
116 |
117 |
118 | |
126 |
127 | 128 | 131 | 134 | 137 | 140 | 143 | | 144 |