@projectcaluma/ember-distribution 1.0.0-beta.1 → 1.0.0-beta.10
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/CHANGELOG.md +110 -0
- package/addon/abilities/distribution.js +41 -0
- package/addon/abilities/inquiry.js +20 -0
- package/addon/components/cd-document-header.hbs +20 -0
- package/addon/components/cd-icon-button.hbs +27 -0
- package/addon/components/{icon-button.js → cd-icon-button.js} +1 -1
- package/addon/components/cd-inquiry-answer-form.hbs +78 -0
- package/addon/components/{inquiry-answer-form.js → cd-inquiry-answer-form.js} +27 -13
- package/addon/components/cd-inquiry-dialog/inquiry-deadline.hbs +29 -0
- package/addon/components/{inquiry-dialog → cd-inquiry-dialog}/inquiry-deadline.js +5 -1
- package/addon/components/{inquiry-dialog → cd-inquiry-dialog}/inquiry-divider.hbs +2 -1
- package/addon/components/{inquiry-dialog → cd-inquiry-dialog}/inquiry-divider.js +1 -1
- package/addon/components/cd-inquiry-dialog/inquiry-part.hbs +101 -0
- package/addon/components/cd-inquiry-dialog/inquiry-part.js +66 -0
- package/addon/components/cd-inquiry-dialog/inquiry.hbs +16 -0
- package/addon/components/cd-inquiry-dialog/inquiry.js +11 -0
- package/addon/components/cd-inquiry-dialog.hbs +24 -0
- package/addon/components/cd-inquiry-dialog.js +93 -0
- package/addon/components/cd-inquiry-edit-form.hbs +41 -0
- package/addon/components/{inquiry-edit-form.js → cd-inquiry-edit-form.js} +5 -4
- package/addon/components/cd-inquiry-new-form.hbs +123 -0
- package/addon/components/cd-inquiry-new-form.js +116 -0
- package/addon/components/cd-navigation/controls.hbs +32 -0
- package/addon/components/cd-navigation/controls.js +95 -0
- package/addon/components/cd-navigation/item.hbs +15 -0
- package/addon/components/{distribution-navigation → cd-navigation}/item.js +2 -2
- package/addon/components/{distribution-navigation → cd-navigation}/section.hbs +9 -7
- package/addon/components/{distribution-navigation → cd-navigation}/section.js +1 -1
- package/addon/components/{distribution-navigation → cd-navigation}/status-indicator.hbs +2 -1
- package/addon/components/{distribution-navigation → cd-navigation}/status-indicator.js +1 -1
- package/addon/components/cd-navigation.hbs +14 -0
- package/addon/components/cd-navigation.js +53 -0
- package/addon/components/cd-notfound.hbs +12 -0
- package/addon/components/cd-truncated.hbs +8 -0
- package/addon/components/cd-truncated.js +32 -0
- package/addon/config.js +3 -1
- package/addon/controllers/application.js +10 -0
- package/addon/controllers/{distribution/new.js → new.js} +2 -2
- package/addon/engine.js +7 -1
- package/addon/gql/fragments/inquiry.graphql +21 -12
- package/addon/gql/mutations/complete-work-item.graphql +8 -0
- package/addon/gql/mutations/withdraw-inquiry.graphql +8 -0
- package/addon/gql/queries/control-work-items.graphql +18 -2
- package/addon/gql/queries/incomplete-inquiries.graphql +13 -0
- package/addon/gql/queries/inquiry-answer.graphql +15 -1
- package/addon/gql/queries/inquiry-dialog.graphql +2 -2
- package/addon/gql/queries/inquiry-edit.graphql +2 -0
- package/addon/gql/queries/inquiry-navigation.graphql +4 -1
- package/addon/modifiers/pikaday.js +2 -0
- package/addon/routes/{distribution.js → application.js} +1 -1
- package/addon/routes/{distribution/index.js → index.js} +2 -2
- package/addon/routes/inquiry/detail/answer.js +7 -0
- package/addon/routes/inquiry/detail/index.js +7 -0
- package/addon/routes/{distribution/inquiry → inquiry}/detail.js +1 -1
- package/addon/routes/inquiry/index.js +10 -0
- package/addon/routes/{distribution/inquiry.js → inquiry.js} +1 -1
- package/addon/routes/new.js +7 -0
- package/addon/routes/notfound.js +3 -0
- package/addon/routes.js +5 -6
- package/addon/services/distribution.js +112 -0
- package/addon/templates/application.hbs +18 -0
- package/addon/templates/index.hbs +11 -0
- package/addon/templates/inquiry/detail/answer.hbs +1 -0
- package/addon/templates/inquiry/detail/index.hbs +1 -0
- package/addon/templates/{distribution/inquiry → inquiry}/detail.hbs +0 -0
- package/addon/templates/{distribution/inquiry → inquiry}/index.hbs +1 -1
- package/addon/templates/{distribution/inquiry.hbs → inquiry.hbs} +0 -0
- package/addon/templates/{distribution/new.hbs → new.hbs} +1 -1
- package/addon/templates/notfound.hbs +1 -0
- package/addon/utils/inquiry-deadline.js +4 -7
- package/addon/utils/unique-by-groups.js +1 -0
- package/app/abilities/distribution.js +1 -0
- package/app/components/cd-document-header.js +1 -0
- package/app/components/{inquiry-dialog.js → cd-icon-button.js} +1 -1
- package/app/components/{inquiry-dialog/inquiry.js → cd-inquiry-answer-form.js} +1 -1
- package/app/components/{inquiry-dialog → cd-inquiry-dialog}/inquiry-deadline.js +1 -1
- package/app/components/{inquiry-dialog → cd-inquiry-dialog}/inquiry-divider.js +1 -1
- package/app/components/{inquiry-dialog → cd-inquiry-dialog}/inquiry-part.js +1 -1
- package/app/components/{distribution-navigation.js → cd-inquiry-dialog/inquiry.js} +1 -1
- package/app/components/{inquiry-edit-form.js → cd-inquiry-dialog.js} +1 -1
- package/app/components/cd-inquiry-edit-form.js +1 -0
- package/app/components/{inquiry-answer-form.js → cd-inquiry-new-form.js} +1 -1
- package/app/components/cd-navigation/controls.js +1 -0
- package/app/components/cd-navigation/item.js +1 -0
- package/app/components/cd-navigation/section.js +1 -0
- package/app/components/{distribution-navigation/item.js → cd-navigation/status-indicator.js} +1 -1
- package/app/components/{inquiry-new-form.js → cd-navigation.js} +1 -1
- package/app/components/{icon-button.js → cd-notfound.js} +1 -1
- package/app/components/cd-truncated.js +1 -0
- package/app/services/distribution.js +1 -0
- package/app/styles/@projectcaluma/ember-distribution.scss +2 -0
- package/app/styles/_answer-form.scss +4 -0
- package/app/styles/_inquiry-divider.scss +22 -0
- package/app/styles/_truncated.scss +3 -0
- package/index.js +14 -13
- package/package.json +31 -26
- package/public/assets/distribution.svg +1 -0
- package/translations/de.yaml +34 -4
- package/translations/en.yaml +35 -4
- package/translations/fr.yaml +34 -4
- package/addon/components/distribution-navigation/controls.hbs +0 -21
- package/addon/components/distribution-navigation/controls.js +0 -45
- package/addon/components/distribution-navigation/item.hbs +0 -18
- package/addon/components/distribution-navigation.hbs +0 -17
- package/addon/components/distribution-navigation.js +0 -81
- package/addon/components/icon-button.hbs +0 -20
- package/addon/components/inquiry-answer-form.hbs +0 -46
- package/addon/components/inquiry-dialog/inquiry-deadline.hbs +0 -6
- package/addon/components/inquiry-dialog/inquiry-part.hbs +0 -40
- package/addon/components/inquiry-dialog/inquiry-part.js +0 -20
- package/addon/components/inquiry-dialog/inquiry.hbs +0 -13
- package/addon/components/inquiry-dialog/inquiry.js +0 -7
- package/addon/components/inquiry-dialog.hbs +0 -9
- package/addon/components/inquiry-dialog.js +0 -42
- package/addon/components/inquiry-edit-form.hbs +0 -27
- package/addon/components/inquiry-new-form.hbs +0 -110
- package/addon/components/inquiry-new-form.js +0 -154
- package/addon/routes/distribution/inquiry/detail/answer.js +0 -7
- package/addon/routes/distribution/inquiry/detail/index.js +0 -7
- package/addon/routes/distribution/inquiry/index.js +0 -10
- package/addon/routes/distribution/new.js +0 -7
- package/addon/templates/distribution/inquiry/detail/answer.hbs +0 -1
- package/addon/templates/distribution/inquiry/detail/index.hbs +0 -1
- package/addon/templates/distribution.hbs +0 -8
- package/app/components/distribution-navigation/controls.js +0 -1
- package/app/components/distribution-navigation/section.js +0 -1
- package/app/components/distribution-navigation/status-indicator.js +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,113 @@
|
|
|
1
|
+
# [@projectcaluma/ember-distribution-v1.0.0-beta.10](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-distribution-v1.0.0-beta.9...@projectcaluma/ember-distribution-v1.0.0-beta.10) (2022-05-11)
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
### Features
|
|
5
|
+
|
|
6
|
+
* **distribution:** add readonly mode ([2f45c98](https://github.com/projectcaluma/ember-caluma/commit/2f45c985a2fa387c79ca39c49c1e50dc37926352))
|
|
7
|
+
* **distribution:** allow custom permissions from the host app ([8a997bf](https://github.com/projectcaluma/ember-caluma/commit/8a997bf4d921ff738a6cca956a4dd9cbabe8f7c5))
|
|
8
|
+
|
|
9
|
+
# [@projectcaluma/ember-distribution-v1.0.0-beta.9](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-distribution-v1.0.0-beta.8...@projectcaluma/ember-distribution-v1.0.0-beta.9) (2022-05-09)
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* **deps:** update ember-engines ([5aa5300](https://github.com/projectcaluma/ember-caluma/commit/5aa530074ea7dc08267d8ccc411eb1538537a1b5))
|
|
15
|
+
* **distribution:** filter out empty types in new inquiry controller ([ad7e072](https://github.com/projectcaluma/ember-caluma/commit/ad7e072bd8d339964d1f7f6437bde6b4ff5824b5))
|
|
16
|
+
* **distribution:** hide suspended and canceled inquiries in more section ([a377c0c](https://github.com/projectcaluma/ember-caluma/commit/a377c0c599ab479a61c0f2f7d6051ce79817d998))
|
|
17
|
+
* **distribution:** improve padding of request in answer form ([de06459](https://github.com/projectcaluma/ember-caluma/commit/de06459a75e3fad30a008c738781a29a03640c96))
|
|
18
|
+
* **resources:** fix deprecations of ember-resources ([7a84c5c](https://github.com/projectcaluma/ember-caluma/commit/7a84c5c78d5b28f7b5393c64722907728dd5f42b))
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
### Features
|
|
22
|
+
|
|
23
|
+
* **distribution:** add button to create new inquiry in dialog ([a2ab800](https://github.com/projectcaluma/ember-caluma/commit/a2ab800d8d8a9b10be1d22c7a03f34299cb87a93))
|
|
24
|
+
* **distribution:** allow displaying more information in the answer ([9de7f01](https://github.com/projectcaluma/ember-caluma/commit/9de7f0149406a0a326ba59ca0abe27860a64f2a1))
|
|
25
|
+
* **distribution:** improve edit and answer inquiry UI and UX ([6cd2dee](https://github.com/projectcaluma/ember-caluma/commit/6cd2dee45dde245064a0ac013160093bc783789c))
|
|
26
|
+
|
|
27
|
+
# [@projectcaluma/ember-distribution-v1.0.0-beta.8](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-distribution-v1.0.0-beta.7...@projectcaluma/ember-distribution-v1.0.0-beta.8) (2022-04-11)
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
### Bug Fixes
|
|
31
|
+
|
|
32
|
+
* **distribution:** inject store into distribution engine ([2e00d7f](https://github.com/projectcaluma/ember-caluma/commit/2e00d7f0707b7a36e6955d91baa340ce2af7e413))
|
|
33
|
+
|
|
34
|
+
# [@projectcaluma/ember-distribution-v1.0.0-beta.7](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-distribution-v1.0.0-beta.6...@projectcaluma/ember-distribution-v1.0.0-beta.7) (2022-04-07)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
### Bug Fixes
|
|
38
|
+
|
|
39
|
+
* **distribution:** fix status indicator and deadline styling for firefox ([358acb1](https://github.com/projectcaluma/ember-caluma/commit/358acb1f8e23b425bd6e223dc5873e516710ef12))
|
|
40
|
+
* **distribution:** make sure distribution components are prefixed ([d7d98ec](https://github.com/projectcaluma/ember-caluma/commit/d7d98ec291f937f384e2521d4d89c363d8e34f02))
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
### Features
|
|
44
|
+
|
|
45
|
+
* **distribution:** enable completing the distribution ([beabe61](https://github.com/projectcaluma/ember-caluma/commit/beabe61bd34025c4785c1e1ba60c59babb3eb6ab))
|
|
46
|
+
|
|
47
|
+
# [@projectcaluma/ember-distribution-v1.0.0-beta.6](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-distribution-v1.0.0-beta.5...@projectcaluma/ember-distribution-v1.0.0-beta.6) (2022-03-24)
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
### Bug Fixes
|
|
51
|
+
|
|
52
|
+
* **embroider:** add missing dependency on @ember/string ([3a6e6bb](https://github.com/projectcaluma/ember-caluma/commit/3a6e6bb39a8c1a40a2ae00b3d4ea00606a755e25))
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
### Features
|
|
56
|
+
|
|
57
|
+
* **distribution:** add functionality to send all pending inquiries ([d769953](https://github.com/projectcaluma/ember-caluma/commit/d769953d5a0ea196943426c8499ba87b77a42e61))
|
|
58
|
+
* **distribution:** add functionality to withdraw an inquiry ([c278895](https://github.com/projectcaluma/ember-caluma/commit/c2788957c0fb228c167ca9236fda4850717f5817))
|
|
59
|
+
|
|
60
|
+
# [@projectcaluma/ember-distribution-v1.0.0-beta.5](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-distribution-v1.0.0-beta.4...@projectcaluma/ember-distribution-v1.0.0-beta.5) (2022-03-11)
|
|
61
|
+
|
|
62
|
+
|
|
63
|
+
### Bug Fixes
|
|
64
|
+
|
|
65
|
+
* **distribution:** fix sorting after group names in navigation ([2299d3b](https://github.com/projectcaluma/ember-caluma/commit/2299d3b0e265204ab6747dbdc6a8b64fc22f247f))
|
|
66
|
+
* **distribution:** redirect to edit form after inquiry creation ([0a2c404](https://github.com/projectcaluma/ember-caluma/commit/0a2c40404fdb1258fb8d51a2809a03b335c7c78a))
|
|
67
|
+
|
|
68
|
+
# [@projectcaluma/ember-distribution-v1.0.0-beta.4](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-distribution-v1.0.0-beta.3...@projectcaluma/ember-distribution-v1.0.0-beta.4) (2022-02-16)
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
### Bug Fixes
|
|
72
|
+
|
|
73
|
+
* **distribution:** show controls if no inquiries exist yet ([5c73b6d](https://github.com/projectcaluma/ember-caluma/commit/5c73b6d0a870fd0e34d96af3fa34095733fe9fd9))
|
|
74
|
+
* **pikaday:** add pikaday modifier reexport in engines ([c13d302](https://github.com/projectcaluma/ember-caluma/commit/c13d3021bb8fe82e1245a60182af01287c507697))
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
### Features
|
|
78
|
+
|
|
79
|
+
* **distribution:** add config variable to stack the UI ([2ad285a](https://github.com/projectcaluma/ember-caluma/commit/2ad285a24bf5fb45d15fe237e3f420dd1f1d94f2))
|
|
80
|
+
* **distribution:** add index page when no inquiries exist ([689089c](https://github.com/projectcaluma/ember-caluma/commit/689089c8f28146a33346f382fe69e7ca1b588d97))
|
|
81
|
+
* **distribution:** add proper 404 handling ([73e62e6](https://github.com/projectcaluma/ember-caluma/commit/73e62e671a9425fc549d7057dd653d1dc59883aa))
|
|
82
|
+
* **distribution:** remove distribution top level route ([6f396da](https://github.com/projectcaluma/ember-caluma/commit/6f396daf2881f07cdddaac6c7ca784db2b8777d3))
|
|
83
|
+
|
|
84
|
+
# [@projectcaluma/ember-distribution-v1.0.0-beta.3](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-distribution-v1.0.0-beta.2...@projectcaluma/ember-distribution-v1.0.0-beta.3) (2022-02-07)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
### Bug Fixes
|
|
88
|
+
|
|
89
|
+
* **deps:** remove moment altogether and update ember-pikday ([b2f7fa2](https://github.com/projectcaluma/ember-caluma/commit/b2f7fa28fa076897addd36e5964c926c671508ff))
|
|
90
|
+
* **distribution:** replace moment with luxon ([80f6b9a](https://github.com/projectcaluma/ember-caluma/commit/80f6b9a984113a5870a1a9ffbcc8e1700cb33190))
|
|
91
|
+
|
|
92
|
+
|
|
93
|
+
### BREAKING CHANGES
|
|
94
|
+
|
|
95
|
+
* **deps:** The host app now needs to opt-in to use the default
|
|
96
|
+
pikaday styles: https://github.com/adopted-ember-addons/ember-pikaday#styles
|
|
97
|
+
|
|
98
|
+
# [@projectcaluma/ember-distribution-v1.0.0-beta.2](https://github.com/projectcaluma/ember-caluma/compare/@projectcaluma/ember-distribution-v1.0.0-beta.1...@projectcaluma/ember-distribution-v1.0.0-beta.2) (2022-02-01)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
### chore
|
|
102
|
+
|
|
103
|
+
* **deps:** update ember-uikit to v5 beta ([6568d39](https://github.com/projectcaluma/ember-caluma/commit/6568d398216d33b44da5b659830ca3c200dd7012))
|
|
104
|
+
|
|
105
|
+
|
|
106
|
+
### BREAKING CHANGES
|
|
107
|
+
|
|
108
|
+
* **deps:** All `@projectcaluma/ember-*` packages now require
|
|
109
|
+
`ember-uikit` v5+.
|
|
110
|
+
|
|
1
111
|
# @projectcaluma/ember-distribution-v1.0.0-beta.1 (2022-01-18)
|
|
2
112
|
|
|
3
113
|
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { inject as service } from "@ember/service";
|
|
2
|
+
import { Ability } from "ember-can";
|
|
3
|
+
|
|
4
|
+
import config from "@projectcaluma/ember-distribution/config";
|
|
5
|
+
|
|
6
|
+
const hasStatus = (status) => (edge) => edge.node.status === status;
|
|
7
|
+
|
|
8
|
+
export default class DistributionAbility extends Ability {
|
|
9
|
+
@service distribution;
|
|
10
|
+
|
|
11
|
+
@config config;
|
|
12
|
+
|
|
13
|
+
get canSendInquiries() {
|
|
14
|
+
return (
|
|
15
|
+
!this.config.ui.readonly &&
|
|
16
|
+
(this.config.permissions.sendInquiry?.(null) ?? true) &&
|
|
17
|
+
this.distribution.controls.value?.send.edges.filter(
|
|
18
|
+
hasStatus("SUSPENDED")
|
|
19
|
+
).length > 0
|
|
20
|
+
);
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
get canCreateInquiry() {
|
|
24
|
+
return (
|
|
25
|
+
!this.config.ui.readonly &&
|
|
26
|
+
(this.config.permissions.createInquiry?.() ?? true) &&
|
|
27
|
+
this.distribution.controls.value?.create.edges.filter(hasStatus("READY"))
|
|
28
|
+
.length > 0
|
|
29
|
+
);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
get canComplete() {
|
|
33
|
+
return (
|
|
34
|
+
!this.config.ui.readonly &&
|
|
35
|
+
(this.config.permissions.completeDistribution?.() ?? true) &&
|
|
36
|
+
this.distribution.controls.value?.complete.edges.filter(
|
|
37
|
+
hasStatus("READY")
|
|
38
|
+
).length > 0
|
|
39
|
+
);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
@@ -10,6 +10,7 @@ export default class InquiryAbility extends Ability {
|
|
|
10
10
|
|
|
11
11
|
get canEdit() {
|
|
12
12
|
return (
|
|
13
|
+
!this.config.ui.readonly &&
|
|
13
14
|
this.model?.task.slug === this.config.inquiry.task &&
|
|
14
15
|
this.model?.status === "SUSPENDED" &&
|
|
15
16
|
this.model?.controllingGroups
|
|
@@ -18,8 +19,17 @@ export default class InquiryAbility extends Ability {
|
|
|
18
19
|
);
|
|
19
20
|
}
|
|
20
21
|
|
|
22
|
+
get canSend() {
|
|
23
|
+
return this.config.permissions.sendInquiry?.(this.model) ?? true;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
get canWithdraw() {
|
|
27
|
+
return this.config.permissions.withdrawInquiry?.(this.model) ?? true;
|
|
28
|
+
}
|
|
29
|
+
|
|
21
30
|
get canAnswer() {
|
|
22
31
|
return (
|
|
32
|
+
!this.config.ui.readonly &&
|
|
23
33
|
this.model?.task.slug === this.config.inquiry.task &&
|
|
24
34
|
this.model?.status === "READY" &&
|
|
25
35
|
this.model?.addressedGroups
|
|
@@ -30,10 +40,20 @@ export default class InquiryAbility extends Ability {
|
|
|
30
40
|
|
|
31
41
|
get canEditAnswerForm() {
|
|
32
42
|
return (
|
|
43
|
+
!this.config.ui.readonly &&
|
|
33
44
|
this.canAnswer &&
|
|
34
45
|
this.model?.childCase.workItems.edges.some(
|
|
35
46
|
(edge) => edge.node.task.__typename === "CompleteWorkflowFormTask"
|
|
36
47
|
)
|
|
37
48
|
);
|
|
38
49
|
}
|
|
50
|
+
|
|
51
|
+
get canCompleteChildWorkItem() {
|
|
52
|
+
return (
|
|
53
|
+
this.config.permissions.completeInquiryChildWorkItem?.(
|
|
54
|
+
this.model,
|
|
55
|
+
this.task
|
|
56
|
+
) ?? true
|
|
57
|
+
);
|
|
58
|
+
}
|
|
39
59
|
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
<p class="uk-text-large uk-margin-remove">
|
|
2
|
+
{{@name}}
|
|
3
|
+
{{#if @isDraft}}
|
|
4
|
+
<UkLabel
|
|
5
|
+
@label={{t "caluma.distribution.status.draft"}}
|
|
6
|
+
class="uk-margin-left"
|
|
7
|
+
/>
|
|
8
|
+
{{/if}}
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
{{#if (and @modifiedBy @modifiedAt)}}
|
|
12
|
+
<p class="uk-text-meta uk-margin-remove-bottom uk-margin-small-top">
|
|
13
|
+
{{t
|
|
14
|
+
"caluma.distribution.last-modified"
|
|
15
|
+
user=(user-name @modifiedBy)
|
|
16
|
+
date=(format-date @modifiedAt)
|
|
17
|
+
time=(format-time @modifiedAt hour="2-digit" minute="2-digit")
|
|
18
|
+
}}
|
|
19
|
+
</p>
|
|
20
|
+
{{/if}}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
{{#if @route}}
|
|
2
|
+
<LinkTo @route={{@route}} class={{this.class}} title={{@title}} ...attributes>
|
|
3
|
+
{{#if @loading}}
|
|
4
|
+
<UkSpinner @ratio={{0.6}} />
|
|
5
|
+
{{else if @fromSvgJar}}
|
|
6
|
+
{{svg-jar @icon title=@title width="20" height="20"}}
|
|
7
|
+
{{else}}
|
|
8
|
+
<UkIcon @icon={{@icon}} />
|
|
9
|
+
{{/if}}
|
|
10
|
+
</LinkTo>
|
|
11
|
+
{{else}}
|
|
12
|
+
<button
|
|
13
|
+
type="button"
|
|
14
|
+
class={{this.class}}
|
|
15
|
+
title={{@title}}
|
|
16
|
+
...attributes
|
|
17
|
+
{{on "click" @onClick}}
|
|
18
|
+
>
|
|
19
|
+
{{#if @loading}}
|
|
20
|
+
<UkSpinner @ratio={{0.6}} />
|
|
21
|
+
{{else if @fromSvgJar}}
|
|
22
|
+
{{svg-jar @icon title=@title width="20" height="20"}}
|
|
23
|
+
{{else}}
|
|
24
|
+
<UkIcon @icon={{@icon}} />
|
|
25
|
+
{{/if}}
|
|
26
|
+
</button>
|
|
27
|
+
{{/if}}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { dasherize } from "@ember/string";
|
|
2
2
|
import Component from "@glimmer/component";
|
|
3
3
|
|
|
4
|
-
export default class
|
|
4
|
+
export default class CdIconButtonComponent extends Component {
|
|
5
5
|
get class() {
|
|
6
6
|
const gutters = [
|
|
7
7
|
"gutter",
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
<CfContent
|
|
2
|
+
@documentId={{decode-id this.inquiry.childCase.document.id}}
|
|
3
|
+
@disabled={{cannot "edit answer form of inquiry" this.inquiry}}
|
|
4
|
+
@loading={{this._inquiry.isRunning}}
|
|
5
|
+
>
|
|
6
|
+
<:default as |content|>
|
|
7
|
+
|
|
8
|
+
<div class="uk-position-relative">
|
|
9
|
+
<CdDocumentHeader
|
|
10
|
+
@name={{content.document.rootForm.raw.name}}
|
|
11
|
+
@isDraft={{eq this.inquiry.status "READY"}}
|
|
12
|
+
@modifiedAt={{this.inquiry.childCase.document.modifiedContentAt}}
|
|
13
|
+
@modifiedBy={{this.inquiry.childCase.document.modifiedContentByUser}}
|
|
14
|
+
/>
|
|
15
|
+
|
|
16
|
+
<CdInquiryDialog::InquiryDeadline
|
|
17
|
+
@inquiry={{this.inquiry}}
|
|
18
|
+
class="uk-margin-remove uk-position-center-right"
|
|
19
|
+
/>
|
|
20
|
+
</div>
|
|
21
|
+
|
|
22
|
+
<hr />
|
|
23
|
+
|
|
24
|
+
<div class="uk-margin uk-text-italic inquiry-answer-form__request">
|
|
25
|
+
<CdInquiryDialog::InquiryPart
|
|
26
|
+
@inquiry={{this.inquiry}}
|
|
27
|
+
@type="request"
|
|
28
|
+
@disabled={{true}}
|
|
29
|
+
/>
|
|
30
|
+
</div>
|
|
31
|
+
|
|
32
|
+
{{#if
|
|
33
|
+
(and
|
|
34
|
+
(not this.buttons.length)
|
|
35
|
+
(can "edit answer form of inquiry" this.inquiry)
|
|
36
|
+
)
|
|
37
|
+
}}
|
|
38
|
+
<div class="uk-alert uk-alert-warning uk-flex uk-flex-middle">
|
|
39
|
+
<UkIcon @icon="warning" class="uk-margin-small-right" />
|
|
40
|
+
{{t "caluma.distribution.answer.complete-not-allowed"}}
|
|
41
|
+
{{t "caluma.distribution.not-allowed-hint"}}
|
|
42
|
+
</div>
|
|
43
|
+
{{/if}}
|
|
44
|
+
|
|
45
|
+
<content.form />
|
|
46
|
+
|
|
47
|
+
{{#each this.buttons as |buttonConfig|}}
|
|
48
|
+
{{#if buttonConfig.isFormButton}}
|
|
49
|
+
<DocumentValidity @document={{content.document}} as |isValid validate|>
|
|
50
|
+
<UkButton
|
|
51
|
+
@type="submit"
|
|
52
|
+
@color={{buttonConfig.color}}
|
|
53
|
+
@disabled={{or (not isValid) this.completeWorkItem.isRunning}}
|
|
54
|
+
@loading={{this.completeWorkItem.isRunning}}
|
|
55
|
+
@onClick={{fn
|
|
56
|
+
(perform this.completeWorkItem)
|
|
57
|
+
buttonConfig.workItemId
|
|
58
|
+
validate
|
|
59
|
+
}}
|
|
60
|
+
>{{buttonConfig.label}}</UkButton>
|
|
61
|
+
</DocumentValidity>
|
|
62
|
+
{{else}}
|
|
63
|
+
<UkButton
|
|
64
|
+
@type="button"
|
|
65
|
+
@color={{buttonConfig.color}}
|
|
66
|
+
@disabled={{this.completeWorkItem.isRunning}}
|
|
67
|
+
@loading={{this.completeWorkItem.isRunning}}
|
|
68
|
+
@onClick={{fn
|
|
69
|
+
(perform this.completeWorkItem)
|
|
70
|
+
buttonConfig.workItemId
|
|
71
|
+
null
|
|
72
|
+
}}
|
|
73
|
+
>{{buttonConfig.label}}</UkButton>
|
|
74
|
+
{{/if}}
|
|
75
|
+
{{/each}}
|
|
76
|
+
</:default>
|
|
77
|
+
<:notfound><CdNotfound /></:notfound>
|
|
78
|
+
</CfContent>
|
|
@@ -2,39 +2,51 @@ import { inject as service } from "@ember/service";
|
|
|
2
2
|
import Component from "@glimmer/component";
|
|
3
3
|
import { queryManager } from "ember-apollo-client";
|
|
4
4
|
import { dropTask } from "ember-concurrency";
|
|
5
|
-
import {
|
|
5
|
+
import { trackedTask } from "ember-resources/util/ember-concurrency";
|
|
6
6
|
|
|
7
7
|
import { decodeId } from "@projectcaluma/ember-core/helpers/decode-id";
|
|
8
8
|
import config from "@projectcaluma/ember-distribution/config";
|
|
9
9
|
import completeInquiryWorkItemMutation from "@projectcaluma/ember-distribution/gql/mutations/complete-inquiry-work-item.graphql";
|
|
10
10
|
import inquiryAnswerQuery from "@projectcaluma/ember-distribution/gql/queries/inquiry-answer.graphql";
|
|
11
11
|
|
|
12
|
-
export default class
|
|
12
|
+
export default class CdInquiryAnswerFormComponent extends Component {
|
|
13
13
|
@service intl;
|
|
14
14
|
@service router;
|
|
15
|
+
@service abilities;
|
|
15
16
|
@service notification;
|
|
16
17
|
|
|
17
18
|
@config config;
|
|
18
19
|
|
|
19
20
|
@queryManager apollo;
|
|
20
21
|
|
|
21
|
-
_inquiry =
|
|
22
|
+
_inquiry = trackedTask(this, this.fetchInquiryAnswer, () => [
|
|
23
|
+
this.args.inquiry,
|
|
24
|
+
]);
|
|
22
25
|
|
|
23
26
|
get inquiry() {
|
|
24
27
|
return this._inquiry.value?.[0]?.node;
|
|
25
28
|
}
|
|
26
29
|
|
|
27
30
|
get buttons() {
|
|
28
|
-
return this.inquiry?.childCase.workItems.edges
|
|
29
|
-
|
|
31
|
+
return this.inquiry?.childCase.workItems.edges
|
|
32
|
+
.map((edge) => {
|
|
33
|
+
const config = this.config.inquiry.answer.buttons[edge.node.task.slug];
|
|
30
34
|
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
35
|
+
return this.abilities.can(
|
|
36
|
+
"complete child work item of inquiry",
|
|
37
|
+
this.inquiry,
|
|
38
|
+
{ task: edge.node.task.slug }
|
|
39
|
+
)
|
|
40
|
+
? {
|
|
41
|
+
workItemId: decodeId(edge.node.id),
|
|
42
|
+
color: config.color,
|
|
43
|
+
isFormButton:
|
|
44
|
+
edge.node.task.__typename === "CompleteWorkflowFormTask",
|
|
45
|
+
label: this.intl.t(config.label),
|
|
46
|
+
}
|
|
47
|
+
: null;
|
|
48
|
+
})
|
|
49
|
+
.filter(Boolean);
|
|
38
50
|
}
|
|
39
51
|
|
|
40
52
|
@dropTask
|
|
@@ -45,6 +57,8 @@ export default class InquiryAnswerFormComponent extends Component {
|
|
|
45
57
|
variables: {
|
|
46
58
|
inquiry: this.args.inquiry,
|
|
47
59
|
buttonTasks: Object.keys(this.config.inquiry.answer.buttons),
|
|
60
|
+
infoQuestion: this.config.inquiry.infoQuestion,
|
|
61
|
+
deadlineQuestion: this.config.inquiry.deadlineQuestion,
|
|
48
62
|
},
|
|
49
63
|
},
|
|
50
64
|
"allWorkItems.edges"
|
|
@@ -65,7 +79,7 @@ export default class InquiryAnswerFormComponent extends Component {
|
|
|
65
79
|
},
|
|
66
80
|
});
|
|
67
81
|
|
|
68
|
-
yield this.router.transitionTo("
|
|
82
|
+
yield this.router.transitionTo("inquiry.index");
|
|
69
83
|
} catch (error) {
|
|
70
84
|
this.notification.danger(
|
|
71
85
|
this.intl.t("caluma.distribution.answer.complete-error")
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{{#if this.deadline.value}}
|
|
2
|
+
<div
|
|
3
|
+
class="uk-position-top-right
|
|
4
|
+
{{if
|
|
5
|
+
this.config.ui.small
|
|
6
|
+
'uk-margin-top uk-margin-right'
|
|
7
|
+
'uk-margin-medium-top uk-margin-medium-right'
|
|
8
|
+
}}
|
|
9
|
+
{{if
|
|
10
|
+
this.isWithdrawn
|
|
11
|
+
'uk-text-muted'
|
|
12
|
+
(concat 'uk-text-' this.deadline.color)
|
|
13
|
+
}}
|
|
14
|
+
uk-flex-inline uk-flex-middle"
|
|
15
|
+
...attributes
|
|
16
|
+
>
|
|
17
|
+
{{svg-jar
|
|
18
|
+
(if this.isWithdrawn "ban-outline" "alarm-outline")
|
|
19
|
+
height=26
|
|
20
|
+
width=26
|
|
21
|
+
class="uk-margin-small-right"
|
|
22
|
+
}}
|
|
23
|
+
{{#if this.isWithdrawn}}
|
|
24
|
+
{{t "caluma.distribution.withdraw.status"}}
|
|
25
|
+
{{else}}
|
|
26
|
+
{{format-date this.deadline.value}}
|
|
27
|
+
{{/if}}
|
|
28
|
+
</div>
|
|
29
|
+
{{/if}}
|
|
@@ -3,8 +3,12 @@ import Component from "@glimmer/component";
|
|
|
3
3
|
import config from "@projectcaluma/ember-distribution/config";
|
|
4
4
|
import inquiryDeadline from "@projectcaluma/ember-distribution/utils/inquiry-deadline";
|
|
5
5
|
|
|
6
|
-
export default class
|
|
6
|
+
export default class CdInquiryDialogInquiryDeadlineComponent extends Component {
|
|
7
7
|
@config config;
|
|
8
8
|
|
|
9
9
|
@inquiryDeadline deadline;
|
|
10
|
+
|
|
11
|
+
get isWithdrawn() {
|
|
12
|
+
return this.args.inquiry.status === "CANCELED";
|
|
13
|
+
}
|
|
10
14
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<div
|
|
2
|
-
class="inquiry-divider uk-flex uk-flex-center uk-flex-middle uk-flex-between uk-
|
|
2
|
+
class="inquiry-divider uk-flex uk-flex-center uk-flex-middle uk-flex-between uk-text-{{this.status.color}}
|
|
3
|
+
{{if this.config.ui.small 'inquiry-divider--small' 'uk-margin'}}"
|
|
3
4
|
>
|
|
4
5
|
<div class="inquiry-divider__icon uk-flex uk-flex-center uk-flex-middle">
|
|
5
6
|
{{svg-jar this.status.icon title=this.status.label}}
|
|
@@ -4,7 +4,7 @@ import Component from "@glimmer/component";
|
|
|
4
4
|
import config from "@projectcaluma/ember-distribution/config";
|
|
5
5
|
import inquiryStatus from "@projectcaluma/ember-distribution/utils/inquiry-status";
|
|
6
6
|
|
|
7
|
-
export default class
|
|
7
|
+
export default class CdInquiryDialogInquiryDividerComponent extends Component {
|
|
8
8
|
@service intl;
|
|
9
9
|
|
|
10
10
|
@config config;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
<div class="uk-margin-remove-last-child">
|
|
2
|
+
<p class="uk-flex uk-flex-middle uk-text-large uk-margin-remove">
|
|
3
|
+
{{#if (eq @type "request")}}
|
|
4
|
+
{{svg-jar "arrow-redo-outline" height=24 class="uk-margin-small-right"}}
|
|
5
|
+
{{group-name @inquiry.controllingGroups}}
|
|
6
|
+
{{else if (eq @type "answer")}}
|
|
7
|
+
{{svg-jar "arrow-undo-outline" height=24 class="uk-margin-small-right"}}
|
|
8
|
+
{{group-name @inquiry.addressedGroups}}
|
|
9
|
+
{{/if}}
|
|
10
|
+
</p>
|
|
11
|
+
|
|
12
|
+
<ul
|
|
13
|
+
class="uk-subnav uk-subnav-divider
|
|
14
|
+
{{if
|
|
15
|
+
this.config.ui.small
|
|
16
|
+
'uk-margin-remove-top uk-margin-small-bottom'
|
|
17
|
+
'uk-margin-small-top'
|
|
18
|
+
}}"
|
|
19
|
+
>
|
|
20
|
+
<li>
|
|
21
|
+
<span>
|
|
22
|
+
{{format-date this.date}}
|
|
23
|
+
{{format-time this.date hour="2-digit" minute="2-digit"}}
|
|
24
|
+
</span>
|
|
25
|
+
</li>
|
|
26
|
+
{{#unless @disabled}}
|
|
27
|
+
{{#if (or (eq @type "answer") (cannot "edit inquiry" @inquiry))}}
|
|
28
|
+
<li>
|
|
29
|
+
<LinkTo
|
|
30
|
+
data-test-details
|
|
31
|
+
@route="inquiry.detail.{{if (eq @type 'answer') 'answer' 'index'}}"
|
|
32
|
+
@model={{decode-id @inquiry.id}}
|
|
33
|
+
>
|
|
34
|
+
{{t "caluma.distribution.details"}}
|
|
35
|
+
</LinkTo>
|
|
36
|
+
</li>
|
|
37
|
+
{{/if}}
|
|
38
|
+
{{#if (can "edit inquiry" @inquiry)}}
|
|
39
|
+
<li>
|
|
40
|
+
<LinkTo
|
|
41
|
+
data-test-edit
|
|
42
|
+
@route="inquiry.detail.index"
|
|
43
|
+
@model={{decode-id @inquiry.id}}
|
|
44
|
+
>
|
|
45
|
+
{{t "caluma.distribution.edit.link"}}
|
|
46
|
+
</LinkTo>
|
|
47
|
+
</li>
|
|
48
|
+
{{#if (can "withdraw inquiry" @inquiry)}}
|
|
49
|
+
<li>
|
|
50
|
+
<a
|
|
51
|
+
href=""
|
|
52
|
+
{{on "click" (perform this.withdraw)}}
|
|
53
|
+
data-test-withdraw
|
|
54
|
+
>
|
|
55
|
+
{{t "caluma.distribution.withdraw.link"}}
|
|
56
|
+
</a>
|
|
57
|
+
</li>
|
|
58
|
+
{{/if}}
|
|
59
|
+
{{else if (can "answer inquiry" @inquiry)}}
|
|
60
|
+
<li>
|
|
61
|
+
<LinkTo
|
|
62
|
+
data-test-answer
|
|
63
|
+
@route="inquiry.detail.answer"
|
|
64
|
+
@model={{decode-id @inquiry.id}}
|
|
65
|
+
>
|
|
66
|
+
{{t "caluma.distribution.answer.link"}}
|
|
67
|
+
</LinkTo>
|
|
68
|
+
</li>
|
|
69
|
+
{{/if}}
|
|
70
|
+
{{/unless}}
|
|
71
|
+
</ul>
|
|
72
|
+
|
|
73
|
+
{{#if this.requestInfo}}
|
|
74
|
+
<CdTruncated
|
|
75
|
+
data-test-inquiry-request
|
|
76
|
+
@text={{this.requestInfo}}
|
|
77
|
+
@length={{500}}
|
|
78
|
+
/>
|
|
79
|
+
{{else if this.answerInfo}}
|
|
80
|
+
{{#each this.answerInfo as |info|}}
|
|
81
|
+
<div class="uk-margin">
|
|
82
|
+
<p
|
|
83
|
+
class="uk-text-bolder
|
|
84
|
+
{{if
|
|
85
|
+
this.config.ui.small
|
|
86
|
+
'uk-margin-remove'
|
|
87
|
+
'uk-margin-small-bottom'
|
|
88
|
+
}}"
|
|
89
|
+
>
|
|
90
|
+
{{info.question}}
|
|
91
|
+
</p>
|
|
92
|
+
<CdTruncated
|
|
93
|
+
data-test-inquiry-answer
|
|
94
|
+
class="uk-margin-remove"
|
|
95
|
+
@text={{info.value}}
|
|
96
|
+
@length={{200}}
|
|
97
|
+
/>
|
|
98
|
+
</div>
|
|
99
|
+
{{/each}}
|
|
100
|
+
{{/if}}
|
|
101
|
+
</div>
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { inject as service } from "@ember/service";
|
|
2
|
+
import { isEmpty } from "@ember/utils";
|
|
3
|
+
import Component from "@glimmer/component";
|
|
4
|
+
import { queryManager } from "ember-apollo-client";
|
|
5
|
+
import { dropTask } from "ember-concurrency";
|
|
6
|
+
import { confirm } from "ember-uikit";
|
|
7
|
+
|
|
8
|
+
import { decodeId } from "@projectcaluma/ember-core/helpers/decode-id";
|
|
9
|
+
import config from "@projectcaluma/ember-distribution/config";
|
|
10
|
+
import withdrawInquiryMutation from "@projectcaluma/ember-distribution/gql/mutations/withdraw-inquiry.graphql";
|
|
11
|
+
|
|
12
|
+
export default class CdInquiryDialogInquiryPartComponent extends Component {
|
|
13
|
+
@service notification;
|
|
14
|
+
@service router;
|
|
15
|
+
@service intl;
|
|
16
|
+
|
|
17
|
+
@queryManager apollo;
|
|
18
|
+
|
|
19
|
+
@config config;
|
|
20
|
+
|
|
21
|
+
get date() {
|
|
22
|
+
const key = this.args.type === "request" ? "createdAt" : "closedAt";
|
|
23
|
+
|
|
24
|
+
return this.args.inquiry[key];
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
get requestInfo() {
|
|
28
|
+
return this.args.type === "request"
|
|
29
|
+
? this.args.inquiry.document.info.edges[0]?.node.value
|
|
30
|
+
: null;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
get answerInfo() {
|
|
34
|
+
return this.args.type === "answer"
|
|
35
|
+
? this.args.inquiry.childCase.document.info.edges
|
|
36
|
+
.filter((edge) => !isEmpty(edge.node.value))
|
|
37
|
+
.map((edge) => ({
|
|
38
|
+
question: edge.node.question.label,
|
|
39
|
+
value: edge.node.value,
|
|
40
|
+
}))
|
|
41
|
+
: null;
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
@dropTask
|
|
45
|
+
*withdraw(e) {
|
|
46
|
+
e.preventDefault();
|
|
47
|
+
|
|
48
|
+
/* istanbul ignore next */
|
|
49
|
+
if (!(yield confirm(this.intl.t("caluma.distribution.withdraw.confirm")))) {
|
|
50
|
+
return;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
try {
|
|
54
|
+
yield this.apollo.mutate({
|
|
55
|
+
mutation: withdrawInquiryMutation,
|
|
56
|
+
variables: {
|
|
57
|
+
workItem: decodeId(this.args.inquiry.id),
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
} catch (error) {
|
|
61
|
+
this.notification.danger(
|
|
62
|
+
this.intl.t("caluma.distribution.withdraw.error")
|
|
63
|
+
);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<article
|
|
2
|
+
class="uk-card uk-card-default uk-margin
|
|
3
|
+
{{if this.config.ui.small 'uk-card-small'}}"
|
|
4
|
+
>
|
|
5
|
+
<div class="uk-card-body">
|
|
6
|
+
<CdInquiryDialog::InquiryDeadline @inquiry={{@inquiry}} />
|
|
7
|
+
|
|
8
|
+
{{#if this.hasAnswer}}
|
|
9
|
+
<CdInquiryDialog::InquiryPart @inquiry={{@inquiry}} @type="answer" />
|
|
10
|
+
|
|
11
|
+
<CdInquiryDialog::InquiryDivider @inquiry={{@inquiry}} />
|
|
12
|
+
{{/if}}
|
|
13
|
+
|
|
14
|
+
<CdInquiryDialog::InquiryPart @inquiry={{@inquiry}} @type="request" />
|
|
15
|
+
</div>
|
|
16
|
+
</article>
|