Skip to content

Commit

Permalink
fix scrutinizer complexity
Browse files Browse the repository at this point in the history
  • Loading branch information
tera911 committed Dec 13, 2020
1 parent 933f3b2 commit 5eb2527
Show file tree
Hide file tree
Showing 3 changed files with 117 additions and 104 deletions.
65 changes: 34 additions & 31 deletions src/PhpSpreadsheet/Reader/Xlsx/ConditionalStyles.php
Expand Up @@ -97,37 +97,7 @@ private function readStyleRules($cfRules, $extLst)
}

if (isset($cfRule->dataBar)) {
$dataBar = new ConditionalDataBar();
//dataBar attribute
if (isset($cfRule->dataBar['showValue'])) {
$dataBar->setShowValue((int) $cfRule->dataBar['showValue']);
}

//dataBar children
//conditionalFormatValueObjects
$cfvoXml = $cfRule->dataBar->cfvo;
foreach ((count($cfvoXml) > 1 ? $cfvoXml : [$cfvoXml]) as $cfvo) {
$dataBar->addConditionalFormatValueObject((string) $cfvo['type'], (string) $cfvo['val']);
}

//color
if (isset($cfRule->dataBar->color)) {
$dataBar->setColor(new Color((string) $cfRule->dataBar->color['rgb']));
}
//extLst
if (isset($cfRule->extLst)) {
$ns = $cfRule->extLst->getNamespaces(true);
foreach ((count($cfRule->extLst) > 0 ? $cfRule->extLst->ext : [$cfRule->extLst->ext]) as $ext) {
if ((string) $ext['uri'] === '{B025F937-C7B1-47D3-B67F-A62EFF666E3E}') {
$extId = (string) $ext->children($ns['x14'])->id;
if (isset($conditionalFormattingRuleExtensions[$extId])) {
$dataBar->addConditionalFormattingRuleExtList($conditionalFormattingRuleExtensions[$extId]);
}
}
}
}

$objConditional->setDataBar($dataBar);
$objConditional->setDataBar($this->readDataBarOfConditionalRule($cfRule, $conditionalFormattingRuleExtensions));
} else {
$objConditional->setStyle(clone $this->dxfs[(int) ($cfRule['dxfId'])]);
}
Expand All @@ -137,4 +107,37 @@ private function readStyleRules($cfRules, $extLst)

return $conditionalStyles;
}

private function readDataBarOfConditionalRule($cfRule, $conditionalFormattingRuleExtensions): ConditionalDataBar
{
$dataBar = new ConditionalDataBar();
//dataBar attribute
if (isset($cfRule->dataBar['showValue'])) {
$dataBar->setShowValue((int) $cfRule->dataBar['showValue']);
}

//dataBar children
//conditionalFormatValueObjects
$cfvoXml = $cfRule->dataBar->cfvo;
foreach ((count($cfvoXml) > 1 ? $cfvoXml : [$cfvoXml]) as $cfvo) {
$dataBar->addConditionalFormatValueObject((string) $cfvo['type'], (string) $cfvo['val']);
}

//color
if (isset($cfRule->dataBar->color)) {
$dataBar->setColor(new Color((string) $cfRule->dataBar->color['rgb']));
}
//extLst
if (isset($cfRule->extLst)) {
$ns = $cfRule->extLst->getNamespaces(true);
foreach ((count($cfRule->extLst) > 0 ? $cfRule->extLst->ext : [$cfRule->extLst->ext]) as $ext) {
$extId = (string) $ext->children($ns['x14'])->id;
if (isset($conditionalFormattingRuleExtensions[$extId]) && (string) $ext['uri'] === '{B025F937-C7B1-47D3-B67F-A62EFF666E3E}') {
$dataBar->addConditionalFormattingRuleExtList($conditionalFormattingRuleExtensions[$extId]);
}
}
}

return $dataBar;
}
}
Expand Up @@ -59,56 +59,62 @@ public static function parseExtLstXml($extLstXml)
$extFormattingRuleObj->setDataBar($extDataBarObj);

$dataBarXml = $extCfRuleXml->dataBar;
$dataBarAttribute = $dataBarXml->attributes();

