Skip to content

Commit a372cd0

Browse files
authored
Merge pull request #1142 from ds-wizard/release/4.6.0
Release 4.6.0
2 parents 4c8f596 + 2c67286 commit a372cd0

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

76 files changed

+652
-262
lines changed

engine-shared/elm/Shared/Api/Questionnaires.elm

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@ import Shared.Data.QuestionnaireSuggestion as QuestionnaireSuggestion exposing (
4646
import Shared.Data.QuestionnaireVersion as QuestionnaireVersion exposing (QuestionnaireVersion)
4747
import Shared.Data.SummaryReport as SummaryReport exposing (SummaryReport)
4848
import Shared.Data.UrlResponse as UrlResponse exposing (UrlResponse)
49+
import String.Extra as String
4950
import Uuid exposing (Uuid)
5051

5152

@@ -105,7 +106,7 @@ getQuestionnaireMigration uuid =
105106

106107
getQuestionnaireEvents : Uuid -> AbstractAppState a -> ToMsg (List QuestionnaireEvent) msg -> Cmd msg
107108
getQuestionnaireEvents uuid =
108-
jwtGet ("/questionnaires/" ++ Uuid.toString uuid ++ "/events") (D.list QuestionnaireEvent.decoder)
109+
jwtOrHttpGet ("/questionnaires/" ++ Uuid.toString uuid ++ "/events") (D.list QuestionnaireEvent.decoder)
109110

110111

111112
getQuestionnaireEvent : Uuid -> Uuid -> AbstractAppState a -> ToMsg QuestionnaireEvent msg -> Cmd msg
@@ -174,8 +175,27 @@ getSummaryReport questionnaireUuid =
174175

175176

176177
websocket : Uuid -> AbstractAppState a -> String
177-
websocket questionnaireUuid =
178-
wsUrl ("/questionnaires/" ++ Uuid.toString questionnaireUuid ++ "/websocket")
178+
websocket questionnaireUuid appState =
179+
case appState.config.signalBridge.webSocketUrl of
180+
Just webSocketUrl ->
181+
let
182+
token =
183+
Maybe.map ((++) "Authorization=Bearer%20") (String.toMaybe appState.session.token.token)
184+
185+
queryParams =
186+
List.filterMap identity
187+
[ token
188+
, Just "subscription=Questionnaire"
189+
, Just ("identifier=" ++ Uuid.toString questionnaireUuid)
190+
]
191+
192+
queryString =
193+
String.join "&" queryParams
194+
in
195+
webSocketUrl ++ "?" ++ queryString
196+
197+
Nothing ->
198+
wsUrl ("/questionnaires/" ++ Uuid.toString questionnaireUuid ++ "/websocket") appState
179199

180200

181201
getDocumentPreview : Uuid -> AbstractAppState a -> ToMsg ( Http.Metadata, Maybe UrlResponse ) msg -> Cmd msg

engine-shared/elm/Shared/Data/BootstrapConfig.elm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import Shared.Data.BootstrapConfig.OwlConfig as OwlConfig exposing (OwlConfig)
1919
import Shared.Data.BootstrapConfig.PrivacyAndSupportConfig as PrivacyAndSupportConfig exposing (PrivacyAndSupportConfig)
2020
import Shared.Data.BootstrapConfig.QuestionnaireConfig as QuestionnaireConfig exposing (QuestionnaireConfig)
2121
import Shared.Data.BootstrapConfig.RegistryConfig as RegistryConfig exposing (RegistryConfig)
22+
import Shared.Data.BootstrapConfig.SignalBridgeConfig as SignalBridgeConfig exposing (SignalBridgeConfig)
2223
import Shared.Data.BootstrapConfig.SubmissionConfig as SubmissionConfig exposing (SubmissionConfig)
2324
import Shared.Data.UserInfo as UserInfo exposing (UserInfo)
2425

@@ -38,6 +39,7 @@ type alias BootstrapConfig =
3839
, owl : OwlConfig
3940
, locales : List LocaleConfig
4041
, modules : List AppSwitcherItem
42+
, signalBridge : SignalBridgeConfig
4143
, user : Maybe UserInfo
4244
}
4345

