Skip to content

Commit 2e8d261

Browse files
authored
Merge pull request #1311 from ds-wizard/release/4.15.0
Release 4.15.0
2 parents 6d503a3 + 5f2d48e commit 2e8d261

File tree

88 files changed

+1258
-653
lines changed

Some content is hidden

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

88 files changed

+1258
-653
lines changed

.github/workflows/guide-links.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
name: Guide Links CI
2+
3+
on:
4+
push:
5+
tags:
6+
- v*
7+
8+
jobs:
9+
pot:
10+
name: Create guide links
11+
runs-on: ubuntu-latest
12+
13+
strategy:
14+
matrix:
15+
node-version: [ 20 ]
16+
17+
steps:
18+
- name: '[setup] Checkout Project'
19+
uses: actions/checkout@v4
20+
21+
- name: '[setup] Node.js ${{ matrix.node-version }}'
22+
uses: actions/setup-node@v4
23+
with:
24+
node-version: ${{ matrix.node-version }}
25+
26+
- name: '[app] Install'
27+
run: |
28+
npm ci
29+
30+
- name: '[app] Create Guide Links'
31+
run: |
32+
npm run guide-links
33+
34+
- name: '[release] Check Prerelease'
35+
id: check_prerelease
36+
run: |
37+
GITHUB_TAG=`echo $GITHUB_REF | cut -d/ -f3`
38+
if [[ $GITHUB_TAG =~ ^v[0-9]+\.[0-9]+\.[0-9]+$ ]]; then
39+
echo "is_prerelease=false" >> "$GITHUB_OUTPUT"
40+
else
41+
echo "is_prerelease=true" >> "$GITHUB_OUTPUT"
42+
fi
43+
44+
- name: '[release] Create & Upload Artifacts'
45+
uses: ncipollo/release-action@v1
46+
with:
47+
allowUpdates: true
48+
artifactErrorsFailBuild: true
49+
artifacts: "guide-links.json"
50+
artifactContentType: application/json
51+
prerelease: ${{ steps.check_prerelease.outputs.is_prerelease }}
52+
replacesArtifacts: true

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,3 +16,6 @@ engine-wizard/static/wizard/config.js
1616
# locale
1717
!*/locale
1818
/locale
19+
20+
# guide links
21+
guide-links.json

elm.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,9 +39,10 @@
3939
"jinjor/elm-diff": "1.0.6",
4040
"justinmimbs/time-extra": "1.2.0",
4141
"kuon/elm-string-normalize": "1.0.6",
42+
"leojpod/elm-keyboard-shortcut": "1.0.1",
4243
"myrho/elm-round": "1.0.5",
4344
"noahzgordon/elm-color-extra": "1.0.2",
44-
"pablohirafuji/elm-syntax-highlight": "3.5.0",
45+
"pablohirafuji/elm-syntax-highlight": "3.6.0",
4546
"rtfeldman/elm-iso8601-date-strings": "1.1.4",
4647
"rundis/elm-bootstrap": "5.2.0",
4748
"simonh1000/elm-jwt": "7.1.1",

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

Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -802,15 +802,27 @@ generateReplies currentTime seed questionUuid km questionnaireDetail =
802802
( newSeed, mbChapterUuid, replies ) =
803803
foldReplies currentTime km parentMap seed questionUuid Dict.empty
804804

805-
originalReplies =
806-
questionnaireDetail.replies
805+
reply =
806+
findReplyBySuffix questionUuid questionnaireDetail.replies
807+
808+
newReplies =
809+
if Maybe.isJust reply then
810+
questionnaireDetail.replies
811+
812+
else
813+
Dict.union replies questionnaireDetail.replies
807814
in
808815
( newSeed
809816
, mbChapterUuid
810-
, { questionnaireDetail | replies = Dict.union replies originalReplies }
817+
, { questionnaireDetail | replies = newReplies }
811818
)
812819

813820

821+
findReplyBySuffix : String -> Dict String Reply -> Maybe ( String, Reply )
822+
findReplyBySuffix suffix replies =
823+
Dict.find (\key _ -> String.endsWith suffix key) replies
824+
825+
814826
foldReplies : Time.Posix -> KnowledgeModel -> KnowledgeModel.ParentMap -> Seed -> String -> Dict String Reply -> ( Seed, Maybe String, Dict String Reply )
815827
foldReplies currentTime km parentMap seed questionUuid replies =
816828
let