//attributes
if ($dataBarAttribute->minLength) {
$extDataBarObj->setMinLength((int) $dataBarAttribute->minLength);
}
if ($dataBarAttribute->maxLength) {
$extDataBarObj->setMaxLength((int) $dataBarAttribute->maxLength);
}
if ($dataBarAttribute->border) {
$extDataBarObj->setBorder((int) $dataBarAttribute->border);
}
if ($dataBarAttribute->gradient) {
$extDataBarObj->setGradient((int) $dataBarAttribute->gradient);
}
if ($dataBarAttribute->direction) {
$extDataBarObj->setDirection((string) $dataBarAttribute->direction);
}
if ($dataBarAttribute->negativeBarBorderColorSameAsPositive) {
$extDataBarObj->setNegativeBarBorderColorSameAsPositive((int) $dataBarAttribute->negativeBarBorderColorSameAsPositive);
}
if ($dataBarAttribute->axisPosition) {
$extDataBarObj->setAxisPosition((string) $dataBarAttribute->axisPosition);
}

//children
if ($dataBarXml->borderColor) {
$extDataBarObj->setBorderColor((string) $dataBarXml->borderColor->attributes()['rgb']);
}
if ($dataBarXml->negativeFillColor) {
$extDataBarObj->setNegativeFillColor((string) $dataBarXml->negativeFillColor->attributes()['rgb']);
}
if ($dataBarXml->negativeBorderColor) {
$extDataBarObj->setNegativeBorderColor((string) $dataBarXml->negativeBorderColor->attributes()['rgb']);
}
if ($dataBarXml->axisColor) {
$axisColorAttr = $dataBarXml->axisColor->attributes();
$extDataBarObj->setAxisColor((string) $axisColorAttr['rgb'], (string) $axisColorAttr['theme'], (string) $axisColorAttr['tint']);
}
foreach ($dataBarXml->cfvo as $cfvo) {
$f = (string) $cfvo->children($ns['xm'])->f;
$extDataBarObj->addConditionalFormatValueObject((string) $cfvo->attributes()['type'], null, (empty($f) ? null : $f));
}
self::parseExtDataBarAttributesFromXml($extDataBarObj, $dataBarXml);
self::parseExtDataBarElementChildrenFromXml($extDataBarObj, $dataBarXml, $ns);
}
}
}

return $conditionalFormattingRuleExtensions;
}

private static function parseExtDataBarAttributesFromXml(ConditionalDataBarExtension $extDataBarObj, SimpleXMLElement $dataBarXml): void
{
$dataBarAttribute = $dataBarXml->attributes();
if ($dataBarAttribute->minLength) {
$extDataBarObj->setMinLength((int) $dataBarAttribute->minLength);
}
if ($dataBarAttribute->maxLength) {
$extDataBarObj->setMaxLength((int) $dataBarAttribute->maxLength);
}
if ($dataBarAttribute->border) {
$extDataBarObj->setBorder((int) $dataBarAttribute->border);
}
if ($dataBarAttribute->gradient) {
$extDataBarObj->setGradient((int) $dataBarAttribute->gradient);
}
if ($dataBarAttribute->direction) {
$extDataBarObj->setDirection((string) $dataBarAttribute->direction);
}
if ($dataBarAttribute->negativeBarBorderColorSameAsPositive) {
$extDataBarObj->setNegativeBarBorderColorSameAsPositive((int) $dataBarAttribute->negativeBarBorderColorSameAsPositive);
}
if ($dataBarAttribute->axisPosition) {
$extDataBarObj->setAxisPosition((string) $dataBarAttribute->axisPosition);
}
}

private static function parseExtDataBarElementChildrenFromXml(ConditionalDataBarExtension $extDataBarObj, SimpleXMLElement $dataBarXml, $ns): void
{
if ($dataBarXml->borderColor) {
$extDataBarObj->setBorderColor((string) $dataBarXml->borderColor->attributes()['rgb']);
}
if ($dataBarXml->negativeFillColor) {
$extDataBarObj->setNegativeFillColor((string) $dataBarXml->negativeFillColor->attributes()['rgb']);
}
if ($dataBarXml->negativeBorderColor) {
$extDataBarObj->setNegativeBorderColor((string) $dataBarXml->negativeBorderColor->attributes()['rgb']);
}
if ($dataBarXml->axisColor) {
$axisColorAttr = $dataBarXml->axisColor->attributes();
$extDataBarObj->setAxisColor((string) $axisColorAttr['rgb'], (string) $axisColorAttr['theme'], (string) $axisColorAttr['tint']);
}
foreach ($dataBarXml->cfvo as $cfvo) {
$f = (string) $cfvo->children($ns['xm'])->f;
$extDataBarObj->addConditionalFormatValueObject((string) $cfvo->attributes()['type'], null, (empty($f) ? null : $f));
}
}

