This commit is contained in:
Thomas Peterson 2025-07-17 14:00:44 +02:00
parent 8ca48ca174
commit 3660f33799
2 changed files with 116 additions and 97 deletions

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd"> <!DOCTYPE coverage SYSTEM "http://cobertura.sourceforge.net/xml/coverage-04.dtd">
<coverage line-rate="0.74613613942782" branch-rate="0" lines-covered="2269" lines-valid="3041" branches-covered="0" branches-valid="0" complexity="1344" version="0.4" timestamp="1752748792"> <coverage line-rate="0.74630784378077" branch-rate="0" lines-covered="2274" lines-valid="3047" branches-covered="0" branches-valid="0" complexity="1345" version="0.4" timestamp="1752753637">
<sources> <sources>
<source>/home/thomas/projekte/calc/src</source> <source>/home/thomas/projekte/calc/src</source>
</sources> </sources>
@ -7900,9 +7900,9 @@
</class> </class>
</classes> </classes>
</package> </package>
<package name="Option/Type/Select.php" line-rate="0.80357142857143" branch-rate="0" complexity="28"> <package name="Option/Type/Select.php" line-rate="0.80645161290323" branch-rate="0" complexity="29">
<classes> <classes>
<class name="PSC\Library\Calc\Option\Type\Select" filename="Option/Type/Select.php" line-rate="0.80357142857143" branch-rate="0" complexity="28"> <class name="PSC\Library\Calc\Option\Type\Select" filename="Option/Type/Select.php" line-rate="0.80645161290323" branch-rate="0" complexity="29">
<methods> <methods>
<method name="__construct" signature="" line-rate="1" branch-rate="0" complexity="1"> <method name="__construct" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines> <lines>
@ -7923,109 +7923,115 @@
</method> </method>
<method name="processValue" signature="" line-rate="1" branch-rate="0" complexity="2"> <method name="processValue" signature="" line-rate="1" branch-rate="0" complexity="2">
<lines> <lines>
<line number="52" hits="118"/>
<line number="53" hits="118"/> <line number="53" hits="118"/>
<line number="54" hits="118"/> <line number="54" hits="113"/>
<line number="55" hits="113"/> <line number="55" hits="113"/>
<line number="56" hits="113"/>
</lines> </lines>
</method> </method>
<method name="getValue" signature="" line-rate="1" branch-rate="0" complexity="1"> <method name="getValue" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines> <lines>
<line number="61" hits="7"/>
<line number="62" hits="7"/> <line number="62" hits="7"/>
<line number="63" hits="7"/>
</lines> </lines>
</method> </method>
<method name="getMode" signature="" line-rate="0" branch-rate="0" complexity="1"> <method name="getMode" signature="" line-rate="0" branch-rate="0" complexity="1">
<lines> <lines>
<line number="68" hits="0"/> <line number="67" hits="0"/>
</lines> </lines>
</method> </method>
<method name="setMode" signature="$mode" line-rate="0" branch-rate="0" complexity="1"> <method name="setMode" signature="$mode" line-rate="0" branch-rate="0" complexity="1">
<lines> <lines>
<line number="73" hits="0"/> <line number="72" hits="0"/>
</lines> </lines>
</method> </method>
<method name="getContainer" signature="" line-rate="0" branch-rate="0" complexity="1"> <method name="getContainer" signature="" line-rate="0" branch-rate="0" complexity="1">
<lines> <lines>
<line number="81" hits="0"/> <line number="80" hits="0"/>
</lines> </lines>
</method> </method>
<method name="setContainer" signature="$container" line-rate="1" branch-rate="0" complexity="1"> <method name="setContainer" signature="$container" line-rate="1" branch-rate="0" complexity="1">
<lines> <lines>
<line number="89" hits="70"/> <line number="88" hits="70"/>
</lines> </lines>
</method> </method>
<method name="getOptions" signature="" line-rate="1" branch-rate="0" complexity="1"> <method name="getOptions" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines> <lines>
<line number="97" hits="121"/> <line number="96" hits="121"/>
</lines> </lines>
</method> </method>
<method name="clearSelected" signature="" line-rate="1" branch-rate="0" complexity="1"> <method name="clearSelected" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines> <lines>
<line number="102" hits="117"/> <line number="101" hits="117"/>
</lines> </lines>
</method> </method>
<method name="getSelectedOptions" signature="" line-rate="1" branch-rate="0" complexity="1"> <method name="getSelectedOptions" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines> <lines>
<line number="107" hits="118"/> <line number="106" hits="118"/>
</lines> </lines>
</method> </method>
<method name="getSelectedOption" signature="" line-rate="1" branch-rate="0" complexity="1"> <method name="getSelectedOption" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines> <lines>
<line number="112" hits="3"/> <line number="111" hits="3"/>
</lines> </lines>
</method> </method>
<method name="addSelectedOption" signature="?Opt $opt" line-rate="0.42857142857143" branch-rate="0" complexity="4"> <method name="addSelectedOption" signature="null|Opt $opt" line-rate="0.42857142857143" branch-rate="0" complexity="4">
<lines> <lines>
<line number="116" hits="114"/>
<line number="117" hits="114"/> <line number="117" hits="114"/>
<line number="118" hits="114"/> <line number="118" hits="114"/>
<line number="119" hits="114"/> <line number="120" hits="0"/>
<line number="121" hits="0"/> <line number="121" hits="0"/>
<line number="122" hits="0"/> <line number="122" hits="0"/>
<line number="123" hits="0"/> <line number="125" hits="0"/>
<line number="126" hits="0"/>
</lines> </lines>
</method> </method>
<method name="getValidOptions" signature="" line-rate="1" branch-rate="0" complexity="3"> <method name="getValidOptions" signature="" line-rate="1" branch-rate="0" complexity="3">
<lines> <lines>
<line number="131" hits="8"/> <line number="130" hits="8"/>
<line number="132" hits="8"/>
<line number="133" hits="8"/> <line number="133" hits="8"/>
<line number="134" hits="8"/> <line number="134" hits="8"/>
<line number="137" hits="8"/> <line number="137" hits="8"/>
</lines> </lines>
</method> </method>
<method name="generateXML" signature="" line-rate="0.82352941176471" branch-rate="0" complexity="4"> <method name="generateXML" signature="" line-rate="0.81818181818182" branch-rate="0" complexity="5">
<lines> <lines>
<line number="142" hits="1"/> <line number="142" hits="1"/>
<line number="143" hits="1"/> <line number="143" hits="1"/>
<line number="144" hits="1"/> <line number="144" hits="1"/>
<line number="145" hits="1"/> <line number="145" hits="1"/>
<line number="146" hits="1"/> <line number="146" hits="1"/>
<line number="149" hits="1"/> <line number="147" hits="1"/>
<line number="150" hits="1"/> <line number="150" hits="1"/>
<line number="152" hits="1"/> <line number="151" hits="1"/>
<line number="153" hits="0"/> <line number="153" hits="0"/>
<line number="154" hits="0"/> <line number="156" hits="1"/>
<line number="155" hits="0"/> <line number="157" hits="0"/>
<line number="158" hits="1"/> <line number="158" hits="0"/>
<line number="159" hits="1"/> <line number="159" hits="0"/>
<line number="160" hits="1"/>
<line number="161" hits="1"/>
<line number="162" hits="1"/> <line number="162" hits="1"/>
<line number="163" hits="1"/> <line number="163" hits="1"/>
<line number="164" hits="1"/>
<line number="165" hits="1"/>
<line number="166" hits="1"/>
<line number="167" hits="1"/>
<line number="168" hits="1"/>
<line number="169" hits="1"/>
<line number="170" hits="1"/>
</lines> </lines>
</method> </method>
<method name="generateJson" signature="" line-rate="0.88888888888889" branch-rate="0" complexity="3"> <method name="generateJson" signature="" line-rate="0.88888888888889" branch-rate="0" complexity="3">
<lines> <lines>
<line number="168" hits="1"/> <line number="175" hits="1"/>
<line number="169" hits="1"/>
<line number="170" hits="0"/>
<line number="172" hits="1"/>
<line number="173" hits="1"/>
<line number="174" hits="1"/>
<line number="176" hits="1"/> <line number="176" hits="1"/>
<line number="177" hits="1"/> <line number="177" hits="0"/>
<line number="179" hits="1"/>
<line number="180" hits="1"/> <line number="180" hits="1"/>
<line number="181" hits="1"/>
<line number="183" hits="1"/>
<line number="184" hits="1"/>
<line number="187" hits="1"/>
</lines> </lines>
</method> </method>
</methods> </methods>
@ -8035,28 +8041,29 @@
<line number="34" hits="134"/> <line number="34" hits="134"/>
<line number="39" hits="127"/> <line number="39" hits="127"/>
<line number="44" hits="8"/> <line number="44" hits="8"/>
<line number="52" hits="118"/>
<line number="53" hits="118"/> <line number="53" hits="118"/>
<line number="54" hits="118"/> <line number="54" hits="113"/>
<line number="55" hits="113"/> <line number="55" hits="113"/>
<line number="56" hits="113"/> <line number="61" hits="7"/>
<line number="62" hits="7"/> <line number="62" hits="7"/>
<line number="63" hits="7"/> <line number="67" hits="0"/>
<line number="68" hits="0"/> <line number="72" hits="0"/>
<line number="73" hits="0"/> <line number="80" hits="0"/>
<line number="81" hits="0"/> <line number="88" hits="70"/>
<line number="89" hits="70"/> <line number="96" hits="121"/>
<line number="97" hits="121"/> <line number="101" hits="117"/>
<line number="102" hits="117"/> <line number="106" hits="118"/>
<line number="107" hits="118"/> <line number="111" hits="3"/>
<line number="112" hits="3"/> <line number="116" hits="114"/>
<line number="117" hits="114"/> <line number="117" hits="114"/>
<line number="118" hits="114"/> <line number="118" hits="114"/>
<line number="119" hits="114"/> <line number="120" hits="0"/>
<line number="121" hits="0"/> <line number="121" hits="0"/>
<line number="122" hits="0"/> <line number="122" hits="0"/>
<line number="123" hits="0"/> <line number="125" hits="0"/>
<line number="126" hits="0"/> <line number="130" hits="8"/>
<line number="131" hits="8"/> <line number="132" hits="8"/>
<line number="133" hits="8"/> <line number="133" hits="8"/>
<line number="134" hits="8"/> <line number="134" hits="8"/>
<line number="137" hits="8"/> <line number="137" hits="8"/>
@ -8065,27 +8072,32 @@
<line number="144" hits="1"/> <line number="144" hits="1"/>
<line number="145" hits="1"/> <line number="145" hits="1"/>
<line number="146" hits="1"/> <line number="146" hits="1"/>
<line number="149" hits="1"/> <line number="147" hits="1"/>
<line number="150" hits="1"/> <line number="150" hits="1"/>
<line number="152" hits="1"/> <line number="151" hits="1"/>
<line number="153" hits="0"/> <line number="153" hits="0"/>
<line number="154" hits="0"/> <line number="156" hits="1"/>
<line number="155" hits="0"/> <line number="157" hits="0"/>
<line number="158" hits="1"/> <line number="158" hits="0"/>
<line number="159" hits="1"/> <line number="159" hits="0"/>
<line number="160" hits="1"/>
<line number="161" hits="1"/>
<line number="162" hits="1"/> <line number="162" hits="1"/>
<line number="163" hits="1"/> <line number="163" hits="1"/>
<line number="164" hits="1"/>
<line number="165" hits="1"/>
<line number="166" hits="1"/>
<line number="167" hits="1"/>
<line number="168" hits="1"/> <line number="168" hits="1"/>
<line number="169" hits="1"/> <line number="169" hits="1"/>
<line number="170" hits="0"/> <line number="170" hits="1"/>
<line number="172" hits="1"/> <line number="175" hits="1"/>
<line number="173" hits="1"/>
<line number="174" hits="1"/>
<line number="176" hits="1"/> <line number="176" hits="1"/>
<line number="177" hits="1"/> <line number="177" hits="0"/>
<line number="179" hits="1"/>
<line number="180" hits="1"/> <line number="180" hits="1"/>
<line number="181" hits="1"/>
<line number="183" hits="1"/>
<line number="184" hits="1"/>
<line number="187" hits="1"/>
</lines> </lines>
</class> </class>
</classes> </classes>

