@dssp/dkpi 1.0.0-alpha.11 → 1.0.0-alpha.13

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.
@@ -0,0 +1,18 @@
1
+ import '@material/web/icon/icon.js';
2
+ import { PageView } from '@operato/shell';
3
+ declare const SvProjectCompletedListPage_base: typeof PageView & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/types/src/types").ScopedElementsHost>;
4
+ export declare class SvProjectCompletedListPage extends SvProjectCompletedListPage_base {
5
+ static styles: import("lit").CSSResult[];
6
+ get context(): {
7
+ title: string;
8
+ };
9
+ private projectName;
10
+ private projectList;
11
+ private projectCount;
12
+ render(): import("lit-html").TemplateResult<1>;
13
+ pageUpdated(changes: any, lifecycle: any): Promise<void>;
14
+ getProjectList(): Promise<void>;
15
+ private _onInputChange;
16
+ private _onKeypress;
17
+ }
18
+ export {};
@@ -0,0 +1,293 @@
1
+ import { __decorate, __metadata } from "tslib";
2
+ import '@material/web/icon/icon.js';
3
+ import { PageView } from '@operato/shell';
4
+ import { css, html } from 'lit';
5
+ import { customElement, state } from 'lit/decorators.js';
6
+ import { ScopedElementsMixin } from '@open-wc/scoped-elements';
7
+ import { client } from '@operato/graphql';
8
+ import gql from 'graphql-tag';
9
+ import { ProjectState } from './sv-project-list';
10
+ let SvProjectCompletedListPage = class SvProjectCompletedListPage extends ScopedElementsMixin(PageView) {
11
+ constructor() {
12
+ super(...arguments);
13
+ this.projectName = '';
14
+ this.projectList = [];
15
+ this.projectCount = 0;
16
+ }
17
+ get context() {
18
+ return {
19
+ title: '완료 프로젝트'
20
+ };
21
+ }
22
+ render() {
23
+ var _a;
24
+ return html `
25
+ <div header>
26
+ <label>프로젝트 이름</label>
27
+ <md-filled-text-field
28
+ name="projectName"
29
+ type="search"
30
+ label="프로젝트 이름"
31
+ .value=${this.projectName}
32
+ @input=${this._onInputChange}
33
+ @keypress=${this._onKeypress}
34
+ >
35
+ <md-icon slot="leading-icon">search</md-icon>
36
+ </md-filled-text-field>
37
+
38
+ <strong>총 ${this.projectCount}개</strong>
39
+ </div>
40
+
41
+ <div body>
42
+ ${(_a = this.projectList) === null || _a === void 0 ? void 0 : _a.map((project) => {
43
+ var _a, _b, _c, _d, _e, _f;
44
+ return html `
45
+ <div project-container>
46
+ <a href=${`kpi-dashboard?projectId=${project.id}`}>
47
+ <img
48
+ ?no-image=${!((_a = project.mainPhoto) === null || _a === void 0 ? void 0 : _a.fullpath)}
49
+ project-img
50
+ src=${((_b = project.mainPhoto) === null || _b === void 0 ? void 0 : _b.fullpath) || '/assets/images/no-image.png'}
51
+ />
52
+
53
+ <span project-info>
54
+ <div name>${project.name}</div>
55
+ <div content>${project.buildingComplex.address}</div>
56
+ <div content>면적: ${((_d = (_c = project.buildingComplex) === null || _c === void 0 ? void 0 : _c.area) === null || _d === void 0 ? void 0 : _d.toLocaleString()) || ''}㎡</div>
57
+ <div content>착공~준공: ${project.startDate} ~ ${project.endDate}</div>
58
+ <div content>발주처: <strong>${project.buildingComplex.clientCompany}</strong></div>
59
+ </span>
60
+
61
+ <span project-state>
62
+ <div progress>
63
+ <md-linear-progress buffer="100" max="100" value=${project.totalProgress || 0}> </md-linear-progress>
64
+ <span>전체</span>
65
+ <span>${project.totalProgress || 0}%</span>
66
+ </div>
67
+ <div>시공사: ${project.buildingComplex.constructionCompany}</div>
68
+ <div>건설구분: ${project.buildingComplex.constructionType}</div>
69
+ <div>세대수: ${((_f = (_e = project.buildingComplex) === null || _e === void 0 ? void 0 : _e.householdCount) === null || _f === void 0 ? void 0 : _f.toLocaleString()) || ''}세대</div>
70
+ <div>기타: ${project.buildingComplex.etc}</div>
71
+ </span>
72
+ </a>
73
+ </div>
74
+ `;
75
+ })}
76
+ </div>
77
+ `;
78
+ }
79
+ async pageUpdated(changes, lifecycle) {
80
+ if (this.active) {
81
+ this.getProjectList();
82
+ }
83
+ }
84
+ async getProjectList() {
85
+ var _a, _b;
86
+ const response = await client.query({
87
+ query: gql `
88
+ query Projects($filters: [Filter!]) {
89
+ projects(filters: $filters) {
90
+ items {
91
+ id
92
+ name
93
+ startDate
94
+ endDate
95
+ mainPhoto {
96
+ fullpath
97
+ }
98
+ totalProgress
99
+ weeklyProgress
100
+ kpi
101
+ inspPassRate
102
+ robotProgressRate
103
+ structuralSafetyRate
104
+ buildingComplex {
105
+ address
106
+ area
107
+ clientCompany
108
+ constructionCompany
109
+ constructionType
110
+ householdCount
111
+ etc
112
+ }
113
+ }
114
+ total
115
+ }
116
+ }
117
+ `,
118
+ variables: {
119
+ filters: [
120
+ {
121
+ name: 'name',
122
+ operator: 'search',
123
+ value: `%${this.projectName}%`
124
+ },
125
+ {
126
+ name: 'state',
127
+ operator: 'eq',
128
+ value: ProjectState.COMPLETED
129
+ }
130
+ ]
131
+ }
132
+ });
133
+ this.projectList = ((_a = response.data.projects) === null || _a === void 0 ? void 0 : _a.items) || [];
134
+ this.projectCount = ((_b = response.data.projects) === null || _b === void 0 ? void 0 : _b.total) || 0;
135
+ }
136
+ // Input 요소의 값이 변경될 때 호출되는 콜백 함수
137
+ _onInputChange(event) {
138
+ const target = event.target;
139
+ this[target.name] = target.value;
140
+ }
141
+ // 검색창에서 엔터입력시 검색
142
+ _onKeypress(event) {
143
+ if (event.code === 'Enter') {
144
+ this.getProjectList();
145
+ }
146
+ }
147
+ };
148
+ SvProjectCompletedListPage.styles = [
149
+ css `
150
+ :host {
151
+ display: flex;
152
+ flex-direction: column;
153
+ overflow-y: auto;
154
+
155
+ width: 100%;
156
+ height: 100%;
157
+ background-color: #f7f7f7;
158
+
159
+ --grid-record-emphasized-background-color: red;
160
+ --grid-record-emphasized-color: yellow;
161
+ }
162
+
163
+ div[header] {
164
+ display: flex;
165
+ align-items: center;
166
+ background-color: #2ea4df1a;
167
+ border: 1px solid #2ea4df33;
168
+ margin: 15px 23px;
169
+ font-size: 18px;
170
+ padding: 7px;
171
+ border-radius: 5px;
172
+
173
+ md-filled-text-field[type='search'] {
174
+ margin-left: 5px;
175
+ margin-right: 26px;
176
+
177
+ --md-filled-text-field-container-shape: 0px;
178
+ --md-sys-color-primary: #006a6a;
179
+ --md-sys-color-surface-container-highest: transparent;
180
+ --md-filled-text-field-label-text-color: #999999;
181
+ --md-filled-text-field-input-text-color: #4e5055;
182
+ }
183
+
184
+ md-elevated-button[add-project] {
185
+ font-weight: bold;
186
+ font-size: 16px;
187
+ margin-left: 17px;
188
+ padding: 13px 20px;
189
+
190
+ --md-sys-color-surface-container-low: #24be7b;
191
+ --md-sys-color-primary: #ffffff;
192
+ --md-elevated-button-container-shape: 7px;
193
+ }
194
+ }
195
+
196
+ div[body] {
197
+ div[project-container] {
198
+ height: 140px;
199
+ margin: 17px 23px;
200
+ background-color: #ffffff;
201
+ border: 1px solid #cccccc80;
202
+ border-radius: 5px;
203
+
204
+ & > a {
205
+ display: flex;
206
+ width: 100%;
207
+ height: 100%;
208
+ text-decoration: none;
209
+ color: #000;
210
+ }
211
+
212
+ img[project-img] {
213
+ width: 285px;
214
+ background-color: #cccccc80;
215
+ }
216
+ img[project-img][no-image] {
217
+ object-fit: contain;
218
+ opacity: 0.5;
219
+ }
220
+
221
+ span[project-info] {
222
+ flex: 0.45;
223
+ padding: 6px 15px;
224
+ font-size: 16px;
225
+
226
+ white-space: nowrap;
227
+ overflow: hidden;
228
+ text-overflow: ellipsis;
229
+
230
+ div[name] {
231
+ color: #2e79be;
232
+ font-weight: bold;
233
+ font-size: 19px;
234
+ margin-bottom: 2px;
235
+ }
236
+ }
237
+
238
+ span[project-state] {
239
+ flex: 0.55;
240
+ padding: 10px 20px;
241
+
242
+ & > div {
243
+ margin-bottom: 3px;
244
+ }
245
+
246
+ div[progress] {
247
+ position: relative;
248
+
249
+ md-linear-progress {
250
+ --md-linear-progress-track-height: 18px;
251
+ --md-linear-progress-active-indicator-height: 18px;
252
+ --md-linear-progress-track-shape: 5px;
253
+ --md-sys-color-primary: #1bb40133;
254
+ --md-sys-color-surface-container-highest: #0595e533;
255
+ --md-linear-progress-track-color: #1bb4011a;
256
+ }
257
+
258
+ span {
259
+ position: absolute;
260
+ top: 0;
261
+ left: 12px;
262
+ font-size: 12px;
263
+ font-weight: bold;
264
+ color: #1bb401;
265
+
266
+ &:last-child {
267
+ left: unset;
268
+ right: 12px;
269
+ }
270
+ }
271
+ }
272
+ }
273
+ }
274
+ }
275
+ `
276
+ ];
277
+ __decorate([
278
+ state(),
279
+ __metadata("design:type", String)
280
+ ], SvProjectCompletedListPage.prototype, "projectName", void 0);
281
+ __decorate([
282
+ state(),
283
+ __metadata("design:type", Array)
284
+ ], SvProjectCompletedListPage.prototype, "projectList", void 0);
285
+ __decorate([
286
+ state(),
287
+ __metadata("design:type", Number)
288
+ ], SvProjectCompletedListPage.prototype, "projectCount", void 0);
289
+ SvProjectCompletedListPage = __decorate([
290
+ customElement('sv-project-completed-list')
291
+ ], SvProjectCompletedListPage);
292
+ export { SvProjectCompletedListPage };
293
+ //# sourceMappingURL=sv-project-completed-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sv-project-completed-list.js","sourceRoot":"","sources":["../../client/pages/sv-project-completed-list.ts"],"names":[],"mappings":"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","sourcesContent":["import '@material/web/icon/icon.js'\n\nimport { PageView } from '@operato/shell'\nimport { css, html } from 'lit'\nimport { customElement, state } from 'lit/decorators.js'\nimport { ScopedElementsMixin } from '@open-wc/scoped-elements'\nimport { client } from '@operato/graphql'\nimport gql from 'graphql-tag'\nimport { Project, ProjectState } from './sv-project-list'\n\n@customElement('sv-project-completed-list')\nexport class SvProjectCompletedListPage extends ScopedElementsMixin(PageView) {\n static styles = [\n css`\n :host {\n display: flex;\n flex-direction: column;\n overflow-y: auto;\n\n width: 100%;\n height: 100%;\n background-color: #f7f7f7;\n\n --grid-record-emphasized-background-color: red;\n --grid-record-emphasized-color: yellow;\n }\n\n div[header] {\n display: flex;\n align-items: center;\n background-color: #2ea4df1a;\n border: 1px solid #2ea4df33;\n margin: 15px 23px;\n font-size: 18px;\n padding: 7px;\n border-radius: 5px;\n\n md-filled-text-field[type='search'] {\n margin-left: 5px;\n margin-right: 26px;\n\n --md-filled-text-field-container-shape: 0px;\n --md-sys-color-primary: #006a6a;\n --md-sys-color-surface-container-highest: transparent;\n --md-filled-text-field-label-text-color: #999999;\n --md-filled-text-field-input-text-color: #4e5055;\n }\n\n md-elevated-button[add-project] {\n font-weight: bold;\n font-size: 16px;\n margin-left: 17px;\n padding: 13px 20px;\n\n --md-sys-color-surface-container-low: #24be7b;\n --md-sys-color-primary: #ffffff;\n --md-elevated-button-container-shape: 7px;\n }\n }\n\n div[body] {\n div[project-container] {\n height: 140px;\n margin: 17px 23px;\n background-color: #ffffff;\n border: 1px solid #cccccc80;\n border-radius: 5px;\n\n & > a {\n display: flex;\n width: 100%;\n height: 100%;\n text-decoration: none;\n color: #000;\n }\n\n img[project-img] {\n width: 285px;\n background-color: #cccccc80;\n }\n img[project-img][no-image] {\n object-fit: contain;\n opacity: 0.5;\n }\n\n span[project-info] {\n flex: 0.45;\n padding: 6px 15px;\n font-size: 16px;\n\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n\n div[name] {\n color: #2e79be;\n font-weight: bold;\n font-size: 19px;\n margin-bottom: 2px;\n }\n }\n\n span[project-state] {\n flex: 0.55;\n padding: 10px 20px;\n\n & > div {\n margin-bottom: 3px;\n }\n\n div[progress] {\n position: relative;\n\n md-linear-progress {\n --md-linear-progress-track-height: 18px;\n --md-linear-progress-active-indicator-height: 18px;\n --md-linear-progress-track-shape: 5px;\n --md-sys-color-primary: #1bb40133;\n --md-sys-color-surface-container-highest: #0595e533;\n --md-linear-progress-track-color: #1bb4011a;\n }\n\n span {\n position: absolute;\n top: 0;\n left: 12px;\n font-size: 12px;\n font-weight: bold;\n color: #1bb401;\n\n &:last-child {\n left: unset;\n right: 12px;\n }\n }\n }\n }\n }\n }\n `\n ]\n\n get context() {\n return {\n title: '완료 프로젝트'\n }\n }\n\n @state() private projectName: string = ''\n @state() private projectList: Project[] = []\n @state() private projectCount: number = 0\n\n render() {\n return html`\n <div header>\n <label>프로젝트 이름</label>\n <md-filled-text-field\n name=\"projectName\"\n type=\"search\"\n label=\"프로젝트 이름\"\n .value=${this.projectName}\n @input=${this._onInputChange}\n @keypress=${this._onKeypress}\n >\n <md-icon slot=\"leading-icon\">search</md-icon>\n </md-filled-text-field>\n\n <strong>총 ${this.projectCount}개</strong>\n </div>\n\n <div body>\n ${this.projectList?.map((project: Project) => {\n return html`\n <div project-container>\n <a href=${`kpi-dashboard?projectId=${project.id}`}>\n <img\n ?no-image=${!project.mainPhoto?.fullpath}\n project-img\n src=${project.mainPhoto?.fullpath || '/assets/images/no-image.png'}\n />\n\n <span project-info>\n <div name>${project.name}</div>\n <div content>${project.buildingComplex.address}</div>\n <div content>면적: ${project.buildingComplex?.area?.toLocaleString() || ''}㎡</div>\n <div content>착공~준공: ${project.startDate} ~ ${project.endDate}</div>\n <div content>발주처: <strong>${project.buildingComplex.clientCompany}</strong></div>\n </span>\n\n <span project-state>\n <div progress>\n <md-linear-progress buffer=\"100\" max=\"100\" value=${project.totalProgress || 0}> </md-linear-progress>\n <span>전체</span>\n <span>${project.totalProgress || 0}%</span>\n </div>\n <div>시공사: ${project.buildingComplex.constructionCompany}</div>\n <div>건설구분: ${project.buildingComplex.constructionType}</div>\n <div>세대수: ${project.buildingComplex?.householdCount?.toLocaleString() || ''}세대</div>\n <div>기타: ${project.buildingComplex.etc}</div>\n </span>\n </a>\n </div>\n `\n })}\n </div>\n `\n }\n\n async pageUpdated(changes: any, lifecycle: any) {\n if (this.active) {\n this.getProjectList()\n }\n }\n\n async getProjectList() {\n const response = await client.query({\n query: gql`\n query Projects($filters: [Filter!]) {\n projects(filters: $filters) {\n items {\n id\n name\n startDate\n endDate\n mainPhoto {\n fullpath\n }\n totalProgress\n weeklyProgress\n kpi\n inspPassRate\n robotProgressRate\n structuralSafetyRate\n buildingComplex {\n address\n area\n clientCompany\n constructionCompany\n constructionType\n householdCount\n etc\n }\n }\n total\n }\n }\n `,\n variables: {\n filters: [\n {\n name: 'name',\n operator: 'search',\n value: `%${this.projectName}%`\n },\n {\n name: 'state',\n operator: 'eq',\n value: ProjectState.COMPLETED\n }\n ]\n }\n })\n\n this.projectList = response.data.projects?.items || []\n this.projectCount = response.data.projects?.total || 0\n }\n\n // Input 요소의 값이 변경될 때 호출되는 콜백 함수\n private _onInputChange(event: InputEvent) {\n const target = event.target as HTMLInputElement\n this[target.name] = target.value\n }\n\n // 검색창에서 엔터입력시 검색\n private _onKeypress(event: KeyboardEvent) {\n if (event.code === 'Enter') {\n this.getProjectList()\n }\n }\n}\n"]}
@@ -0,0 +1,144 @@
1
+ import '@material/web/icon/icon.js';
2
+ import { PageView } from '@operato/shell';
3
+ import { Attachment } from '@things-factory/attachment-base';
4
+ import type { FileUpload } from 'graphql-upload/GraphQLUpload.js';
5
+ export declare enum ProjectState {
6
+ 'ONGOING' = "10",
7
+ 'COMPLETED' = "20"
8
+ }
9
+ export declare enum BuildingInspectionStatus {
10
+ WAIT = "WAIT",
11
+ OVERALL_WAIT = "OVERALL_WAIT",
12
+ REQUEST = "REQUEST",
13
+ OVERALL_REQUEST = "OVERALL_REQUEST",
14
+ PASS = "PASS",
15
+ FAIL = "FAIL"
16
+ }
17
+ export declare const BUILDING_INSPECTION_STATUS: {
18
+ WAIT: string;
19
+ OVERALL_WAIT: string;
20
+ REQUEST: string;
21
+ OVERALL_REQUEST: string;
22
+ PASS: string;
23
+ FAIL: string;
24
+ };
25
+ export declare enum ProjectType {
26
+ DSSP = "DSSP",
27
+ DCSP = "DCSP",
28
+ DKPI = "DKPI"
29
+ }
30
+ export interface Project {
31
+ id?: string;
32
+ name: string;
33
+ startDate?: string;
34
+ endDate?: string;
35
+ mainPhoto?: Attachment;
36
+ mainPhotoUpload?: FileUpload;
37
+ totalProgress?: number;
38
+ weeklyProgress?: number;
39
+ kpi?: number;
40
+ inspPassRate?: number;
41
+ robotProgressRate?: number;
42
+ structuralSafetyRate?: number;
43
+ robotCount?: number;
44
+ scheduleTable?: Attachment;
45
+ buildingComplex: BuildingComplex;
46
+ projectType?: ProjectType;
47
+ }
48
+ export interface BuildingComplex {
49
+ id?: string;
50
+ address?: string;
51
+ latitude?: number;
52
+ longitude?: number;
53
+ area?: number;
54
+ constructionCompany?: string;
55
+ clientCompany?: string;
56
+ designCompany?: string;
57
+ supervisoryCompany?: string;
58
+ drawing?: Attachment;
59
+ drawingUpload?: FileUpload;
60
+ constructionType?: string;
61
+ constructionCost?: number;
62
+ etc?: string;
63
+ householdCount?: number;
64
+ buildingCount?: number;
65
+ notice?: string;
66
+ planXScale?: number;
67
+ planYScale?: number;
68
+ overallConstructorEmails?: string[];
69
+ taskConstructorEmails?: string[];
70
+ overallSupervisoryEmails?: string[];
71
+ taskSupervisoryEmails?: string[];
72
+ buildings?: Building[];
73
+ }
74
+ export interface Building {
75
+ id?: string;
76
+ name: string | undefined;
77
+ floorCount: number | undefined;
78
+ hasBasement?: boolean;
79
+ basementFloorCount?: number;
80
+ drawing?: Attachment;
81
+ drawingUpload?: FileUpload;
82
+ buildingLevels?: BuildingLevel[];
83
+ }
84
+ export interface BuildingLevel {
85
+ id?: string;
86
+ floor?: number;
87
+ floorDisplayName?: string;
88
+ mainDrawing?: Attachment;
89
+ mainDrawingImage?: string;
90
+ mainDrawingThumbnail?: string;
91
+ mainDrawingUpload?: FileUpload;
92
+ elevationDrawing?: Attachment;
93
+ elevationDrawingThumbnail?: string;
94
+ elevationDrawingUpload?: FileUpload;
95
+ rebarDistributionDrawing?: Attachment;
96
+ rebarDistributionDrawingThumbnail?: string;
97
+ rebarDistributionDrawingUpload?: FileUpload;
98
+ etcDrawings?: Attachment[];
99
+ etcDrawingsUpload?: FileUpload[];
100
+ building?: Building;
101
+ buildingInspections?: BuildingInspection[];
102
+ }
103
+ export interface BuildingInspection {
104
+ id?: string;
105
+ attatchments?: Attachment[];
106
+ status?: BuildingInspectionStatus;
107
+ requestDate?: Date;
108
+ buildingLevel?: BuildingLevel;
109
+ checklist?: Checklist;
110
+ createdAt?: Date;
111
+ updatedAt?: Date;
112
+ deletedAt?: Date;
113
+ }
114
+ export interface Checklist {
115
+ id: string;
116
+ name?: string;
117
+ documentNo?: string;
118
+ constructionType?: string;
119
+ constructionDetailType?: string;
120
+ location?: string;
121
+ constructionInspectorDate?: Date;
122
+ supervisorInspectorDate?: Date;
123
+ overallConstructorSignature?: string;
124
+ taskConstructorSignature?: string;
125
+ overallSupervisorySignature?: string;
126
+ taskSupervisorySignature?: string;
127
+ inspectionParts?: string[];
128
+ }
129
+ declare const SvProjectListPage_base: typeof PageView & import("@open-wc/dedupe-mixin").Constructor<import("@open-wc/scoped-elements/types/src/types").ScopedElementsHost>;
130
+ export declare class SvProjectListPage extends SvProjectListPage_base {
131
+ static styles: import("lit").CSSResult[];
132
+ get context(): {
133
+ title: string;
134
+ };
135
+ private projectName;
136
+ private projectList;
137
+ private projectCount;
138
+ render(): import("lit-html").TemplateResult<1>;
139
+ pageUpdated(changes: any, lifecycle: any): Promise<void>;
140
+ getProjectList(): Promise<void>;
141
+ private _onInputChange;
142
+ private _onKeypress;
143
+ }
144
+ export {};