From bb85219896be1313d963866bcd0349fa40bb29ed Mon Sep 17 00:00:00 2001 From: Raphael Gauthier Date: Tue, 5 Dec 2023 17:08:26 +0100 Subject: [PATCH] Work in progress --- .../src/main/javascript/rudder/rudder.js | 18 - .../components/ShowNodeDetailsFromNode.scala | 62 ++- .../rudder/web/services/DisplayNode.scala | 74 +-- .../rudder/web/snippet/node/AcceptNode.scala | 6 - .../src/main/style/rudder/rudder-main.css | 23 +- .../src/main/style/rudder/rudder-node.css | 454 ----------------- .../src/main/style/rudder/rudder-node.scss | 471 ++++++++++++++++++ .../src/main/style/rudder/rudder-template.css | 31 +- .../src/main/style/rudder/rudder.css | 9 - .../main/webapp/secure/nodeManager/node.html | 55 +- .../Popup/accept_new_server.html | 10 +- .../Popup/refuse_new_server.html | 6 +- 12 files changed, 634 insertions(+), 585 deletions(-) delete mode 100644 webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-node.css create mode 100644 webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-node.scss diff --git a/webapp/sources/rudder/rudder-web/src/main/javascript/rudder/rudder.js b/webapp/sources/rudder/rudder-web/src/main/javascript/rudder/rudder.js index 18abf01250c..4c5dd38f5a6 100644 --- a/webapp/sources/rudder/rudder-web/src/main/javascript/rudder/rudder.js +++ b/webapp/sources/rudder/rudder-web/src/main/javascript/rudder/rudder.js @@ -95,24 +95,6 @@ function refuseEnter(event) } } -/* portlet */ - -$(function() { - - $(".portlet").addClass("ui-widget ui-widget-content ui-helper-clearfix arrondis") - .find(".portlet-header") - .addClass("ui-widget-header") - .end() - .find(".portlet-content"); - - $(".portlet-header .ui-icon").click(function() { - $(this).toggleClass("ui-icon-minusthick").toggleClass("ui-icon-plusthick"); - $(this).parents(".portlet:first").find(".portlet-content").toggle(); - }); - - }); - - /** * Check all checkbox named name according to the status of the checkbox with id id * @param id diff --git a/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/components/ShowNodeDetailsFromNode.scala b/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/components/ShowNodeDetailsFromNode.scala index 2d738ae7238..4c623d24cd9 100644 --- a/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/components/ShowNodeDetailsFromNode.scala +++ b/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/components/ShowNodeDetailsFromNode.scala @@ -58,6 +58,8 @@ import com.normation.rudder.web.ChooseTemplate import com.normation.rudder.web.model.JsNodeId import com.normation.rudder.web.services.CurrentUser import com.normation.rudder.web.services.DisplayNode +import com.normation.rudder.web.services.DisplayNode.displayMachineType +import com.normation.rudder.web.services.DisplayNode.getNodeState import com.normation.rudder.web.services.DisplayNodeGroupTree import net.liftweb.common._ import net.liftweb.http.DispatchSnippet @@ -261,12 +263,69 @@ class ShowNodeDetailsFromNode( val jsId = JsNodeId(nodeId, "") def htmlId(jsId: JsNodeId, prefix: String): String = prefix + jsId.toString val detailsId = htmlId(jsId, "details_") + + val osIcon = ("os-logo " ++ xml.Utility.escape(sm.node.main.osDetails.os.name.toLowerCase())) + + val osTooltip: String = { + s""" + |

Operating system details

+ |
+ | + |
""".stripMargin.replaceAll("\n", " ") + } + val machineTooltip: String = { + s""" + |

Machine details

+ |
+ | + |
+ |""".stripMargin.replaceAll("\n", " ") + } + configService.rudder_global_policy_mode().toBox match { case Full(globalMode) => bindNode(node, sm, withinPopup, globalMode) ++ Script( DisplayNode.jsInit(node.id, sm.node.softwareIds, "") & JsRaw(s""" - $$('#nodeHostname').html("${xml.Utility.escape(sm.node.main.hostname)}"); + // Header info + $$('#nodeHeaderLogo').attr("class", "${osIcon}").attr("title","${osTooltip}"); + $$('#nodeHeaderState').attr("class", "node-state ${getNodeState( + node.state + ).toLowerCase}").attr("title", "${getNodeState(node.state)}"); + $$('#nodeHeaderHostname').html("${xml.Utility.escape(sm.node.main.hostname)}"); + $$('#nodeHeaderId').html("${xml.Utility.escape(sm.node.main.id.value)}"); + $$('.header-subtitle .clipboard').attr("data-clipboard-text", "${xml.Utility.escape(sm.node.main.id.value)}"); + $$('#nodeHeaderOsName').html("${xml.Utility.escape(sm.node.main.osDetails.fullName)}"); + $$('#nodeHeaderOsRam').html("${xml.Utility.escape(sm.node.ram.map(_.toStringMo).getOrElse("-"))}"); + $$('#nodeHeaderOsInfo').attr("title", "${machineTooltip}"); $$( "#${detailsId}" ).tabs({ active : ${tab} } ); $$('#nodeInventory .ui-tabs-vertical .ui-tabs-nav li a').on('click',function(){ var tab = $$(this).attr('href'); @@ -275,6 +334,7 @@ class ShowNodeDetailsFromNode( $$('#nodeInventory > .sInventory > .sInventory').hide(); $$(tab).show(); }); + new ClipboardJS('[data-clipboard-text]'); """) & buildJsTree(groupTreeId) ) diff --git a/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/services/DisplayNode.scala b/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/services/DisplayNode.scala index 5b792b87fa7..d6722d0ecbe 100644 --- a/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/services/DisplayNode.scala +++ b/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/services/DisplayNode.scala @@ -429,79 +429,9 @@ object DisplayNode extends Loggable { case _ => NodeSeq.Empty } } - val osIcon = sm.node.main.osDetails.os.name.toLowerCase(); - - val osTooltip: String = { - s""" -

Operating system details

-
- -
- """ - } - val machineTooltip: String = { - s""" -

Operating system details

-
- -
- """ - }
-
-
-
-
{sm.node.main.hostname}{ - nodeAndGlobalMode match { - case Some((n, _)) => - case None => NodeSeq.Empty - } - } -
-
{sm.node.main.id.value}
-
{ - escape(sm.node.main.osDetails.fullName) - }
-
- {displayMachineType(sm.machine)} - {sm.node.ram.map(_.toStringMo).getOrElse("-")} - -
-
-
-
-

Rudder information

@@ -679,7 +609,7 @@ object DisplayNode extends Loggable { } } - private def displayMachineType(opt: Option[MachineInventory]): NodeSeq = { + def displayMachineType(opt: Option[MachineInventory]): NodeSeq = { opt match { case None => NodeSeq.Empty case Some(machine) => ( @@ -1195,7 +1125,7 @@ object DisplayNode extends Loggable { } import com.normation.rudder.domain.nodes.NodeState - private[this] def getNodeState(nodeState: NodeState): String = { + def getNodeState(nodeState: NodeState): String = { S.?(s"node.states.${nodeState.name}") } } diff --git a/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/snippet/node/AcceptNode.scala b/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/snippet/node/AcceptNode.scala index 9c0ce9048fb..ea9e94ae15c 100644 --- a/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/snippet/node/AcceptNode.scala +++ b/webapp/sources/rudder/rudder-web/src/main/scala/com/normation/rudder/web/snippet/node/AcceptNode.scala @@ -279,12 +279,6 @@ class AcceptNode extends Loggable { }, ("class", "btn btn-danger") ) - & "servergrid-close" #> - SHtml.ajaxButton( - "Cancel", - () => JsRaw(" $('#confirmPopup')hideBsModal;$('#refusePopup')hideBsModal;"): JsCmd, - ("class", "btn btn-default") - ) )(template) ) case e: EmptyBox => diff --git a/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-main.css b/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-main.css index 54bfaed39ab..ca7c8e5e65e 100644 --- a/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-main.css +++ b/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-main.css @@ -261,10 +261,15 @@ pre.json-beautify code.elmsh { .content-wrapper .btn-default .fa, .modal .btn-danger .fa, .modal .btn-default .fa{ + transition-duration: .2s; color: #738195; } .content-wrapper .btn.btn-danger:hover .fa, -.modal .btn.btn-danger:hover .fa{ +.modal .btn.btn-danger:hover .fa, +.content-wrapper .btn.btn-danger:active .fa, +.modal .btn.btn-danger:active .fa, +.content-wrapper .btn.btn-danger:focus .fa, +.modal .btn.btn-danger:focus .fa{ color: #fff; } .content-wrapper .dataTables_wrapper_top .btn-default, @@ -907,6 +912,9 @@ form .tooltip-content p { .tooltip > .tooltip-inner .tooltip-content p{ margin-bottom: 5px; } +.tooltip > .tooltip-inner .tooltip-content > ul{ + padding-left: 0; +} .tooltip > .tooltip-inner .tooltip-content > ul:last-child, .tooltip > .tooltip-inner .tooltip-content > p:last-child{ margin-bottom : 0; @@ -3015,19 +3023,6 @@ table a > i.fa-pencil:hover{ margin-bottom: 15px; display: flex; } -.id-card .card-img { - width: 150px; - background-size: contain; - background-repeat: no-repeat; - background-position: center; - opacity: 0.5; - margin-left: -10px; -} -@media (max-width: 992px){ - .id-card .card-img { - display: none !important - } -} .id-card .card-info { flex: auto; } diff --git a/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-node.css b/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-node.css deleted file mode 100644 index 0817ceb99f2..00000000000 --- a/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-node.css +++ /dev/null @@ -1,454 +0,0 @@ -/* -************************************************************************************* -* Copyright 2019 Normation SAS -************************************************************************************* -* -* This file is part of Rudder. -* -* Rudder is free software: you can redistribute it and/or modify -* it under the terms of the GNU General Public License as published by -* the Free Software Foundation, either version 3 of the License, or -* (at your option) any later version. -* -* In accordance with the terms of section 7 (7. Additional Terms.) of -* the GNU General Public License version 3, the copyright holders add -* the following Additional permissions: -* Notwithstanding to the terms of section 5 (5. Conveying Modified Source -* Versions) and 6 (6. Conveying Non-Source Forms.) of the GNU General -* Public License version 3, when you create a Related Module, this -* Related Module is not considered as a part of the work and may be -* distributed under the license agreement of your choice. -* A "Related Module" means a set of sources files including their -* documentation that, without modification of the Source Code, enables -* supplementary functions or services in addition to those offered by -* the Software. -* -* Rudder is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU General Public License for more details. -* -* You should have received a copy of the GNU General Public License -* along with Rudder. If not, see . - -* -************************************************************************************* -*/ -.rudder-template .one-col .main-header{ - border-bottom: none !important; -} - -#queryParameters{ - padding: 0 15px; -} -#submitSearch{ - margin-bottom: 15px; -} -.rudder_col>.portlet{ - padding: 0 !important; -} -.portlet-header.ui-widget-header.page-title{ - margin: 0 !important; - border-bottom: none !important; - padding: 15px 15px 10px; - color: #041922 !important; - font-size: 24px !important; -} - -.page-title-description{ - padding: 0 15px; - margin-bottom: 8px; - font-size: 1.2em; - color: #738195; -} - -.rudder-ui-tabs ~ .ui-tabs-panel{ - padding: 0 15px 15px 15px; - float: left; - width: 100%; -} -#node_summary{ - display: flex; - padding: 0 !important; -} - -.rudder-ui-tabs { - border-bottom: 2px solid #d6deef; - margin: 0 0 15px 0; - position: relative; - background-color: #fff; - z-index: 10; -} -.rudder-ui-tabs > .ui-tabs-tab{ - display: inline-block; - padding: 6px 0px; - margin: 0 0 0 15px; - outline: none !important; - position: relative; -} - -#nodeDetails { - flex: 70; - padding: 0 15px 0 0; -} -.details #nodeDetails { - padding: 0; -} -#nodeGroups { - flex: 30; - border-left: 2px solid #d6deef; - margin-top: -15px; -} -.jstree-anchor > i.jstree-icon.fa.fa-folder, -.jstree-anchor > .treeGroupCategoryName { - position: relative; - top: 2px; -} -#nodeGroups > h3 { - color: #041922; - padding: 15px 15px 10px !important; - margin: 0; - font-size: 20px; - background-color: #f7f7f7; -} -.id-card .node-state{ - float: right; - text-transform: uppercase; - font-size: .8em; - color: #04192299; - display: inline-block; - position: relative; - padding-right: 26px; -} -.id-card .node-state:before{ - content: "ENABLED"; -} -.id-card .node-state.ignored:before{ - content: "IGNORED"; -} -.id-card .node-state.empty-policies:before{ - content: "EMPTY POLICIES"; -} -.id-card .node-state.initializing:before{ - content: "INITIALIZING"; -} -.id-card .node-state.preparing-eol:before{ - content: "PREPARING EOL"; -} -.id-card .node-state:after{ - content: ""; - display: inline-block; - height: 16px; - width: 16px; - position: absolute; - right: 0px; - top: 2px; - border-radius: 50%; - background-color: #4eb934; -} -.id-card .node-state.ignored:after{ - background-color: #a4aebf; -} -.id-card .node-state.empty-policies:after{ - background-color: #7591c599; -} -.id-card .node-state.initializing:after{ - color: #08a3ef; - content: "\f1ce"; - font: normal normal normal 14px/1 inherit; - font-family: "Font Awesome 5 Free"; - font-weight: 900; - background-color: transparent; - font-weight: bold; - font-size: 1.1em; - animation: fa-spin 2s infinite linear; - height: 14px; - width: auto; -} -.id-card .node-state.preparing-eol:after{ - background-color: #EF9600; -} - -.machine-info{ - position: relative; - padding-left: 60px; -} -.machine-info:after{ - content: ""; - position: absolute; - top: calc(50% - 4px); - left: 6px; - width: 8px; - height: 8px; - background-color: #041922; - opacity: .5; - border-radius: 50%; -} -.machine-info:before{ - content: ""; - display: inline-block; - position: absolute; - width: 40px; - height: 28px; - top: calc(50% - 14px); - left: 20px; - background-size: contain; - background-repeat: no-repeat; - background-position: center; -} -.machine-info.ram:before{ - background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICB4bWxuczpjYz0iaHR0cDovL2NyZWF0aXZlY29tbW9ucy5vcmcvbnMjIgogICB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIKICAgaWQ9InN2ZzEwIgogICB2ZXJzaW9uPSIxLjEiCiAgIHZpZXdCb3g9IjAgLTEwMyA1MTIgNTEyIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExNiI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgICA8ZGM6dGl0bGU+PC9kYzp0aXRsZT4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGRlZnMKICAgICBpZD0iZGVmczE0IiAvPgogIDxwYXRoCiAgICAgaWQ9InJlY3Q4NDUtNSIKICAgICBkPSJtIDU5LjkxNiw3LjQwNjE3NjkgYyAtMzAuNjQ0MTE2LDAgLTU1LjMxMzU3NTcsMjQuNjY5NDQ1MSAtNTUuMzEzNTc1Nyw1NS4zMTM1NzYxIFYgMjIyLjMwODAzIGMgMCwyNS4xNzcyOCAxNi42NTgwMDM3LDQ2LjMxMDQ1IDM5LjU5NDk3NzcsNTMuMDUzNjggdiAyMy42NDMzNCBjIDAsMi4xNzU3NCAxLjc1MTQsMy45MjcxNCAzLjkyNzEzOCwzLjkyNzE0IGggMjEuNjA5MjkgYyAyLjE3NTczOCwwIDMuOTI3MTMyLC0xLjc1MTQgMy45MjcxMzIsLTMuOTI3MTQgdiAtMjEuMzgyIGggMjguMTc0NjU4IHYgMjEuMzgyIGMgMCwyLjE3NTc0IDEuNzUxMzksMy45MjcxNCAzLjkyNzEyLDMuOTI3MTQgaCAyMS42MDkzIGMgMi4xNzU3NCwwIDMuOTI4NTcsLTEuNzUxNCAzLjkyODU3LC0zLjkyNzE0IHYgLTIxLjM4MiBoIDI4LjE3MzIyIHYgMjEuMzgyIGMgMCwyLjE3NTc0IDEuNzUxMzksMy45MjcxNCAzLjkyNzEzLDMuOTI3MTQgaCAyMS42MTA3MyBjIDIuMTc1NzQsMCAzLjkyNzEzLC0xLjc1MTQgMy45MjcxMywtMy45MjcxNCB2IC0yMS4zODIgaCAyOC4xNzMyMSB2IDIxLjM4MiBjIDAsMi4xNzU3NCAxLjc1Mjg0LDMuOTI3MTQgMy45Mjg1NywzLjkyNzE0IGggMjEuNjA5MjkgYyAyLjE3NTc0LDAgMy45MjcxNCwtMS43NTE0IDMuOTI3MTQsLTMuOTI3MTQgdiAtMjEuMzgyIGggMjguMTc0NjUgdiAyMS4zODIgYyAwLDIuMTc1NzQgMS43NTEzOSwzLjkyNzE0IDMuOTI3MTMsMy45MjcxNCBoIDIxLjYwOTI5IGMgMi4xNzU3NCwwIDMuOTI3MTMsLTEuNzUxNCAzLjkyNzEzLC0zLjkyNzE0IHYgLTIxLjM4MiBoIDI4LjE3NDY2IHYgMjEuMzgyIGMgMCwyLjE3NTc0IDEuNzUxMzksMy45MjcxNCAzLjkyNzEzLDMuOTI3MTQgaCAyMS42MDkyOCBjIDIuMTc1NzUsMCAzLjkyODU4LC0xLjc1MTQgMy45Mjg1OCwtMy45MjcxNCB2IC0yMS4zODIgaCAyOC4xNzMyNSB2IDIxLjM4MiBjIDAsMi4xNzU3NCAxLjc1MTM2LDMuOTI3MTQgMy45MjcxMSwzLjkyNzE0IGggMjEuNjEwNzMgYyAyLjE3NTc0LDAgMy45MjcxMSwtMS43NTE0IDMuOTI3MTEsLTMuOTI3MTQgdiAtMjEuMzgyIGggMjguMTczMjUgdiAyMS4zODIgYyAwLDIuMTc1NzQgMS43NTI4MywzLjkyNzE0IDMuOTI4NTgsMy45MjcxNCBoIDIxLjYwOTI2IGMgMi4xNzU3NCwwIDMuOTI3MTEsLTEuNzUxNCAzLjkyNzExLC0zLjkyNzE0IHYgLTI3LjM0NDY0IGMgMTcuOTg0OTMsLTkuMTEwNDcgMzAuMjY2MjgsLTI3LjczOTA1IDMwLjI2NjI4LC00OS4zNTIzOCBWIDYyLjcxOTc1MyBjIDAsLTMwLjY0NDEzMSAtMjQuNjcwODksLTU1LjMxMzU3NjEgLTU1LjMxNTAxLC01NS4zMTM1NzYxIHogTSA3Mi43NTQ2OTksNDEuNDkzMTA1IEggNDM5LjI0MzgxIGMgMTguMzIyNDksMCAzMy4wNzI3OCwxNC43NTAzOTUgMzMuMDcyNzgsMzMuMDcyNzggViAyMTAuNDYxOSBjIDAsMTguMzIyMzkgLTE0Ljc1MDI5LDMzLjA3Mjc5IC0zMy4wNzI3OCwzMy4wNzI3OCBIIDcyLjc1NDY5OSBjIC0xOC4zMjI0LDAgLTMzLjA3Mjc4LC0xNC43NTAzOSAtMzMuMDcyNzczLC0zMy4wNzI3OCBWIDc0LjU2NTg4NSBjIDAsLTE4LjMyMjM4NSAxNC43NTAzNzMsLTMzLjA3Mjc4IDMzLjA3Mjc3MywtMzMuMDcyNzggeiBtIDM4LjI5MDI2MSw1NC4zNDY5MDQgYyAtOS45NzY1LDAgLTE4LjAwNzI3NSw4LjAzMjIwMSAtMTguMDA3Mjc1LDE4LjAwODcwMSB2IDU3LjMzMzI0IGMgMCw5Ljk3NjUgOC4wMzA3NzUsMTguMDA3MjggMTguMDA3Mjc1LDE4LjAwNzI4IGggNTIuOTg0NjMgYyA5Ljk3NjQ4LDAgMTguMDA3MjYsLTguMDMwNzggMTguMDA3MjYsLTE4LjAwNzI4IHYgLTU3LjMzMzI0IGMgMCwtOS45NzY1IC04LjAzMDc4LC0xOC4wMDg3MDEgLTE4LjAwNzI2LC0xOC4wMDg3MDEgeiBtIDExOC40NjQxNCwwIGMgLTkuOTc2NDgsMCAtMTguMDA3MjYsOC4wMzIyMDEgLTE4LjAwNzI2LDE4LjAwODcwMSB2IDU3LjMzMzI0IGMgMCw5Ljk3NjUgOC4wMzA3OCwxOC4wMDcyOCAxOC4wMDcyNiwxOC4wMDcyOCBoIDUyLjk4NDY0IGMgOS45NzY0OSwwIDE4LjAwNzI3LC04LjAzMDc4IDE4LjAwNzI3LC0xOC4wMDcyOCB2IC01Ny4zMzMyNCBjIC0xZS01LC05Ljk3NjUgLTguMDMwNzgsLTE4LjAwODcwMSAtMTguMDA3MjcsLTE4LjAwODcwMSB6IG0gMTE4LjQ2NDIsMCBjIC05Ljk3NjQ5LDAgLTE4LjAwNzMsOC4wMzIyMDEgLTE4LjAwNzMsMTguMDA4NzAxIHYgNTcuMzMzMjQgYyAwLDkuOTc2NSA4LjAzMDgxLDE4LjAwNzI4IDE4LjAwNzMsMTguMDA3MjggaCA1Mi45ODQ1OSBjIDkuOTc2NDksMCAxOC4wMDcyNSwtOC4wMzA3OCAxOC4wMDcyNSwtMTguMDA3MjggdiAtNTcuMzMzMjQgYyAwLC05Ljk3NjUgLTguMDMwNzYsLTE4LjAwODcwMSAtMTguMDA3MjUsLTE4LjAwODcwMSB6IgogICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojMjIyZDQyO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDo3LjM2NTE3MDQ4O3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+Cjwvc3ZnPgo=); -} - -.rudder-info, -.status-info, -.accounts-info{ - margin-bottom: 15px; -} -.rudder-info > h3, -.status-info > h3, -.accounts-info > h3{ - color: #0419228a; - padding: 5px 0 !important; - display: block; - margin-bottom: 10px; - line-height: inherit; - border: 0; - border-bottom: 2px solid #d6deef; - font-size: 18px; -} -.rudder-info > div, -.status-info > div, -.accounts-info > div, -.security-info > div{ - margin-bottom: 8px; -} -.rudder-info > div label, -.status-info > div label, -.accounts-info > div label{ - font-size: 14px; - display: inline-block; - margin-bottom: 0; -} -.rudder-info .rudder-label { - font-size: 12px; - margin-bottom: -4px; - display: inline-flex; - align-items: center; - justify-content: center; - padding: 0 18px !important; - height: 20px; -} - -.details .ui-tabs-nav.list-tabs-invetory { - margin-right: 15px; -} - -/* OS ICONS */ -.id-card .card-img{ - background-image: url(../../images/os/unknown-logo.svg); -} -.id-card .card-img.linux{ - background-image: url(../../images/os/linux-logo.svg); -} -.id-card .card-img.debian{ - background-image: url(../../images/os/debian-logo.svg); -} -.id-card .card-img.kali{ - background-image: url(../../images/os/kali-logo.svg); -} -.id-card .card-img.ubuntu{ - background-image: url(../../images/os/ubuntu-logo.svg); -} -.id-card .card-img.redhat{ - background-image: url(../../images/os/redhat-logo.svg); -} -.id-card .card-img.centos{ - background-image: url(../../images/os/centos-logo.svg); -} -.id-card .card-img.fedora{ - background-image: url(../../images/os/fedora-logo.svg); -} -.id-card .card-img.suse{ - background-image: url(../../images/os/suse-logo.svg); -} -.id-card .card-img.android{ - background-image: url(../../images/os/android-logo.svg); -} -.id-card .card-img.oracle{ - background-image: url(../../images/os/oracle-logo.svg); -} -.id-card .card-img.scientific{ - background-image: url(../../images/os/scientific-logo.svg); -} -.id-card .card-img.slackware{ - background-image: url(../../images/os/slackware-logo.svg); -} -.id-card .card-img.mint{ - background-image: url(../../images/os/mint-logo.svg); -} -.id-card .card-img.rockylinux{ - background-image: url(../../images/os/rocky-logo.svg); -} -.id-card .card-img.almalinux{ - background-image: url(../../images/os/alma-logo.svg); -} -.id-card .card-img.raspbian{ - background-image: url(../../images/os/raspbian-logo.svg); -} -.id-card .card-img.windowsxp, -.id-card .card-img.windowsvista, -.id-card .card-img.windowsseven, -.id-card .card-img.windows10, -.id-card .card-img.windows2000, -.id-card .card-img.windows2003, -.id-card .card-img.windows2008, -.id-card .card-img.windows2008r2{ - background-image: url(../../images/os/windows-logo.svg); -} -.id-card .card-img.windows, -.id-card .card-img.windows2012, -.id-card .card-img.windows2012r2, -.id-card .card-img.windows2016, -.id-card .card-img.windows2016r2, -.id-card .card-img.windows2019{ - background-image: url(../../images/os/windows-2012-logo.svg); -} -.id-card .card-img.aix{ - background-image: url(../../images/os/aix-logo.svg); -} -.id-card .card-img.solaris{ - background-image: url(../../images/os/solaris-logo.svg); -} -.id-card .card-img.bsd{ - background-image: url(../../images/os/bsd-logo.svg); -} -.id-card .card-img.freebsd{ - background-image: url(../../images/os/freebsd-logo.svg); -} -.callout-fade.callout-info p .glyphicon{ - margin-right: 5px; - color: #1b809e; -} -.btn.toggle-security-info{ - min-width: 155px; - margin-top: 8px; - transition-duration: .2; -} -.btn.toggle-security-info:before{ - content: "Show "; -} -.btn.toggle-security-info.opened:before{ - content: "Hide "; -} -.btn.toggle-security-info.opened{ - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - margin-bottom: -1px; -} -.security-info{ - width: 100%; - overflow: auto; -} -pre.display-keys{ - padding: 12px; - border-top-left-radius: 0; -} -pre.display-keys > label:first-child{ - margin-top:0; -} -pre.display-keys > label{ - display:block; - margin-top:12px; - font-weight:bold; -} -.node-compliance-bar .progress{ - margin : 0px; - border-radius : 3px; - height : 25px; -} -.node-compliance-bar .progress-bar span{ - vertical-align : middle; - horizontal-align: middle; -} - -#filterLogs { - margin-bottom: 10px; -} - -/* NODE ERROR */ -.info-card{ - border-radius: 4px; - overflow: hidden; - border: 1px solid #e1e3e6; - border-left: 4px solid #337ab7; - max-width: 780px; - padding: 10px; - margin-bottom: 20px; - font-size: 14px; -} -.info-card .card-info h4{ - color: #337ab7; - margin-top: 0; - padding-left: 30px; - position: relative; -} -.info-card .card-info h4 .info-icon{ - font-size: 25px; - position: absolute; - top: -2px; - left: 0; -} -.info-card.critical{ - border-left-color: #C80004; - background-color: #ff040908; -} -.info-card.critical .card-info h4{ - color: #C80004; -} -/* PROPERIES TAB */ -#inventoryVariables .dataTable .btn-clipboard{ - margin-left: 4px; - visibility: hidden; -} -#inventoryVariables .dataTable tr.head th.sorting{ - cursor: default !important; - color: #041922; -} -#inventoryVariables .dataTable tr:hover .btn-clipboard{ - visibility: visible; -} -#nodeProperties > div > h3.page-title:first-child{ - margin-top: 0; -} -.variable-syntax:before, -.variable-syntax:after{ - content:"`"; -} -#nodeProp .tab-table-content{ - margin-top: 20px; -} -#nodeProp .table-header, #nodeProp .table-container { - width: 100%; - margin: 0; -} -#nodeProp .table-header, -#nodeProp .table-container > .dataTable{ - border-left: 1px solid #d6deef; - border-right: 1px solid #d6deef; -} -/* SETTINGS TAB */ -#nodeState > h3.page-title:first-child, -#logsDetails h3.page-title{ - margin-top: 0; - padding-top: 0 !important; -} -.node-submit + .currentNodeState { - display: none; -} -.currentNodeState { - font-size: 14px; -} -#reporting-mode-title{ - display: none; -} \ No newline at end of file diff --git a/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-node.scss b/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-node.scss new file mode 100644 index 00000000000..e4f5a67cf6f --- /dev/null +++ b/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-node.scss @@ -0,0 +1,471 @@ +/* +************************************************************************************* +* Copyright 2023 Normation SAS +************************************************************************************* +* +* This file is part of Rudder. +* +* Rudder is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* In accordance with the terms of section 7 (7. Additional Terms.) of +* the GNU General Public License version 3, the copyright holders add +* the following Additional permissions: +* Notwithstanding to the terms of section 5 (5. Conveying Modified Source +* Versions) and 6 (6. Conveying Non-Source Forms.) of the GNU General +* Public License version 3, when you create a Related Module, this +* Related Module is not considered as a part of the work and may be +* distributed under the license agreement of your choice. +* A "Related Module" means a set of sources files including their +* documentation that, without modification of the Source Code, enables +* supplementary functions or services in addition to those offered by +* the Software. +* +* Rudder is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with Rudder. If not, see . + +* +************************************************************************************* +*/ + +// Variables +$node-state-size: 14px; +$node-logo-size: 50px; + +// Override Rudder template +.rudder-template { + .header-title{ + justify-content: start; + align-items: center; + } + .one-col .main-header{ + border-bottom: none !important; + } + .header-buttons { + margin-left: auto; + } +} + +#queryParameters{ + padding: 0 15px; +} +#submitSearch{ + margin-bottom: 15px; +} +.rudder_col>.portlet{ + padding: 0 !important; +} +.portlet-header.ui-widget-header.page-title{ + margin: 0 !important; + border-bottom: none !important; + padding: 15px 15px 10px; + color: #041922 !important; + font-size: 24px !important; +} + +.page-title-description{ + padding: 0 15px; + margin-bottom: 8px; + font-size: 1.2em; + color: #738195; +} + +.rudder-ui-tabs ~ .ui-tabs-panel{ + padding: 0 15px 15px 15px; + float: left; + width: 100%; +} +#node_summary{ + display: flex; + padding: 0 !important; +} + +.rudder-ui-tabs { + border-bottom: 2px solid #d6deef; + margin: 0 0 15px 0; + position: relative; + background-color: #fff; + z-index: 10; +} +.rudder-ui-tabs > .ui-tabs-tab{ + display: inline-block; + padding: 6px 0px; + margin: 0 0 0 15px; + outline: none !important; + position: relative; +} + +#nodeDetails { + flex: 70; + padding: 0 15px 0 0; +} +.details #nodeDetails { + padding: 0; +} +#nodeGroups { + flex: 30; + border-left: 2px solid #d6deef; + margin-top: -15px; +} +.jstree-anchor > i.jstree-icon.fa.fa-folder, +.jstree-anchor > .treeGroupCategoryName { + position: relative; + top: 2px; +} +#nodeGroups > h3 { + color: #041922; + padding: 15px 15px 10px !important; + margin: 0; + font-size: 20px; + background-color: #f7f7f7; +} + +.node-state{ + display: inline-block; + width: $node-state-size; + height: $node-state-size; + border-radius: 50%; + background-color: #4eb934; + + &.ignored:after{ + background-color: #a4aebf; + } + &.empty-policies:after{ + background-color: #7591c599; + } + &.initializing:after{ + color: #08a3ef; + content: "\f1ce"; + font: normal normal normal 14px/1 inherit; + font-family: "Font Awesome 5 Free"; + font-weight: 900; + background-color: transparent; + font-weight: bold; + font-size: 1.1em; + animation: fa-spin 2s infinite linear; + height: 14px; + width: auto; + } + &.preparing-eol:after{ + background-color: #EF9600; + } +} +.machine-os-info { + font-size: .8rem; + color: #72829D; + + .icon-info{ + font-size : 1rem; + } +} +.machine-info{ + position: relative; + padding-left: 24px; + margin-right: 4px; + + &:after{ + content: ""; + position: absolute; + top: calc(50% - 4px); + left: 6px; + width: 8px; + height: 8px; + background-color: #72829D; + border-radius: 50%; + } + &:before{ + content: ""; + display: inline-block; + position: absolute; + width: 40px; + height: 28px; + top: calc(50% - 14px); + left: 20px; + background-size: contain; + background-repeat: no-repeat; + background-position: center; + } + &.ram{ + padding-left: 60px; + &:before{ + background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiIHN0YW5kYWxvbmU9Im5vIj8+CjxzdmcKICAgaWQ9InN2ZzEwIgogICB2ZXJzaW9uPSIxLjEiCiAgIHZpZXdCb3g9IjAgLTEwMyA1MTIgNTEyIgogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnN2Zz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciCiAgIHhtbG5zOnJkZj0iaHR0cDovL3d3dy53My5vcmcvMTk5OS8wMi8yMi1yZGYtc3ludGF4LW5zIyIKICAgeG1sbnM6Y2M9Imh0dHA6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL25zIyIKICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIj4KICA8bWV0YWRhdGEKICAgICBpZD0ibWV0YWRhdGExNiI+CiAgICA8cmRmOlJERj4KICAgICAgPGNjOldvcmsKICAgICAgICAgcmRmOmFib3V0PSIiPgogICAgICAgIDxkYzpmb3JtYXQ+aW1hZ2Uvc3ZnK3htbDwvZGM6Zm9ybWF0PgogICAgICAgIDxkYzp0eXBlCiAgICAgICAgICAgcmRmOnJlc291cmNlPSJodHRwOi8vcHVybC5vcmcvZGMvZGNtaXR5cGUvU3RpbGxJbWFnZSIgLz4KICAgICAgPC9jYzpXb3JrPgogICAgPC9yZGY6UkRGPgogIDwvbWV0YWRhdGE+CiAgPGRlZnMKICAgICBpZD0iZGVmczE0IiAvPgogIDxwYXRoCiAgICAgaWQ9InJlY3Q4NDUtNSIKICAgICBkPSJtIDU5LjkxNiw3LjQwNjE3NjkgYyAtMzAuNjQ0MTE2LDAgLTU1LjMxMzU3NTcsMjQuNjY5NDQ1MSAtNTUuMzEzNTc1Nyw1NS4zMTM1NzYxIFYgMjIyLjMwODAzIGMgMCwyNS4xNzcyOCAxNi42NTgwMDM3LDQ2LjMxMDQ1IDM5LjU5NDk3NzcsNTMuMDUzNjggdiAyMy42NDMzNCBjIDAsMi4xNzU3NCAxLjc1MTQsMy45MjcxNCAzLjkyNzEzOCwzLjkyNzE0IGggMjEuNjA5MjkgYyAyLjE3NTczOCwwIDMuOTI3MTMyLC0xLjc1MTQgMy45MjcxMzIsLTMuOTI3MTQgdiAtMjEuMzgyIGggMjguMTc0NjU4IHYgMjEuMzgyIGMgMCwyLjE3NTc0IDEuNzUxMzksMy45MjcxNCAzLjkyNzEyLDMuOTI3MTQgaCAyMS42MDkzIGMgMi4xNzU3NCwwIDMuOTI4NTcsLTEuNzUxNCAzLjkyODU3LC0zLjkyNzE0IHYgLTIxLjM4MiBoIDI4LjE3MzIyIHYgMjEuMzgyIGMgMCwyLjE3NTc0IDEuNzUxMzksMy45MjcxNCAzLjkyNzEzLDMuOTI3MTQgaCAyMS42MTA3MyBjIDIuMTc1NzQsMCAzLjkyNzEzLC0xLjc1MTQgMy45MjcxMywtMy45MjcxNCB2IC0yMS4zODIgaCAyOC4xNzMyMSB2IDIxLjM4MiBjIDAsMi4xNzU3NCAxLjc1Mjg0LDMuOTI3MTQgMy45Mjg1NywzLjkyNzE0IGggMjEuNjA5MjkgYyAyLjE3NTc0LDAgMy45MjcxNCwtMS43NTE0IDMuOTI3MTQsLTMuOTI3MTQgdiAtMjEuMzgyIGggMjguMTc0NjUgdiAyMS4zODIgYyAwLDIuMTc1NzQgMS43NTEzOSwzLjkyNzE0IDMuOTI3MTMsMy45MjcxNCBoIDIxLjYwOTI5IGMgMi4xNzU3NCwwIDMuOTI3MTMsLTEuNzUxNCAzLjkyNzEzLC0zLjkyNzE0IHYgLTIxLjM4MiBoIDI4LjE3NDY2IHYgMjEuMzgyIGMgMCwyLjE3NTc0IDEuNzUxMzksMy45MjcxNCAzLjkyNzEzLDMuOTI3MTQgaCAyMS42MDkyOCBjIDIuMTc1NzUsMCAzLjkyODU4LC0xLjc1MTQgMy45Mjg1OCwtMy45MjcxNCB2IC0yMS4zODIgaCAyOC4xNzMyNSB2IDIxLjM4MiBjIDAsMi4xNzU3NCAxLjc1MTM2LDMuOTI3MTQgMy45MjcxMSwzLjkyNzE0IGggMjEuNjEwNzMgYyAyLjE3NTc0LDAgMy45MjcxMSwtMS43NTE0IDMuOTI3MTEsLTMuOTI3MTQgdiAtMjEuMzgyIGggMjguMTczMjUgdiAyMS4zODIgYyAwLDIuMTc1NzQgMS43NTI4MywzLjkyNzE0IDMuOTI4NTgsMy45MjcxNCBoIDIxLjYwOTI2IGMgMi4xNzU3NCwwIDMuOTI3MTEsLTEuNzUxNCAzLjkyNzExLC0zLjkyNzE0IHYgLTI3LjM0NDY0IGMgMTcuOTg0OTMsLTkuMTEwNDcgMzAuMjY2MjgsLTI3LjczOTA1IDMwLjI2NjI4LC00OS4zNTIzOCBWIDYyLjcxOTc1MyBjIDAsLTMwLjY0NDEzMSAtMjQuNjcwODksLTU1LjMxMzU3NjEgLTU1LjMxNTAxLC01NS4zMTM1NzYxIHogTSA3Mi43NTQ2OTksNDEuNDkzMTA1IEggNDM5LjI0MzgxIGMgMTguMzIyNDksMCAzMy4wNzI3OCwxNC43NTAzOTUgMzMuMDcyNzgsMzMuMDcyNzggViAyMTAuNDYxOSBjIDAsMTguMzIyMzkgLTE0Ljc1MDI5LDMzLjA3Mjc5IC0zMy4wNzI3OCwzMy4wNzI3OCBIIDcyLjc1NDY5OSBjIC0xOC4zMjI0LDAgLTMzLjA3Mjc4LC0xNC43NTAzOSAtMzMuMDcyNzczLC0zMy4wNzI3OCBWIDc0LjU2NTg4NSBjIDAsLTE4LjMyMjM4NSAxNC43NTAzNzMsLTMzLjA3Mjc4IDMzLjA3Mjc3MywtMzMuMDcyNzggeiBtIDM4LjI5MDI2MSw1NC4zNDY5MDQgYyAtOS45NzY1LDAgLTE4LjAwNzI3NSw4LjAzMjIwMSAtMTguMDA3Mjc1LDE4LjAwODcwMSB2IDU3LjMzMzI0IGMgMCw5Ljk3NjUgOC4wMzA3NzUsMTguMDA3MjggMTguMDA3Mjc1LDE4LjAwNzI4IGggNTIuOTg0NjMgYyA5Ljk3NjQ4LDAgMTguMDA3MjYsLTguMDMwNzggMTguMDA3MjYsLTE4LjAwNzI4IHYgLTU3LjMzMzI0IGMgMCwtOS45NzY1IC04LjAzMDc4LC0xOC4wMDg3MDEgLTE4LjAwNzI2LC0xOC4wMDg3MDEgeiBtIDExOC40NjQxNCwwIGMgLTkuOTc2NDgsMCAtMTguMDA3MjYsOC4wMzIyMDEgLTE4LjAwNzI2LDE4LjAwODcwMSB2IDU3LjMzMzI0IGMgMCw5Ljk3NjUgOC4wMzA3OCwxOC4wMDcyOCAxOC4wMDcyNiwxOC4wMDcyOCBoIDUyLjk4NDY0IGMgOS45NzY0OSwwIDE4LjAwNzI3LC04LjAzMDc4IDE4LjAwNzI3LC0xOC4wMDcyOCB2IC01Ny4zMzMyNCBjIC0xZS01LC05Ljk3NjUgLTguMDMwNzgsLTE4LjAwODcwMSAtMTguMDA3MjcsLTE4LjAwODcwMSB6IG0gMTE4LjQ2NDIsMCBjIC05Ljk3NjQ5LDAgLTE4LjAwNzMsOC4wMzIyMDEgLTE4LjAwNzMsMTguMDA4NzAxIHYgNTcuMzMzMjQgYyAwLDkuOTc2NSA4LjAzMDgxLDE4LjAwNzI4IDE4LjAwNzMsMTguMDA3MjggaCA1Mi45ODQ1OSBjIDkuOTc2NDksMCAxOC4wMDcyNSwtOC4wMzA3OCAxOC4wMDcyNSwtMTguMDA3MjggdiAtNTcuMzMzMjQgYyAwLC05Ljk3NjUgLTguMDMwNzYsLTE4LjAwODcwMSAtMTguMDA3MjUsLTE4LjAwODcwMSB6IgogICAgIHN0eWxlPSJvcGFjaXR5OjE7ZmlsbDojNzI4MjlkO2ZpbGwtb3BhY2l0eToxO3N0cm9rZTpub25lO3N0cm9rZS13aWR0aDo3LjM2NTE3MDQ4O3N0cm9rZS1taXRlcmxpbWl0OjQ7c3Ryb2tlLWRhc2hhcnJheTpub25lO3N0cm9rZS1vcGFjaXR5OjEiIC8+Cjwvc3ZnPgo=); + } + } +} + +.rudder-info, +.status-info, +.accounts-info{ + margin-bottom: 15px; +} +.rudder-info > h3, +.status-info > h3, +.accounts-info > h3{ + color: #0419228a; + padding: 5px 0 !important; + display: block; + margin-bottom: 10px; + line-height: inherit; + border: 0; + border-bottom: 2px solid #d6deef; + font-size: 18px; +} +.rudder-info > div, +.status-info > div, +.accounts-info > div, +.security-info > div{ + margin-bottom: 8px; +} +.rudder-info > div label, +.status-info > div label, +.accounts-info > div label{ + font-size: 14px; + display: inline-block; + margin-bottom: 0; +} +.rudder-info .rudder-label { + font-size: 12px; + margin-bottom: -4px; + display: inline-flex; + align-items: center; + justify-content: center; + padding: 0 18px !important; + height: 20px; +} + +.details .ui-tabs-nav.list-tabs-invetory { + margin-right: 15px; +} + +/* OS ICONS */ +.os-logo { + width: $node-logo-size; + height: $node-logo-size; + background-size: contain; + background-repeat: no-repeat; + background-position: center; + opacity: 0.5; + margin-right: 10px; + cursor: help; + background-image: url(../../images/os/unknown-logo.svg); + + @media (max-width: 992px){ + & { + display: none !important + } + } + + &.linux{ + background-image: url(../../images/os/linux-logo.svg); + } + &.debian{ + background-image: url(../../images/os/debian-logo.svg); + } + &.kali{ + background-image: url(../../images/os/kali-logo.svg); + } + &.ubuntu{ + background-image: url(../../images/os/ubuntu-logo.svg); + } + &.redhat{ + background-image: url(../../images/os/redhat-logo.svg); + } + &.centos{ + background-image: url(../../images/os/centos-logo.svg); + } + &.fedora{ + background-image: url(../../images/os/fedora-logo.svg); + } + &.suse{ + background-image: url(../../images/os/suse-logo.svg); + } + &.android{ + background-image: url(../../images/os/android-logo.svg); + } + &.oracle{ + background-image: url(../../images/os/oracle-logo.svg); + } + &.scientific{ + background-image: url(../../images/os/scientific-logo.svg); + } + &.slackware{ + background-image: url(../../images/os/slackware-logo.svg); + } + &.mint{ + background-image: url(../../images/os/mint-logo.svg); + } + &.rockylinux{ + background-image: url(../../images/os/rocky-logo.svg); + } + &.almalinux{ + background-image: url(../../images/os/alma-logo.svg); + } + &.raspbian{ + background-image: url(../../images/os/raspbian-logo.svg); + } + &.windowsxp, + &.windowsvista, + &.windowsseven, + &.windows10, + &.windows2000, + &.windows2003, + &.windows2008, + &.windows2008r2{ + background-image: url(../../images/os/windows-logo.svg); + } + &.windows, + &.windows2012, + &.windows2012r2, + &.windows2016, + &.windows2016r2, + &.windows2019{ + background-image: url(../../images/os/windows-2012-logo.svg); + } + &.aix{ + background-image: url(../../images/os/aix-logo.svg); + } + &.solaris{ + background-image: url(../../images/os/solaris-logo.svg); + } + &.bsd{ + background-image: url(../../images/os/bsd-logo.svg); + } + &.freebsd{ + background-image: url(../../images/os/freebsd-logo.svg); + } +} + + +.callout-fade.callout-info p .glyphicon{ + margin-right: 5px; + color: #1b809e; +} +.btn.toggle-security-info{ + min-width: 155px; + margin-top: 8px; + transition-duration: .2; +} +.btn.toggle-security-info:before{ + content: "Show "; +} +.btn.toggle-security-info.opened:before{ + content: "Hide "; +} +.btn.toggle-security-info.opened{ + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + margin-bottom: -1px; +} +.security-info{ + width: 100%; + overflow: auto; +} +pre.display-keys{ + padding: 12px; + border-top-left-radius: 0; +} +pre.display-keys > label:first-child{ + margin-top:0; +} +pre.display-keys > label{ + display:block; + margin-top:12px; + font-weight:bold; +} +.node-compliance-bar .progress{ + margin : 0px; + border-radius : 3px; + height : 25px; +} +.node-compliance-bar .progress-bar span{ + vertical-align : middle; + horizontal-align: middle; +} + +#filterLogs { + margin-bottom: 10px; +} + +/* NODE ERROR */ +.info-card{ + border-radius: 4px; + overflow: hidden; + border: 1px solid #e1e3e6; + border-left: 4px solid #337ab7; + max-width: 780px; + padding: 10px; + margin-bottom: 20px; + font-size: 14px; +} +.info-card .card-info h4{ + color: #337ab7; + margin-top: 0; + padding-left: 30px; + position: relative; +} +.info-card .card-info h4 .info-icon{ + font-size: 25px; + position: absolute; + top: -2px; + left: 0; +} +.info-card.critical{ + border-left-color: #C80004; + background-color: #ff040908; +} +.info-card.critical .card-info h4{ + color: #C80004; +} +/* PROPERIES TAB */ +#inventoryVariables .dataTable .btn-clipboard{ + margin-left: 4px; + visibility: hidden; +} +#inventoryVariables .dataTable tr.head th.sorting{ + cursor: default !important; + color: #041922; +} +#inventoryVariables .dataTable tr:hover .btn-clipboard{ + visibility: visible; +} +#nodeProperties > div > h3.page-title:first-child{ + margin-top: 0; +} +.variable-syntax:before, +.variable-syntax:after{ + content:"`"; +} +#nodeProp .tab-table-content{ + margin-top: 20px; +} +#nodeProp .table-header, #nodeProp .table-container { + width: 100%; + margin: 0; +} +#nodeProp .table-header, +#nodeProp .table-container > .dataTable{ + border-left: 1px solid #d6deef; + border-right: 1px solid #d6deef; +} +/* SETTINGS TAB */ +#nodeState > h3.page-title:first-child, +#logsDetails h3.page-title{ + margin-top: 0; + padding-top: 0 !important; +} +.node-submit + .currentNodeState { + display: none; +} +.currentNodeState { + font-size: 14px; +} +#reporting-mode-title{ + display: none; +} \ No newline at end of file diff --git a/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-template.css b/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-template.css index 7de70fa20b7..527ed64f1a0 100644 --- a/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-template.css +++ b/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder-template.css @@ -166,6 +166,34 @@ .rudder-template .header-title h1.item-disabled { color: #828894; } +.rudder-template .header-subtitle{ + font-size: .8rem; + font-weight: normal; + color: #F8F9FC; + margin-top: 4px; + + .clipboard{ + color: #72829d; + transition-duration: .2s; + padding: 4px; + cursor: pointer; + border-radius: 4px; + .ion-clipboard{ + opacity: 0; + transition-duration: .2s; + font-size: 1rem; + margin-left: 4px; + } + + &:hover{ + background-color: rgba(54,148,209,.2); + + .ion-clipboard{ + opacity: 1; + } + } + } +} .rudder-template .header-buttons { white-space: nowrap; } @@ -1216,7 +1244,8 @@ } /* === BTN GOTO === */ -.rudder-template .btn-goto{ +.rudder-template .btn-goto, +.rudder-template .btn-clipboard{ padding: 3px 6px; border-radius: 4px; margin-left: 4px; diff --git a/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder.css b/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder.css index 5c2e668bc87..f087be7ee9c 100644 --- a/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder.css +++ b/webapp/sources/rudder/rudder-web/src/main/style/rudder/rudder.css @@ -631,15 +631,6 @@ table .innerDetails li{ height: 25px; } -.popupButton { - padding: 5px; - float: right; -} - -.popupButton span { - float: none; -} - /***************************************** * Popup creation groupe/category ******************************************/ diff --git a/webapp/sources/rudder/rudder-web/src/main/webapp/secure/nodeManager/node.html b/webapp/sources/rudder/rudder-web/src/main/webapp/secure/nodeManager/node.html index 7887553ec87..5a8e2b6a134 100644 --- a/webapp/sources/rudder/rudder-web/src/main/webapp/secure/nodeManager/node.html +++ b/webapp/sources/rudder/rudder-web/src/main/webapp/secure/nodeManager/node.html @@ -18,15 +18,68 @@
+

- Node +
+ + Node + + + + + +
+

+
+ + + + +
+ +
diff --git a/webapp/sources/rudder/rudder-web/src/main/webapp/templates-hidden/Popup/accept_new_server.html b/webapp/sources/rudder/rudder-web/src/main/webapp/templates-hidden/Popup/accept_new_server.html index 4b97c9c394b..60ae96603ed 100644 --- a/webapp/sources/rudder/rudder-web/src/main/webapp/templates-hidden/Popup/accept_new_server.html +++ b/webapp/sources/rudder/rudder-web/src/main/webapp/templates-hidden/Popup/accept_new_server.html @@ -14,9 +14,9 @@