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"?>
<!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>
<source>/home/thomas/projekte/calc/src</source>
</sources>
@ -7900,9 +7900,9 @@
</class>
</classes>
</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>
<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>
<method name="__construct" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines>
@ -7923,109 +7923,115 @@
</method>
<method name="processValue" signature="" line-rate="1" branch-rate="0" complexity="2">
<lines>
<line number="52" hits="118"/>
<line number="53" hits="118"/>
<line number="54" hits="118"/>
<line number="54" hits="113"/>
<line number="55" hits="113"/>
<line number="56" hits="113"/>
</lines>
</method>
<method name="getValue" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines>
<line number="61" hits="7"/>
<line number="62" hits="7"/>
<line number="63" hits="7"/>
</lines>
</method>
<method name="getMode" signature="" line-rate="0" branch-rate="0" complexity="1">
<lines>
<line number="68" hits="0"/>
<line number="67" hits="0"/>
</lines>
</method>
<method name="setMode" signature="$mode" line-rate="0" branch-rate="0" complexity="1">
<lines>
<line number="73" hits="0"/>
<line number="72" hits="0"/>
</lines>
</method>
<method name="getContainer" signature="" line-rate="0" branch-rate="0" complexity="1">
<lines>
<line number="81" hits="0"/>
<line number="80" hits="0"/>
</lines>
</method>
<method name="setContainer" signature="$container" line-rate="1" branch-rate="0" complexity="1">
<lines>
<line number="89" hits="70"/>
<line number="88" hits="70"/>
</lines>
</method>
<method name="getOptions" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines>
<line number="97" hits="121"/>
<line number="96" hits="121"/>
</lines>
</method>
<method name="clearSelected" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines>
<line number="102" hits="117"/>
<line number="101" hits="117"/>
</lines>
</method>
<method name="getSelectedOptions" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines>
<line number="107" hits="118"/>
<line number="106" hits="118"/>
</lines>
</method>
<method name="getSelectedOption" signature="" line-rate="1" branch-rate="0" complexity="1">
<lines>
<line number="112" hits="3"/>
<line number="111" hits="3"/>
</lines>
</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>
<line number="116" hits="114"/>
<line number="117" hits="114"/>
<line number="118" hits="114"/>
<line number="119" hits="114"/>
<line number="120" hits="0"/>
<line number="121" hits="0"/>
<line number="122" hits="0"/>
<line number="123" hits="0"/>
<line number="126" hits="0"/>
<line number="125" hits="0"/>
</lines>
</method>
<method name="getValidOptions" signature="" line-rate="1" branch-rate="0" complexity="3">
<lines>
<line number="131" hits="8"/>
<line number="130" hits="8"/>
<line number="132" hits="8"/>
<line number="133" hits="8"/>
<line number="134" hits="8"/>
<line number="137" hits="8"/>
</lines>
</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>
<line number="142" hits="1"/>
<line number="143" hits="1"/>
<line number="144" hits="1"/>
<line number="145" hits="1"/>
<line number="146" hits="1"/>
<line number="149" hits="1"/>
<line number="147" hits="1"/>
<line number="150" hits="1"/>
<line number="152" hits="1"/>
<line number="151" hits="1"/>
<line number="153" hits="0"/>
<line number="154" hits="0"/>
<line number="155" hits="0"/>
<line number="158" hits="1"/>
<line number="159" hits="1"/>
<line number="160" hits="1"/>
<line number="161" hits="1"/>
<line number="156" hits="1"/>
<line number="157" hits="0"/>
<line number="158" hits="0"/>
<line number="159" hits="0"/>
<line number="162" 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>
</method>
<method name="generateJson" signature="" line-rate="0.88888888888889" branch-rate="0" complexity="3">
<lines>
<line number="168" 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="175" 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="181" hits="1"/>
<line number="183" hits="1"/>
<line number="184" hits="1"/>
<line number="187" hits="1"/>
</lines>
</method>
</methods>
@ -8035,28 +8041,29 @@
<line number="34" hits="134"/>
<line number="39" hits="127"/>
<line number="44" hits="8"/>
<line number="52" hits="118"/>
<line number="53" hits="118"/>
<line number="54" hits="118"/>
<line number="54" hits="113"/>
<line number="55" hits="113"/>
<line number="56" hits="113"/>
<line number="61" hits="7"/>
<line number="62" hits="7"/>
<line number="63" hits="7"/>
<line number="68" hits="0"/>
<line number="73" hits="0"/>
<line number="81" hits="0"/>
<line number="89" hits="70"/>
<line number="97" hits="121"/>
<line number="102" hits="117"/>
<line number="107" hits="118"/>
<line number="112" hits="3"/>
<line number="67" hits="0"/>
<line number="72" hits="0"/>
<line number="80" hits="0"/>
<line number="88" hits="70"/>
<line number="96" hits="121"/>
<line number="101" hits="117"/>
<line number="106" hits="118"/>
<line number="111" hits="3"/>
<line number="116" hits="114"/>
<line number="117" hits="114"/>
<line number="118" hits="114"/>
<line number="119" hits="114"/>
<line number="120" hits="0"/>
<line number="121" hits="0"/>
<line number="122" hits="0"/>
<line number="123" hits="0"/>
<line number="126" hits="0"/>
<line number="131" hits="8"/>
<line number="125" hits="0"/>
<line number="130" hits="8"/>
<line number="132" hits="8"/>
<line number="133" hits="8"/>
<line number="134" hits="8"/>
<line number="137" hits="8"/>
@ -8065,27 +8072,32 @@
<line number="144" hits="1"/>
<line number="145" hits="1"/>
<line number="146" hits="1"/>
<line number="149" hits="1"/>
<line number="147" hits="1"/>
<line number="150" hits="1"/>
<line number="152" hits="1"/>
<line number="151" hits="1"/>
<line number="153" hits="0"/>
<line number="154" hits="0"/>
<line number="155" hits="0"/>
<line number="158" hits="1"/>
<line number="159" hits="1"/>
<line number="160" hits="1"/>
<line number="161" hits="1"/>
<line number="156" hits="1"/>
<line number="157" hits="0"/>
<line number="158" hits="0"/>
<line number="159" hits="0"/>
<line number="162" 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="0"/>
<line number="172" hits="1"/>
<line number="173" hits="1"/>
<line number="174" hits="1"/>
<line number="170" hits="1"/>
<line number="175" 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="181" hits="1"/>
<line number="183" hits="1"/>
<line number="184" hits="1"/>
<line number="187" hits="1"/>
</lines>
</class>
</classes>

View File

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