@projectcaluma/ember-distribution 11.0.0-beta.29 → 11.0.0-beta.31

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.
Files changed (54) hide show
  1. package/addon/abilities/distribution.js +9 -0
  2. package/addon/abilities/inquiry.js +1 -1
  3. package/addon/components/cd-document-header.hbs +3 -12
  4. package/addon/components/cd-inquiry-answer-form.hbs +140 -57
  5. package/addon/components/cd-inquiry-answer-form.js +20 -2
  6. package/addon/components/cd-inquiry-dialog/inquiry-deadline.hbs +5 -10
  7. package/addon/components/cd-inquiry-dialog/inquiry-deadline.js +14 -0
  8. package/addon/components/cd-inquiry-dialog/inquiry-part.hbs +116 -89
  9. package/addon/components/cd-inquiry-dialog.js +11 -15
  10. package/addon/components/cd-inquiry-edit-form.hbs +12 -4
  11. package/addon/components/cd-inquiry-edit-form.js +2 -2
  12. package/addon/components/cd-inquiry-new-form/bulk-edit.hbs +20 -0
  13. package/addon/components/cd-inquiry-new-form/bulk-edit.js +116 -0
  14. package/addon/components/cd-inquiry-new-form/select.hbs +71 -0
  15. package/addon/components/cd-inquiry-new-form/select.js +76 -0
  16. package/addon/components/cd-inquiry-new-form.hbs +29 -86
  17. package/addon/components/cd-inquiry-new-form.js +1 -100
  18. package/addon/components/cd-navigation/controls.hbs +112 -66
  19. package/addon/components/cd-navigation/controls.js +29 -14
  20. package/addon/components/cd-navigation/item.hbs +22 -11
  21. package/addon/components/cd-navigation/section.hbs +15 -21
  22. package/addon/components/cd-navigation/section.js +5 -13
  23. package/addon/components/cd-navigation.hbs +4 -9
  24. package/addon/config.js +19 -0
  25. package/addon/gql/fragments/inquiry-answer.graphql +57 -0
  26. package/addon/gql/fragments/inquiry-request.graphql +26 -0
  27. package/addon/gql/mutations/complete-inquiry-work-item.graphql +24 -13
  28. package/addon/gql/mutations/reopen-inquiry.graphql +3 -13
  29. package/addon/gql/queries/{control-work-items.graphql → controls.graphql} +18 -1
  30. package/addon/gql/queries/incomplete-inquiries.graphql +1 -1
  31. package/addon/gql/queries/inquiry-answer.graphql +5 -1
  32. package/addon/gql/queries/inquiry-dialog.graphql +31 -2
  33. package/addon/gql/queries/inquiry-form.graphql +26 -0
  34. package/addon/gql/queries/{inquiry-navigation.graphql → navigation.graphql} +24 -6
  35. package/addon/routes/application.js +7 -0
  36. package/addon/routes/index.js +15 -28
  37. package/addon/routes/inquiry/index.js +1 -4
  38. package/addon/routes/new.js +1 -5
  39. package/addon/services/distribution.js +81 -9
  40. package/addon/templates/application.hbs +7 -5
  41. package/addon/templates/index.hbs +1 -5
  42. package/addon/templates/inquiry/index.hbs +1 -5
  43. package/addon/templates/new.hbs +0 -1
  44. package/addon/utils/inquiry-deadline.js +3 -1
  45. package/app/components/cd-inquiry-new-form/bulk-edit.js +1 -0
  46. package/app/components/cd-inquiry-new-form/select.js +1 -0
  47. package/app/styles/_answer-form.scss +4 -0
  48. package/package.json +17 -17
  49. package/translations/de.yaml +31 -9
  50. package/translations/en.yaml +31 -10
  51. package/translations/fr.yaml +31 -9
  52. package/addon/components/cd-navigation.js +0 -53
  53. package/addon/gql/fragments/inquiry.graphql +0 -117
  54. package/addon/modifiers/pikaday.js +0 -2