engine-wizard/elm/Wizard/Common/Components/Questionnaire.elm

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2063,6 +2063,8 @@ viewActionResultModal appState model =
20632063
Modal.simple
20642064
{ modalContent = modalContent
20652065
, visible = Maybe.isJust model.questionnaireActionResult
2066+
, enterMsg = Just CloseActionResult
2067+
, escMsg = Just CloseActionResult
20662068
, dataCy = "questionnaire-action-result"
20672069
}
20682070

@@ -2185,6 +2187,8 @@ viewPhaseModal appState model =
21852187
[ div [] (List.indexedMap viewPhase phases)
21862188
]
21872189
]
2190+
, enterMsg = Nothing
2191+
, escMsg = Just (PhaseModalUpdate False Nothing)
21882192
, visible = model.phaseModalOpen
21892193
, dataCy = "phase-selection"
21902194
}
@@ -4283,20 +4287,19 @@ viewRemoveItemModal appState model =
42834287
|> List.map viewLink
42844288
|> wrapItemLinks
42854289

4290+
modalContent =
4291+
[ text (gettext "Are you sure you want to remove this item?" appState.locale)
4292+
, items
4293+
]
4294+
42864295
cfg =
4287-
{ modalTitle = gettext "Remove Item" appState.locale
4288-
, modalContent =
4289-
[ text (gettext "Are you sure you want to remove this item?" appState.locale)
4290-
, items
4291-
]
4292-
, visible = Maybe.isJust model.removeItem
4293-
, actionResult = Unset
4294-
, actionName = gettext "Remove" appState.locale
4295-
, actionMsg = RemoveItemConfirm
4296-
, cancelMsg = Just RemoveItemCancel
4297-
, dangerous = True
4298-
, dataCy = "remove-item"
4299-
}
4296+
Modal.confirmConfig (gettext "Remove Item" appState.locale)
4297+
|> Modal.confirmConfigContent modalContent
4298+
|> Modal.confirmConfigVisible (Maybe.isJust model.removeItem)
4299+
|> Modal.confirmConfigAction (gettext "Remove" appState.locale) RemoveItemConfirm
4300+
|> Modal.confirmConfigCancelMsg RemoveItemCancel
4301+
|> Modal.confirmConfigDangerous True
4302+
|> Modal.confirmConfigDataCy "remove-item"
43004303
in
43014304
Modal.confirm appState cfg
43024305

@@ -4317,19 +4320,18 @@ viewFileDeleteModal appState model =
43174320
Nothing ->
43184321
""
43194322

4323+
modalContent =
4324+
String.formatHtml (gettext "Are you sure you want to delete %s?" appState.locale)
4325+
[ strong [ class "text-break" ] [ text fileName ] ]
4326+
43204327
cfg =
4321-
{ modalTitle = gettext "Delete File" appState.locale
4322-
, modalContent =
4323-
String.formatHtml (gettext "Are you sure you want to delete %s?" appState.locale)
4324-
[ strong [ class "text-break" ] [ text fileName ] ]
4325-
, visible = Maybe.isJust model.deleteFile
4326-
, actionResult = ActionResult.map (always "") model.deletingFile
4327-
, actionName = gettext "Delete" appState.locale
4328-
, actionMsg = DeleteFileConfirm
4329-
, cancelMsg = Just DeleteFileCancel
4330-
, dangerous = True
4331-
, dataCy = "delete-file"
4332-
}
4328+
Modal.confirmConfig (gettext "Delete File" appState.locale)
4329+
|> Modal.confirmConfigContent modalContent
4330+
|> Modal.confirmConfigVisible (Maybe.isJust model.deleteFile)
4331+
|> Modal.confirmConfigAction (gettext "Delete" appState.locale) DeleteFileConfirm
4332+
|> Modal.confirmConfigCancelMsg DeleteFileCancel
4333+
|> Modal.confirmConfigDangerous True
4334+
|> Modal.confirmConfigDataCy "delete-file"
43334335
in
43344336
Modal.confirm appState cfg
43354337

engine-wizard/elm/Wizard/Common/Components/Questionnaire/DefaultQuestionnaireRenderer.elm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -214,7 +214,7 @@ type alias ViewExtraItemsConfig a msg =
214214

215215
viewExtraItems : ViewExtraItemsConfig a msg -> List a -> Html msg
216216
viewExtraItems cfg list =
217-
if List.length list == 0 then
217+
if List.isEmpty list then
218218
emptyNode
219219

220220
else

engine-wizard/elm/Wizard/Common/Components/Questionnaire/DeleteVersionModal.elm

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -122,15 +122,15 @@ view appState model =
122122

