@fmsim/api 1.0.87 → 2.0.0-beta.110
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/custom-elements.json +695 -0
- package/dist/src/graphql/board.d.ts +8 -1
- package/dist/src/graphql/board.js +48 -3
- package/dist/src/graphql/board.js.map +1 -1
- package/dist/src/graphql/data-subscription.d.ts +9 -1
- package/dist/src/graphql/data-subscription.js +41 -4
- package/dist/src/graphql/data-subscription.js.map +1 -1
- package/dist/src/graphql/index.d.ts +1 -0
- package/dist/src/graphql/index.js +1 -0
- package/dist/src/graphql/index.js.map +1 -1
- package/dist/src/graphql/playback.d.ts +41 -0
- package/dist/src/graphql/playback.js +70 -0
- package/dist/src/graphql/playback.js.map +1 -0
- package/dist/src/index.d.ts +31 -1
- package/dist/src/index.js +75 -5
- package/dist/src/index.js.map +1 -1
- package/dist/src/restful/authHeader.d.ts +1 -0
- package/dist/src/restful/authHeader.js +12 -1
- package/dist/src/restful/authHeader.js.map +1 -1
- package/dist/src/restful/board.d.ts +8 -1
- package/dist/src/restful/board.js +19 -2
- package/dist/src/restful/board.js.map +1 -1
- package/dist/src/restful/index.d.ts +1 -0
- package/dist/src/restful/index.js +1 -0
- package/dist/src/restful/index.js.map +1 -1
- package/dist/src/restful/machine.d.ts +25 -0
- package/dist/src/restful/machine.js +53 -0
- package/dist/src/restful/machine.js.map +1 -1
- package/dist/src/restful/playback.d.ts +38 -0
- package/dist/src/restful/playback.js +72 -0
- package/dist/src/restful/playback.js.map +1 -0
- package/dist/src/types.d.ts +9 -0
- package/dist/src/types.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -6
|
@@ -12,8 +12,25 @@ export function createBoard(board) {
|
|
|
12
12
|
export function deleteBoard(id) {
|
|
13
13
|
return callApi(getRestServiceFullPath() + '/deleteBoard/' + id, 'delete', null, null);
|
|
14
14
|
}
|
|
15
|
-
export function
|
|
16
|
-
|
|
15
|
+
export async function fetchBoardNameById(id) {
|
|
16
|
+
var _a, _b;
|
|
17
|
+
const data = await callApi(getRestServiceFullPath() + '/fetchBoardById/' + id, 'get', null, null);
|
|
18
|
+
// 표시명은 백엔드가 요청 언어로 해석한 displayName. 없으면 대표명(name) 폴백.
|
|
19
|
+
return ((_a = data === null || data === void 0 ? void 0 : data.board) === null || _a === void 0 ? void 0 : _a.displayName) || ((_b = data === null || data === void 0 ? void 0 : data.board) === null || _b === void 0 ? void 0 : _b.name) || id;
|
|
20
|
+
}
|
|
21
|
+
/** 대표명 + 다국어(nameI18n) 를 함께 반환 — 표시 측에서 현재 언어로 resolve 하기 위함. */
|
|
22
|
+
export async function fetchBoardNameInfoById(id) {
|
|
23
|
+
var _a, _b;
|
|
24
|
+
const data = await callApi(getRestServiceFullPath() + '/fetchBoardById/' + id, 'get', null, null);
|
|
25
|
+
return { name: (_a = data === null || data === void 0 ? void 0 : data.board) === null || _a === void 0 ? void 0 : _a.name, nameI18n: (_b = data === null || data === void 0 ? void 0 : data.board) === null || _b === void 0 ? void 0 : _b.nameI18n };
|
|
26
|
+
}
|
|
27
|
+
export async function reorderBoard(id, prevId, nextId) {
|
|
28
|
+
return callApi(getRestServiceFullPath() + '/reorderBoard', 'post', null, { id, prevId, nextId });
|
|
29
|
+
}
|
|
30
|
+
export function fetchBoardById(id, cachedUpdatedAt) {
|
|
31
|
+
const url = getRestServiceFullPath() + '/fetchBoardById/' + id
|
|
32
|
+
+ (cachedUpdatedAt ? `?cachedUpdatedAt=${encodeURIComponent(cachedUpdatedAt)}` : '');
|
|
33
|
+
return callApi(url, 'get', null, null);
|
|
17
34
|
}
|
|
18
35
|
export async function fetchBoardInfoById(id) {
|
|
19
36
|
/* TODO implement me */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../../src/restful/board.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAE1D,MAAM,UAAU,cAAc,CAAC,YAAiB,EAAE;IAChD,OAAO,OAAO,CAAC,sBAAsB,EAAE,GAAG,iBAAiB,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,CAAA;AACvF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,EAAU;IACxD,OAAO,OAAO,CAAC,sBAAsB,EAAE,GAAG,mCAAmC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACxG,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,KAAY;IACtC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;IACzC,OAAO,OAAO,CAAC,sBAAsB,EAAE,GAAG,cAAc,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAA;AAChF,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,EAAU;IACpC,OAAO,OAAO,CAAC,sBAAsB,EAAE,GAAG,eAAe,GAAG,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AACvF,CAAC;AAED,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"board.js","sourceRoot":"","sources":["../../../src/restful/board.ts"],"names":[],"mappings":"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","sourcesContent":["import { Board } from '../types'\nimport { callApi, getRestServiceFullPath } from './common'\n\nexport function fetchBoardList(listParam: any = {}) {\n return callApi(getRestServiceFullPath() + '/fetchBoardList', 'post', null, listParam)\n}\n\nexport function getBoardByUseMcsAutoConfigAndId(id: string) {\n return callApi(getRestServiceFullPath() + '/getBoardByUseMcsAutoConfigAndId/' + id, 'get', null, null)\n}\n\nexport function createBoard(board: Board) {\n board.model = JSON.stringify(board.model)\n return callApi(getRestServiceFullPath() + '/createBoard', 'post', null, board)\n}\n\nexport function deleteBoard(id: string) {\n return callApi(getRestServiceFullPath() + '/deleteBoard/' + id, 'delete', null, null)\n}\n\nexport async function fetchBoardNameById(id: string): Promise<string> {\n const data: any = await callApi(getRestServiceFullPath() + '/fetchBoardById/' + id, 'get', null, null)\n // 표시명은 백엔드가 요청 언어로 해석한 displayName. 없으면 대표명(name) 폴백.\n return data?.board?.displayName || data?.board?.name || id\n}\n\n/** 대표명 + 다국어(nameI18n) 를 함께 반환 — 표시 측에서 현재 언어로 resolve 하기 위함. */\nexport async function fetchBoardNameInfoById(id: string): Promise<{ name?: string; nameI18n?: string }> {\n const data: any = await callApi(getRestServiceFullPath() + '/fetchBoardById/' + id, 'get', null, null)\n return { name: data?.board?.name, nameI18n: data?.board?.nameI18n }\n}\n\nexport async function reorderBoard(id: string, prevId?: string, nextId?: string) {\n return callApi(getRestServiceFullPath() + '/reorderBoard', 'post', null, { id, prevId, nextId })\n}\n\nexport function fetchBoardById(id: string, cachedUpdatedAt?: string) {\n const url = getRestServiceFullPath() + '/fetchBoardById/' + id\n + (cachedUpdatedAt ? `?cachedUpdatedAt=${encodeURIComponent(cachedUpdatedAt)}` : '')\n return callApi(url, 'get', null, null)\n}\n\nexport async function fetchBoardInfoById(id: string) {\n /* TODO implement me */\n return callApi(getRestServiceFullPath() + '/fetchBoardInfoById/' + id, 'get', null, null)\n}\n\nexport function updateBoard(board: any, from?: string) {\n if (!from) {\n board.model = JSON.stringify(board.model)\n }\n return callApi(getRestServiceFullPath() + '/updateBoard', 'put', null, board)\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/restful/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA","sourcesContent":["export * from './board'\nexport * from './authHeader'\nexport * from './favorite-board'\nexport * from './group'\nexport * from './font'\nexport * from './attachment'\nexport * from './connection'\nexport * from './scenario'\nexport * from './common'\nexport * from './machine'\nexport * from './theme'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/restful/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,cAAc,CAAA;AAC5B,cAAc,kBAAkB,CAAA;AAChC,cAAc,SAAS,CAAA;AACvB,cAAc,QAAQ,CAAA;AACtB,cAAc,cAAc,CAAA;AAC5B,cAAc,cAAc,CAAA;AAC5B,cAAc,YAAY,CAAA;AAC1B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA","sourcesContent":["export * from './board'\nexport * from './authHeader'\nexport * from './favorite-board'\nexport * from './group'\nexport * from './font'\nexport * from './attachment'\nexport * from './connection'\nexport * from './scenario'\nexport * from './common'\nexport * from './machine'\nexport * from './theme'\nexport * from './playback'\n"]}
|
|
@@ -1 +1,26 @@
|
|
|
1
|
+
/** Figure ID 조회 옵션. */
|
|
2
|
+
export interface FigureIdSearchOptions {
|
|
3
|
+
/** 부모 machine id — unit 타입 조회를 그 machine 소속으로 좁힌다 (machine 타입이면 생략). */
|
|
4
|
+
machine?: string;
|
|
5
|
+
}
|
|
1
6
|
export declare function getPopupData(type: string, id: string): Promise<import("./common").RestfulReturnType | undefined>;
|
|
7
|
+
/**
|
|
8
|
+
* Figure ID Mapping — 컴포넌트(figure) 타입으로 서버에 정의된 ID 후보를 조회.
|
|
9
|
+
* (id-lookup 백엔드 확정 명세: MCS LV RESTful)
|
|
10
|
+
*
|
|
11
|
+
* 포커스 시 **항상 실제 HTTP 호출**. 대상은 getRestServiceFullPath() 가 결정:
|
|
12
|
+
* - 프로덕션(fmsim-restful): lv_server_ip_port + /mcs/lv → MCS LV RESTful 호스트
|
|
13
|
+
* - 테스트(fmsim): same-origin → fmsim 앱 서버 mock 라우트
|
|
14
|
+
*
|
|
15
|
+
* 요청 규약 (확정):
|
|
16
|
+
* GET {base}/resource/name?figureType={type}[&machineName={parentMachine}]
|
|
17
|
+
* - figureType : 컴포넌트(figure) 타입
|
|
18
|
+
* - machineName: 부모 머신 id — 조회 범위 한정 (unit 계열일 때). 없으면 생략.
|
|
19
|
+
* - keyword 는 보내지 않는다 (후보 목록을 받아 클라이언트에서 풀텍스트 필터).
|
|
20
|
+
*
|
|
21
|
+
* 응답 규약 (확정):
|
|
22
|
+
* { "data": string[], "errorMessage": string | null, "status": boolean }
|
|
23
|
+
* - status=false 면 빈 결과로 취급.
|
|
24
|
+
* - data 는 1차원 id 리스트(string[]). (머신별 그룹핑 없음.)
|
|
25
|
+
*/
|
|
26
|
+
export declare function fetchFigureIds(type: string, opts?: FigureIdSearchOptions): Promise<string[]>;
|
|
@@ -2,4 +2,57 @@ import { callApi, getRestServiceFullPath } from './common';
|
|
|
2
2
|
export function getPopupData(type, id) {
|
|
3
3
|
return callApi(getRestServiceFullPath() + `/popup/${(type || '').toLowerCase()}/${id}`, 'get', null, null);
|
|
4
4
|
}
|
|
5
|
+
/**
|
|
6
|
+
* Figure ID Mapping — 컴포넌트(figure) 타입으로 서버에 정의된 ID 후보를 조회.
|
|
7
|
+
* (id-lookup 백엔드 확정 명세: MCS LV RESTful)
|
|
8
|
+
*
|
|
9
|
+
* 포커스 시 **항상 실제 HTTP 호출**. 대상은 getRestServiceFullPath() 가 결정:
|
|
10
|
+
* - 프로덕션(fmsim-restful): lv_server_ip_port + /mcs/lv → MCS LV RESTful 호스트
|
|
11
|
+
* - 테스트(fmsim): same-origin → fmsim 앱 서버 mock 라우트
|
|
12
|
+
*
|
|
13
|
+
* 요청 규약 (확정):
|
|
14
|
+
* GET {base}/resource/name?figureType={type}[&machineName={parentMachine}]
|
|
15
|
+
* - figureType : 컴포넌트(figure) 타입
|
|
16
|
+
* - machineName: 부모 머신 id — 조회 범위 한정 (unit 계열일 때). 없으면 생략.
|
|
17
|
+
* - keyword 는 보내지 않는다 (후보 목록을 받아 클라이언트에서 풀텍스트 필터).
|
|
18
|
+
*
|
|
19
|
+
* 응답 규약 (확정):
|
|
20
|
+
* { "data": string[], "errorMessage": string | null, "status": boolean }
|
|
21
|
+
* - status=false 면 빈 결과로 취급.
|
|
22
|
+
* - data 는 1차원 id 리스트(string[]). (머신별 그룹핑 없음.)
|
|
23
|
+
*/
|
|
24
|
+
export async function fetchFigureIds(type, opts = {}) {
|
|
25
|
+
const query = new URLSearchParams();
|
|
26
|
+
if (type)
|
|
27
|
+
query.set('figureType', type);
|
|
28
|
+
if (opts.machine)
|
|
29
|
+
query.set('machineName', opts.machine);
|
|
30
|
+
const qs = query.toString();
|
|
31
|
+
const url = getRestServiceFullPath() + `/resource/name` + (qs ? `?${qs}` : '');
|
|
32
|
+
const response = await callApi(url, 'get', null, null);
|
|
33
|
+
const body = response === null || response === void 0 ? void 0 : response.data;
|
|
34
|
+
// 명세: { data, errorMessage, status } — status=false 면 빈 결과로 취급.
|
|
35
|
+
if (body && body.status === false)
|
|
36
|
+
return [];
|
|
37
|
+
return normalizeIds(body);
|
|
38
|
+
}
|
|
39
|
+
/** 서버 응답을 1차원 id 리스트(string[]) 로 정규화. */
|
|
40
|
+
function normalizeIds(body) {
|
|
41
|
+
if (!body)
|
|
42
|
+
return [];
|
|
43
|
+
const arr = Array.isArray(body)
|
|
44
|
+
? body
|
|
45
|
+
: Array.isArray(body.ids)
|
|
46
|
+
? body.ids
|
|
47
|
+
: Array.isArray(body.items)
|
|
48
|
+
? body.items
|
|
49
|
+
: Array.isArray(body.data)
|
|
50
|
+
? body.data
|
|
51
|
+
: null;
|
|
52
|
+
if (!arr)
|
|
53
|
+
return [];
|
|
54
|
+
return arr
|
|
55
|
+
.map((x) => { var _a, _b, _c, _d; return (typeof x === 'string' ? x : (_d = (_c = (_b = (_a = x === null || x === void 0 ? void 0 : x.id) !== null && _a !== void 0 ? _a : x === null || x === void 0 ? void 0 : x.name) !== null && _b !== void 0 ? _b : x === null || x === void 0 ? void 0 : x.unit) !== null && _c !== void 0 ? _c : x === null || x === void 0 ? void 0 : x.machine) !== null && _d !== void 0 ? _d : ''); })
|
|
56
|
+
.filter((s) => typeof s === 'string' && s.length > 0);
|
|
57
|
+
}
|
|
5
58
|
//# sourceMappingURL=machine.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"machine.js","sourceRoot":"","sources":["../../../src/restful/machine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"machine.js","sourceRoot":"","sources":["../../../src/restful/machine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAA;AAQ1D,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,EAAU;IACnD,OAAO,OAAO,CAAC,sBAAsB,EAAE,GAAG,UAAU,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;AAC5G,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,IAAY,EAAE,OAA8B,EAAE;IACjF,MAAM,KAAK,GAAG,IAAI,eAAe,EAAE,CAAA;IACnC,IAAI,IAAI;QAAE,KAAK,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAA;IACvC,IAAI,IAAI,CAAC,OAAO;QAAE,KAAK,CAAC,GAAG,CAAC,aAAa,EAAE,IAAI,CAAC,OAAO,CAAC,CAAA;IACxD,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAA;IAE3B,MAAM,GAAG,GAAG,sBAAsB,EAAE,GAAG,gBAAgB,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;IAC9E,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC,CAAA;IAEtD,MAAM,IAAI,GAAQ,QAAQ,aAAR,QAAQ,uBAAR,QAAQ,CAAE,IAAI,CAAA;IAChC,gEAAgE;IAChE,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK;QAAE,OAAO,EAAE,CAAA;IAC5C,OAAO,YAAY,CAAC,IAAI,CAAC,CAAA;AAC3B,CAAC;AAED,yCAAyC;AACzC,SAAS,YAAY,CAAC,IAAS;IAC7B,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAC7B,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YACvB,CAAC,CAAC,IAAI,CAAC,GAAG;YACV,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;gBACzB,CAAC,CAAC,IAAI,CAAC,KAAK;gBACZ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC;oBACxB,CAAC,CAAC,IAAI,CAAC,IAAI;oBACX,CAAC,CAAC,IAAI,CAAA;IACd,IAAI,CAAC,GAAG;QAAE,OAAO,EAAE,CAAA;IAEnB,OAAO,GAAG;SACP,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,uBAAC,OAAA,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAA,MAAA,MAAA,MAAA,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,EAAE,mCAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,mCAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,IAAI,mCAAI,CAAC,aAAD,CAAC,uBAAD,CAAC,CAAE,OAAO,mCAAI,EAAE,CAAC,CAAA,EAAA,CAAC;SAC9F,MAAM,CAAC,CAAC,CAAM,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;AAC3E,CAAC","sourcesContent":["import { callApi, getRestServiceFullPath } from './common'\n\n/** Figure ID 조회 옵션. */\nexport interface FigureIdSearchOptions {\n /** 부모 machine id — unit 타입 조회를 그 machine 소속으로 좁힌다 (machine 타입이면 생략). */\n machine?: string\n}\n\nexport function getPopupData(type: string, id: string) {\n return callApi(getRestServiceFullPath() + `/popup/${(type || '').toLowerCase()}/${id}`, 'get', null, null)\n}\n\n/**\n * Figure ID Mapping — 컴포넌트(figure) 타입으로 서버에 정의된 ID 후보를 조회.\n * (id-lookup 백엔드 확정 명세: MCS LV RESTful)\n *\n * 포커스 시 **항상 실제 HTTP 호출**. 대상은 getRestServiceFullPath() 가 결정:\n * - 프로덕션(fmsim-restful): lv_server_ip_port + /mcs/lv → MCS LV RESTful 호스트\n * - 테스트(fmsim): same-origin → fmsim 앱 서버 mock 라우트\n *\n * 요청 규약 (확정):\n * GET {base}/resource/name?figureType={type}[&machineName={parentMachine}]\n * - figureType : 컴포넌트(figure) 타입\n * - machineName: 부모 머신 id — 조회 범위 한정 (unit 계열일 때). 없으면 생략.\n * - keyword 는 보내지 않는다 (후보 목록을 받아 클라이언트에서 풀텍스트 필터).\n *\n * 응답 규약 (확정):\n * { \"data\": string[], \"errorMessage\": string | null, \"status\": boolean }\n * - status=false 면 빈 결과로 취급.\n * - data 는 1차원 id 리스트(string[]). (머신별 그룹핑 없음.)\n */\nexport async function fetchFigureIds(type: string, opts: FigureIdSearchOptions = {}): Promise<string[]> {\n const query = new URLSearchParams()\n if (type) query.set('figureType', type)\n if (opts.machine) query.set('machineName', opts.machine)\n const qs = query.toString()\n\n const url = getRestServiceFullPath() + `/resource/name` + (qs ? `?${qs}` : '')\n const response = await callApi(url, 'get', null, null)\n\n const body: any = response?.data\n // 명세: { data, errorMessage, status } — status=false 면 빈 결과로 취급.\n if (body && body.status === false) return []\n return normalizeIds(body)\n}\n\n/** 서버 응답을 1차원 id 리스트(string[]) 로 정규화. */\nfunction normalizeIds(body: any): string[] {\n if (!body) return []\n const arr = Array.isArray(body)\n ? body\n : Array.isArray(body.ids)\n ? body.ids\n : Array.isArray(body.items)\n ? body.items\n : Array.isArray(body.data)\n ? body.data\n : null\n if (!arr) return []\n\n return arr\n .map((x: any) => (typeof x === 'string' ? x : x?.id ?? x?.name ?? x?.unit ?? x?.machine ?? ''))\n .filter((s: any): s is string => typeof s === 'string' && s.length > 0)\n}\n"]}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { PlaybackResult, CarrierLocationHistoryResult } from '../graphql/playback';
|
|
2
|
+
export interface PlaybackParams {
|
|
3
|
+
/** 시작 시점 "YYYY-MM-DD HH:mm:ss" */
|
|
4
|
+
startTime: string;
|
|
5
|
+
/** 종료 시점 (범위 조회) */
|
|
6
|
+
endTime?: string;
|
|
7
|
+
/** 시작 시점부터 조회할 프레임 수 (개수 조회) */
|
|
8
|
+
count?: number;
|
|
9
|
+
/** 시작 시점의 전체 상태(snapshot) 포함 여부 */
|
|
10
|
+
includeSnapshot?: boolean;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* RESTful 플레이백 데이터 조회 — 명세에 따라 URL 이 2가지로 분리됨.
|
|
14
|
+
*
|
|
15
|
+
* v1 범위 조회:
|
|
16
|
+
* GET /mcs/lv/playback?startTime=...&endTime=...&includeSnapshot=...
|
|
17
|
+
*
|
|
18
|
+
* v2 개수 조회:
|
|
19
|
+
* GET /mcs/lv/playback/count?startTime=...&count=...&includeSnapshot=...
|
|
20
|
+
*
|
|
21
|
+
* endTime 이 주어지면 v1, count 가 주어지면 v2 로 라우팅.
|
|
22
|
+
* 둘 다 주어지면 endTime 우선 (범위 우선 원칙).
|
|
23
|
+
* 둘 다 없으면 파라미터 에러지만 서버가 처리.
|
|
24
|
+
*/
|
|
25
|
+
export declare function fetchPlayback(startTime: string, endTime?: string, includeSnapshot?: boolean, count?: number): Promise<PlaybackResult>;
|
|
26
|
+
/**
|
|
27
|
+
* RESTful — 단일 carrier 의 시계열 위치 이력 조회.
|
|
28
|
+
*
|
|
29
|
+
* GET /mcs/lv/playback/carrier-location
|
|
30
|
+
* ?startTime=YYYY-MM-DD HH:mm:ss
|
|
31
|
+
* &endTime=YYYY-MM-DD HH:mm:ss
|
|
32
|
+
* &carrierName=...
|
|
33
|
+
*
|
|
34
|
+
* 요청 시간 포맷: "YYYY-MM-DD HH:mm:ss" (스페이스 구분자, 기존 /playback 동일).
|
|
35
|
+
* 응답 time 포맷: "YYYY-MM-DDTHH:mm:ss[.SSS]" (T 구분자, 가변 ms).
|
|
36
|
+
* 양쪽 모두 timezone suffix 없음 — 로컬타임 기준.
|
|
37
|
+
*/
|
|
38
|
+
export declare function fetchCarrierLocationHistory(startTime: string, endTime: string, carrierName: string): Promise<CarrierLocationHistoryResult>;
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
import { callApi } from './common';
|
|
2
|
+
import { getRestServiceFullPath } from './common';
|
|
3
|
+
/**
|
|
4
|
+
* RESTful 플레이백 데이터 조회 — 명세에 따라 URL 이 2가지로 분리됨.
|
|
5
|
+
*
|
|
6
|
+
* v1 범위 조회:
|
|
7
|
+
* GET /mcs/lv/playback?startTime=...&endTime=...&includeSnapshot=...
|
|
8
|
+
*
|
|
9
|
+
* v2 개수 조회:
|
|
10
|
+
* GET /mcs/lv/playback/count?startTime=...&count=...&includeSnapshot=...
|
|
11
|
+
*
|
|
12
|
+
* endTime 이 주어지면 v1, count 가 주어지면 v2 로 라우팅.
|
|
13
|
+
* 둘 다 주어지면 endTime 우선 (범위 우선 원칙).
|
|
14
|
+
* 둘 다 없으면 파라미터 에러지만 서버가 처리.
|
|
15
|
+
*/
|
|
16
|
+
export async function fetchPlayback(startTime, endTime, includeSnapshot = true, count) {
|
|
17
|
+
var _a;
|
|
18
|
+
const query = new URLSearchParams();
|
|
19
|
+
query.set('startTime', startTime);
|
|
20
|
+
const useCount = !endTime && count != null;
|
|
21
|
+
const pathSuffix = useCount ? '/playback/count' : '/playback';
|
|
22
|
+
if (useCount) {
|
|
23
|
+
query.set('count', String(count));
|
|
24
|
+
}
|
|
25
|
+
else if (endTime) {
|
|
26
|
+
query.set('endTime', endTime);
|
|
27
|
+
}
|
|
28
|
+
if (includeSnapshot != null)
|
|
29
|
+
query.set('includeSnapshot', String(includeSnapshot));
|
|
30
|
+
const url = getRestServiceFullPath() + pathSuffix + '?' + query.toString();
|
|
31
|
+
const response = await callApi(url, 'get', null, null);
|
|
32
|
+
const result = ((response === null || response === void 0 ? void 0 : response.data) || { status: false });
|
|
33
|
+
// data가 JSON string으로 전달되면 파싱 (서버 호환)
|
|
34
|
+
if ((_a = result === null || result === void 0 ? void 0 : result.playback) === null || _a === void 0 ? void 0 : _a.scenarios) {
|
|
35
|
+
for (const scenario of result.playback.scenarios) {
|
|
36
|
+
for (const frame of scenario.snapshots) {
|
|
37
|
+
if (typeof frame.data === 'string') {
|
|
38
|
+
try {
|
|
39
|
+
frame.data = JSON.parse(frame.data);
|
|
40
|
+
}
|
|
41
|
+
catch (_b) {
|
|
42
|
+
frame.data = [];
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return result;
|
|
49
|
+
}
|
|
50
|
+
// ── Carrier Location History ─────────────────────────────────────────
|
|
51
|
+
/**
|
|
52
|
+
* RESTful — 단일 carrier 의 시계열 위치 이력 조회.
|
|
53
|
+
*
|
|
54
|
+
* GET /mcs/lv/playback/carrier-location
|
|
55
|
+
* ?startTime=YYYY-MM-DD HH:mm:ss
|
|
56
|
+
* &endTime=YYYY-MM-DD HH:mm:ss
|
|
57
|
+
* &carrierName=...
|
|
58
|
+
*
|
|
59
|
+
* 요청 시간 포맷: "YYYY-MM-DD HH:mm:ss" (스페이스 구분자, 기존 /playback 동일).
|
|
60
|
+
* 응답 time 포맷: "YYYY-MM-DDTHH:mm:ss[.SSS]" (T 구분자, 가변 ms).
|
|
61
|
+
* 양쪽 모두 timezone suffix 없음 — 로컬타임 기준.
|
|
62
|
+
*/
|
|
63
|
+
export async function fetchCarrierLocationHistory(startTime, endTime, carrierName) {
|
|
64
|
+
const query = new URLSearchParams();
|
|
65
|
+
query.set('startTime', startTime);
|
|
66
|
+
query.set('endTime', endTime);
|
|
67
|
+
query.set('carrierName', carrierName);
|
|
68
|
+
const url = getRestServiceFullPath() + '/playback/carrier-location?' + query.toString();
|
|
69
|
+
const response = await callApi(url, 'get', null, null);
|
|
70
|
+
return ((response === null || response === void 0 ? void 0 : response.data) || { errorMessage: 'No response', carrierLocHistory: [] });
|
|
71
|
+
}
|
|
72
|
+
//# sourceMappingURL=playback.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"playback.js","sourceRoot":"","sources":["../../../src/restful/playback.ts"],"names":[],"mappings":"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","sourcesContent":["import { callApi } from './common'\nimport { getRestServiceFullPath } from './common'\nimport type { PlaybackResult, CarrierLocationHistoryResult } from '../graphql/playback'\n\nexport interface PlaybackParams {\n /** 시작 시점 \"YYYY-MM-DD HH:mm:ss\" */\n startTime: string\n /** 종료 시점 (범위 조회) */\n endTime?: string\n /** 시작 시점부터 조회할 프레임 수 (개수 조회) */\n count?: number\n /** 시작 시점의 전체 상태(snapshot) 포함 여부 */\n includeSnapshot?: boolean\n}\n\n/**\n * RESTful 플레이백 데이터 조회 — 명세에 따라 URL 이 2가지로 분리됨.\n *\n * v1 범위 조회:\n * GET /mcs/lv/playback?startTime=...&endTime=...&includeSnapshot=...\n *\n * v2 개수 조회:\n * GET /mcs/lv/playback/count?startTime=...&count=...&includeSnapshot=...\n *\n * endTime 이 주어지면 v1, count 가 주어지면 v2 로 라우팅.\n * 둘 다 주어지면 endTime 우선 (범위 우선 원칙).\n * 둘 다 없으면 파라미터 에러지만 서버가 처리.\n */\nexport async function fetchPlayback(\n startTime: string,\n endTime?: string,\n includeSnapshot: boolean = true,\n count?: number\n): Promise<PlaybackResult> {\n const query = new URLSearchParams()\n query.set('startTime', startTime)\n\n const useCount = !endTime && count != null\n const pathSuffix = useCount ? '/playback/count' : '/playback'\n\n if (useCount) {\n query.set('count', String(count))\n } else if (endTime) {\n query.set('endTime', endTime)\n }\n if (includeSnapshot != null) query.set('includeSnapshot', String(includeSnapshot))\n\n const url = getRestServiceFullPath() + pathSuffix + '?' + query.toString()\n const response = await callApi(url, 'get', null, null)\n\n const result = (response?.data || { status: false }) as PlaybackResult\n\n // data가 JSON string으로 전달되면 파싱 (서버 호환)\n if (result?.playback?.scenarios) {\n for (const scenario of result.playback.scenarios) {\n for (const frame of scenario.snapshots) {\n if (typeof frame.data === 'string') {\n try { frame.data = JSON.parse(frame.data) } catch { frame.data = [] }\n }\n }\n }\n }\n\n return result\n}\n\n// ── Carrier Location History ─────────────────────────────────────────\n\n/**\n * RESTful — 단일 carrier 의 시계열 위치 이력 조회.\n *\n * GET /mcs/lv/playback/carrier-location\n * ?startTime=YYYY-MM-DD HH:mm:ss\n * &endTime=YYYY-MM-DD HH:mm:ss\n * &carrierName=...\n *\n * 요청 시간 포맷: \"YYYY-MM-DD HH:mm:ss\" (스페이스 구분자, 기존 /playback 동일).\n * 응답 time 포맷: \"YYYY-MM-DDTHH:mm:ss[.SSS]\" (T 구분자, 가변 ms).\n * 양쪽 모두 timezone suffix 없음 — 로컬타임 기준.\n */\nexport async function fetchCarrierLocationHistory(\n startTime: string,\n endTime: string,\n carrierName: string\n): Promise<CarrierLocationHistoryResult> {\n const query = new URLSearchParams()\n query.set('startTime', startTime)\n query.set('endTime', endTime)\n query.set('carrierName', carrierName)\n\n const url = getRestServiceFullPath() + '/playback/carrier-location?' + query.toString()\n const response = await callApi(url, 'get', null, null)\n\n return (response?.data || { errorMessage: 'No response', carrierLocHistory: [] }) as CarrierLocationHistoryResult\n}\n"]}
|
package/dist/src/types.d.ts
CHANGED
|
@@ -26,6 +26,15 @@ export type ComponentGroup = {
|
|
|
26
26
|
export type Board = {
|
|
27
27
|
id?: string;
|
|
28
28
|
name?: string;
|
|
29
|
+
/** 보드명 다국어 { lang: name } JSON 문자열. 편집(저작) 폼 전용 — 표시에는 displayName 을 쓴다. */
|
|
30
|
+
nameI18n?: string;
|
|
31
|
+
/**
|
|
32
|
+
* 현재 요청 언어(X-Lang = lv_server_lang)로 백엔드가 해석해 내려주는 표시명.
|
|
33
|
+
* 표시/리스팅은 이 값을 쓴다(없으면 name 폴백). name/nameI18n 원본은 편집용으로 보존.
|
|
34
|
+
*/
|
|
35
|
+
displayName?: string;
|
|
36
|
+
/** 숨김 플래그. 보드 리스트 기본 조회에서 제외됨. */
|
|
37
|
+
hidden?: boolean;
|
|
29
38
|
description?: string;
|
|
30
39
|
model?: any;
|
|
31
40
|
groupId?: string;
|
package/dist/src/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Model } from '@hatiolab/things-scene'\n\nexport interface PalletItem {\n type: string\n description: string\n icon: HTMLImageElement\n group:\n | 'line'\n | 'shape'\n | 'textAndMedio'\n | 'chartAndGauge'\n | 'table'\n | 'container'\n | 'IoT'\n | '3D'\n | 'warehouse'\n | 'form'\n | 'etc'\n | string\n model: Model\n}\n\nexport interface Pallet {\n name: string\n templates: PalletItem[]\n}\n\nexport type ComponentTemplate = {\n type: string\n description: string\n group: string | string[]\n icon: any\n model: Model\n}\n\nexport type ComponentGroup = {\n name: string\n description: string\n icon: string\n templates: ComponentTemplate[]\n}\n\nexport type Board = {\n id?: string\n name?: string\n description?: string\n model?: any\n groupId?: string\n}\n\nexport type BoardGroup = {\n id?: string\n name?: string\n description?: string\n}\n"]}
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"","sourcesContent":["import { Model } from '@hatiolab/things-scene'\n\nexport interface PalletItem {\n type: string\n description: string\n icon: HTMLImageElement\n group:\n | 'line'\n | 'shape'\n | 'textAndMedio'\n | 'chartAndGauge'\n | 'table'\n | 'container'\n | 'IoT'\n | '3D'\n | 'warehouse'\n | 'form'\n | 'etc'\n | string\n model: Model\n}\n\nexport interface Pallet {\n name: string\n templates: PalletItem[]\n}\n\nexport type ComponentTemplate = {\n type: string\n description: string\n group: string | string[]\n icon: any\n model: Model\n}\n\nexport type ComponentGroup = {\n name: string\n description: string\n icon: string\n templates: ComponentTemplate[]\n}\n\nexport type Board = {\n id?: string\n name?: string\n /** 보드명 다국어 { lang: name } JSON 문자열. 편집(저작) 폼 전용 — 표시에는 displayName 을 쓴다. */\n nameI18n?: string\n /**\n * 현재 요청 언어(X-Lang = lv_server_lang)로 백엔드가 해석해 내려주는 표시명.\n * 표시/리스팅은 이 값을 쓴다(없으면 name 폴백). name/nameI18n 원본은 편집용으로 보존.\n */\n displayName?: string\n /** 숨김 플래그. 보드 리스트 기본 조회에서 제외됨. */\n hidden?: boolean\n description?: string\n model?: any\n groupId?: string\n}\n\nexport type BoardGroup = {\n id?: string\n name?: string\n description?: string\n}\n"]}
|