Skip to content

Commit

Permalink
Fixes #26161: Allow to enable/disable technique from the directive tr…
Browse files Browse the repository at this point in the history
…ee screen
  • Loading branch information
fanf committed Jan 16, 2025
1 parent be75a71 commit 7171146
Show file tree
Hide file tree
Showing 2 changed files with 37 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -373,21 +373,29 @@ class DirectiveManagement extends DispatchSnippet with Loggable {
"#techniqueDescription" #> technique.description &
"#isSingle *" #> showIsSingle(technique) &
"#isDisabled" #> {
def showPopup(nextStatus: NextStatus): JsCmd =
SetHtml("showTechniqueValidationPopup", showTechniquePopup(fullActiveTechnique, nextStatus))
def showPopup(nextStatus: NextStatus): JsCmd = {
SetHtml(
"showTechniqueValidationPopup",
showTechniquePopup("showTechniqueValidationPopup", fullActiveTechnique, nextStatus)
)
}

if (!fullActiveTechnique.isEnabled) {
<div class="main-alert alert alert-warning">
<i class="fa fa-exclamation-triangle" aria-hidden="true"></i>
This Technique is disabled.
{SHtml.ajaxButton("Enable", () => showPopup(NextStatus.Enabled), ("class", "btn btn-sm btn-default"))}
</div>
{
SHtml.ajaxButton("Enable", () => showPopup(NextStatus.Enabled), ("class", "btn btn-sm btn-default mx-2"))
}
</div>
} else {
<div class="main-alert alert alert-success">
<i class="fa fa-check" aria-hidden="true"></i>
This Technique is enabled.
{SHtml.ajaxButton("Disable", () => showPopup(NextStatus.Disabled), ("class", "btn btn-sm btn-default"))}
</div>
{
SHtml.ajaxButton("Disable", () => showPopup(NextStatus.Disabled), ("class", "btn btn-sm btn-default mx-2"))
}
</div>
}
} &
"#techniqueversion-app *+" #> showVersions(fullActiveTechnique, validTechniqueVersions)
Expand Down Expand Up @@ -520,7 +528,9 @@ class DirectiveManagement extends DispatchSnippet with Loggable {

// validation / warning pop-up when enabling a technique

def showTechniquePopup(technique: FullActiveTechnique, nextStatus: NextStatus): NodeSeq = {
def showTechniquePopup(popupId: String, technique: FullActiveTechnique, nextStatus: NextStatus): NodeSeq = {
def closePopup(): JsCmd = SetHtml(popupId, NodeSeq.Empty)

dependencyService
.techniqueDependencies(technique.id, getGroups().toBox, DontCare)
.map(_.rules.values) match {
Expand Down Expand Up @@ -559,33 +569,42 @@ class DirectiveManagement extends DispatchSnippet with Loggable {
technique.id,
technique.techniqueName.value,
nextStatus.booleanValue,
() => (updateDirectiveLibrary() & onClickActiveTechnique(technique.copy(isEnabled = nextStatus.booleanValue)))
() => {
(closePopup() & updateDirectiveLibrary() & onClickActiveTechnique(
technique.copy(isEnabled = nextStatus.booleanValue)
))
}
),
("class" -> "btn-danger")
) % ("id" -> "createDirectiveSaveButton") % ("tabindex" -> "3"))
)(<div id="validationContainer" class="modal fade show" style="display: block">
<div class="modal-backdrop fade show">
<div id="validationForm">
)(<div>
<div class="modal-backdrop fade show"></div>
<div id="validationContainer" class="modal modal-lg fade show" style="display: block">
<div id="validationForm">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h5 id="dialogTitle" class="modal-title">
{s"${nextStatus.action} technique '${technique.techniqueName.value}'"}
</h5>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
<button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close" onclick={
closePopup()
}></button>
</div>
<div class="modal-body">
<div id="explanationMessageZone">
{
s"Technique '${technique.techniqueName.value}' will be ${nextStatus.entryName.toLowerCase}. Any item relying to it will be impacted."
s"Technique '${technique.techniqueName.value}' will be ${nextStatus.entryName.toLowerCase}. Any item related to it will be impacted."
}
</div>
<div id="disableItemDependencies">
{showDependentRules}
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-bs-dismiss="modal">Cancel</button>
<button type="button" class="btn btn-default" data-bs-dismiss="modal" onclick={
closePopup()
}>Cancel</button>
<button id="changeStatus" class="btn">[Submit Draft]</button>
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -58,15 +58,15 @@ <h1>
The Directive <b class="directive">[Directive]</b> is based on following Technique:
</div>
<div id="isDisabled">[Disabled Technique]</div>
<div>
<div class="my-2">
<h4>Description</h4>
<span id="techniqueDescription">[technique.description]</span>
</div>
<div>
<div class="my-2">
<h4 style="margin-top:0;">Technique ID</h4>
<span id="techniqueID">[technique.techniqueName]</span>
</div>
<div id="techniqueDocumentation">
<div id="techniqueDocumentation" class="my-2">
<h4 class="toggle-doc" onclick="$(this).toggleClass('doc-hidden')">Documentation<i class="fa fa-chevron-down"></i></h4>
<div class="markdown">
<span id="techniqueLongDescription">[technique.documentation]</span>
Expand All @@ -87,7 +87,6 @@ <h4>Characteristics</h4>

</div>
</div>
<div id="showTechniqueValidationPopup"></div>
</div>
<script>
var hasWriteRights = false;
Expand Down Expand Up @@ -135,4 +134,5 @@ <h4>Characteristics</h4>
});
initBsTooltips();
</script>
<div id="showTechniqueValidationPopup"></div>
</lift:surround>

0 comments on commit 7171146

Please sign in to comment.