@@ -58,6 +60,7 @@ default =
5860
, owl = OwlConfig.default
5961
, locales = []
6062
, modules = []
63+
, signalBridge = SignalBridgeConfig.default
6164
, user = Nothing
6265
}
6366

@@ -79,4 +82,5 @@ decoder =
7982
|> D.required "owl" OwlConfig.decoder
8083
|> D.required "locales" (D.list LocaleConfig.decoder)
8184
|> D.required "modules" (D.list AppSwitcherItem.decoder)
85+
|> D.required "signalBridge" SignalBridgeConfig.decoder
8286
|> D.required "user" (D.maybe UserInfo.decoder)
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
module Shared.Data.BootstrapConfig.SignalBridgeConfig exposing
2+
( SignalBridgeConfig
3+
, decoder
4+
, default
5+
)
6+
7+
import Json.Decode as D exposing (Decoder)
8+
import Json.Decode.Pipeline as D
9+
10+
11+
type alias SignalBridgeConfig =
12+
{ webSocketUrl : Maybe String
13+
}
14+
15+
16+
default : SignalBridgeConfig
17+
default =
18+
{ webSocketUrl = Nothing
19+
}
20+
21+
22+
decoder : Decoder SignalBridgeConfig
23+
decoder =
24+
D.succeed SignalBridgeConfig
25+
|> D.required "webSocketUrl" (D.maybe D.string)

engine-shared/elm/Shared/Data/QuestionnaireDetail.elm

Lines changed: 1 addition & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ module Shared.Data.QuestionnaireDetail exposing
33
, QuestionnaireDetail
44
, QuestionnaireWarning
55
, addComment
6-
, calculatePhasesAnsweredIndications
76
, calculateUnansweredQuestionsForChapter
87
, canComment
98
, clearReplyValue
@@ -71,7 +70,6 @@ import Shared.Data.QuestionnaireDetail.Reply as Reply exposing (Reply)
7170
import Shared.Data.QuestionnaireDetail.Reply.ReplyValue as ReplyValue exposing (ReplyValue(..))
7271
import Shared.Data.QuestionnairePerm as QuestionnairePerm
7372
import Shared.Data.QuestionnaireVersion as QuestionnaireVersion exposing (QuestionnaireVersion)
74-
import Shared.Data.SummaryReport.AnsweredIndicationData exposing (AnsweredIndicationData)
7573
import Shared.Data.UserInfo as UserInfo
7674
import Shared.Data.WebSockets.QuestionnaireAction.SetQuestionnaireData exposing (SetQuestionnaireData)
7775
import Shared.Markdown as Markdown
@@ -348,6 +346,7 @@ addCommentThread path threadUuid private comment questionnaire =
348346
, resolved = False
349347
, comments = []
350348
, private = private
349+
, createdAt = comment.createdAt
351350
, createdBy = comment.createdBy
352351
}
353352

@@ -675,19 +674,6 @@ getItemTitle questionnaire itemPath itemTemplateQuestions =
675674
-- Evaluations
676675

677676

678-
calculatePhasesAnsweredIndications : QuestionnaireDetail -> AnsweredIndicationData
679-
calculatePhasesAnsweredIndications questionnaire =
680-
let
681-
( unaswered, total ) =
682-
KnowledgeModel.getChapters questionnaire.knowledgeModel
683-
|> List.map (evaluateChapter questionnaire)
684-
|> List.foldl Tuple.sum ( 0, 0 )
685-
in
686-
{ answeredQuestions = total - unaswered
687-
, unansweredQuestions = unaswered
688-
}
689-
690-
691677
calculateUnansweredQuestionsForChapter : QuestionnaireDetail -> Chapter -> Int
692678
calculateUnansweredQuestionsForChapter questionnaire =
693679
Tuple.first << evaluateChapter questionnaire

