mirror of
https://github.com/Combodo/iTop.git
synced 2026-04-25 11:38:44 +02:00
N°3569 - Fix DB Tools queries display
This commit is contained in:
@@ -16,6 +16,9 @@
|
||||
* You should have received a copy of the GNU Affero General Public License
|
||||
*/
|
||||
|
||||
$ibo-code--background-color: $ibo-color-white-200 !default;
|
||||
$ibo-code--padding: 1.25rem 1.5rem !default;
|
||||
|
||||
/* Note: We have to wrap it in the ID in order to overload its rules, otherwise, the ID takes over the simple CSS class... */
|
||||
#ibo-center-container {
|
||||
&.ibo-center-container--with-side-content {
|
||||
@@ -26,6 +29,7 @@
|
||||
> * {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
#ibo-main-content {
|
||||
flex-grow: 1; /* To occupy maximum width, side content will handle its width */
|
||||
overflow-x: auto; /* To avoid main content to be too wide when the blocks within it have no width constraints. This way it will occupy only the remaining space left by the side part. */
|
||||
@@ -41,3 +45,10 @@
|
||||
background-color: $ibo-content-block--background-color;
|
||||
border-left: $ibo-content-block--border;
|
||||
}
|
||||
|
||||
.ibo-code {
|
||||
font-family: $family-code;
|
||||
font-size: $ibo-font-size-150;
|
||||
background-color: $ibo-code--background-color;
|
||||
padding: $ibo-code--padding;
|
||||
}
|
||||
@@ -23,7 +23,6 @@ use Combodo\iTop\Application\UI\Base\Component\CollapsibleSection\CollapsibleSec
|
||||
use Combodo\iTop\Application\UI\Base\Component\DataTable\DataTableUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\FieldSet\FieldSetUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Form\FormUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Input\InputUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Title\TitleUIBlockFactory;
|
||||
@@ -70,10 +69,10 @@ function DisplayDBInconsistencies(iTopWebPage &$oP, ApplicationContext &$oAppCon
|
||||
}
|
||||
}
|
||||
|
||||
$oPanel = FieldSetUIBlockFactory::MakeStandard(Dict::S('DBTools:SelectAnalysisType'));
|
||||
$oP->AddUiBlock($oPanel);
|
||||
$oFieldSet = FieldSetUIBlockFactory::MakeStandard(Dict::S('DBTools:SelectAnalysisType'));
|
||||
$oP->AddUiBlock($oFieldSet);
|
||||
$oForm = FormUIBlockFactory::MakeStandard();
|
||||
$oPanel->AddSubBlock($oForm);
|
||||
$oFieldSet->AddSubBlock($oForm);
|
||||
|
||||
$oToolbar = ToolbarUIBlockFactory::MakeStandard();
|
||||
$oForm->AddSubBlock($oToolbar);
|
||||
@@ -142,16 +141,18 @@ function DisplayDBInconsistencies(iTopWebPage &$oP, ApplicationContext &$oAppCon
|
||||
DisplayInconsistenciesReport($aResults);
|
||||
}
|
||||
|
||||
$oPanel = PanelUIBlockFactory::MakeForWarning(Dict::S('DBTools:ErrorsFound'));
|
||||
$oPanel->AddCSSClass('ibo-datatable-panel');
|
||||
$oP->AddUiBlock($oPanel);
|
||||
|
||||
if ($iShowId == 0) {
|
||||
// Error List
|
||||
$oPanel = PanelUIBlockFactory::MakeForWarning(Dict::S('DBTools:ErrorsFound'));
|
||||
$oPanel->AddCSSClass('ibo-datatable-panel');
|
||||
$oP->AddUiBlock($oPanel);
|
||||
$oPanel->AddSubBlock(DisplayErrorList($aResults));
|
||||
} else {
|
||||
// Detail List
|
||||
$oPanel->AddSubBlock(DisplayErrorDetails($aResults));
|
||||
$oFieldSet = FieldSetUIBlockFactory::MakeStandard(Dict::S('DBTools:ErrorsFound'));
|
||||
$oP->AddUiBlock($oFieldSet);
|
||||
$oFieldSet->AddSubBlock(DisplayErrorDetails($aResults));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -229,7 +230,9 @@ function DisplayErrorDetails($aResults)
|
||||
|
||||
$oFieldSet = FieldSetUIBlockFactory::MakeStandard(Dict::S('DBTools:SQLquery'));
|
||||
$oCollapsible->AddSubBlock($oFieldSet);
|
||||
$oFieldSet->AddSubBlock(new Html("<pre>{$aError['query']}</pre>"));
|
||||
|
||||
$oCode = UIContentBlockUIBlockFactory::MakeForCode($aError['query']);
|
||||
$oFieldSet->AddSubBlock($oCode);
|
||||
|
||||
if (isset($aError['fixit'])) {
|
||||
$oFieldSet = FieldSetUIBlockFactory::MakeStandard(Dict::S('DBTools:FixitSQLquery'));
|
||||
@@ -237,7 +240,8 @@ function DisplayErrorDetails($aResults)
|
||||
|
||||
$aQueries = $aError['fixit'];
|
||||
foreach ($aQueries as $sFixQuery) {
|
||||
$oFieldSet->AddSubBlock(new Html("<pre>{$sFixQuery}</pre>"));
|
||||
$oCode = UIContentBlockUIBlockFactory::MakeForCode($sFixQuery);
|
||||
$oFieldSet->AddSubBlock($oCode);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -258,7 +262,8 @@ function DisplayErrorDetails($aResults)
|
||||
}
|
||||
$sQueryResult .= '<br>';
|
||||
}
|
||||
$oFieldSet->AddSubBlock(new Html("<pre>{$sQueryResult}</pre>"));
|
||||
$oCode = UIContentBlockUIBlockFactory::MakeForCode($sQueryResult);
|
||||
$oFieldSet->AddSubBlock($oCode);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,7 @@ use Combodo\iTop\Application\UI\Base\Component\Html\HtmlFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Input\InputUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Input\TextArea;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Panel\PanelUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Layout\UIContentBlockUIBlockFactory;
|
||||
|
||||
require_once('../approot.inc.php');
|
||||
require_once(APPROOT.'/application/application.inc.php');
|
||||
@@ -248,11 +249,11 @@ EOF
|
||||
$aMoreInfoBlocks = [];
|
||||
|
||||
$oDevelopedQuerySet = new FieldSet(Dict::S('UI:RunQuery:DevelopedQuery'));
|
||||
$oDevelopedQuerySet->AddSubBlock(new Html('<pre>'.utils::EscapeHtml($oFilter->ToOQL()).'</pre>'));
|
||||
$oDevelopedQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode(utils::EscapeHtml($oFilter->ToOQL())));
|
||||
$aMoreInfoBlocks[] = $oDevelopedQuerySet;
|
||||
|
||||
$oSerializedQuerySet = new FieldSet(Dict::S('UI:RunQuery:SerializedFilter'));
|
||||
$oSerializedQuerySet->AddSubBlock(new Html('<pre>'.utils::EscapeHtml($oFilter->serialize()).'</pre>'));
|
||||
$oSerializedQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode(utils::EscapeHtml($oFilter->serialize())));
|
||||
$aMoreInfoBlocks[] = $oSerializedQuerySet;
|
||||
|
||||
|
||||
@@ -275,14 +276,14 @@ EOF
|
||||
$oSQLObjectQueryBuilder = new SQLObjectQueryBuilder($oFilter);
|
||||
$oBuild = new QueryBuilderContext($oFilter, $aModifierProperties, null, null, null, $aCountAttToLoad);
|
||||
$oCountDevelopedQuerySet = new FieldSet(Dict::S('UI:RunQuery:DevelopedOQLCount'));
|
||||
$oCountDevelopedQuerySet->AddSubBlock(new Html('<pre>'.$oSQLObjectQueryBuilder->DebugOQLClassTree($oBuild).'</pre>'));
|
||||
$oCountDevelopedQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode($oSQLObjectQueryBuilder->DebugOQLClassTree($oBuild)));
|
||||
$aMoreInfoBlocks[] = $oCountDevelopedQuerySet;
|
||||
}
|
||||
|
||||
// SQL Count
|
||||
$sSQL = $oFilter->MakeSelectQuery(array(), $aRealArgs, $aCountAttToLoad, null, 0, 0, true);
|
||||
$oCountResultQuerySet = new FieldSet(Dict::S('UI:RunQuery:ResultSQLCount'));
|
||||
$oCountResultQuerySet->AddSubBlock(new Html('<pre>'.$sSQL.'</pre>'));
|
||||
$oCountResultQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode($sSQL));
|
||||
$aMoreInfoBlocks[] = $oCountResultQuerySet;
|
||||
|
||||
if (($oFilter instanceof DBObjectSearch) && !MetaModel::GetConfig()->Get('use_legacy_dbsearch')) {
|
||||
@@ -290,14 +291,14 @@ EOF
|
||||
$oSQLObjectQueryBuilder = new SQLObjectQueryBuilder($oFilter);
|
||||
$oBuild = new QueryBuilderContext($oFilter, $aModifierProperties);
|
||||
$oOqlDevelopedQuerySet = new FieldSet(Dict::S('UI:RunQuery:DevelopedOQL'));
|
||||
$oOqlDevelopedQuerySet->AddSubBlock(new Html('<pre>'.$oSQLObjectQueryBuilder->DebugOQLClassTree($oBuild).'</pre>'));
|
||||
$oOqlDevelopedQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode($oSQLObjectQueryBuilder->DebugOQLClassTree($oBuild)));
|
||||
$aMoreInfoBlocks[] = $oOqlDevelopedQuerySet;
|
||||
}
|
||||
|
||||
// SQL
|
||||
$sSQL = $oFilter->MakeSelectQuery($aOrderBy, $aRealArgs, null, null, 0, 0, false);
|
||||
$oSqlQuerySet = new FieldSet(Dict::S('UI:RunQuery:ResultSQL'));
|
||||
$oSqlQuerySet->AddSubBlock(new Html('<pre>'.$sSQL.'</pre>'));
|
||||
$oSqlQuerySet->AddSubBlock(UIContentBlockUIBlockFactory::MakeForCode($sSQL));
|
||||
$aMoreInfoBlocks[] = $oSqlQuerySet;
|
||||
|
||||
$oMoreInfoSection = new CollapsibleSection(Dict::S('UI:RunQuery:MoreInfo'), $aMoreInfoBlocks);
|
||||
|
||||
@@ -9,6 +9,7 @@ namespace Combodo\iTop\Application\UI\Base\Layout;
|
||||
|
||||
|
||||
use Combodo\iTop\Application\UI\Base\AbstractUIBlockFactory;
|
||||
use Combodo\iTop\Application\UI\Base\Component\Html\Html;
|
||||
|
||||
class UIContentBlockUIBlockFactory extends AbstractUIBlockFactory
|
||||
{
|
||||
@@ -19,4 +20,22 @@ class UIContentBlockUIBlockFactory extends AbstractUIBlockFactory
|
||||
{
|
||||
return new UIContentBlock($sId, $aContainerClasses);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Used to display a block of code like <pre> but allows line break.
|
||||
* The \n are replaced by <br>
|
||||
*
|
||||
* @param string $sCode
|
||||
* @param string|null $sId
|
||||
*/
|
||||
public static function MakeForCode(string $sCode, string $sId = null)
|
||||
{
|
||||
$oCode = new UIContentBlock($sId, ['ibo-code']);
|
||||
$sCode = str_replace("\n", '<br>', $sCode);
|
||||
$oCode->AddSubBlock(new Html($sCode));
|
||||
|
||||
return $oCode;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user