Add Color DB
This commit is contained in:
parent
8f8379f522
commit
37290c2ced
File diff suppressed because one or more lines are too long
@ -15,7 +15,8 @@
|
||||
"require": {
|
||||
"php": ">=8.1",
|
||||
"doctrine/orm": "^2.5",
|
||||
"azuyalabs/yasumi": "^2.5"
|
||||
"azuyalabs/yasumi": "^2.5",
|
||||
"bitandblack/colors": "2.13.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^9",
|
||||
|
||||
1131
composer.lock
generated
1131
composer.lock
generated
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,8 @@
|
||||
<?php
|
||||
namespace PSC\Library\Calc\Option\Parser;
|
||||
|
||||
use Color\System\HKS;
|
||||
use Color\System\PANTONE;
|
||||
use Doctrine\Persistence\ObjectRepository;
|
||||
use PSC\Library\Calc\General\Parser\EdgeCollectionContainer;
|
||||
use PSC\Library\Calc\Option\Parser\Select\Opt;
|
||||
@ -28,6 +30,8 @@ class Select extends Base
|
||||
$this->element = new \PSC\Library\Calc\Option\Type\PaperDbSelect();
|
||||
}elseif(isset($node['mode']) && (string)$node['mode'] == \PSC\Library\Calc\Option\Type\Select::$modeDelivery) {
|
||||
$this->element = new \PSC\Library\Calc\Option\Type\DeliverySelect();
|
||||
}elseif(isset($node['mode']) && (string)$node['mode'] == \PSC\Library\Calc\Option\Type\Select::$modeColorDb) {
|
||||
$this->element = new \PSC\Library\Calc\Option\Type\ColorDBSelect();
|
||||
}else{
|
||||
$this->element = new \PSC\Library\Calc\Option\Type\Select();
|
||||
}
|
||||
@ -48,6 +52,8 @@ class Select extends Base
|
||||
$this->parseModePapierDb();
|
||||
}elseif(isset($this->node['mode']) && (string)$this->node['mode'] == \PSC\Library\Calc\Option\Type\Select::$modeDelivery) {
|
||||
$this->parseModeDelivery();
|
||||
}elseif(isset($this->node['mode']) && (string)$this->node['mode'] == \PSC\Library\Calc\Option\Type\Select::$modeColorDb) {
|
||||
$this->parseModeColorDb();
|
||||
}else{
|
||||
$this->parseModeNormal();
|
||||
}
|
||||
@ -90,6 +96,28 @@ class Select extends Base
|
||||
}
|
||||
}
|
||||
|
||||
private function parseModeColorDb(): void
|
||||
{
|
||||
$colorSystem = (string)$this->node['container'];
|
||||
if(str_contains($colorSystem, "panton")) {
|
||||
$system = new PANTONE(\Color\System\Enum\PANTONE::from($colorSystem));
|
||||
}
|
||||
if(str_contains($colorSystem, "hks")) {
|
||||
$system = new HKS(\Color\System\Enum\HKS::from($colorSystem));
|
||||
}
|
||||
|
||||
if($system) {
|
||||
foreach ($system->getAllColors() as $color) {
|
||||
$optColor = new \PSC\Library\Calc\Option\Type\Select\ColorOpt();
|
||||
$optColor->setId($color->getName());
|
||||
$optColor->setLabel($color->getName());
|
||||
$optColor->setColor($color);
|
||||
$optColor->setValue((string)$color->getHEX());
|
||||
$this->element->addOption($optColor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private function parseModeNormal()
|
||||
{
|
||||
foreach ($this->node->opt as $opt) {
|
||||
|
||||
18
src/Option/Type/ColorDBSelect.php
Normal file
18
src/Option/Type/ColorDBSelect.php
Normal file
@ -0,0 +1,18 @@
|
||||
<?php
|
||||
namespace PSC\Library\Calc\Option\Type;
|
||||
|
||||
use PSC\Library\Calc\Option\Type\Select\Opt;
|
||||
use PSC\Library\Calc\Option\Type\Select\PaperOpt;
|
||||
use PSC\Library\Calc\Tests\Mock\Paper;
|
||||
|
||||
class ColorDBSelect extends Select
|
||||
{
|
||||
public function getSelectedOption()
|
||||
{
|
||||
/** @var Opt $opt */
|
||||
foreach($this->getOptions() as $opt) {
|
||||
if($opt->isSelected()) return $opt;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@ -7,6 +7,7 @@ class Select extends Base
|
||||
{
|
||||
|
||||
static public $modePaperDb = 'papierdb';
|
||||
static public $modeColorDb = 'colordb';
|
||||
static public $modeDelivery = 'delivery';
|
||||
|
||||
static public $modeNone = '';
|
||||
|
||||
32
src/Option/Type/Select/ColorOpt.php
Normal file
32
src/Option/Type/Select/ColorOpt.php
Normal file
@ -0,0 +1,32 @@
|
||||
<?php
|
||||
namespace PSC\Library\Calc\Option\Type\Select;
|
||||
|
||||
use Color\Value\ValueInterface;
|
||||
use PSC\Library\Calc\General\Type\EdgeCollectionContainer;
|
||||
use PSC\Library\Calc\Option\Type\Base;
|
||||
|
||||
class ColorOpt extends Opt
|
||||
{
|
||||
protected $color = null;
|
||||
private string $value = "";
|
||||
|
||||
public function setValue(string $value)
|
||||
{
|
||||
$this->value = $value;
|
||||
}
|
||||
|
||||
public function getValue(): string
|
||||
{
|
||||
return $this->value;
|
||||
}
|
||||
|
||||
public function getColor(): ValueInterface|null
|
||||
{
|
||||
return $this->color;
|
||||
}
|
||||
|
||||
public function setColor(ValueInterface $color): void
|
||||
{
|
||||
$this->color = $color;
|
||||
}
|
||||
}
|
||||
45
tests/Calc/ColorDBTest.php
Normal file
45
tests/Calc/ColorDBTest.php
Normal file
@ -0,0 +1,45 @@
|
||||
<?php
|
||||
namespace PSC\Library\Calc\Tests\Calc;
|
||||
|
||||
use PHPUnit\Framework\TestCase;
|
||||
use PSC\Library\Calc\Article;
|
||||
use PSC\Library\Calc\Engine;
|
||||
use PSC\Library\Calc\Option\Type\Base;
|
||||
use PSC\Library\Calc\PaperContainer\Container;
|
||||
|
||||
class ColorDBTest extends TestCase
|
||||
{
|
||||
/** @var Engine */
|
||||
protected $engine = null;
|
||||
|
||||
public function setUp(): void
|
||||
{
|
||||
$this->engine = new Engine(new Container());
|
||||
$this->engine->loadString(file_get_contents(__DIR__ . '/../TestFiles/Calc/colors.xml'));
|
||||
}
|
||||
|
||||
public function tearDown(): void
|
||||
{
|
||||
$this->engine = null;
|
||||
}
|
||||
|
||||
public function testIfOptionsNotValid()
|
||||
{
|
||||
$this->engine->calc();
|
||||
|
||||
/** @var Article $article */
|
||||
$article = $this->engine->getArticle();
|
||||
|
||||
/** @var Base $option */
|
||||
$option = $article->getOptionById('colorpantone');
|
||||
|
||||
$this->assertTrue($option->isValid());
|
||||
$this->assertSame('142', $option->getSelectedOption()->getId());
|
||||
|
||||
$option = $article->getOptionById('colorhks');
|
||||
|
||||
$this->assertTrue($option->isValid());
|
||||
$this->assertSame('78', $option->getSelectedOption()->getId());
|
||||
}
|
||||
|
||||
}
|
||||
@ -83,4 +83,30 @@ class SelectTest extends TestCase
|
||||
$this->assertEquals(5, $element->getOptions()->count());
|
||||
}
|
||||
|
||||
public function testIfSelectWithColorModePantoneReturnsCorrectOpt()
|
||||
{
|
||||
$parser = new Parser();
|
||||
/** @var Parser\Select $obj */
|
||||
$obj = $parser->getOptByType(simplexml_load_string(file_get_contents(__DIR__ . '/../../TestFiles/Option/Select/selectColorDBPantone.xml')));
|
||||
|
||||
/** @var Select $element */
|
||||
$element = $obj->parse();
|
||||
|
||||
$this->assertInstanceOf('PSC\Library\Calc\Option\Type\Select', $element);
|
||||
$this->assertEquals(1354, $element->getOptions()->count());
|
||||
}
|
||||
|
||||
public function testIfSelectWithColorModeReturnsCorrectOpt()
|
||||
{
|
||||
$parser = new Parser();
|
||||
/** @var Parser\Select $obj */
|
||||
$obj = $parser->getOptByType(simplexml_load_string(file_get_contents(__DIR__ . '/../../TestFiles/Option/Select/selectColorDBHKS.xml')));
|
||||
|
||||
/** @var Select $element */
|
||||
$element = $obj->parse();
|
||||
|
||||
$this->assertInstanceOf('PSC\Library\Calc\Option\Type\Select', $element);
|
||||
$this->assertEquals(86, $element->getOptions()->count());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
16
tests/TestFiles/Calc/colors.xml
Normal file
16
tests/TestFiles/Calc/colors.xml
Normal file
@ -0,0 +1,16 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<kalkulation>
|
||||
|
||||
<artikel>
|
||||
<name>color</name>
|
||||
<kommentar>color</kommentar>
|
||||
|
||||
<option id="colorhks" name="colorhks" type="Select" mode="colordb" container="hks-n" default="78">
|
||||
</option>
|
||||
|
||||
<option id="colorpantone" name="colorpantone" type="Select" mode="colordb" container="pantone+-solid-uncoated" default="142">
|
||||
</option>
|
||||
|
||||
|
||||
</artikel>
|
||||
</kalkulation>
|
||||
6
tests/TestFiles/Option/Select/selectColorDBHKS.xml
Normal file
6
tests/TestFiles/Option/Select/selectColorDBHKS.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<option id="color" name="Color" type="Select" mode="colordb" container="hks-n" default="90">
|
||||
<auflage>
|
||||
<grenze formel="(0)">1-</grenze>
|
||||
</auflage>
|
||||
</option>
|
||||
6
tests/TestFiles/Option/Select/selectColorDBPantone.xml
Normal file
6
tests/TestFiles/Option/Select/selectColorDBPantone.xml
Normal file
@ -0,0 +1,6 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<option id="papier" name="Material" type="Select" mode="colordb" container="pantone+-solid-uncoated" default="142">
|
||||
<auflage>
|
||||
<grenze formel="(0)">1-</grenze>
|
||||
</auflage>
|
||||
</option>
|
||||
Loading…
Reference in New Issue
Block a user