N°3569 - Fix DB Tools queries display

This commit is contained in:
Eric
2021-03-25 16:35:46 +01:00
parent aa9632a41b
commit 3a9228d8d3
4 changed files with 68 additions and 32 deletions

View File

@@ -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;
}

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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;
}
}