commit 013ade7226816a1a5198502732c3e2cea8fb77f1
parent 768595a24a253b214394a3376e82862a20b1b225
Author: Felicitus <felicitus@felicitus.org>
Date: Tue, 21 Jun 2011 14:50:47 +0200
Reworked units to match the new deserialize model
Diffstat:
3 files changed, 35 insertions(+), 33 deletions(-)
diff --git a/frontend/js/Components/Unit/UnitEditor.js b/frontend/js/Components/Unit/UnitEditor.js
@@ -54,18 +54,14 @@ Ext.define('PartKeepr.UnitEditor', {
Ext.defer(function () { this.gridPanel.getSelectionModel().select(toSelect); }, 100, this);
},
onItemSave: function () {
-
var selection = this.gridPanel.getSelectionModel().getSelection();
- var records = [];
+
+ this.record.prefixes().removeAll(true);
+
for (var i=0;i<selection.length;i++) {
- records.push(selection[i].get("id"));
+ this.record.prefixes().add({id: selection[i].get("id") });
}
- var call = new PartKeepr.ServiceCall("Unit", "setUnitPrefixes");
- call.setParameter("prefixes", records);
- call.setParameter("id", this.record.get("id"));
- call.doCall();
-
this.callParent();
}
});
diff --git a/src/de/RaumZeitLabor/PartKeepr/Unit/Unit.php b/src/de/RaumZeitLabor/PartKeepr/Unit/Unit.php
@@ -1,5 +1,7 @@
<?php
namespace de\RaumZeitLabor\PartKeepr\Unit;
+use de\RaumZeitLabor\PartKeepr\Util\Deserializable;
+
use de\RaumZeitLabor\PartKeepr\Util\Serializable;
use de\RaumZeitLabor\PartKeepr\Util\BaseEntity;
@@ -16,7 +18,7 @@ use de\RaumZeitLabor\PartKeepr\PartKeepr,
*
* @Entity
**/
-class Unit extends BaseEntity implements Serializable {
+class Unit extends BaseEntity implements Serializable, Deserializable {
/**
* The name of the unit (e.g. Volts, Ampere, Farad, Metres)
* @Column(type="string")
@@ -103,4 +105,30 @@ class Unit extends BaseEntity implements Serializable {
"prefixes" => $this->serializeChildren($this->getPrefixes())
);
}
+
+ /**
+ * Deserializes the unit
+ * @param array $parameters The array with the parameters to set
+ */
+ public function deserialize (array $parameters) {
+ foreach ($parameters as $key => $value) {
+ switch ($key) {
+ case "name":
+ $this->setName($value);
+ break;
+ case "symbol":
+ $this->setSymbol($value);
+ break;
+ case "prefixes":
+ $prefixes = $this->getPrefixes();
+ $prefixes->clear();
+
+ foreach ($value as $prefix) {
+ $prefix = SiPrefix::loadById($prefix["id"]);
+ $prefixes->add($prefix);
+ }
+ break;
+ }
+ }
+ }
}
\ No newline at end of file
diff --git a/src/de/RaumZeitLabor/PartKeepr/Unit/UnitService.php b/src/de/RaumZeitLabor/PartKeepr/Unit/UnitService.php
@@ -33,28 +33,11 @@ class UnitService extends Service implements RestfulService {
}
}
- public function setUnitPrefixes () {
- $this->requireParameter("id");
-
- $unit = UnitManager::getInstance()->getUnit($this->getParameter("id"));
-
- $prefixes = $unit->getPrefixes();
-
- $prefixes->clear();
-
- foreach ($this->getParameter("prefixes") as $prefix) {
- $prefix = SiPrefix::loadById($prefix);
- $prefixes->add($prefix);
- }
-
- }
-
public function create () {
$this->requireParameter("name");
$unit = new Unit;
-
- $this->setUnitData($unit);
+ $unit->deserialize($this->getParameters());
PartKeepr::getEM()->persist($unit);
PartKeepr::getEM()->flush();
@@ -62,18 +45,13 @@ class UnitService extends Service implements RestfulService {
return array("data" => $unit->serialize());
}
- private function setUnitData (Unit $unit) {
- $unit->setName($this->getParameter("name"));
- $unit->setSymbol($this->getParameter("symbol"));
- }
-
public function update () {
$this->requireParameter("id");
$this->requireParameter("name");
$unit = UnitManager::getInstance()->getUnit($this->getParameter("id"));
+ $unit->deserialize($this->getParameters());
- $this->setUnitData($unit);
PartKeepr::getEM()->flush();
return array("data" => $unit->serialize());