@@ -1,4 +1,33 @@
1
- #import InquiryAnswerButtons, InquiryDialog, InquiryDeadlineDocument, InquiryStatusDocument, InquiryRequest from '../fragments/inquiry.graphql'
1
+ # import InquiryAnswer, InquiryAnswerButtons, InquiryAnswerStatus from '../fragments/inquiry-answer.graphql'
2
+ # import InquiryRequest, InquiryRequestDeadline from '../fragments/inquiry-request.graphql'
3
+
4
+ fragment DialogInquiry on WorkItem {
5
+ id
6
+ addressedGroups
7
+ controllingGroups
8
+ assignedUsers
9
+ createdAt
10
+ closedAt
11
+ status
12
+ isRedoable
13
+ task {
14
+ id
15
+ slug
16
+ }
17
+ meta
18
+ document {
19
+ id
20
+ ...InquiryRequest
21
+ }
22
+ childCase {
23
+ id
24
+ ...InquiryAnswerButtons
25
+ document {
26
+ id
27
+ ...InquiryAnswer
28
+ }
29
+ }
30
+ }
2
31
 
3
32
  query InquiryDialog(
4
33
  $task: ID!
@@ -22,7 +51,7 @@ query InquiryDialog(
22
51
  ) {
23
52
  edges {
24
53
  node {
25
- ...InquiryDialog
54
+ ...DialogInquiry
26
55
  }
27
56
  }
28
57
  }
@@ -0,0 +1,26 @@
1
+ # import FieldQuestion, FieldTableQuestion, SimpleQuestion from '@projectcaluma/ember-form/gql/fragments/field.graphql'
2
+
3
+ query InquiryForm($inquiryTask: String!) {
4
+ allTasks(filter: [{ slug: $inquiryTask }], first: 1) {
5
+ edges {
6
+ node {
7
+ id
8
+ ... on CompleteTaskFormTask {
9
+ form {
10
+ id
11
+ slug
12
+ name
13
+ meta
14
+ questions {
15
+ edges {
16
+ node {
17
+ ...FieldQuestion
18
+ }
19
+ }
20
+ }
21
+ }
22
+ }
23
+ }
24
+ }
25
+ }
26
+ }
@@ -1,12 +1,30 @@
1
- #import Inquiry, InquiryDeadlineDocument, InquiryStatusDocument from '../fragments/inquiry.graphql'
1
+ # import InquiryAnswerStatus from '../fragments/inquiry-answer.graphql'
2
+ # import InquiryRequestDeadline from '../fragments/inquiry-request.graphql'
2
3
 
3
- query InquiryNavigation(
4
+ fragment NavigationInquiry on WorkItem {
5
+ id
6
+ status
7
+ addressedGroups
8
+ controllingGroups
9
+ document {
10
+ id
11
+ ...InquiryRequestDeadline
12
+ }
13
+ childCase {
14
+ id
15
+ document {
16
+ id
17
+ ...InquiryAnswerStatus
18
+ }
19
+ }
20
+ }
21
+
22
+ query Navigation(
4
23
  $task: ID!
5
24
  $statusQuestion: ID
6
25
  $deadlineQuestion: ID
7
26
  $currentGroup: String!
8
27
  $caseId: ID!
9
- $includeNavigationData: Boolean!
10
28
  ) {
11
29
  controlling: allWorkItems(
12
30
  filter: [
@@ -19,7 +37,7 @@ query InquiryNavigation(
19
37
  ) {
20
38
  edges {
21
39
  node {
22
- ...Inquiry
40
+ ...NavigationInquiry
23
41
  }
24
42
  }
25
43
  }
@@ -35,7 +53,7 @@ query InquiryNavigation(
35
53
  ) {
36
54
  edges {
37
55
  node {
38
- ...Inquiry
56
+ ...NavigationInquiry
39
57
  }
40
58
  }
41
59
  }
@@ -52,7 +70,7 @@ query InquiryNavigation(
52
70
  ) {
53
71
  edges {
54
72
  node {
55
- ...Inquiry
73
+ ...NavigationInquiry
56
74
  }
57
75
  }
58
76
  }
@@ -1,7 +1,14 @@
1
1
  import Route from "@ember/routing/route";
2
+ import { inject as service } from "@ember/service";
2
3
 
3
4
  export default class ApplicationRoute extends Route {
5
+ @service distribution;
6
+
4
7
  model(params) {
5
8
  return params.case;
6
9
  }
10
+
11
+ afterModel(model) {
12
+ this.distribution.caseId = model;
13
+ }
7
14
  }
@@ -1,41 +1,28 @@
1
1
  import Route from "@ember/routing/route";
2
2
  import { inject as service } from "@ember/service";
3
- import { queryManager } from "ember-apollo-client";
4
-
5
- import config from "@projectcaluma/ember-distribution/config";
6
- import inquiryNavigationQuery from "@projectcaluma/ember-distribution/gql/queries/inquiry-navigation.graphql";
7
- import uniqueByGroups from "@projectcaluma/ember-distribution/utils/unique-by-groups";
8
3
 
9
4
  export default class IndexRoute extends Route {
5
+ @service("-scheduler") scheduler;
6
+ @service distribution;
10
7
  @service router;
11
- @service calumaOptions;
12
8
 
13
- @config config;
9
+ async redirect() {
10
+ // trigger resource
11
+ this.distribution.navigation.value;
14
12
 
15
- @queryManager apollo;
13
+ // wait for navigation request and group resolver
14
+ await this.distribution.fetchNavigation.last;
15
+ await this.scheduler.resolveGroup.last;
16
16
 
17
- async redirect(model) {
18
- const response = await this.apollo.query({
19
- query: inquiryNavigationQuery,
20
- variables: {
21
- caseId: model,
22
- task: this.config.inquiry.task,
23
- currentGroup: String(this.calumaOptions.currentGroupId),
24
- includeNavigationData: false,
25
- },
26
- });
17
+ const inquiries = this.distribution.inquiries;
27
18
 
28
- const models = Object.entries(response).flatMap(([, objects]) => {
29
- return uniqueByGroups(objects.edges.map((edge) => edge.node)).map(
30
- (inquiry) => ({
31
- from: inquiry.controllingGroups[0],
32
- to: inquiry.addressedGroups[0],
33
- })
34
- );
35
- }, {});
19
+ const firstInquiry = inquiries.addressed[0] ?? inquiries.controlling[0];
36
20
 
37
- if (models.length) {
38
- return this.router.replaceWith("inquiry", models[0]);
21
+ if (firstInquiry) {
22
+ return this.router.replaceWith("inquiry", {
23
+ from: firstInquiry.controllingGroups[0],
24
+ to: firstInquiry.addressedGroups[0],
25
+ });
39
26
  }
40
27
  }
41
28
  }
@@ -2,9 +2,6 @@ import Route from "@ember/routing/route";
2
2
 
3
3
  export default class InquiryIndexRoute extends Route {
4
4
  model() {
5
- return {
6
- ...this.modelFor("inquiry"),
7
- case: this.modelFor("application"),
8
- };
5
+ return this.modelFor("inquiry");
9
6
  }
10
7
  }
@@ -1,7 +1,3 @@
1
1
  import Route from "@ember/routing/route";
2
2
 
3
- export default class NewRoute extends Route {
4
- model() {
5
- return this.modelFor("application");
6
- }
7
- }
3
+ export default class NewRoute extends Route {}
@@ -1,14 +1,17 @@
1
- import { getOwner } from "@ember/application";
2
1
  import Service, { inject as service } from "@ember/service";
2
+ import { tracked } from "@glimmer/tracking";
3
3
  import { queryManager, getObservable } from "ember-apollo-client";
4
4
  import { dropTask } from "ember-concurrency";
5
5
  import { trackedTask } from "ember-resources/util/ember-concurrency";
6
+ import { cached } from "tracked-toolbox";
6
7
 
7
8
  import { decodeId } from "@projectcaluma/ember-core/helpers/decode-id";
8
9
  import config from "@projectcaluma/ember-distribution/config";
9
10
  import createInquiryMutation from "@projectcaluma/ember-distribution/gql/mutations/create-inquiry.graphql";
10
- import controlWorkItemsQuery from "@projectcaluma/ember-distribution/gql/queries/control-work-items.graphql";
11
- import inquiryNavigationQuery from "@projectcaluma/ember-distribution/gql/queries/inquiry-navigation.graphql";
11
+ import controlsQuery from "@projectcaluma/ember-distribution/gql/queries/controls.graphql";
12
+ import inquiryDialogQuery from "@projectcaluma/ember-distribution/gql/queries/inquiry-dialog.graphql";
13
+ import navigationQuery from "@projectcaluma/ember-distribution/gql/queries/navigation.graphql";
14
+ import uniqueByGroups from "@projectcaluma/ember-distribution/utils/unique-by-groups";
12
15
 
13
16
  export default class DistributionService extends Service {
14
17
  @service("-scheduler") scheduler;
@@ -21,8 +24,14 @@ export default class DistributionService extends Service {
21
24
 
22
25
  @config config;
23
26
 
24
- get caseId() {
25
- return getOwner(this).lookup("route:application").currentModel;
27
+ @tracked caseId;
28
+
29
+ get hasInquiries() {
30
+ return (
31
+ this.navigation.value?.addressed.edges.length > 0 ||
32
+ this.navigation.value?.controlling.edges.length > 0 ||
33
+ this.navigation.value?.more.edges.length > 0
34
+ );
26
35
  }
27
36
 
28
37
  controls = trackedTask(this, this.fetchControls, () => [this.caseId]);
@@ -44,13 +53,14 @@ export default class DistributionService extends Service {
44
53
  @dropTask
45
54
  *fetchControls(caseId) {
46
55
  return yield this.apollo.watchQuery({
47
- query: controlWorkItemsQuery,
56
+ query: controlsQuery,
48
57
  variables: {
49
58
  caseId,
50
59
  currentGroup: String(this.calumaOptions.currentGroupId),
51
60
  createTask: this.config.controls.createTask,
52
61
  completeTask: this.config.controls.completeTask,
53
62
  inquiryTask: this.config.inquiry.task,
63
+ checkTask: this.config.controls.checkTask,
54
64
  },
55
65
  });
56
66
  }
@@ -58,14 +68,13 @@ export default class DistributionService extends Service {
58
68
  @dropTask
59
69
  *fetchNavigation(caseId) {
60
70
  const response = yield this.apollo.watchQuery({
61
- query: inquiryNavigationQuery,
71
+ query: navigationQuery,
62
72
  variables: {
63
73
  caseId,
64
74
  task: this.config.inquiry.task,
65
75
  currentGroup: String(this.calumaOptions.currentGroupId),
66
76
  statusQuestion: this.config.inquiry.answer.statusQuestion,
67
77
  deadlineQuestion: this.config.inquiry.deadlineQuestion,
68
- includeNavigationData: true,
69
78
  },
70
79
  });
71
80
 
@@ -93,20 +102,38 @@ export default class DistributionService extends Service {
93
102
  }
94
103
 
95
104
  @dropTask
96
- *createInquiry(groups) {
105
+ *createInquiry(groups, context = {}) {
97
106
  try {
98
107
  // get create inquiry work item to complete
99
108
  const createId = decodeId(this.controls.value?.create.edges[0].node.id);
100
109
 
110
+ // refetch dialog queries of the groups that will have a new inquiry
111
+ const refetchQueries = groups.map((group) => ({
112
+ query: inquiryDialogQuery,
113
+ variables: {
114
+ from: String(this.calumaOptions.currentGroupId),
115
+ to: String(group),
116
+ caseId: this.caseId,
117
+ task: this.config.inquiry.task,
118
+ infoQuestion: this.config.inquiry.infoQuestion,
119
+ deadlineQuestion: this.config.inquiry.deadlineQuestion,
120
+ statusQuestion: this.config.inquiry.answer.statusQuestion,
121
+ answerInfoQuestions: this.config.inquiry.answer.infoQuestions,
122
+ buttonTasks: Object.keys(this.config.inquiry.answer.buttons),
123
+ },
124
+ }));
125
+
101
126
  // create new inquiries
102
127
  yield this.apollo.mutate({
103
128
  mutation: createInquiryMutation,
104
129
  variables: {
105
130
  id: createId,
106
131
  context: JSON.stringify({
132
+ ...context,
107
133
  addressed_groups: groups.map(String),
108
134
  }),
109
135
  },
136
+ refetchQueries,
110
137
  });
111
138
 
112
139
  // refetch navigation and controls data
@@ -117,4 +144,49 @@ export default class DistributionService extends Service {
117
144
  );
118
145
  }
119
146
  }
147
+
148
+ @cached
149
+ get inquiries() {
150
+ const findGroupName = (identifiers) => {
151
+ const group = this.scheduler.groupCache.find((group) =>
152
+ identifiers
153
+ .map(String)
154
+ .includes(String(group[this.calumaOptions.groupIdentifierProperty]))
155
+ );
156
+
157
+ return group?.[this.calumaOptions.groupNameProperty] ?? "";
158
+ };
159
+
160
+ return Object.entries(this.navigation.value ?? {}).reduce(
161
+ (inquiries, [key, objects]) => {
162
+ return {
163
+ ...inquiries,
164
+ // Don't return any data until the internal scheduler has cached
165
+ // groups since we don't want to render empty navigation items
166
+ [key]: this.scheduler.groupCache.length
167
+ ? uniqueByGroups(
168
+ objects.edges.map((edge) => ({
169
+ ...edge.node,
170
+ // Populate the work item with the names of the involved
171
+ // groups so the <DistributionNavigation::Section /> component
172
+ // can sort by them
173
+ addressedGroupName: findGroupName(edge.node.addressedGroups),
174
+ controllingGroupName: findGroupName(
175
+ edge.node.controllingGroups
176
+ ),
177
+ }))
178
+ ).sort((a, b) => {
179
+ const sortProperty =
180
+ key === "addressed"
181
+ ? "controllingGroupName"
182
+ : "addressedGroupName";
183
+
184
+ return a[sortProperty].localeCompare(b[sortProperty]);
185
+ })
186
+ : [],
187
+ };
188
+ },
189
+ {}
190
+ );
191
+ }
120
192
  }
@@ -8,11 +8,13 @@
8
8
  </div>
9
9
  {{else}}
10
10
  <div uk-grid class={{if this.config.ui.stack "uk-grid-small"}}>
11
- <div class={{if this.config.ui.stack "uk-width-1-1" "uk-width-1-3"}}>
12
- <CdNavigation @caseId={{@model}} />
13
- </div>
14
- {{#if this.config.ui.stack}}<div class="uk-width-1-1"><hr /></div>{{/if}}
15
- <div class={{if this.config.ui.stack "uk-width-1-1" "uk-width-2-3"}}>
11
+ {{#if this.distribution.hasInquiries}}
12
+ <div class={{if this.config.ui.stack "uk-width-1-1" "uk-width-1-3"}}>
13
+ <CdNavigation />
14
+ </div>
15
+ {{#if this.config.ui.stack}}<div class="uk-width-1-1"><hr /></div>{{/if}}
16
+ {{/if}}
17
+ <div class="uk-width-expand">
16
18
  {{outlet}}
17
19
  </div>
18
20
  </div>
@@ -3,9 +3,5 @@
3
3
  <p class="uk-margin-medium uk-margin-remove-horizontal">
4
4
  {{t "caluma.distribution.empty"}}
5
5
  </p>
6
- {{#if (can "create inquiry of distribution")}}
7
- <LinkTo @route="new" class="uk-button uk-button-primary">
8
- {{t "caluma.distribution.start"}}
9
- </LinkTo>
10
- {{/if}}
6
+ <CdNavigation::Controls @useButtons={{true}} />
11
7
  </div>
@@ -1,5 +1 @@
1
- <CdInquiryDialog
2
- @from={{@model.from}}
3
- @to={{@model.to}}
4
- @caseId={{@model.case}}
5
- />
1
+ <CdInquiryDialog @from={{@model.from}} @to={{@model.to}} />
@@ -1,7 +1,6 @@
1
1
  <CdInquiryNewForm
2
2
  @selectedTypes={{this.selectedTypes}}
3
3
  @search={{this.search}}
4
- @caseId={{@model}}
5
4
  @onChangeSelectedTypes={{fn (mut this.selectedTypes)}}
6
5
  @onChangeSearch={{fn (mut this.search)}}
7
6
  />
@@ -19,7 +19,9 @@ function decorator(
19
19
  get() {
20
20
  const inquiry = get(this, inquiryProperty);
21
21
  const value = inquiry.document?.deadline.edges[0]?.node.value;
22
- const isDone = ["COMPLETED", "SKIPPED"].includes(inquiry.status);
22
+ const isDone = ["COMPLETED", "SKIPPED", "CANCELED"].includes(
23
+ inquiry.status
24
+ );
23
25
 
24
26
  const diff = DateTime.fromISO(value).diffNow("days").days;
25
27
 
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-distribution/components/cd-inquiry-new-form/bulk-edit";
@@ -0,0 +1 @@
1
+ export { default } from "@projectcaluma/ember-distribution/components/cd-inquiry-new-form/select";
@@ -2,3 +2,7 @@
2
2
  border-left: 5px solid $global-border;
3
3
  padding-left: $global-gutter - 5px;
4
4
  }
5
+
6
+ .inquiry-answer-form__side-bar {
7
+ max-width: 25%;
8
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@projectcaluma/ember-distribution",
3
- "version": "11.0.0-beta.29",
3
+ "version": "11.0.0-beta.31",
4
4
  "description": "Ember engine for the Caluma distribution module.",
5
5
  "keywords": [
6
6
  "ember-addon",
@@ -10,7 +10,7 @@
10
10
  "homepage": "https://docs.caluma.io/ember-caluma",
11
11
  "repository": "github:projectcaluma/ember-caluma",
12
12
  "scripts": {
13
- "test": "npm-run-all test:*",
13
+ "test": "npm-run-all --print-name \"lint\" \"test:*\"",
14
14
  "test:ember": "ember test",
15
15
  "test:ember-compatibility": "ember try:each"
16
16
  },
@@ -20,40 +20,40 @@
20
20
  "dependencies": {
21
21
  "@ember/legacy-built-in-components": "^0.4.1",
22
22
  "@ember/string": "^3.0.0",
23
- "@embroider/macros": "^1.8.3",
23
+ "@embroider/macros": "^1.9.0",
24
24
  "@glimmer/component": "^1.1.2",
25
25
  "@glimmer/tracking": "^1.1.2",
26
- "@projectcaluma/ember-core": "^11.0.0-beta.29",
27
- "@projectcaluma/ember-form": "^11.0.0-beta.29",
28
- "@projectcaluma/ember-workflow": "^11.0.0-beta.29",
26
+ "@projectcaluma/ember-core": "^11.0.0-beta.31",
27
+ "@projectcaluma/ember-form": "^11.0.0-beta.31",
28
+ "@projectcaluma/ember-workflow": "^11.0.0-beta.31",
29
29
  "ember-apollo-client": "~4.0.2",
30
- "ember-auto-import": "^2.4.2",
30
+ "ember-auto-import": "^2.4.3",
31
31
  "ember-can": "^4.2.0",
32
32
  "ember-cli-babel": "^7.26.11",
33
33
  "ember-cli-htmlbars": "^6.1.1",
34
34
  "ember-concurrency": "^2.3.7",
35
35
  "ember-engines-router-service": "^0.3.0",
36
36
  "ember-fetch": "^8.1.2",
37
+ "ember-flatpickr": "^3.2.3",
37
38
  "ember-intl": "^5.7.2",
38
- "ember-pikaday": "^4.0.0",
39
39
  "ember-resources": "^5.4.0",
40
- "ember-svg-jar": "^2.3.4",
40
+ "ember-svg-jar": "^2.4.1",
41
41
  "ember-test-selectors": "^6.0.0",
42
42
  "ember-uikit": "^6.1.0",
43
43
  "graphql": "^15.8.0",
44
44
  "graphql-tag": "^2.12.6",
45
45
  "lodash.merge": "^4.6.2",
46
- "luxon": "^3.0.3",
46
+ "luxon": "^3.0.4",
47
47
  "tracked-toolbox": "^1.2.3"
48
48
  },
49
49
  "devDependencies": {
50
50
  "@ember/optional-features": "2.0.0",
51
51
  "@ember/test-helpers": "2.7.0",
52
52
  "@embroider/test-setup": "1.8.3",
53
- "@faker-js/faker": "7.5.0",
54
- "@projectcaluma/ember-testing": "11.0.0-beta.29",
53
+ "@faker-js/faker": "7.6.0",
54
+ "@projectcaluma/ember-testing": "11.0.0-beta.31",
55
55
  "broccoli-asset-rev": "3.0.0",
56
- "ember-cli": "4.7.0",
56
+ "ember-cli": "4.8.0",
57
57
  "ember-cli-code-coverage": "1.0.3",
58
58
  "ember-cli-dependency-checker": "3.3.1",
59
59
  "ember-cli-inject-live-reload": "2.1.0",
@@ -64,21 +64,21 @@
64
64
  "ember-disable-prototype-extensions": "1.1.3",
65
65
  "ember-engines": "0.8.23",
66
66
  "ember-load-initializers": "2.1.2",
67
- "ember-qunit": "5.1.5",
67
+ "ember-qunit": "6.0.0",
68
68
  "ember-resolver": "8.0.3",
69
- "ember-source": "4.7.0",
69
+ "ember-source": "4.8.0",
70
70
  "ember-source-channel-url": "3.0.0",
71
71
  "ember-try": "2.0.0",
72
72
  "loader.js": "4.7.0",
73
73
  "miragejs": "0.1.45",
74
74
  "npm-run-all": "4.1.5",
75
- "qunit": "2.19.1",
75
+ "qunit": "2.19.2",
76
76
  "qunit-dom": "2.0.0",
77
77
  "sass": "1.55.0",
78
78
  "webpack": "5.74.0"
79
79
  },
80
80
  "engines": {
81
- "node": "14.* || >= 16"
81
+ "node": "14.* || 16.* || >= 18"
82
82
  },
83
83
  "ember": {
84
84
  "edition": "octane"
@@ -1,16 +1,20 @@
1
1
  caluma:
2
2
  distribution:
3
3
  empty: "Es wurden noch keine Anfragen erstellt."
4
- start: "Starten"
4
+ start: "Zirkulation starten"
5
5
  send: "Offene Anfragen versenden"
6
6
  complete: "Zirkulation abschliessen"
7
7
  skip: "Zirkulation überspringen"
8
8
  reopen: "Zirkulation wiedereröffnen"
9
- send-confirm: "Wollen Sie wirklich alle offenen Anfragen versenden?"
9
+ check-inquiries: "Stellungnahmen als geprüft markieren"
10
+ send-confirm:
11
+ "Wollen Sie wirklich <b>{count, plural, =1 {eine offene Anfrage} other
12
+ {{count} offene Anfragen}}</b> versenden?"
10
13
  complete-confirm:
11
- "Es gibt noch <b>{count} offene {count, plural, =1 {Anfrage} other {Anfragen}}</b>
12
- in der aktuellen Zirkulation. Wenn Sie die Zirkulation abschliessen, werden
13
- alle verbleibenden offenen Anfragen abgebrochen. Möchten Sie fortfahren?"
14
+ "Es gibt noch <b>{count, plural, =1 {eine offene Anfrage} other {{count}
15
+ offene Anfragen}}</b> in der aktuellen Zirkulation. Wenn Sie die
16
+ Zirkulation abschliessen, werden alle verbleibenden offenen Anfragen
17
+ abgebrochen. Möchten Sie fortfahren?"
14
18
  complete-confirm-empty: "Möchten Sie die Zirkulation wirklich abschliessen?"
15
19
  skip-confirm: "Wollen Sie die Zirkulation wirklich überspringen?"
16
20
  reopen-confirm: "Wollen Sie die Zirkulation wirklich wiedereröffnen?"
@@ -18,21 +22,33 @@ caluma:
18
22
  complete-error: "Fehler beim Abschliessen der Zirkulation"
19
23
  skip-error: "Fehler beim Überspringen der Zirkulation"
20
24
  reopen-error: "Fehler beim Wiedereröffnen der Zirkulation"
25
+ check-inquiries-error: "Fehler beim Markieren der Stellungnahmen als geprüft"
26
+
27
+ attention-to: "{abbr, select, true {z. H.} other {zu Handen}} {subject}"
21
28
 
22
29
  more: "mehr"
23
30
  less: "weniger"
24
31
 
25
- last-modified: "Zuletzt bearbeitet von {user} am {date} um {time}"
26
32
  details: "Details"
27
33
  not-allowed-hint:
28
34
  "Sie können jedoch das Formular bearbeiten und die Eingabedaten werden
29
35
  automatisch gespeichert."
30
36
 
37
+ inquiry:
38
+ created-at: "Erstellt am"
39
+ closed-at: "Beantwortet am"
40
+ deadline: "Frist"
41
+ assigned-user: "Verantwortliche Person"
42
+
31
43
  edit:
32
44
  link: "Bearbeiten"
33
45
  send: "Aktuelle Anfrage versenden"
34
46
  send-error: "Fehler beim Senden der Anfrage"
35
47
  send-not-allowed: "Sie sind nicht berechtigt diese Anfrage zu versenden."
48
+ edit-sent:
49
+ "<b>Achtung:</b> Sie bearbeiten eine Anfrage, die bereits versendet
50
+ wurde. Falls Sie die Details grundlegend ändern, kann es sein, dass die
51
+ adressierte Stelle dies nicht bemerkt, da sie nicht informiert wird."
36
52
 
37
53
  answer:
38
54
  link: "Beantworten"
@@ -53,6 +69,10 @@ caluma:
53
69
  revise:
54
70
  label: "Überarbeiten"
55
71
 
72
+ details:
73
+ show: "Details anzeigen"
74
+ hide: "Details verstecken"
75
+
56
76
  new:
57
77
  title: "Neue Anfrage"
58
78
  search: "Suchen..."
@@ -62,6 +82,8 @@ caluma:
62
82
  selected: "{count, plural, other {ausgewählt}}"
63
83
  reset: "Zurücksetzen"
64
84
  create-draft: "Entwurf erstellen"
85
+ continue: "Weiter"
86
+ back: "Zurück"
65
87
  error: "Fehler beim Erstellen der {count, plural, =1 {Anfragen} other {Anfrage}}"
66
88
 
67
89
  reminder:
@@ -73,9 +95,9 @@ caluma:
73
95
  error: "Fehler beim Versenden der Erinnerung"
74
96
 
75
97
  types:
76
- controlling: "Angefordert"
77
- addressed: "Zu beantworten"
78
- more: "Weitere"
98
+ controlling: "Angeforderte Stellungnahmen"
99
+ addressed: "Eigene Stellungnahmen"
100
+ more: "Weitere Stellungnahmen"
79
101
 
80
102
  status:
81
103
  draft: "Entwurf"