View File

@ -1,18 +1,18 @@
<?php <?php
namespace PSC\Library\Calc\Option\Type; namespace PSC\Library\Calc\Option\Type;
use PSC\Library\Calc\Option\Type\Select\Opt; use PSC\Library\Calc\Option\Type\Select\Opt;
class Select extends Base class Select extends Base
{ {
public static $modePaperDb = 'papierdb';
static public $modePaperDb = 'papierdb'; public static $modeColorDb = 'colordb';
static public $modeColorDb = 'colordb'; public static $modeDelivery = 'delivery';
static public $modeDelivery = 'delivery';
protected $multiSelect = false; protected $multiSelect = false;
static public $modeNone = ''; public static $modeNone = '';
public $type = 'select'; public $type = 'select';
@ -44,14 +44,13 @@ class Select extends Base
$this->options = new \ArrayIterator($options); $this->options = new \ArrayIterator($options);
} }
/** /**
* Verarbeitet das Value * Verarbeitet das Value
*/ */
public function processValue() public function processValue()
{ {
$option = $this->getSelectedOptions()[0]??null; $option = $this->getSelectedOptions()[0] ?? null;
if($option) { if ($option) {
$this->setValue($option->getLabel()); $this->setValue($option->getLabel());
$this->setRawValue($option->getId()); $this->setRawValue($option->getId());
} }
@ -107,19 +106,19 @@ class Select extends Base
return $this->selectedOptions; return $this->selectedOptions;
} }
public function getSelectedOption(): ?Opt public function getSelectedOption(): null|Opt
{ {
return $this->selectedOptions[0]?? null; return $this->selectedOptions[0] ?? null;
} }
public function addSelectedOption(?Opt $opt): void public function addSelectedOption(null|Opt $opt): void
{ {
if(!$this->multiSelect) { if (!$this->multiSelect) {
$this->selectedOptions = new \ArrayIterator([$opt]); $this->selectedOptions = new \ArrayIterator([$opt]);
return; return;
} }
foreach($this->selectedOptions as $sel) { foreach ($this->selectedOptions as $sel) {
if($sel->getId() === $opt->getId()) { if ($sel->getId() === $opt->getId()) {
return; return;
} }
} }
@ -130,8 +129,9 @@ class Select extends Base
{ {
$tmp = []; $tmp = [];
/** @var Opt $opt */ /** @var Opt $opt */
foreach($this->getOptions() as $opt) { foreach ($this->getOptions() as $opt) {
if($opt->isValid()) $tmp[] = $opt; if ($opt->isValid())
$tmp[] = $opt;
} }
return $tmp; return $tmp;
@ -139,6 +139,7 @@ class Select extends Base
public function generateXML(): array public function generateXML(): array
{ {
if ($this->container == '') {
$options = $this->options; $options = $this->options;
$tmp = ['opt' => function () use ($options) { $tmp = ['opt' => function () use ($options) {
$xml_options = []; $xml_options = [];
@ -148,32 +149,38 @@ class Select extends Base
return $xml_options; return $xml_options;
}]; }];
} else {
$tmp = [];
}
if($this->isRequire()) { if ($this->isRequire()) {
$tmp['_attributes'] = [ $tmp['_attributes'] = [
'require' => $this->isRequire()?'true':'false' 'require' => $this->isRequire() ? 'true' : 'false',
]; ];
} }
return array_merge_recursive([ return array_merge_recursive(
[
'_attributes' => [ '_attributes' => [
'default' => $this->getDefault(), 'default' => $this->getDefault(),
] ],
] ],
, parent::generateXML(), $tmp); parent::generateXML(),
$tmp,
);
} }
public function generateJson(): \stdClass public function generateJson(): \stdClass
{ {
$obj = parent::generateJson(); $obj = parent::generateJson();
if($this->isRequire()) { if ($this->isRequire()) {
$obj->required = $this->isRequire(); $obj->required = $this->isRequire();
} }
$obj->type = 3; $obj->type = 3;
$obj->options = []; $obj->options = [];
$obj->mode = 'normal'; $obj->mode = 'normal';
foreach($this->options as $opt) { foreach ($this->options as $opt) {
$obj->options[] = $opt->generateJson(); $obj->options[] = $opt->generateJson();
} }