/**
* @return mixed
*/
Expand Down
64 changes: 34 additions & 30 deletions src/PhpSpreadsheet/Writer/Xlsx/Worksheet.php
Expand Up @@ -543,6 +543,39 @@ private static function writeExtConditionalFormattingElements(XMLWriter $objWrit
$objWriter->endElement(); //end conditionalFormatting
}

private function writeDataBarElements(XMLWriter $objWriter, $dataBar): void
{
if ($dataBar) {
$objWriter->startElement('dataBar');
self::writeAttributeIf($objWriter, null !== $dataBar->getShowValue(), 'showValue', (string) $dataBar->getShowValue());
foreach ($dataBar->getConditionalFormatValueObjects() as $cfvo) {
$objWriter->startElement('cfvo');
self::writeAttributeIf($objWriter, $cfvo->getType(), 'type', (string) $cfvo->getType());
self::writeAttributeIf($objWriter, $cfvo->getValue(), 'val', (string) $cfvo->getValue());
$objWriter->endElement();
}
if ($dataBar->getColor()) {
$objWriter->startElement('color');
$objWriter->writeAttribute('rgb', $dataBar->getColor()->getARGB());
$objWriter->endElement();
}
$objWriter->endElement(); // end dataBar

if (count($dataBar->getConditionalFormattingRuleExtList()) > 0) {
$objWriter->startElement('extLst');
foreach ($dataBar->getConditionalFormattingRuleExtList() as $extension) {
$objWriter->startElement('ext');
$objWriter->writeAttribute('uri', '{B025F937-C7B1-47D3-B67F-A62EFF666E3E}');
$objWriter->startElementNs('x14', 'id', null);
$objWriter->text($extension->getId());
$objWriter->endElement();
$objWriter->endElement();
}
$objWriter->endElement(); //end extLst
}
}
}

/**
* Write ConditionalFormatting.
*
Expand Down Expand Up @@ -594,36 +627,7 @@ private function writeConditionalFormatting(XMLWriter $objWriter, Phpspreadsheet
}

//<dataBar>
$dataBar = $conditional->getDataBar();
if ($dataBar) {
$objWriter->startElement('dataBar');
self::writeAttributeIf($objWriter, null !== $dataBar->getShowValue(), 'showValue', (string) $dataBar->getShowValue());
foreach ($dataBar->getConditionalFormatValueObjects() as $cfvo) {
$objWriter->startElement('cfvo');
self::writeAttributeIf($objWriter, $cfvo->getType(), 'type', (string) $cfvo->getType());
self::writeAttributeIf($objWriter, $cfvo->getValue(), 'val', (string) $cfvo->getValue());
$objWriter->endElement();
}
if ($dataBar->getColor()) {
$objWriter->startElement('color');
$objWriter->writeAttribute('rgb', $dataBar->getColor()->getARGB());
$objWriter->endElement();
}
$objWriter->endElement(); // end dataBar

if (count($dataBar->getConditionalFormattingRuleExtList()) > 0) {
$objWriter->startElement('extLst');
foreach ($dataBar->getConditionalFormattingRuleExtList() as $extension) {
$objWriter->startElement('ext');
$objWriter->writeAttribute('uri', '{B025F937-C7B1-47D3-B67F-A62EFF666E3E}');
$objWriter->startElementNs('x14', 'id', null);
$objWriter->text($extension->getId());
$objWriter->endElement();
$objWriter->endElement();
}
$objWriter->endElement(); //end extLst
}
}
self::writeDataBarElements($objWriter, $conditional->getDataBar());

$objWriter->endElement(); //end cfRule

Expand Down

0 comments on commit 5eb2527

Please sign in to comment.