engine-shared/elm/Shared/Data/QuestionnaireDetail/Comment.elm

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
module Shared.Data.QuestionnaireDetail.Comment exposing
22
( Comment
3+
, compare
34
, decoder
45
, isAuthor
56
)
@@ -10,6 +11,7 @@ import Json.Decode.Pipeline as D
1011
import Maybe.Extra as Maybe
1112
import Shared.Data.UserSuggestion as UserSuggestion exposing (UserSuggestion)
1213
import Time
14+
import Time.Extra as Time
1315
import Uuid exposing (Uuid)
1416

1517

@@ -39,3 +41,8 @@ isAuthor user comment =
3941
Maybe.map .uuid
4042
in
4143
Maybe.isJust user && toUserUuid comment.createdBy == toUserUuid user
44+
45+
46+
compare : Comment -> Comment -> Order
47+
compare a b =
48+
Time.compare a.createdAt b.createdAt

engine-shared/elm/Shared/Data/QuestionnaireDetail/CommentThread.elm

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,13 @@
1-
module Shared.Data.QuestionnaireDetail.CommentThread exposing (CommentThread, decoder, isAuthor)
1+
module Shared.Data.QuestionnaireDetail.CommentThread exposing (CommentThread, compare, decoder, isAuthor)
22

33
import Json.Decode as D exposing (Decoder)
4+
import Json.Decode.Extra as D
45
import Json.Decode.Pipeline as D
56
import Maybe.Extra as Maybe
67
import Shared.Data.QuestionnaireDetail.Comment as Comment exposing (Comment)
78
import Shared.Data.UserSuggestion as UserSuggestion exposing (UserSuggestion)
9+
import Time
10+
import Time.Extra as Time
811
import Uuid exposing (Uuid)
912

1013

@@ -13,6 +16,7 @@ type alias CommentThread =
1316
, resolved : Bool
1417
, comments : List Comment
1518
, private : Bool
19+
, createdAt : Time.Posix
1620
, createdBy : Maybe UserSuggestion
1721
}
1822

@@ -24,6 +28,7 @@ decoder =
2428
|> D.required "resolved" D.bool
2529
|> D.required "comments" (D.list Comment.decoder)
2630
|> D.required "private" D.bool
31+
|> D.required "createdAt" D.datetime
2732
|> D.required "createdBy" (D.maybe UserSuggestion.decoder)
2833

2934

@@ -34,3 +39,8 @@ isAuthor user commentThread =
3439
Maybe.map .uuid
3540
in
3641
Maybe.isJust user && toUserUuid commentThread.createdBy == toUserUuid user
42+
43+
44+
compare : CommentThread -> CommentThread -> Order
45+
compare a b =
46+
Time.compare a.createdAt b.createdAt

engine-shared/elm/Shared/Data/QuestionnaireDetail/QuestionnaireEvent/ClearReplyData.elm

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import Json.Decode as D exposing (Decoder)
88
import Json.Decode.Extra as D
99
import Json.Decode.Pipeline as D
1010
import Json.Encode as E
11-
import Shared.Data.SummaryReport.AnsweredIndicationData as AnsweredIndicationData exposing (AnsweredIndicationData)
1211
import Shared.Data.UserSuggestion as UserSuggestion exposing (UserSuggestion)
1312
import Time
1413
import Uuid exposing (Uuid)
@@ -19,7 +18,6 @@ type alias ClearReplyData =
1918
, path : String
2019
, createdAt : Time.Posix
2120
, createdBy : Maybe UserSuggestion
22-
, phasesAnsweredIndication : AnsweredIndicationData
2321
}
2422

2523

@@ -29,7 +27,6 @@ encode data =
2927
[ ( "type", E.string "ClearReplyEvent" )
3028
, ( "uuid", Uuid.encode data.uuid )
3129
, ( "path", E.string data.path )
32-
, ( "phasesAnsweredIndication", AnsweredIndicationData.encode data.phasesAnsweredIndication )
3330
]
3431

3532

@@ -40,4 +37,3 @@ decoder =
4037
|> D.required "path" D.string
4138
|> D.required "createdAt" D.datetime
4239
|> D.required "createdBy" (D.maybe UserSuggestion.decoder)
43-
|> D.hardcoded AnsweredIndicationData.empty