123123
Nothing ->
124124
[]
125+
126+
cfg =
127+
Modal.confirmConfig (gettext "Delete version" appState.locale)
128+
|> Modal.confirmConfigContent content
129+
|> Modal.confirmConfigVisible (Maybe.isJust model.mbQuestionnaireVersion)
130+
|> Modal.confirmConfigActionResult (ActionResult.map (always "") model.deleteResult)
131+
|> Modal.confirmConfigAction (gettext "Delete" appState.locale) Delete
132+
|> Modal.confirmConfigCancelMsg Close
133+
|> Modal.confirmConfigDangerous True
134+
|> Modal.confirmConfigDataCy "project-delete-version"
125135
in
126-
Modal.confirm appState
127-
{ modalTitle = gettext "Delete version" appState.locale
128-
, modalContent = content
129-
, visible = Maybe.isJust model.mbQuestionnaireVersion
130-
, actionResult = ActionResult.map (always "") model.deleteResult
131-
, actionName = gettext "Delete" appState.locale
132-
, actionMsg = Delete
133-
, cancelMsg = Just Close
134-
, dangerous = True
135-
, dataCy = "project-delete-version"
136-
}
136+
Modal.confirm appState cfg

engine-wizard/elm/Wizard/Common/Components/Questionnaire/FeedbackModal.elm

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -143,19 +143,16 @@ view appState model =
143143
_ ->
144144
( gettext "Send" appState.locale, FeedbackFormMsg Form.Submit, Just <| CloseFeedback )
145145

146-
modalConfig =
147-
{ modalTitle = gettext "Feedback" appState.locale
148-
, modalContent = modalContent
149-
, visible = visible
150-
, actionResult = ActionResult.map (\_ -> gettext "Your feedback has been sent." appState.locale) model.feedbackResult
151-
, actionName = actionName
152-
, actionMsg = actionMsg
153-
, cancelMsg = cancelMsg
154-
, dangerous = False
155-
, dataCy = "questionnaire-feedback"
156-
}
146+
cfg =
147+
Modal.confirmConfig (gettext "Feedback" appState.locale)
148+
|> Modal.confirmConfigContent modalContent
149+
|> Modal.confirmConfigVisible visible
150+
|> Modal.confirmConfigActionResult (ActionResult.map (\_ -> gettext "Your feedback has been sent." appState.locale) model.feedbackResult)
151+
|> Modal.confirmConfigAction actionName actionMsg
152+
|> Modal.confirmConfigMbCancelMsg cancelMsg
153+
|> Modal.confirmConfigDataCy "questionnaire-feedback"
157154
in
158-
Modal.confirm appState modalConfig
155+
Modal.confirm appState cfg
159156

160157

161158
feedbackModalContent : AppState -> Model -> List (Html Msg)

engine-wizard/elm/Wizard/Common/Components/Questionnaire/FileUploadModal.elm

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -245,9 +245,18 @@ view appState isKmEditor model =
245245
]
246246
]
247247

248+
( enterMsg, escMsg ) =
249+
if ActionResult.isLoading model.submitting then
250+
( Nothing, Nothing )
251+
252+
else
253+
( Just Save, Just Close )
254+
248255
modalConfig =
249256
{ modalContent = modalContent
250257
, visible = model.isOpen
258+
, enterMsg = enterMsg
259+
, escMsg = escMsg
251260
, dataCy = "file-upload"
252261
}
253262
in

engine-wizard/elm/Wizard/Common/Components/Questionnaire/VersionModal.elm

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -164,15 +164,14 @@ view appState model =
164164

165165
Nothing ->
166166
gettext "New version" appState.locale
167+
168+
cfg =
169+
Modal.confirmConfig modalTitle
170+
|> Modal.confirmConfigContent form
171+
|> Modal.confirmConfigVisible (Maybe.isJust model.mbEventUuid)
172+
|> Modal.confirmConfigActionResult (ActionResult.map (always "") model.versionResult)
173+
|> Modal.confirmConfigAction (gettext "Save" appState.locale) (FormMsg Form.Submit)
174+
|> Modal.confirmConfigCancelMsg Close
175+
|> Modal.confirmConfigDataCy "project-version"
167176
in
168-
Modal.confirm appState
169-
{ modalTitle = modalTitle
170-
, modalContent = form
171-
, visible = Maybe.isJust model.mbEventUuid
172-
, actionResult = ActionResult.map (always "") model.versionResult
173-
, actionName = gettext "Save" appState.locale
174-
, actionMsg = FormMsg Form.Submit
175-
, cancelMsg = Just Close
176-
, dangerous = False
177-
, dataCy = "project-version"
178-
}
177+
Modal.confirm appState cfg

0 commit comments

Comments
 (0)