@things-factory/board-ui 10.1.40 → 10.1.42
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/dist-client/board-list/board-thumb.d.ts +33 -0
- package/dist-client/board-list/board-thumb.js +119 -0
- package/dist-client/board-list/board-thumb.js.map +1 -0
- package/dist-client/graphql/favorite-board.js +3 -0
- package/dist-client/graphql/favorite-board.js.map +1 -1
- package/dist-client/graphql/my-board.js +3 -0
- package/dist-client/graphql/my-board.js.map +1 -1
- package/dist-client/graphql/play-group.js +2 -0
- package/dist-client/graphql/play-group.js.map +1 -1
- package/dist-client/index.d.ts +1 -0
- package/dist-client/index.js +1 -0
- package/dist-client/index.js.map +1 -1
- package/dist-client/pages/board-list-page.d.ts +39 -42
- package/dist-client/pages/board-list-page.js +388 -284
- package/dist-client/pages/board-list-page.js.map +1 -1
- package/dist-client/pages/board-modeller-page.d.ts +2 -0
- package/dist-client/pages/board-modeller-page.js +18 -1
- package/dist-client/pages/board-modeller-page.js.map +1 -1
- package/dist-client/pages/board-template/board-template-list-page.d.ts +21 -10
- package/dist-client/pages/board-template/board-template-list-page.js +147 -136
- package/dist-client/pages/board-template/board-template-list-page.js.map +1 -1
- package/dist-client/pages/play-list-page.d.ts +22 -12
- package/dist-client/pages/play-list-page.js +264 -113
- package/dist-client/pages/play-list-page.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/setting-let/board-modeller-setting-let.d.ts +21 -0
- package/dist-client/setting-let/board-modeller-setting-let.js +144 -0
- package/dist-client/setting-let/board-modeller-setting-let.js.map +1 -0
- package/dist-client/styles/board-card-styles.d.ts +11 -0
- package/dist-client/styles/board-card-styles.js +90 -0
- package/dist-client/styles/board-card-styles.js.map +1 -0
- package/dist-client/themes/board-theme.css +32 -19
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-client/utils/board-meta.d.ts +10 -0
- package/dist-client/utils/board-meta.js +34 -0
- package/dist-client/utils/board-meta.js.map +1 -0
- package/dist-client/viewparts/board-basic-info.d.ts +38 -7
- package/dist-client/viewparts/board-basic-info.js +378 -349
- package/dist-client/viewparts/board-basic-info.js.map +1 -1
- package/dist-client/viewparts/board-info-link.d.ts +5 -1
- package/dist-client/viewparts/board-info-link.js +79 -21
- package/dist-client/viewparts/board-info-link.js.map +1 -1
- package/dist-client/viewparts/board-info-template.d.ts +15 -0
- package/dist-client/viewparts/board-info-template.js +97 -0
- package/dist-client/viewparts/board-info-template.js.map +1 -0
- package/dist-client/viewparts/board-info.d.ts +5 -0
- package/dist-client/viewparts/board-info.js +24 -73
- package/dist-client/viewparts/board-info.js.map +1 -1
- package/dist-client/viewparts/board-template-builder.d.ts +1 -0
- package/dist-client/viewparts/board-template-builder.js +37 -65
- package/dist-client/viewparts/board-template-builder.js.map +1 -1
- package/dist-client/viewparts/board-template-info.d.ts +3 -0
- package/dist-client/viewparts/board-template-info.js +75 -134
- package/dist-client/viewparts/board-template-info.js.map +1 -1
- package/dist-client/viewparts/group-info-basic.d.ts +8 -3
- package/dist-client/viewparts/group-info-basic.js +54 -190
- package/dist-client/viewparts/group-info-basic.js.map +1 -1
- package/dist-client/viewparts/group-info-import.d.ts +3 -1
- package/dist-client/viewparts/group-info-import.js +29 -62
- package/dist-client/viewparts/group-info-import.js.map +1 -1
- package/dist-client/viewparts/group-info.d.ts +4 -0
- package/dist-client/viewparts/group-info.js +21 -55
- package/dist-client/viewparts/group-info.js.map +1 -1
- package/dist-client/viewparts/info-dialog-styles.d.ts +19 -0
- package/dist-client/viewparts/info-dialog-styles.js +194 -0
- package/dist-client/viewparts/info-dialog-styles.js.map +1 -0
- package/dist-client/viewparts/link-builder.d.ts +3 -0
- package/dist-client/viewparts/link-builder.js +87 -81
- package/dist-client/viewparts/link-builder.js.map +1 -1
- package/dist-client/viewparts/play-group-info-basic.d.ts +4 -3
- package/dist-client/viewparts/play-group-info-basic.js +49 -188
- package/dist-client/viewparts/play-group-info-basic.js.map +1 -1
- package/dist-client/viewparts/play-group-info.d.ts +4 -0
- package/dist-client/viewparts/play-group-info.js +22 -53
- package/dist-client/viewparts/play-group-info.js.map +1 -1
- package/package.json +4 -4
- package/translations/en.json +32 -0
- package/translations/ja.json +10 -0
- package/translations/ko.json +32 -0
- package/translations/ms.json +8 -0
- package/translations/zh.json +10 -0
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import '@material/web/icon/icon.js';
|
|
2
|
+
import { LitElement } from 'lit';
|
|
3
|
+
declare const BoardThumb_base: (new (...args: any[]) => LitElement) & typeof LitElement;
|
|
4
|
+
/**
|
|
5
|
+
* A board card's image cell - the picture itself, plus the draft marker.
|
|
6
|
+
*
|
|
7
|
+
* ## Why a component
|
|
8
|
+
*
|
|
9
|
+
* The catalog draws in ox-grist's CARD mode. The grid treats the thumbnail as one column, drawn by
|
|
10
|
+
* that column's `record.renderer` - and a renderer's output lands inside `ox-card-field`'s own
|
|
11
|
+
* shadow root, several shadow boundaries below this page's stylesheet, so inline `style=""` is the
|
|
12
|
+
* only way to reach it directly. That still works for a plain image and a badge, but this stays a
|
|
13
|
+
* component (rather than folding back into an inline renderer) because the border-bottom seam
|
|
14
|
+
* against the info area below wants the same shadow-scoped styling.
|
|
15
|
+
*
|
|
16
|
+
* ## Why info and favorite do *not* live here
|
|
17
|
+
*
|
|
18
|
+
* They did, briefly, overlaid on the image the way figure-ui's figure-thumb.ts overlays its own
|
|
19
|
+
* (2026-09-23). Reverted the same day: a figure's picture is a neutral rendered part, closer to a
|
|
20
|
+
* plan drawing than a screen - text and icons laid over it read fine. A board's picture is the
|
|
21
|
+
* actual dashboard, often already dense with its own labels and numbers; icons on top of that
|
|
22
|
+
* compete with content the catalog exists to let a person recognize at a glance. Board's info and
|
|
23
|
+
* favorite are gutter buttons instead (board-list-page.ts / play-list-page.ts), in the information
|
|
24
|
+
* area below the picture, not on it.
|
|
25
|
+
*/
|
|
26
|
+
export declare class BoardThumb extends BoardThumb_base {
|
|
27
|
+
static styles: import("lit").CSSResult;
|
|
28
|
+
board: any;
|
|
29
|
+
badge?: string;
|
|
30
|
+
render(): import("lit-html").TemplateResult<1>;
|
|
31
|
+
private renderBadge;
|
|
32
|
+
}
|
|
33
|
+
export {};
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { __decorate, __metadata } from "tslib";
|
|
2
|
+
import '@material/web/icon/icon.js';
|
|
3
|
+
import { css, html, LitElement } from 'lit';
|
|
4
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
5
|
+
import { i18next, localize } from '@operato/i18n';
|
|
6
|
+
/**
|
|
7
|
+
* A board card's image cell - the picture itself, plus the draft marker.
|
|
8
|
+
*
|
|
9
|
+
* ## Why a component
|
|
10
|
+
*
|
|
11
|
+
* The catalog draws in ox-grist's CARD mode. The grid treats the thumbnail as one column, drawn by
|
|
12
|
+
* that column's `record.renderer` - and a renderer's output lands inside `ox-card-field`'s own
|
|
13
|
+
* shadow root, several shadow boundaries below this page's stylesheet, so inline `style=""` is the
|
|
14
|
+
* only way to reach it directly. That still works for a plain image and a badge, but this stays a
|
|
15
|
+
* component (rather than folding back into an inline renderer) because the border-bottom seam
|
|
16
|
+
* against the info area below wants the same shadow-scoped styling.
|
|
17
|
+
*
|
|
18
|
+
* ## Why info and favorite do *not* live here
|
|
19
|
+
*
|
|
20
|
+
* They did, briefly, overlaid on the image the way figure-ui's figure-thumb.ts overlays its own
|
|
21
|
+
* (2026-09-23). Reverted the same day: a figure's picture is a neutral rendered part, closer to a
|
|
22
|
+
* plan drawing than a screen - text and icons laid over it read fine. A board's picture is the
|
|
23
|
+
* actual dashboard, often already dense with its own labels and numbers; icons on top of that
|
|
24
|
+
* compete with content the catalog exists to let a person recognize at a glance. Board's info and
|
|
25
|
+
* favorite are gutter buttons instead (board-list-page.ts / play-list-page.ts), in the information
|
|
26
|
+
* area below the picture, not on it.
|
|
27
|
+
*/
|
|
28
|
+
let BoardThumb = class BoardThumb extends localize(i18next)(LitElement) {
|
|
29
|
+
static { this.styles = css `
|
|
30
|
+
:host {
|
|
31
|
+
position: relative;
|
|
32
|
+
display: block;
|
|
33
|
+
width: 100%;
|
|
34
|
+
height: 100%;
|
|
35
|
+
overflow: hidden;
|
|
36
|
+
/* The name/gutters area below has no border of its own (record-card.ts's [content] is plain
|
|
37
|
+
* margin) - without this the image bleeds straight into it with no seam. */
|
|
38
|
+
border-bottom: 1px solid var(--md-sys-color-outline-variant);
|
|
39
|
+
box-sizing: border-box;
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
img {
|
|
43
|
+
display: block;
|
|
44
|
+
width: 100%;
|
|
45
|
+
height: 100%;
|
|
46
|
+
/*
|
|
47
|
+
contain, not cover. Boards are not one shape - a wide dashboard, a portrait barcode label,
|
|
48
|
+
a small popup - and cover cropped each one differently, so no two cards framed their
|
|
49
|
+
picture alike and the grid never settled. contain shows the whole board on the neutral plate
|
|
50
|
+
(--data-card-thumbnail-background) the way figure-list-page shows a whole figure, so every
|
|
51
|
+
card reads as "a picture in a frame" and the row lines up.
|
|
52
|
+
*/
|
|
53
|
+
object-fit: contain;
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
div[empty] {
|
|
57
|
+
display: flex;
|
|
58
|
+
align-items: center;
|
|
59
|
+
justify-content: center;
|
|
60
|
+
width: 100%;
|
|
61
|
+
height: 100%;
|
|
62
|
+
color: var(--md-sys-color-outline);
|
|
63
|
+
}
|
|
64
|
+
div[empty] md-icon {
|
|
65
|
+
--md-icon-size: 28px;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/* Draft marker - only draft ever says anything, same reasoning as figure-thumb.ts's span[draft]. */
|
|
69
|
+
span[draft] {
|
|
70
|
+
position: absolute;
|
|
71
|
+
top: 6px;
|
|
72
|
+
left: 6px;
|
|
73
|
+
padding: 1px 7px;
|
|
74
|
+
font: var(--label-font, inherit);
|
|
75
|
+
font-size: 0.68rem;
|
|
76
|
+
line-height: 1.5;
|
|
77
|
+
color: var(--md-sys-color-on-secondary-container);
|
|
78
|
+
background-color: var(--md-sys-color-secondary-container);
|
|
79
|
+
border-radius: 4px;
|
|
80
|
+
}
|
|
81
|
+
`; }
|
|
82
|
+
render() {
|
|
83
|
+
const board = this.board;
|
|
84
|
+
if (!board) {
|
|
85
|
+
return html ``;
|
|
86
|
+
}
|
|
87
|
+
return html `
|
|
88
|
+
${board.thumbnail
|
|
89
|
+
? html `<img src=${board.thumbnail} alt=${board.name || ''} loading="lazy" />`
|
|
90
|
+
: html `
|
|
91
|
+
<div empty>
|
|
92
|
+
<md-icon>dashboard</md-icon>
|
|
93
|
+
</div>
|
|
94
|
+
`}
|
|
95
|
+
${this.renderBadge(board)}
|
|
96
|
+
`;
|
|
97
|
+
}
|
|
98
|
+
renderBadge(board) {
|
|
99
|
+
const text = this.badge !== undefined
|
|
100
|
+
? this.badge
|
|
101
|
+
: board.state === 'released'
|
|
102
|
+
? ''
|
|
103
|
+
: i18next.t('label.draft', { defaultValue: 'Draft' });
|
|
104
|
+
return text ? html `<span draft>${text}</span>` : '';
|
|
105
|
+
}
|
|
106
|
+
};
|
|
107
|
+
__decorate([
|
|
108
|
+
property({ type: Object }),
|
|
109
|
+
__metadata("design:type", Object)
|
|
110
|
+
], BoardThumb.prototype, "board", void 0);
|
|
111
|
+
__decorate([
|
|
112
|
+
property({ type: String }),
|
|
113
|
+
__metadata("design:type", String)
|
|
114
|
+
], BoardThumb.prototype, "badge", void 0);
|
|
115
|
+
BoardThumb = __decorate([
|
|
116
|
+
customElement('board-thumb')
|
|
117
|
+
], BoardThumb);
|
|
118
|
+
export { BoardThumb };
|
|
119
|
+
//# sourceMappingURL=board-thumb.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board-thumb.js","sourceRoot":"","sources":["../../client/board-list/board-thumb.ts"],"names":[],"mappings":";AAAA,OAAO,4BAA4B,CAAA;AAEnC,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,UAAU,EAAE,MAAM,KAAK,CAAA;AAC3C,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAE3D,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEI,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,QAAQ,CAAC,OAAO,CAAC,CAAC,UAAU,CAAC;aACpD,WAAM,GAAG,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoDlB,AApDY,CAoDZ;IAOD,MAAM;QACJ,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,IAAI,CAAA,EAAE,CAAA;QACf,CAAC;QAED,OAAO,IAAI,CAAA;QACP,KAAK,CAAC,SAAS;YACf,CAAC,CAAC,IAAI,CAAA,YAAY,KAAK,CAAC,SAAS,QAAQ,KAAK,CAAC,IAAI,IAAI,EAAE,oBAAoB;YAC7E,CAAC,CAAC,IAAI,CAAA;;;;WAIH;QACH,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;KAC1B,CAAA;IACH,CAAC;IAEO,WAAW,CAAC,KAAU;QAC5B,MAAM,IAAI,GACR,IAAI,CAAC,KAAK,KAAK,SAAS;YACtB,CAAC,CAAC,IAAI,CAAC,KAAK;YACZ,CAAC,CAAC,KAAK,CAAC,KAAK,KAAK,UAAU;gBAC1B,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC,CAAA;QAE3D,OAAO,IAAI,CAAC,CAAC,CAAC,IAAI,CAAA,eAAe,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAA;IACrD,CAAC;;AAhC2B;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;yCAAY;AAGX;IAA3B,QAAQ,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;;yCAAe;AA1D/B,UAAU;IADtB,aAAa,CAAC,aAAa,CAAC;GAChB,UAAU,CAwFtB","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, property } from 'lit/decorators.js'\n\nimport { i18next, localize } from '@operato/i18n'\n\n/**\n * A board card's image cell - the picture itself, plus the draft marker.\n *\n * ## Why a component\n *\n * The catalog draws in ox-grist's CARD mode. The grid treats the thumbnail as one column, drawn by\n * that column's `record.renderer` - and a renderer's output lands inside `ox-card-field`'s own\n * shadow root, several shadow boundaries below this page's stylesheet, so inline `style=\"\"` is the\n * only way to reach it directly. That still works for a plain image and a badge, but this stays a\n * component (rather than folding back into an inline renderer) because the border-bottom seam\n * against the info area below wants the same shadow-scoped styling.\n *\n * ## Why info and favorite do *not* live here\n *\n * They did, briefly, overlaid on the image the way figure-ui's figure-thumb.ts overlays its own\n * (2026-09-23). Reverted the same day: a figure's picture is a neutral rendered part, closer to a\n * plan drawing than a screen - text and icons laid over it read fine. A board's picture is the\n * actual dashboard, often already dense with its own labels and numbers; icons on top of that\n * compete with content the catalog exists to let a person recognize at a glance. Board's info and\n * favorite are gutter buttons instead (board-list-page.ts / play-list-page.ts), in the information\n * area below the picture, not on it.\n */\n@customElement('board-thumb')\nexport class BoardThumb extends localize(i18next)(LitElement) {\n static styles = css`\n :host {\n position: relative;\n display: block;\n width: 100%;\n height: 100%;\n overflow: hidden;\n /* The name/gutters area below has no border of its own (record-card.ts's [content] is plain\n * margin) - without this the image bleeds straight into it with no seam. */\n border-bottom: 1px solid var(--md-sys-color-outline-variant);\n box-sizing: border-box;\n }\n\n img {\n display: block;\n width: 100%;\n height: 100%;\n /*\n contain, not cover. Boards are not one shape - a wide dashboard, a portrait barcode label,\n a small popup - and cover cropped each one differently, so no two cards framed their\n picture alike and the grid never settled. contain shows the whole board on the neutral plate\n (--data-card-thumbnail-background) the way figure-list-page shows a whole figure, so every\n card reads as \"a picture in a frame\" and the row lines up.\n */\n object-fit: contain;\n }\n\n div[empty] {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 100%;\n height: 100%;\n color: var(--md-sys-color-outline);\n }\n div[empty] md-icon {\n --md-icon-size: 28px;\n }\n\n /* Draft marker - only draft ever says anything, same reasoning as figure-thumb.ts's span[draft]. */\n span[draft] {\n position: absolute;\n top: 6px;\n left: 6px;\n padding: 1px 7px;\n font: var(--label-font, inherit);\n font-size: 0.68rem;\n line-height: 1.5;\n color: var(--md-sys-color-on-secondary-container);\n background-color: var(--md-sys-color-secondary-container);\n border-radius: 4px;\n }\n `\n\n @property({ type: Object }) board!: any\n /* Overrides the marker text. Unset means \"the draft rule\"; an empty string means no marker at\n * all - a template has no draft/released state, so board-template-list-page.ts passes ''. */\n @property({ type: String }) badge?: string\n\n render() {\n const board = this.board\n if (!board) {\n return html``\n }\n\n return html`\n ${board.thumbnail\n ? html`<img src=${board.thumbnail} alt=${board.name || ''} loading=\"lazy\" />`\n : html`\n <div empty>\n <md-icon>dashboard</md-icon>\n </div>\n `}\n ${this.renderBadge(board)}\n `\n }\n\n private renderBadge(board: any) {\n const text =\n this.badge !== undefined\n ? this.badge\n : board.state === 'released'\n ? ''\n : i18next.t('label.draft', { defaultValue: 'Draft' })\n\n return text ? html`<span draft>${text}</span>` : ''\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"favorite-board.js","sourceRoot":"","sources":["../../client/graphql/favorite-board.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,SAAS,GAAG,EAAE;IACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,GAAG,CAAA;;yBAEW,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"favorite-board.js","sourceRoot":"","sources":["../../client/graphql/favorite-board.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,SAAS,GAAG,EAAE;IACzD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,GAAG,CAAA;;yBAEW,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;KAenD;KACF,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC","sourcesContent":["import gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\nimport { gqlBuilder } from '@things-factory/utils'\n\nexport async function fetchFavoriteBoardList(listParam = {}) {\n const response = await client.query({\n query: gql`\n {\n favoriteBoards(${gqlBuilder.buildArgs(listParam)}) {\n items {\n id\n name\n description\n thumbnail\n state\n type\n version\n createdAt\n updatedAt\n }\n total\n }\n }\n `\n })\n\n return response.data\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"my-board.js","sourceRoot":"","sources":["../../client/graphql/my-board.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAS,GAAG,EAAE;IACnD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,GAAG,CAAA;;4BAEc,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC
|
|
1
|
+
{"version":3,"file":"my-board.js","sourceRoot":"","sources":["../../client/graphql/my-board.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AACzC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,SAAS,GAAG,EAAE;IACnD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,GAAG,CAAA;;4BAEc,UAAU,CAAC,SAAS,CAAC,SAAS,CAAC;;;;;;;;;;;;;;;KAetD;KACF,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC","sourcesContent":["import gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\nimport { gqlBuilder } from '@things-factory/utils'\n\nexport async function fetchMyBoardList(listParam = {}) {\n const response = await client.query({\n query: gql`\n {\n boardsCreatedByMe(${gqlBuilder.buildArgs(listParam)}) {\n items {\n id\n name\n description\n thumbnail\n state\n type\n version\n createdAt\n updatedAt\n }\n total\n }\n }\n `\n })\n\n return response.data\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"play-group.js","sourceRoot":"","sources":["../../client/graphql/play-group.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;KAWT;KACF,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAO;IAC1C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,GAAG,CAAA
|
|
1
|
+
{"version":3,"file":"play-group.js","sourceRoot":"","sources":["../../client/graphql/play-group.ts"],"names":[],"mappings":"AAAA,OAAO,GAAG,MAAM,aAAa,CAAA;AAE7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,MAAM,CAAC,KAAK,UAAU,kBAAkB;IACtC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;KAWT;KACF,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAO;IAC1C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;QAClC,KAAK,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqCT;QACD,SAAS,EAAE;YACT,EAAE,EAAE,OAAO;SACZ;KACF,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAK;IACzC,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAEnC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;;;;;KAUZ;QACD,SAAS,EAAE;YACT,SAAS,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;SACjC;KACF,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAAK;IACzC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAEvC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;;;;;KAUZ;QACD,SAAS,EAAE;YACT,EAAE;YACF,KAAK,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE;SAC7B;KACF,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,EAAE;IACtC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QACnC,QAAQ,EAAE,GAAG,CAAA;;;;KAIZ;QACD,SAAS,EAAE;YACT,EAAE;SACH;KACF,CAAC,CAAA;IACF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAO,EAAE,KAAK;IAChD,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,GAAG,KAAK,CAAA;IAEvC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;;KAiBZ;QACD,SAAS,EAAE;YACT,EAAE;YACF,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAO,EAAE,OAAO;IACnD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC;QACnC,QAAQ,EAAE,GAAG,CAAA;;;;;;;;;;;;;;;;;KAiBZ;QACD,SAAS,EAAE;YACT,EAAE,EAAE,OAAO;YACX,QAAQ,EAAE,CAAC,OAAO,CAAC;SACpB;KACF,CAAC,CAAA;IAEF,OAAO,QAAQ,CAAC,IAAI,CAAA;AACtB,CAAC","sourcesContent":["import gql from 'graphql-tag'\n\nimport { client } from '@operato/graphql'\n\nexport async function fetchPlayGroupList() {\n const response = await client.query({\n query: gql`\n {\n playGroups {\n items {\n id\n name\n description\n }\n total\n }\n }\n `\n })\n\n return response.data\n}\n\nexport async function fetchPlayGroup(groupId) {\n const response = await client.query({\n query: gql`\n query FetchPlayGroup($id: String!) {\n playGroup(id: $id) {\n id\n name\n description\n boards {\n id\n name\n description\n model\n thumbnail\n state\n version\n createdAt\n creator {\n id\n name\n }\n updatedAt\n updater {\n id\n name\n }\n }\n createdAt\n creator {\n id\n name\n }\n updatedAt\n updater {\n id\n name\n }\n }\n }\n `,\n variables: {\n id: groupId\n }\n })\n\n return response.data\n}\n\nexport async function createPlayGroup(group) {\n const { name, description } = group\n\n const response = await client.mutate({\n mutation: gql`\n mutation CreatePlayGroup($playGroup: NewPlayGroup!) {\n createPlayGroup(playGroup: $playGroup) {\n id\n name\n description\n createdAt\n updatedAt\n }\n }\n `,\n variables: {\n playGroup: { name, description }\n }\n })\n\n return response.data\n}\n\nexport async function updatePlayGroup(group) {\n const { id, name, description } = group\n\n const response = await client.mutate({\n mutation: gql`\n mutation UpdatePlayGroup($id: String!, $patch: PlayGroupPatch!) {\n updatePlayGroup(id: $id, patch: $patch) {\n id\n name\n description\n createdAt\n updatedAt\n }\n }\n `,\n variables: {\n id,\n patch: { name, description }\n }\n })\n\n return response.data\n}\n\nexport async function deletePlayGroup(id) {\n const response = await client.mutate({\n mutation: gql`\n mutation ($id: String!) {\n deletePlayGroup(id: $id)\n }\n `,\n variables: {\n id\n }\n })\n return response.data\n}\n\nexport async function joinPlayGroup(boardId, group) {\n const { id, name, description } = group\n\n const response = await client.mutate({\n mutation: gql`\n mutation JoinPlayGroup($id: String!, $boardIds: [String!]!) {\n joinPlayGroup(id: $id, boardIds: $boardIds) {\n id\n name\n description\n boards {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n }\n `,\n variables: {\n id,\n boardIds: [boardId]\n }\n })\n\n return response.data\n}\n\nexport async function leavePlayGroup(boardId, groupId) {\n const response = await client.mutate({\n mutation: gql`\n mutation ($id: String!, $boardIds: [String]!) {\n leavePlayGroup(id: $id, boardIds: $boardIds) {\n id\n name\n description\n boards {\n id\n name\n description\n createdAt\n updatedAt\n }\n createdAt\n updatedAt\n }\n }\n `,\n variables: {\n id: groupId,\n boardIds: [boardId]\n }\n })\n\n return response.data\n}\n"]}
|
package/dist-client/index.d.ts
CHANGED
|
@@ -2,6 +2,7 @@ export * from './pages/board-viewer-page.js';
|
|
|
2
2
|
export * from './pages/board-player-page.js';
|
|
3
3
|
export * from './pages/board-modeller-page.js';
|
|
4
4
|
export * from './setting-let/board-view-setting-let.js';
|
|
5
|
+
export * from './setting-let/board-modeller-setting-let.js';
|
|
5
6
|
export * from './apptools/favorite-tool.js';
|
|
6
7
|
export * from './graphql/index.js';
|
|
7
8
|
export * from './viewparts/index.js';
|
package/dist-client/index.js
CHANGED
|
@@ -4,6 +4,7 @@ export * from './pages/board-modeller-page.js';
|
|
|
4
4
|
/* AI 패치/액션의 things-scene in-place 적용기 — 순수 함수. 자체 모델러 셸을 가진 호스트
|
|
5
5
|
* (예: operato-twin 의 트윈 모델러)가 같은 적용 규칙을 쓰도록 공개한다(중복 구현 금지). */
|
|
6
6
|
export * from './setting-let/board-view-setting-let.js';
|
|
7
|
+
export * from './setting-let/board-modeller-setting-let.js';
|
|
7
8
|
export * from './apptools/favorite-tool.js';
|
|
8
9
|
export * from './graphql/index.js';
|
|
9
10
|
export * from './viewparts/index.js';
|
package/dist-client/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AACA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gCAAgC,CAAA;AAC9C;+DAC+D;AAE/D,cAAc,yCAAyC,CAAA;AACvD,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA","sourcesContent":["\nexport * from './pages/board-viewer-page.js'\nexport * from './pages/board-player-page.js'\nexport * from './pages/board-modeller-page.js'\n/* AI 패치/액션의 things-scene in-place 적용기 — 순수 함수. 자체 모델러 셸을 가진 호스트\n * (예: operato-twin 의 트윈 모델러)가 같은 적용 규칙을 쓰도록 공개한다(중복 구현 금지). */\n\nexport * from './setting-let/board-view-setting-let.js'\nexport * from './apptools/favorite-tool.js'\nexport * from './graphql/index.js'\nexport * from './viewparts/index.js'\n"]}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../client/index.ts"],"names":[],"mappings":"AACA,cAAc,8BAA8B,CAAA;AAC5C,cAAc,8BAA8B,CAAA;AAC5C,cAAc,gCAAgC,CAAA;AAC9C;+DAC+D;AAE/D,cAAc,yCAAyC,CAAA;AACvD,cAAc,6CAA6C,CAAA;AAC3D,cAAc,6BAA6B,CAAA;AAC3C,cAAc,oBAAoB,CAAA;AAClC,cAAc,sBAAsB,CAAA","sourcesContent":["\nexport * from './pages/board-viewer-page.js'\nexport * from './pages/board-player-page.js'\nexport * from './pages/board-modeller-page.js'\n/* AI 패치/액션의 things-scene in-place 적용기 — 순수 함수. 자체 모델러 셸을 가진 호스트\n * (예: operato-twin 의 트윈 모델러)가 같은 적용 규칙을 쓰도록 공개한다(중복 구현 금지). */\n\nexport * from './setting-let/board-view-setting-let.js'\nexport * from './setting-let/board-modeller-setting-let.js'\nexport * from './apptools/favorite-tool.js'\nexport * from './graphql/index.js'\nexport * from './viewparts/index.js'\n"]}
|
|
@@ -1,70 +1,62 @@
|
|
|
1
|
+
import '@operato/data-grist';
|
|
2
|
+
import '@material/web/icon/icon.js';
|
|
3
|
+
import '@material/web/button/text-button.js';
|
|
4
|
+
import '../board-list/board-thumb.js';
|
|
1
5
|
import '../viewparts/board-info.js';
|
|
2
6
|
import '../viewparts/group-info.js';
|
|
3
|
-
import '
|
|
4
|
-
import '../board-list/group-bar.js';
|
|
7
|
+
import { FetchOption } from '@operato/data-grist';
|
|
5
8
|
import { PageView } from '@operato/shell';
|
|
6
9
|
declare const BoardListPageBase: typeof PageView;
|
|
7
10
|
export declare class BoardListPage extends BoardListPageBase {
|
|
8
11
|
static styles: import("lit").CSSResult[];
|
|
9
|
-
groupId?: string;
|
|
10
12
|
groups: any[];
|
|
11
|
-
boards: any[];
|
|
12
13
|
favorites: any[];
|
|
13
|
-
|
|
14
|
+
gristConfig: any;
|
|
14
15
|
searchText: string;
|
|
15
|
-
|
|
16
|
-
private
|
|
17
|
-
private
|
|
18
|
-
private page?;
|
|
19
|
-
private _lastFetchTime?;
|
|
20
|
-
private _updatedBoardIds;
|
|
16
|
+
private creatable;
|
|
17
|
+
private currentGroupId;
|
|
18
|
+
private grist;
|
|
21
19
|
get context(): {
|
|
22
|
-
title:
|
|
23
|
-
icon: string;
|
|
24
|
-
text: string;
|
|
25
|
-
};
|
|
20
|
+
title: string;
|
|
26
21
|
search: {
|
|
22
|
+
placeholder: string;
|
|
27
23
|
handler: (search: any) => void;
|
|
28
24
|
value: string;
|
|
29
25
|
};
|
|
30
26
|
board_topmenu: boolean;
|
|
31
27
|
};
|
|
32
|
-
_infiniteScrollOptions: any;
|
|
33
|
-
constructor();
|
|
34
28
|
render(): import("lit-html").TemplateResult<1>;
|
|
29
|
+
pageInitialized(): Promise<void>;
|
|
30
|
+
fetchHandler({ page, limit, filters }: FetchOption): Promise<{
|
|
31
|
+
total: any;
|
|
32
|
+
records: any;
|
|
33
|
+
}>;
|
|
35
34
|
refresh(): Promise<void>;
|
|
36
|
-
|
|
37
|
-
getBoards({ page, limit }?: {
|
|
35
|
+
getBoards({ page, limit, groupId, types, states }?: {
|
|
38
36
|
page?: number | undefined;
|
|
39
|
-
limit?:
|
|
37
|
+
limit?: number | undefined;
|
|
38
|
+
groupId?: string | undefined;
|
|
39
|
+
types?: string[] | undefined;
|
|
40
|
+
states?: string[] | undefined;
|
|
40
41
|
}): Promise<any>;
|
|
41
42
|
/**
|
|
42
43
|
* favor/mywork 같이 "search text + pagination"만 받는 간단한 리스트 조회 공용 헬퍼.
|
|
43
44
|
* 그룹/타입 필터 등 복합 조건을 쓰는 일반 목록(getBoards)과 구분해 중복 제거.
|
|
44
45
|
*/
|
|
45
46
|
private _fetchSimpleBoardList;
|
|
46
|
-
getFavoriteBoards({ page, limit }?: {
|
|
47
|
+
getFavoriteBoards({ page, limit, types, states }?: {
|
|
47
48
|
page?: number | undefined;
|
|
48
|
-
limit?:
|
|
49
|
-
|
|
50
|
-
|
|
49
|
+
limit?: number | undefined;
|
|
50
|
+
types?: string[] | undefined;
|
|
51
|
+
states?: string[] | undefined;
|
|
52
|
+
}): Promise<any>;
|
|
53
|
+
getMyBoards({ page, limit, types, states }?: {
|
|
51
54
|
page?: number | undefined;
|
|
52
|
-
limit?:
|
|
53
|
-
|
|
55
|
+
limit?: number | undefined;
|
|
56
|
+
types?: string[] | undefined;
|
|
57
|
+
states?: string[] | undefined;
|
|
58
|
+
}): Promise<any>;
|
|
54
59
|
refreshBoards(): Promise<void>;
|
|
55
|
-
/**
|
|
56
|
-
* 컨텐츠가 스크롤 영역을 채우지 못하면 다음 페이지를 자동 로드한다.
|
|
57
|
-
*/
|
|
58
|
-
private _filling;
|
|
59
|
-
private fillViewport;
|
|
60
|
-
/**
|
|
61
|
-
* 기존 목록을 유지하면서 변경된 보드만 갱신한다.
|
|
62
|
-
* 스크롤 위치가 보존된다.
|
|
63
|
-
*/
|
|
64
|
-
incrementalRefresh(): Promise<void>;
|
|
65
|
-
appendBoards(): Promise<void>;
|
|
66
|
-
scrollAction(): Promise<void>;
|
|
67
|
-
pageInitialized(): Promise<void>;
|
|
68
60
|
pageUpdated(changes: any, lifecycle: any): Promise<void>;
|
|
69
61
|
private _unsubscribe?;
|
|
70
62
|
connectedCallback(): void;
|
|
@@ -81,9 +73,9 @@ export declare class BoardListPage extends BoardListPageBase {
|
|
|
81
73
|
files: any;
|
|
82
74
|
overwrite: any;
|
|
83
75
|
}): Promise<void>;
|
|
84
|
-
onReorderBoards({
|
|
85
|
-
|
|
86
|
-
movedId:
|
|
76
|
+
onReorderBoards({ ids, movedId }: {
|
|
77
|
+
ids: string[];
|
|
78
|
+
movedId: string;
|
|
87
79
|
}): Promise<void>;
|
|
88
80
|
onCreateBoard(board: any): Promise<void>;
|
|
89
81
|
onCloneBoard({ id, name, description, targetSubdomain, targetGroupId }: {
|
|
@@ -114,6 +106,11 @@ export declare class BoardListPage extends BoardListPageBase {
|
|
|
114
106
|
description: any;
|
|
115
107
|
visibility: any;
|
|
116
108
|
}): Promise<void>;
|
|
109
|
+
toggleFavorite(board: any): Promise<void>;
|
|
110
|
+
/** Replaces one record in the grist in place, so only that card re-renders. */
|
|
111
|
+
private patchRecord;
|
|
112
|
+
removeFavorite(boardId: any): Promise<void>;
|
|
113
|
+
addFavorite(boardId: any): Promise<void>;
|
|
117
114
|
refreshFavorites(): Promise<void>;
|
|
118
115
|
}
|
|
119
116
|
export {};
|