@dssp/supervision 1.0.0-alpha.27 → 1.0.0-alpha.28
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/pages/building-inspection/building-inspection-detail-drawing.js +1 -1
- package/dist-client/pages/building-inspection/building-inspection-detail-drawing.js.map +1 -1
- package/dist-client/pages/building-inspection/building-inspection-list.d.ts +6 -2
- package/dist-client/pages/building-inspection/building-inspection-list.js +83 -8
- package/dist-client/pages/building-inspection/building-inspection-list.js.map +1 -1
- package/dist-client/pages/building-inspection/component/daily-worklog-popup.d.ts +8 -3
- package/dist-client/pages/building-inspection/component/daily-worklog-popup.js +122 -45
- package/dist-client/pages/building-inspection/component/daily-worklog-popup.js.map +1 -1
- package/dist-client/pages/building-inspection/component/inspection-event-provider.d.ts +2 -1
- package/dist-client/pages/building-inspection/component/inspection-event-provider.js +39 -17
- package/dist-client/pages/building-inspection/component/inspection-event-provider.js.map +1 -1
- package/dist-client/route.d.ts +1 -1
- package/dist-client/tsconfig.tsbuildinfo +1 -1
- package/dist-server/service/building-inspection/building-inspection.d.ts +3 -0
- package/dist-server/service/building-inspection/building-inspection.js +10 -0
- package/dist-server/service/building-inspection/building-inspection.js.map +1 -1
- package/dist-server/service/building-inspection/index.d.ts +1 -1
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.d.ts +3 -5
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js +29 -71
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-mutation.js.map +1 -1
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.d.ts +2 -0
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.js +52 -2
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-query.js.map +1 -1
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.d.ts +10 -3
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.js +35 -8
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog-type.js.map +1 -1
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.d.ts +2 -0
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.js +6 -0
- package/dist-server/service/building-inspection-daily-worklog/building-inspection-daily-worklog.js.map +1 -1
- package/dist-server/service/index.d.ts +1 -1
- package/dist-server/tsconfig.tsbuildinfo +1 -1
- package/package.json +3 -3
|
@@ -2,20 +2,26 @@ import { __decorate, __metadata } from "tslib";
|
|
|
2
2
|
import '@material/web/button/elevated-button.js';
|
|
3
3
|
import '@material/web/icon/icon.js';
|
|
4
4
|
import { css, html, LitElement } from 'lit';
|
|
5
|
-
import { customElement,
|
|
5
|
+
import { customElement, property } from 'lit/decorators.js';
|
|
6
6
|
import { ScrollbarStyles } from '@operato/styles';
|
|
7
7
|
import gql from 'graphql-tag';
|
|
8
8
|
import { client } from '@operato/graphql';
|
|
9
9
|
import moment from 'moment-timezone';
|
|
10
|
+
import { notify } from '@operato/layout';
|
|
11
|
+
export var DailyWorklogMode;
|
|
12
|
+
(function (DailyWorklogMode) {
|
|
13
|
+
DailyWorklogMode["EDIT"] = "edit";
|
|
14
|
+
DailyWorklogMode["CREATE"] = "create";
|
|
15
|
+
})(DailyWorklogMode || (DailyWorklogMode = {}));
|
|
10
16
|
let DailyWorklogPopup = class DailyWorklogPopup extends LitElement {
|
|
11
17
|
constructor() {
|
|
12
18
|
super(...arguments);
|
|
13
19
|
this.dailyWorklog = {};
|
|
20
|
+
this.mode = DailyWorklogMode.CREATE;
|
|
14
21
|
this._addRow = () => {
|
|
15
|
-
this.dailyWorklog.worklogs
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
];
|
|
22
|
+
const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : [];
|
|
23
|
+
const newWorklogs = [...current, { constructionType: '', supervisoryTitle: '', supervisorContent: '' }];
|
|
24
|
+
this.dailyWorklog = Object.assign(Object.assign({}, this.dailyWorklog), { worklogs: newWorklogs });
|
|
19
25
|
};
|
|
20
26
|
}
|
|
21
27
|
render() {
|
|
@@ -53,7 +59,7 @@ let DailyWorklogPopup = class DailyWorklogPopup extends LitElement {
|
|
|
53
59
|
<th class="col-job">공종</th>
|
|
54
60
|
<th>감리확인사항</th>
|
|
55
61
|
<th>감리내용</th>
|
|
56
|
-
<th
|
|
62
|
+
<th class="col-action">삭제</th>
|
|
57
63
|
</tr>
|
|
58
64
|
</thead>
|
|
59
65
|
<tbody>
|
|
@@ -80,13 +86,13 @@ let DailyWorklogPopup = class DailyWorklogPopup extends LitElement {
|
|
|
80
86
|
@input=${(e) => this._updateWorklogs(i, 'supervisorContent', e.target.value)}
|
|
81
87
|
/>
|
|
82
88
|
</td>
|
|
83
|
-
<td
|
|
84
|
-
<md-icon @click=${() => this._remove(i)}
|
|
89
|
+
<td class="action">
|
|
90
|
+
<md-icon class="clickable" @click=${() => this._remove(i)}>delete</md-icon>
|
|
85
91
|
</td>
|
|
86
92
|
</tr>
|
|
87
93
|
`)}
|
|
88
94
|
<tr>
|
|
89
|
-
<td colspan="4"
|
|
95
|
+
<td colspan="4" class="add-row">
|
|
90
96
|
<md-elevated-button @click=${this._addRow}><md-icon slot="icon">add</md-icon>행 추가</md-elevated-button>
|
|
91
97
|
</td>
|
|
92
98
|
</tr>
|
|
@@ -117,55 +123,80 @@ let DailyWorklogPopup = class DailyWorklogPopup extends LitElement {
|
|
|
117
123
|
</div>
|
|
118
124
|
|
|
119
125
|
<div class="footer">
|
|
120
|
-
|
|
126
|
+
${this.mode === DailyWorklogMode.CREATE
|
|
127
|
+
? html `<md-elevated-button blue @click=${this._create}><md-icon slot="icon">save</md-icon>저장</md-elevated-button>`
|
|
128
|
+
: html `<md-elevated-button green @click=${this._update}><md-icon slot="icon">save</md-icon>수정</md-elevated-button>`}
|
|
121
129
|
</div>
|
|
122
130
|
</div>
|
|
123
131
|
`;
|
|
124
132
|
}
|
|
125
133
|
connectedCallback() {
|
|
126
134
|
super.connectedCallback();
|
|
127
|
-
this._fetch();
|
|
128
|
-
}
|
|
129
|
-
async _fetch() {
|
|
130
|
-
var _a, _b;
|
|
131
|
-
if (!((_a = this.project) === null || _a === void 0 ? void 0 : _a.id) || !this.date)
|
|
132
|
-
return;
|
|
133
|
-
const response = await client.query({
|
|
134
|
-
query: gql `
|
|
135
|
-
query ($projectId: String!, $date: String!) {
|
|
136
|
-
buildingInspectionDailyWorklogByProjectIdAndDate(projectId: $projectId, date: $date) {
|
|
137
|
-
id
|
|
138
|
-
date
|
|
139
|
-
documentNo
|
|
140
|
-
worklogs
|
|
141
|
-
memo
|
|
142
|
-
directiveMemo
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
`,
|
|
146
|
-
variables: { projectId: this.project.id, date: this.date }
|
|
147
|
-
});
|
|
148
|
-
const data = (_b = response.data) === null || _b === void 0 ? void 0 : _b.buildingInspectionDailyWorklogByProjectIdAndDate;
|
|
149
|
-
if (!data)
|
|
150
|
-
return;
|
|
151
|
-
this.dailyWorklog = data;
|
|
152
135
|
}
|
|
153
136
|
_formatSelectedDate() {
|
|
154
137
|
return moment.tz(this.date, 'Asia/Seoul').locale('ko').format('YYYY-MM-DD (dddd)');
|
|
155
138
|
}
|
|
156
139
|
_updateWorklogs(index, field, value) {
|
|
157
|
-
const
|
|
140
|
+
const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : [];
|
|
141
|
+
const newWorklogs = [...current];
|
|
158
142
|
newWorklogs[index] = Object.assign(Object.assign({}, newWorklogs[index]), { [field]: value });
|
|
159
|
-
this.dailyWorklog.worklogs
|
|
143
|
+
this.dailyWorklog = Object.assign(Object.assign({}, this.dailyWorklog), { worklogs: newWorklogs });
|
|
160
144
|
}
|
|
161
145
|
_remove(index) {
|
|
162
|
-
const
|
|
146
|
+
const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : [];
|
|
147
|
+
const newWorklogs = [...current];
|
|
163
148
|
newWorklogs.splice(index, 1);
|
|
164
|
-
this.dailyWorklog.worklogs
|
|
149
|
+
this.dailyWorklog = Object.assign(Object.assign({}, this.dailyWorklog), { worklogs: newWorklogs });
|
|
150
|
+
}
|
|
151
|
+
async _create() {
|
|
152
|
+
var _a;
|
|
153
|
+
const response = await client.mutate({
|
|
154
|
+
mutation: gql `
|
|
155
|
+
mutation CreateBuildingInspectionDailyWorklog($patch: BuildingInspectionDailyWorklogNew!) {
|
|
156
|
+
createBuildingInspectionDailyWorklog(patch: $patch) {
|
|
157
|
+
id
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
`,
|
|
161
|
+
variables: {
|
|
162
|
+
patch: {
|
|
163
|
+
memo: this.dailyWorklog.memo,
|
|
164
|
+
directiveMemo: this.dailyWorklog.directiveMemo,
|
|
165
|
+
worklogs: this.dailyWorklog.worklogs,
|
|
166
|
+
projectId: (_a = this.project) === null || _a === void 0 ? void 0 : _a.id,
|
|
167
|
+
date: this.date,
|
|
168
|
+
buildingInspectionIds: this.dailyWorklog.buildingInspections.map(v => v.id)
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
if (!response.errors) {
|
|
173
|
+
this.dispatchEvent(new CustomEvent('createdDailyWorklog', { detail: { date: this.date } }));
|
|
174
|
+
notify({ message: '일일 업무일지가 생성되었습니다.', level: 'info' });
|
|
175
|
+
history.back();
|
|
176
|
+
}
|
|
165
177
|
}
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
178
|
+
async _update() {
|
|
179
|
+
const response = await client.mutate({
|
|
180
|
+
mutation: gql `
|
|
181
|
+
mutation UpdateBuildingInspectionDailyWorklog($patch: BuildingInspectionDailyWorklogPatch!) {
|
|
182
|
+
updateBuildingInspectionDailyWorklog(patch: $patch) {
|
|
183
|
+
id
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
`,
|
|
187
|
+
variables: {
|
|
188
|
+
patch: {
|
|
189
|
+
id: this.dailyWorklog.id,
|
|
190
|
+
worklogs: this.dailyWorklog.worklogs,
|
|
191
|
+
memo: this.dailyWorklog.memo,
|
|
192
|
+
directiveMemo: this.dailyWorklog.directiveMemo
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
});
|
|
196
|
+
if (!response.errors) {
|
|
197
|
+
notify({ message: '일일 업무일지가 수정되었습니다.', level: 'info' });
|
|
198
|
+
history.back();
|
|
199
|
+
}
|
|
169
200
|
}
|
|
170
201
|
};
|
|
171
202
|
DailyWorklogPopup.styles = [
|
|
@@ -262,7 +293,7 @@ DailyWorklogPopup.styles = [
|
|
|
262
293
|
.work-table td {
|
|
263
294
|
border: 1px solid #333;
|
|
264
295
|
padding: 8px;
|
|
265
|
-
vertical-align:
|
|
296
|
+
vertical-align: middle;
|
|
266
297
|
}
|
|
267
298
|
|
|
268
299
|
.work-table thead th {
|
|
@@ -274,6 +305,15 @@ DailyWorklogPopup.styles = [
|
|
|
274
305
|
width: 140px;
|
|
275
306
|
}
|
|
276
307
|
|
|
308
|
+
.work-table .col-action {
|
|
309
|
+
width: 60px;
|
|
310
|
+
text-align: center;
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
.work-table td.action {
|
|
314
|
+
text-align: center;
|
|
315
|
+
}
|
|
316
|
+
|
|
277
317
|
.work-section {
|
|
278
318
|
display: grid;
|
|
279
319
|
grid-template-columns: 40px 1fr;
|
|
@@ -299,7 +339,7 @@ DailyWorklogPopup.styles = [
|
|
|
299
339
|
}
|
|
300
340
|
|
|
301
341
|
.date-display {
|
|
302
|
-
font-size:
|
|
342
|
+
font-size: 14px;
|
|
303
343
|
font-weight: 700;
|
|
304
344
|
margin-left: 15px;
|
|
305
345
|
}
|
|
@@ -333,6 +373,39 @@ DailyWorklogPopup.styles = [
|
|
|
333
373
|
padding: 12px 0;
|
|
334
374
|
border-top: 1px solid #ddd;
|
|
335
375
|
}
|
|
376
|
+
|
|
377
|
+
.add-row {
|
|
378
|
+
text-align: center;
|
|
379
|
+
background: #fafafa;
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
.clickable {
|
|
383
|
+
cursor: pointer;
|
|
384
|
+
}
|
|
385
|
+
|
|
386
|
+
md-elevated-button[blue] {
|
|
387
|
+
--md-elevated-button-container-color: #0595e5;
|
|
388
|
+
--md-elevated-button-label-text-color: var(--md-sys-color-on-primary);
|
|
389
|
+
--md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);
|
|
390
|
+
--md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);
|
|
391
|
+
--md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);
|
|
392
|
+
--md-elevated-button-icon-color: var(--md-sys-color-on-primary);
|
|
393
|
+
--md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);
|
|
394
|
+
--md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);
|
|
395
|
+
--md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);
|
|
396
|
+
}
|
|
397
|
+
|
|
398
|
+
md-elevated-button[green] {
|
|
399
|
+
--md-elevated-button-container-color: #008000;
|
|
400
|
+
--md-elevated-button-label-text-color: var(--md-sys-color-on-primary);
|
|
401
|
+
--md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);
|
|
402
|
+
--md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);
|
|
403
|
+
--md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);
|
|
404
|
+
--md-elevated-button-icon-color: var(--md-sys-color-on-primary);
|
|
405
|
+
--md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);
|
|
406
|
+
--md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);
|
|
407
|
+
--md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);
|
|
408
|
+
}
|
|
336
409
|
`
|
|
337
410
|
];
|
|
338
411
|
__decorate([
|
|
@@ -344,9 +417,13 @@ __decorate([
|
|
|
344
417
|
__metadata("design:type", Object)
|
|
345
418
|
], DailyWorklogPopup.prototype, "project", void 0);
|
|
346
419
|
__decorate([
|
|
347
|
-
|
|
420
|
+
property({ type: Object }),
|
|
348
421
|
__metadata("design:type", Object)
|
|
349
422
|
], DailyWorklogPopup.prototype, "dailyWorklog", void 0);
|
|
423
|
+
__decorate([
|
|
424
|
+
property({ type: String }),
|
|
425
|
+
__metadata("design:type", String)
|
|
426
|
+
], DailyWorklogPopup.prototype, "mode", void 0);
|
|
350
427
|
DailyWorklogPopup = __decorate([
|
|
351
428
|
customElement('daily-worklog-popup')
|
|
352
429
|
], DailyWorklogPopup);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"daily-worklog-popup.js","sourceRoot":"","sources":["../../../../client/pages/building-inspection/component/daily-worklog-popup.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/elevated-button.js'\nimport '@material/web/icon/icon.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, state, property } from 'lit/decorators.js'\nimport { ScrollbarStyles } from '@operato/styles'\nimport gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\nimport moment from 'moment-timezone'\n\n@customElement('daily-worklog-popup')\nexport class DailyWorklogPopup extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: block;\n background: #fff;\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n\n .container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 20px;\n height: 100%;\n box-sizing: border-box;\n }\n\n .sheet {\n flex: 1;\n overflow: auto;\n background: #fff;\n border: 2px solid #333;\n }\n\n .title {\n text-align: center;\n padding: 16px 12px;\n border-bottom: 1px solid #333;\n font-weight: 800;\n font-size: 18px;\n letter-spacing: 1px;\n }\n\n .body {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n }\n\n .header-table,\n .work-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .header-table th,\n .header-table td {\n border: 1px solid #333;\n padding: 8px;\n font-size: 14px;\n text-align: left;\n }\n\n .header-table th {\n width: 140px;\n background-color: #f5f5f5;\n white-space: nowrap;\n }\n\n .inline {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n }\n\n .inline > * {\n width: 100%;\n }\n\n .inline.readonly {\n align-items: center;\n grid-template-columns: auto;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .field label {\n font-size: 12px;\n font-weight: 600;\n color: #333;\n }\n\n .work-table th,\n .work-table td {\n border: 1px solid #333;\n padding: 8px;\n vertical-align: top;\n }\n\n .work-table thead th {\n background-color: #f5f5f5;\n text-align: center;\n }\n\n .work-table .col-job {\n width: 140px;\n }\n\n .work-section {\n display: grid;\n grid-template-columns: 40px 1fr;\n gap: 0;\n align-items: stretch;\n }\n\n .left-title {\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid #333;\n border-right: none;\n background-color: #f5f5f5;\n writing-mode: vertical-rl;\n text-orientation: upright;\n font-weight: 600;\n letter-spacing: 2px;\n }\n\n .construction-name {\n width: 50% !important;\n }\n\n .date-display {\n font-size: 15px;\n font-weight: 700;\n margin-left: 15px;\n }\n\n input[type='text'],\n input[type='date'],\n textarea {\n width: 100%;\n box-sizing: border-box;\n border: 1px solid #ddd;\n padding: 8px;\n font-size: 14px;\n border-radius: 4px;\n background: #fff;\n }\n\n textarea.small {\n min-height: 80px;\n resize: vertical;\n }\n\n .section-title {\n font-weight: bold;\n margin-top: 4px;\n margin-bottom: 4px;\n }\n\n .footer {\n display: flex;\n justify-content: center;\n padding: 12px 0;\n border-top: 1px solid #ddd;\n }\n `\n ]\n\n @property({ type: String }) date?: string\n @property({ type: Object }) project?: any\n\n @state() private dailyWorklog: any = {}\n\n render() {\n return html`\n <div class=\"container\">\n <div class=\"sheet\">\n <div class=\"title\">공사감리일지</div>\n <div class=\"body\">\n <table class=\"header-table\">\n <tr>\n <th>문서번호</th>\n <td colspan=\"3\">${this.dailyWorklog?.documentNo || ''}</td>\n </tr>\n <tr>\n <th>공종별 감리 책임자</th>\n <td></td>\n <th>총괄 감리 책임자</th>\n <td></td>\n </tr>\n <tr>\n <th>공사명</th>\n <td colspan=\"3\">\n <span class=\"construction-name\">${this.project?.name || ''}</span>\n <span class=\"date-display\">${this.dailyWorklog.date || this._formatSelectedDate()}</span>\n </td>\n </tr>\n </table>\n\n <div class=\"work-section\">\n <div class=\"left-title\">작업사항</div>\n <table class=\"work-table\">\n <thead>\n <tr>\n <th class=\"col-job\">공종</th>\n <th>감리확인사항</th>\n <th>감리내용</th>\n <th style=\"width:60px\">삭제</th>\n </tr>\n </thead>\n <tbody>\n ${this.dailyWorklog.worklogs?.map(\n (r, i) => html`\n <tr>\n <td>\n <input\n type=\"text\"\n .value=${r.constructionType}\n @input=${(e: any) => this._updateWorklogs(i, 'constructionType', e.target.value)}\n />\n </td>\n <td>\n <input\n type=\"text\"\n .value=${r.supervisoryTitle}\n @input=${(e: any) => this._updateWorklogs(i, 'supervisoryTitle', e.target.value)}\n />\n </td>\n <td>\n <input\n type=\"text\"\n .value=${r.supervisorContent}\n @input=${(e: any) => this._updateWorklogs(i, 'supervisorContent', e.target.value)}\n />\n </td>\n <td style=\"text-align:center\">\n <md-icon @click=${() => this._remove(i)} style=\"cursor:pointer\">delete</md-icon>\n </td>\n </tr>\n `\n )}\n <tr>\n <td colspan=\"4\" style=\"text-align:center; background:#fafafa\">\n <md-elevated-button @click=${this._addRow}><md-icon slot=\"icon\">add</md-icon>행 추가</md-elevated-button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div>\n <div class=\"section-title\">특기사항</div>\n <textarea\n class=\"small\"\n placeholder=\"특기사항을 입력하세요.\"\n .value=${this.dailyWorklog.memo || ''}\n @input=${(e: any) => (this.dailyWorklog.memo = e.target.value)}\n ></textarea>\n </div>\n\n <div>\n <div class=\"section-title\">지적사항 및 처리결과</div>\n <textarea\n class=\"small\"\n placeholder=\"지적사항 및 처리결과를 입력하세요.\"\n .value=${this.dailyWorklog.directiveMemo || ''}\n @input=${(e: any) => (this.dailyWorklog.directiveMemo = e.target.value)}\n ></textarea>\n </div>\n </div>\n </div>\n\n <div class=\"footer\">\n <md-elevated-button @click=${this._close}><md-icon slot=\"icon\">close</md-icon>닫기</md-elevated-button>\n </div>\n </div>\n `\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n this._fetch()\n }\n\n private async _fetch() {\n if (!this.project?.id || !this.date) return\n\n const response = await client.query({\n query: gql`\n query ($projectId: String!, $date: String!) {\n buildingInspectionDailyWorklogByProjectIdAndDate(projectId: $projectId, date: $date) {\n id\n date\n documentNo\n worklogs\n memo\n directiveMemo\n }\n }\n `,\n variables: { projectId: this.project.id, date: this.date }\n })\n\n const data = response.data?.buildingInspectionDailyWorklogByProjectIdAndDate\n if (!data) return\n\n this.dailyWorklog = data\n }\n\n private _formatSelectedDate(): string {\n return moment.tz(this.date, 'Asia/Seoul').locale('ko').format('YYYY-MM-DD (dddd)')\n }\n\n private _updateWorklogs(index: number, field: string, value: string) {\n const newWorklogs = [...this.dailyWorklog.worklogs]\n newWorklogs[index] = { ...newWorklogs[index], [field]: value }\n this.dailyWorklog.worklogs = newWorklogs\n }\n\n private _addRow = () => {\n this.dailyWorklog.worklogs = [\n ...this.dailyWorklog.worklogs,\n { constructionType: '', supervisoryTitle: '', supervisorContent: '' }\n ]\n }\n\n private _remove(index: number) {\n const newWorklogs = [...this.dailyWorklog.worklogs]\n newWorklogs.splice(index, 1)\n this.dailyWorklog.worklogs = newWorklogs\n }\n\n private _close() {\n this.dispatchEvent(new CustomEvent('popup-close', { bubbles: true }))\n history.back()\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"daily-worklog-popup.js","sourceRoot":"","sources":["../../../../client/pages/building-inspection/component/daily-worklog-popup.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/button/elevated-button.js'\nimport '@material/web/icon/icon.js'\n\nimport { css, html, LitElement } from 'lit'\nimport { customElement, state, property } from 'lit/decorators.js'\nimport { ScrollbarStyles } from '@operato/styles'\nimport gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\nimport moment from 'moment-timezone'\nimport { notify } from '@operato/layout'\n\nexport enum DailyWorklogMode {\n EDIT = 'edit',\n CREATE = 'create'\n}\n\n@customElement('daily-worklog-popup')\nexport class DailyWorklogPopup extends LitElement {\n static styles = [\n ScrollbarStyles,\n css`\n :host {\n display: block;\n background: #fff;\n width: 100%;\n height: 100%;\n overflow: hidden;\n }\n\n .container {\n display: flex;\n flex-direction: column;\n gap: 12px;\n padding: 20px;\n height: 100%;\n box-sizing: border-box;\n }\n\n .sheet {\n flex: 1;\n overflow: auto;\n background: #fff;\n border: 2px solid #333;\n }\n\n .title {\n text-align: center;\n padding: 16px 12px;\n border-bottom: 1px solid #333;\n font-weight: 800;\n font-size: 18px;\n letter-spacing: 1px;\n }\n\n .body {\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 14px;\n }\n\n .header-table,\n .work-table {\n width: 100%;\n border-collapse: collapse;\n }\n\n .header-table th,\n .header-table td {\n border: 1px solid #333;\n padding: 8px;\n font-size: 14px;\n text-align: left;\n }\n\n .header-table th {\n width: 140px;\n background-color: #f5f5f5;\n white-space: nowrap;\n }\n\n .inline {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 8px;\n }\n\n .inline > * {\n width: 100%;\n }\n\n .inline.readonly {\n align-items: center;\n grid-template-columns: auto;\n }\n\n .field {\n display: flex;\n flex-direction: column;\n gap: 4px;\n }\n\n .field label {\n font-size: 12px;\n font-weight: 600;\n color: #333;\n }\n\n .work-table th,\n .work-table td {\n border: 1px solid #333;\n padding: 8px;\n vertical-align: middle;\n }\n\n .work-table thead th {\n background-color: #f5f5f5;\n text-align: center;\n }\n\n .work-table .col-job {\n width: 140px;\n }\n\n .work-table .col-action {\n width: 60px;\n text-align: center;\n }\n\n .work-table td.action {\n text-align: center;\n }\n\n .work-section {\n display: grid;\n grid-template-columns: 40px 1fr;\n gap: 0;\n align-items: stretch;\n }\n\n .left-title {\n display: flex;\n align-items: center;\n justify-content: center;\n border: 1px solid #333;\n border-right: none;\n background-color: #f5f5f5;\n writing-mode: vertical-rl;\n text-orientation: upright;\n font-weight: 600;\n letter-spacing: 2px;\n }\n\n .construction-name {\n width: 50% !important;\n }\n\n .date-display {\n font-size: 14px;\n font-weight: 700;\n margin-left: 15px;\n }\n\n input[type='text'],\n input[type='date'],\n textarea {\n width: 100%;\n box-sizing: border-box;\n border: 1px solid #ddd;\n padding: 8px;\n font-size: 14px;\n border-radius: 4px;\n background: #fff;\n }\n\n textarea.small {\n min-height: 80px;\n resize: vertical;\n }\n\n .section-title {\n font-weight: bold;\n margin-top: 4px;\n margin-bottom: 4px;\n }\n\n .footer {\n display: flex;\n justify-content: center;\n padding: 12px 0;\n border-top: 1px solid #ddd;\n }\n\n .add-row {\n text-align: center;\n background: #fafafa;\n }\n\n .clickable {\n cursor: pointer;\n }\n\n md-elevated-button[blue] {\n --md-elevated-button-container-color: #0595e5;\n --md-elevated-button-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);\n }\n\n md-elevated-button[green] {\n --md-elevated-button-container-color: #008000;\n --md-elevated-button-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-hover-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-pressed-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-focus-label-text-color: var(--md-sys-color-on-primary);\n --md-elevated-button-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-hover-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-pressed-icon-color: var(--md-sys-color-on-primary);\n --md-elevated-button-focus-icon-color: var(--md-sys-color-on-primary);\n }\n `\n ]\n\n @property({ type: String }) date?: string\n @property({ type: Object }) project?: any\n @property({ type: Object }) dailyWorklog: any = {}\n @property({ type: String }) mode?: DailyWorklogMode = DailyWorklogMode.CREATE\n\n render() {\n return html`\n <div class=\"container\">\n <div class=\"sheet\">\n <div class=\"title\">공사감리일지</div>\n <div class=\"body\">\n <table class=\"header-table\">\n <tr>\n <th>문서번호</th>\n <td colspan=\"3\">${this.dailyWorklog?.documentNo || ''}</td>\n </tr>\n <tr>\n <th>공종별 감리 책임자</th>\n <td></td>\n <th>총괄 감리 책임자</th>\n <td></td>\n </tr>\n <tr>\n <th>공사명</th>\n <td colspan=\"3\">\n <span class=\"construction-name\">${this.project?.name || ''}</span>\n <span class=\"date-display\">${this.dailyWorklog.date || this._formatSelectedDate()}</span>\n </td>\n </tr>\n </table>\n\n <div class=\"work-section\">\n <div class=\"left-title\">작업사항</div>\n <table class=\"work-table\">\n <thead>\n <tr>\n <th class=\"col-job\">공종</th>\n <th>감리확인사항</th>\n <th>감리내용</th>\n <th class=\"col-action\">삭제</th>\n </tr>\n </thead>\n <tbody>\n ${this.dailyWorklog.worklogs?.map(\n (r, i) => html`\n <tr>\n <td>\n <input\n type=\"text\"\n .value=${r.constructionType}\n @input=${(e: any) => this._updateWorklogs(i, 'constructionType', e.target.value)}\n />\n </td>\n <td>\n <input\n type=\"text\"\n .value=${r.supervisoryTitle}\n @input=${(e: any) => this._updateWorklogs(i, 'supervisoryTitle', e.target.value)}\n />\n </td>\n <td>\n <input\n type=\"text\"\n .value=${r.supervisorContent}\n @input=${(e: any) => this._updateWorklogs(i, 'supervisorContent', e.target.value)}\n />\n </td>\n <td class=\"action\">\n <md-icon class=\"clickable\" @click=${() => this._remove(i)}>delete</md-icon>\n </td>\n </tr>\n `\n )}\n <tr>\n <td colspan=\"4\" class=\"add-row\">\n <md-elevated-button @click=${this._addRow}><md-icon slot=\"icon\">add</md-icon>행 추가</md-elevated-button>\n </td>\n </tr>\n </tbody>\n </table>\n </div>\n\n <div>\n <div class=\"section-title\">특기사항</div>\n <textarea\n class=\"small\"\n placeholder=\"특기사항을 입력하세요.\"\n .value=${this.dailyWorklog.memo || ''}\n @input=${(e: any) => (this.dailyWorklog.memo = e.target.value)}\n ></textarea>\n </div>\n\n <div>\n <div class=\"section-title\">지적사항 및 처리결과</div>\n <textarea\n class=\"small\"\n placeholder=\"지적사항 및 처리결과를 입력하세요.\"\n .value=${this.dailyWorklog.directiveMemo || ''}\n @input=${(e: any) => (this.dailyWorklog.directiveMemo = e.target.value)}\n ></textarea>\n </div>\n </div>\n </div>\n\n <div class=\"footer\">\n ${this.mode === DailyWorklogMode.CREATE\n ? html`<md-elevated-button blue @click=${this._create}><md-icon slot=\"icon\">save</md-icon>저장</md-elevated-button>`\n : html`<md-elevated-button green @click=${this._update}><md-icon slot=\"icon\">save</md-icon>수정</md-elevated-button>`}\n </div>\n </div>\n `\n }\n\n connectedCallback(): void {\n super.connectedCallback()\n }\n\n private _formatSelectedDate(): string {\n return moment.tz(this.date, 'Asia/Seoul').locale('ko').format('YYYY-MM-DD (dddd)')\n }\n\n private _updateWorklogs(index: number, field: string, value: string) {\n const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : []\n const newWorklogs = [...current]\n newWorklogs[index] = { ...newWorklogs[index], [field]: value }\n this.dailyWorklog = { ...this.dailyWorklog, worklogs: newWorklogs }\n }\n\n private _addRow = () => {\n const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : []\n const newWorklogs = [...current, { constructionType: '', supervisoryTitle: '', supervisorContent: '' }]\n this.dailyWorklog = { ...this.dailyWorklog, worklogs: newWorklogs }\n }\n\n private _remove(index: number) {\n const current = Array.isArray(this.dailyWorklog.worklogs) ? this.dailyWorklog.worklogs : []\n const newWorklogs = [...current]\n newWorklogs.splice(index, 1)\n this.dailyWorklog = { ...this.dailyWorklog, worklogs: newWorklogs }\n }\n\n private async _create() {\n const response = await client.mutate({\n mutation: gql`\n mutation CreateBuildingInspectionDailyWorklog($patch: BuildingInspectionDailyWorklogNew!) {\n createBuildingInspectionDailyWorklog(patch: $patch) {\n id\n }\n }\n `,\n variables: {\n patch: {\n memo: this.dailyWorklog.memo,\n directiveMemo: this.dailyWorklog.directiveMemo,\n worklogs: this.dailyWorklog.worklogs,\n projectId: this.project?.id,\n date: this.date,\n buildingInspectionIds: this.dailyWorklog.buildingInspections.map(v => v.id)\n }\n }\n })\n\n if (!response.errors) {\n this.dispatchEvent(new CustomEvent('createdDailyWorklog', { detail: { date: this.date } }))\n notify({ message: '일일 업무일지가 생성되었습니다.', level: 'info' })\n history.back()\n }\n }\n\n private async _update() {\n const response = await client.mutate({\n mutation: gql`\n mutation UpdateBuildingInspectionDailyWorklog($patch: BuildingInspectionDailyWorklogPatch!) {\n updateBuildingInspectionDailyWorklog(patch: $patch) {\n id\n }\n }\n `,\n variables: {\n patch: {\n id: this.dailyWorklog.id,\n worklogs: this.dailyWorklog.worklogs,\n memo: this.dailyWorklog.memo,\n directiveMemo: this.dailyWorklog.directiveMemo\n }\n }\n })\n\n if (!response.errors) {\n notify({ message: '일일 업무일지가 수정되었습니다.', level: 'info' })\n history.back()\n }\n }\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { BizEvent, CALENDAR, EventProvider } from '@operato/event-view';
|
|
2
2
|
export declare class InspectionEventProvider implements EventProvider {
|
|
3
3
|
buildingLevelId: {};
|
|
4
|
-
|
|
4
|
+
projectId: string;
|
|
5
|
+
constructor(buildingLevelId?: string, projectId?: string);
|
|
5
6
|
fetchEventsForCalendar(calendar: CALENDAR): Promise<Map<Date, BizEvent[]>>;
|
|
6
7
|
private getCalendarTemplate;
|
|
7
8
|
}
|
|
@@ -1,19 +1,27 @@
|
|
|
1
1
|
import { html } from 'lit';
|
|
2
2
|
import gql from 'graphql-tag';
|
|
3
3
|
import { client } from '@operato/graphql';
|
|
4
|
+
import moment from 'moment-timezone';
|
|
4
5
|
export class InspectionEventProvider {
|
|
5
|
-
constructor(buildingLevelId = '') {
|
|
6
|
+
constructor(buildingLevelId = '', projectId = '') {
|
|
6
7
|
this.buildingLevelId = {};
|
|
8
|
+
this.projectId = '';
|
|
7
9
|
this.buildingLevelId = buildingLevelId;
|
|
10
|
+
this.projectId = projectId;
|
|
8
11
|
}
|
|
9
12
|
async fetchEventsForCalendar(calendar) {
|
|
10
|
-
var _a;
|
|
13
|
+
var _a, _b;
|
|
11
14
|
const result = new Map();
|
|
12
|
-
const startDate = calendar[0]['date']
|
|
13
|
-
const endDate = calendar[calendar.length - 1]['date']
|
|
15
|
+
const startDate = moment(calendar[0]['date']).format('YYYY-MM-DD');
|
|
16
|
+
const endDate = moment(calendar[calendar.length - 1]['date']).format('YYYY-MM-DD');
|
|
14
17
|
const response = await client.query({
|
|
15
18
|
query: gql `
|
|
16
|
-
query BuildingInspectionDateSummaryOfLevelAndPeriod(
|
|
19
|
+
query BuildingInspectionDateSummaryOfLevelAndPeriod(
|
|
20
|
+
$buildingLevelId: String!
|
|
21
|
+
$startDate: String!
|
|
22
|
+
$endDate: String!
|
|
23
|
+
$projectId: String!
|
|
24
|
+
) {
|
|
17
25
|
buildingInspectionDateSummaryOfLevelAndPeriod(
|
|
18
26
|
buildingLevelId: $buildingLevelId
|
|
19
27
|
startDate: $startDate
|
|
@@ -25,30 +33,44 @@ export class InspectionEventProvider {
|
|
|
25
33
|
pass
|
|
26
34
|
fail
|
|
27
35
|
}
|
|
36
|
+
dailyWorklogDatesOfProject(projectId: $projectId, startDate: $startDate, endDate: $endDate) {
|
|
37
|
+
id
|
|
38
|
+
date
|
|
39
|
+
}
|
|
28
40
|
}
|
|
29
41
|
`,
|
|
30
42
|
variables: {
|
|
31
43
|
buildingLevelId: this.buildingLevelId,
|
|
44
|
+
projectId: this.projectId,
|
|
32
45
|
startDate,
|
|
33
46
|
endDate
|
|
34
47
|
}
|
|
35
48
|
});
|
|
36
|
-
// if (response.errors) return null
|
|
37
49
|
const calendarData = this.getCalendarTemplate((_a = response.data) === null || _a === void 0 ? void 0 : _a.buildingInspectionDateSummaryOfLevelAndPeriod);
|
|
50
|
+
const worklogDates = ((_b = response.data) === null || _b === void 0 ? void 0 : _b.dailyWorklogDatesOfProject.map(v => v.date)) || [];
|
|
51
|
+
const worklogSet = new Set(worklogDates);
|
|
38
52
|
calendar.forEach(({ date }) => {
|
|
39
53
|
const formattedDate = date.toLocaleDateString('en-CA'); // 'en-CA'는 'YYYY-MM-DD' 형식으로 반환됩니다.
|
|
40
54
|
const template = calendarData[formattedDate];
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
55
|
+
const hasWorklog = worklogSet.has(formattedDate);
|
|
56
|
+
if (template || hasWorklog) {
|
|
57
|
+
result.set(date, [
|
|
58
|
+
{
|
|
59
|
+
due: formattedDate,
|
|
60
|
+
template: html `
|
|
61
|
+
<div style="display:grid;grid-template-columns:repeat(2,1fr);padding-inline:7px;align-items:center;gap:4px;">
|
|
62
|
+
${template || html ``}
|
|
63
|
+
${hasWorklog
|
|
64
|
+
? html `<div style="justify-self:end"><md-icon style="color:#008000;">description</md-icon></div>`
|
|
65
|
+
: html ``}
|
|
66
|
+
</div>
|
|
67
|
+
`,
|
|
68
|
+
title: '',
|
|
69
|
+
color: '',
|
|
70
|
+
clickEvent: e => console.log('calendar click', formattedDate)
|
|
71
|
+
}
|
|
72
|
+
]);
|
|
73
|
+
}
|
|
52
74
|
});
|
|
53
75
|
return result;
|
|
54
76
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"inspection-event-provider.js","sourceRoot":"","sources":["../../../../client/pages/building-inspection/component/inspection-event-provider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAkB,MAAM,KAAK,CAAA;AAC1C,OAAO,GAAG,MAAM,aAAa,CAAA;AAC7B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"inspection-event-provider.js","sourceRoot":"","sources":["../../../../client/pages/building-inspection/component/inspection-event-provider.ts"],"names":[],"mappings":"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","sourcesContent":["import { BizEvent, CALENDAR, EventProvider } from '@operato/event-view'\nimport { html, TemplateResult } from 'lit'\nimport gql from 'graphql-tag'\nimport { client } from '@operato/graphql'\nimport moment from 'moment-timezone'\n\nexport class InspectionEventProvider implements EventProvider {\n buildingLevelId = {}\n projectId: string = ''\n\n constructor(buildingLevelId: string = '', projectId: string = '') {\n this.buildingLevelId = buildingLevelId\n this.projectId = projectId\n }\n\n async fetchEventsForCalendar(calendar: CALENDAR): Promise<Map<Date, BizEvent[]>> {\n const result = new Map<Date, BizEvent[]>()\n const startDate = moment(calendar[0]['date']).format('YYYY-MM-DD')\n const endDate = moment(calendar[calendar.length - 1]['date']).format('YYYY-MM-DD')\n\n const response = await client.query({\n query: gql`\n query BuildingInspectionDateSummaryOfLevelAndPeriod(\n $buildingLevelId: String!\n $startDate: String!\n $endDate: String!\n $projectId: String!\n ) {\n buildingInspectionDateSummaryOfLevelAndPeriod(\n buildingLevelId: $buildingLevelId\n startDate: $startDate\n endDate: $endDate\n ) {\n requestDate\n wait\n request\n pass\n fail\n }\n dailyWorklogDatesOfProject(projectId: $projectId, startDate: $startDate, endDate: $endDate) {\n id\n date\n }\n }\n `,\n variables: {\n buildingLevelId: this.buildingLevelId,\n projectId: this.projectId,\n startDate,\n endDate\n }\n })\n\n const calendarData = this.getCalendarTemplate(response.data?.buildingInspectionDateSummaryOfLevelAndPeriod)\n const worklogDates: string[] = response.data?.dailyWorklogDatesOfProject.map(v => v.date) || []\n const worklogSet = new Set(worklogDates)\n\n calendar.forEach(({ date }) => {\n const formattedDate = date.toLocaleDateString('en-CA') // 'en-CA'는 'YYYY-MM-DD' 형식으로 반환됩니다.\n const template = calendarData[formattedDate]\n\n const hasWorklog = worklogSet.has(formattedDate)\n if (template || hasWorklog) {\n result.set(date, [\n {\n due: formattedDate,\n template: html`\n <div style=\"display:grid;grid-template-columns:repeat(2,1fr);padding-inline:7px;align-items:center;gap:4px;\">\n ${template || html``}\n ${hasWorklog\n ? html`<div style=\"justify-self:end\"><md-icon style=\"color:#008000;\">description</md-icon></div>`\n : html``}\n </div>\n `,\n title: '',\n color: '',\n clickEvent: e => console.log('calendar click', formattedDate)\n }\n ])\n }\n })\n\n return result\n }\n\n // 검측 개수가 있는 데이터들만 날짜별로 템플릿 만들기\n private getCalendarTemplate(inspectionData: any[] = []): { [date: string]: TemplateResult } {\n const template = {}\n for (let date of inspectionData) {\n template[date.requestDate] = html`\n <div style=\"display: grid; grid-template-columns: repeat(2, 1fr); padding-inline: 7px;\">\n ${date.wait !== 0 ? html`<div><span style=\"font-size: 1.3em; color: #4e5055\">●</span> ${date.wait}</div>` : ''}\n ${date.request !== 0 ? html`<div><span style=\"font-size: 1.3em; color: #3395f1\">●</span> ${date.request}</div>` : ''}\n ${date.pass !== 0 ? html`<div><span style=\"font-size: 1.3em; color: #1bb401\">●</span> ${date.pass}</div>` : ''}\n ${date.fail !== 0 ? html`<div><span style=\"font-size: 1.3em; color: #ff4444\">●</span> ${date.fail}</div>` : ''}\n </div>\n `\n }\n\n return template\n }\n}\n"]}
|
package/dist-client/route.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
export default function route(page: string): "checklist-
|
|
1
|
+
export default function route(page: string): "checklist-template-list" | "checklist-type-management" | "building-inspection-list" | "building-inspection-detail-drawing" | "building-inspection-detail-checklist" | "building-inspection-detail-camera" | "building-inspection-grid-detail" | undefined;
|