engine-shared/elm/Shared/Data/QuestionnaireDetail/QuestionnaireEvent/SetPhaseData.elm

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,6 @@ import Json.Decode.Extra as D
99
import Json.Decode.Pipeline as D
1010
import Json.Encode as E
1111
import Json.Encode.Extra as E
12-
import Shared.Data.SummaryReport.AnsweredIndicationData as AnsweredIndicationData exposing (AnsweredIndicationData)
1312
import Shared.Data.UserSuggestion as UserSuggestion exposing (UserSuggestion)
1413
import Time
1514
import Uuid exposing (Uuid)
@@ -20,7 +19,6 @@ type alias SetPhaseData =
2019
, phaseUuid : Maybe Uuid
2120
, createdAt : Time.Posix
2221
, createdBy : Maybe UserSuggestion
23-
, phasesAnsweredIndication : AnsweredIndicationData
2422
}
2523

2624

@@ -30,7 +28,6 @@ encode data =
3028
[ ( "type", E.string "SetPhaseEvent" )
3129
, ( "uuid", Uuid.encode data.uuid )
3230
, ( "phaseUuid", E.maybe Uuid.encode data.phaseUuid )
33-
, ( "phasesAnsweredIndication", AnsweredIndicationData.encode data.phasesAnsweredIndication )
3431
]
3532

3633

@@ -41,4 +38,3 @@ decoder =
4138
|> D.required "phaseUuid" (D.maybe Uuid.decoder)
4239
|> D.required "createdAt" D.datetime
4340
|> D.required "createdBy" (D.maybe UserSuggestion.decoder)
44-
|> D.hardcoded AnsweredIndicationData.empty

engine-shared/elm/Shared/Data/QuestionnaireDetail/QuestionnaireEvent/SetReplyData.elm

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ import Json.Decode.Pipeline as D
1111
import Json.Encode as E
1212
import Shared.Data.QuestionnaireDetail.Reply exposing (Reply)
1313
import Shared.Data.QuestionnaireDetail.Reply.ReplyValue as ReplyValue exposing (ReplyValue)
14-
import Shared.Data.SummaryReport.AnsweredIndicationData as AnsweredIndicationData exposing (AnsweredIndicationData)
1514
import Shared.Data.UserSuggestion as UserSuggestion exposing (UserSuggestion)
1615
import Time
1716
import Uuid exposing (Uuid)
@@ -23,7 +22,6 @@ type alias SetReplyData =
2322
, value : ReplyValue
2423
, createdAt : Time.Posix
2524
, createdBy : Maybe UserSuggestion
26-
, phasesAnsweredIndication : AnsweredIndicationData
2725
}
2826

2927

@@ -34,7 +32,6 @@ encode data =
3432
, ( "uuid", Uuid.encode data.uuid )
3533
, ( "path", E.string data.path )
3634
, ( "value", ReplyValue.encode data.value )
37-
, ( "phasesAnsweredIndication", AnsweredIndicationData.encode data.phasesAnsweredIndication )
3835
]
3936

4037

@@ -46,7 +43,6 @@ decoder =
4643
|> D.required "value" ReplyValue.decoder
4744
|> D.required "createdAt" D.datetime
4845
|> D.required "createdBy" (D.maybe UserSuggestion.decoder)
49-
|> D.hardcoded AnsweredIndicationData.empty
5046

5147

5248
toReply : SetReplyData -> Reply

engine-shared/elm/Shared/Data/Submission.elm

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import Json.Decode.Pipeline as D
66
import Shared.Data.Submission.SubmissionState as SubmissionState exposing (SubmissionState)
77
import Shared.Data.UserSuggestion as UserSuggestion exposing (UserSuggestion)
88
import Time
9+
import Time.Extra as Time
910
import Uuid exposing (Uuid)
1011

1112

@@ -45,7 +46,7 @@ visibleName submission =
4546

4647
compare : Submission -> Submission -> Order
4748
compare a b =
48-
Basics.compare (Time.posixToMillis b.updatedAt) (Time.posixToMillis a.updatedAt)
49+
Time.compare b.updatedAt a.updatedAt
4950

5051

5152
getReturnedData : Submission -> String

0 commit comments

Comments
 (0)