From 3c0bc5e772fd956b6cc5716ce2a4011e2e16f14c Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 14:08:49 +0100 Subject: [PATCH 01/15] added submodule to website repo --- .gitmodules | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitmodules b/.gitmodules index 9383a89..60d40bb 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,6 @@ [submodule "misc/controller/ethersex"] path = misc/controller/ethersex url = git://github.com/ethersex/ethersex.git +[submodule "misc/website"] + path = misc/website + url = git@github.com:volkszaehler/website.git From 1c82a17ef0610ac21a06e5483c6ee37101f6510f Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 14:12:31 +0100 Subject: [PATCH 02/15] added website link --- README | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README b/README index dbdf8d1..8422b06 100644 --- a/README +++ b/README @@ -18,7 +18,8 @@ volkszaehler.org/ | \_ demo/ Demo Daten zum Import in die Datenbank | |_ tools/ Verschiedene Scripts zum Importieren von Daten, Installation, Helper etc. - \_ tests/ Einfache Testcases für einige Klasses des Backends + |_ tests/ Einfache Testcases für einige Klasses des Backends + \_ website/ Die Website unter http://volkszaehler.org Wiki: http://wiki.volkszaehler.org Other: http://volkszaehler.org From cb63fea02fc8c594b435ac8e1a620347ab16888d Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 14:14:30 +0100 Subject: [PATCH 03/15] cloned website submodule --- misc/website | 1 + 1 file changed, 1 insertion(+) create mode 160000 misc/website diff --git a/misc/website b/misc/website new file mode 160000 index 0000000..759f453 --- /dev/null +++ b/misc/website @@ -0,0 +1 @@ +Subproject commit 759f453f0710ed81faf84b674b915fe6ccc0e025 From bea5f58f169eef83aee0823485b7b480f84a2c0a Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 14:50:53 +0100 Subject: [PATCH 04/15] added file and lineno to debug messages --- lib/Util/Debug.php | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/Util/Debug.php b/lib/Util/Debug.php index 81f2273..9a898b5 100644 --- a/lib/Util/Debug.php +++ b/lib/Util/Debug.php @@ -85,8 +85,8 @@ class Debug { self::$instance->messages[] = array( 'message' => $message, - //'file' => $info['file'], - //'line' => $info['line'], + 'file' => $info['file'], + 'line' => $info['line'], //'time' => date('r'), 'args' => array_slice($info['args'], 1), //'trace' => array_slice($trace, 1) From efddd60757a38b852ec91e9e96ae4ebff61eab8c Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 15:31:50 +0100 Subject: [PATCH 05/15] cosmetics --- lib/Model/Property.php | 6 +++--- lib/Router.php | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/lib/Model/Property.php b/lib/Model/Property.php index 9c0391b..24011ec 100644 --- a/lib/Model/Property.php +++ b/lib/Model/Property.php @@ -24,7 +24,6 @@ namespace Volkszaehler\Model; use Volkszaehler\Definition; - use Volkszaehler\Util; use Volkszaehler\Model; @@ -73,7 +72,6 @@ class Property { */ public function __construct(Model\Entity $entity, $key, $value) { $this->entity = $entity; - $this->key = $key; $this->value = $value; } @@ -118,6 +116,7 @@ class Property { /** * @PreRemove + * @todo blocks removal of entity */ public function checkRemove() { if (in_array($this->key, $this->entity->getDefinition()->getRequiredProperties())) { @@ -135,8 +134,9 @@ class Property { } /* - * Setter & Getter + * Setter & getter */ + public function getKey() { return $this->key; } public function getValue() { return $this->value; } public function getDefinition() { return Definition\PropertyDefinition::get($this->key); } diff --git a/lib/Router.php b/lib/Router.php index 520377d..1e14550 100644 --- a/lib/Router.php +++ b/lib/Router.php @@ -137,7 +137,7 @@ class Router { /** * Processes the request * - * Example: http://sub.domain.local/vz/backend/channel/550e8400-e29b-11d4-a716-446655440000/data.json?operation=edit&title=New Title + * Example: http://sub.domain.local/backend.php/channel/550e8400-e29b-11d4-a716-446655440000/data.json?operation=edit&title=New Title */ public function run() { $operation = self::getOperation($this->view->request); From c832e83ed4143aafaf7d85cc2ff95bd7f3b9529d Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 15:35:37 +0100 Subject: [PATCH 06/15] improved several controllers --- lib/Controller/AggregatorController.php | 2 +- lib/Controller/ChannelController.php | 2 +- lib/Controller/DataController.php | 13 +--- lib/Controller/EntityController.php | 88 +++++++++++++------------ 4 files changed, 51 insertions(+), 54 deletions(-) diff --git a/lib/Controller/AggregatorController.php b/lib/Controller/AggregatorController.php index 6aa543f..807f4b7 100644 --- a/lib/Controller/AggregatorController.php +++ b/lib/Controller/AggregatorController.php @@ -37,7 +37,7 @@ class AggregatorController extends EntityController { /** * Get aggregator */ - public function get($identifier) { + public function get($identifier = NULL) { $aggregator = parent::get($identifier); if ($aggregator instanceof Model\Aggregator) { diff --git a/lib/Controller/ChannelController.php b/lib/Controller/ChannelController.php index ade8a6c..6864cde 100644 --- a/lib/Controller/ChannelController.php +++ b/lib/Controller/ChannelController.php @@ -37,7 +37,7 @@ class ChannelController extends EntityController { /** * Get channel */ - public function get($identifier) { + public function get($identifier = NULL) { $channel = parent::get($identifier); if ($channel instanceof Model\Channel) { diff --git a/lib/Controller/DataController.php b/lib/Controller/DataController.php index 6c76d45..0dbd434 100644 --- a/lib/Controller/DataController.php +++ b/lib/Controller/DataController.php @@ -70,18 +70,9 @@ class DataController extends Controller { public function run($operation, array $identifiers = array()) { $ec = new EntityController($this->view, $this->em); + $entity = $ec->get($identifiers[0]); - if (count($identifiers) == 2) { // prototype: backend/data/uuid/port.json - $identifiers[0] = $ec->filter(array( - 'cuuid' => $identifiers[0], - 'port' => $identifiers[1] - )); - } - elseif (count($identifiers) == 1) { // assume UUID - $identifiers[0] = $ec->get($identifiers[0]); - } - - return parent::run($operation, $identifiers); + $this->{$operation}($entity); } } diff --git a/lib/Controller/EntityController.php b/lib/Controller/EntityController.php index e03fde4..ded0dec 100644 --- a/lib/Controller/EntityController.php +++ b/lib/Controller/EntityController.php @@ -34,28 +34,34 @@ use Volkszaehler\Model; * @package default */ class EntityController extends Controller { + /** * Get entity * * @param string $identifier */ - public function get($uuid) { - if (!Util\UUID::validate($uuid)) { - throw new \Exception('Invalid UUID: ' . $uuid); + public function get($uuid = NULL) { + if (isset($uuid)) { + if (!Util\UUID::validate($uuid)) { + throw new \Exception('Invalid UUID: ' . $uuid); + } + + $dql = 'SELECT a, p + FROM Volkszaehler\Model\Entity a + LEFT JOIN a.properties p + WHERE a.uuid = :uuid'; + + $q = $this->em->createQuery($dql); + $q->setParameter('uuid', $uuid); + + try { + return $q->getSingleResult(); + } catch (\Doctrine\ORM\NoResultException $e) { + throw new \Exception('No entity found with UUID: ' . $uuid, 404); + } } - - $dql = 'SELECT a, p - FROM Volkszaehler\Model\Entity a - LEFT JOIN a.properties p - WHERE a.uuid = ?1'; - - $q = $this->em->createQuery($dql); - $q->setParameter(1, $uuid); - - try { - return $q->getSingleResult(); - } catch (\Doctrine\ORM\NoResultException $e) { - throw new \Exception('No entity found with UUID: ' . $uuid, 404); + else { // get public entities + return $this->filter(array('public' => TRUE)); } } @@ -82,49 +88,40 @@ class EntityController extends Controller { /** * Adds an entity to the uuids cookie + * + * @todo add to Model\Entity? * @param Model\Entity $entity */ protected function setCookie(Model\Entity $entity) { - if ($uuids = $this->view->request->getParameter('uuids', 'cookies')) { - $uuids = Util\JSON::decode($uuids); - } - else { - $uuids = new Util\JSON(); - } + $uuids = ($uuids = $this->view->request->getParameter('vz_uuids', 'cookies')) ? explode(';', $uuids) : array(); // add new UUID - $uuids->append($entity->getUuid()); - - // remove duplicates - $uuids->exchangeArray(array_unique($uuids->getArrayCopy())); + $uuids[] = $entity->getUuid(); // send new cookie to browser - setcookie('uuids', $uuids->encode(), 0, '/'); // TODO correct path + setcookie('vz_uuids', implode(';', array_unique($uuids)), 0, '/'); // TODO correct path } /** * Removes an entity from the uuids cookie + * * @param Model\Entity $entity + * @todo add to Model\Entity? */ protected function unsetCookie(Model\Entity $entity) { - if ($uuids = $this->view->request->getParameter('uuids', 'cookies')) { - $uuids = Util\JSON::decode($uuids); - } - else { - $uuids = new Util\JSON(); - } + $uuids = ($uuids = $this->view->request->getParameter('vz_uuids', 'cookies')) ? explode(';', $uuids) : array(); // remove old UUID - $uuids->exchangeArray(array_filter($uuids->getArrayCopy, function($uuid) use ($entity) { + $uuids = array_filter($uuids, function($uuid) use ($entity) { return $uuid != $entity->getUuid(); - })); + }); // send new cookie to browser - setcookie('uuids', $uuids->encode(), 0, '/'); // TODO correct path + setcookie('vz_uuids', implode(';', array_unique($uuids)), 0, '/'); // TODO correct path } /** - * Update/set/delete properties of properties + * Update/set/delete properties of entities */ protected function setProperties(Model\Entity $entity, $parameters) { foreach ($parameters as $parameter => $value) { @@ -141,14 +138,19 @@ class EntityController extends Controller { /** * Filter entites by properties + * + * @todo improve performance + * @param array of property => value filters + * @return array of entities */ public function filter(array $properties) { $dql = 'SELECT a, p FROM Volkszaehler\Model\Entity a LEFT JOIN a.properties p'; - $sqlWhere = array(); $i = 0; + $sqlWhere = array(); + $sqlParams = array(); foreach ($properties as $property => $value) { switch (Definition\PropertyDefinition::get($property)->getType()) { case 'string': @@ -158,9 +160,13 @@ class EntityController extends Controller { break; case 'boolean': - $value = ($value) ? 1 : 0; + $value = (int) $value; } - $sqlWhere[] = 'EXISTS (SELECT p' . $i . ' FROM \Volkszaehler\Model\Property p' . $i . ' WHERE p' . $i . '.name = \'' . $property . '\' AND p' . $i . '.value = ' . $value . ' AND p' . $i . '.entity = a)'; + $sqlWhere[] = 'EXISTS (SELECT p' . $i . ' FROM \Volkszaehler\Model\Property p' . $i . ' WHERE p' . $i . '.key = :key' . $i . ' AND p' . $i . '.value = :value' . $i . ' AND p' . $i . '.entity = a)'; + $sqlParams += array( + 'key' . $i => $property, + 'value' . $i => $value + ); $i++; } @@ -169,7 +175,7 @@ class EntityController extends Controller { } $q = $this->em->createQuery($dql); - return $q->getSingleResult(); + return $q->execute($sqlParams); } } From c00037c5192be9d5975cdf009e54e498630135db Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 15:37:01 +0100 Subject: [PATCH 07/15] updated submodules --- misc/controller/ethersex | 2 +- misc/website | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/misc/controller/ethersex b/misc/controller/ethersex index 822c9dc..64a3546 160000 --- a/misc/controller/ethersex +++ b/misc/controller/ethersex @@ -1 +1 @@ -Subproject commit 822c9dce3a2c13de28af0080aa39e166831e19b1 +Subproject commit 64a3546f9ba8a0a4070f8b6ecc182643d5539699 diff --git a/misc/website b/misc/website index 759f453..d542e6a 160000 --- a/misc/website +++ b/misc/website @@ -1 +1 @@ -Subproject commit 759f453f0710ed81faf84b674b915fe6ccc0e025 +Subproject commit d542e6a6817f90f01bffb50f481c308d9d0753da From a780d9b95a9c6e6b0852a76569431ce0b9e21c9c Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 15:40:21 +0100 Subject: [PATCH 08/15] added alternative property filter method --- lib/Model/Entity.php | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/lib/Model/Entity.php b/lib/Model/Entity.php index e7c6a02..b6ac43b 100644 --- a/lib/Model/Entity.php +++ b/lib/Model/Entity.php @@ -23,12 +23,10 @@ namespace Volkszaehler\Model; -use Volkszaehler\Definition; - use Doctrine\ORM; - use Doctrine\Common\Collections; use Volkszaehler\Util; +use Volkszaehler\Definition; /** * Entity superclass for all objects referenced by a UUID @@ -124,12 +122,17 @@ abstract class Entity { * @return array */ public function getProperties($prefix = NULL) { + /*$this->properties->filter(function($property) { + return substr($property->getKey(), 0, strlen($prefix)) == $prefix; + })->toArray();*/ + $properties = array(); foreach ($this->properties as $property) { if (substr($property->getKey(), 0, strlen($prefix)) == $prefix) { $properties[$property->getKey()] = $property->getValue(); } } + return $properties; } @@ -175,8 +178,9 @@ abstract class Entity { } /* - * Setter & Getter + * Setter & getter */ + public function getId() { return $this->id; } // read only public function getUuid() { return $this->uuid; } // read only public function getType() { return $this->type; } // read only From a6daca00f6b61cfa2e5dafff92e01a8d5ae3730a Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 21:46:01 +0100 Subject: [PATCH 09/15] fixed bug on duplicate uuids via url parameter adding multiple uuids per url --- htdocs/frontend/javascripts/frontend.js | 18 ++++++++++------- htdocs/frontend/javascripts/init.js | 2 +- .../javascripts/jquery/jquery-extensions.js | 20 ++++++++++++++----- htdocs/frontend/javascripts/uuid.js | 5 ++--- 4 files changed, 29 insertions(+), 16 deletions(-) diff --git a/htdocs/frontend/javascripts/frontend.js b/htdocs/frontend/javascripts/frontend.js index 09bf440..e6ef001 100644 --- a/htdocs/frontend/javascripts/frontend.js +++ b/htdocs/frontend/javascripts/frontend.js @@ -50,6 +50,7 @@ vz.wui.init = function() { $('#entity-subscribe input[type=button]').click(function() { try { vz.uuids.add($('#entity-subscribe input[type=text]').val()); + vz.uuids.save(); $('#entity-subscribe input[type=text]').val(''); $('#entity-add').dialog('close'); vz.entities.loadDetails(); @@ -312,6 +313,7 @@ vz.entities.show = function() { .attr('alt', 'delete') .bind('click', entity, function(event) { vz.uuids.remove(event.data.uuid); + vz.uuids.save(); vz.entities.loadDetails(); }) ); @@ -435,24 +437,26 @@ vz.load = function(context, identifier, data, success) { /** * Parse URL GET parameters */ -vz.parseUrlVars = function() { - var vars = $.getUrlVars(); +vz.parseUrlParams = function() { + var vars = $.getUrlParams(); for (var key in vars) { if (vars.hasOwnProperty(key)) { switch (key) { case 'uuid': // add optional uuid from url - try { - vz.uuids.add(vars[key]); - } catch (exception) { - vz.wui.dialogs.exception(exception); - } + var uuids = (typeof vars[key] == 'string') ? [vars[key]] : vars[key]; // handle multiple uuids + uuids.each(function(index, uuid) { + try { vz.uuids.add(uuid); } catch (exception) { /* ignore exception */ } + }); break; + case 'from': vz.options.plot.xaxis.min = parseInt(vars[key]); break; + case 'to': vz.options.plot.xaxis.max = parseInt(vars[key]); break; + case 'debug': $.getScript('javascripts/firebug-lite.js'); break; diff --git a/htdocs/frontend/javascripts/init.js b/htdocs/frontend/javascripts/init.js index 26d3dbf..81e3ded 100644 --- a/htdocs/frontend/javascripts/init.js +++ b/htdocs/frontend/javascripts/init.js @@ -63,7 +63,7 @@ $(document).ready(function() { vz.definitions.load(); vz.uuids.load(); vz.options.load(); - vz.parseUrlVars(); + vz.parseUrlParams(); // initialize user interface vz.wui.init(); diff --git a/htdocs/frontend/javascripts/jquery/jquery-extensions.js b/htdocs/frontend/javascripts/jquery/jquery-extensions.js index e2978cc..c461e0c 100644 --- a/htdocs/frontend/javascripts/jquery/jquery-extensions.js +++ b/htdocs/frontend/javascripts/jquery/jquery-extensions.js @@ -29,18 +29,28 @@ * Get URL parameters */ $.extend( { - getUrlVars : function() { - var vars = [], hash; + getUrlParams : function() { + var vars = {}, hash; var hashes = window.location.href.slice( window.location.href.indexOf('?') + 1).split('&'); for (var i = 0; i < hashes.length; i++) { hash = hashes[i].split('='); - vars[hash[0]] = hash[1]; + switch (typeof vars[hash[0]]) { + case 'undefined': + vars[hash[0]] = hash[1]; + break; + + case 'string': + vars[hash[0]] = Array(vars[hash[0]]); + + case 'object': + vars[hash[0]].push(hash[1]); + } } return vars; }, - getUrlVar : function(name) { - return $.getUrlVars()[name]; + getUrlParam : function(name) { + return $.getUrlParams()[name]; } }); diff --git a/htdocs/frontend/javascripts/uuid.js b/htdocs/frontend/javascripts/uuid.js index b343b22..2e5cf99 100644 --- a/htdocs/frontend/javascripts/uuid.js +++ b/htdocs/frontend/javascripts/uuid.js @@ -31,7 +31,6 @@ vz.uuids.add = function(uuid) { if (this.validate(uuid)) { if (!this.contains(uuid)) { this.push(uuid); - this.save(); } else { throw new Exception('UUIDException', 'UUID already added: ' + uuid); @@ -48,7 +47,6 @@ vz.uuids.add = function(uuid) { vz.uuids.remove = function(uuid) { if (this.contains(uuid)) { this.splice(this.indexOf(uuid), 1); // remove uuid from array - this.save(); } else { throw new Exception('UUIDException', 'UUID unkown: ' + uuid); @@ -66,7 +64,8 @@ vz.uuids.validate = function(uuid) { * Save uuids as cookie */ vz.uuids.save = function() { - $.setCookie('vz_uuids', this.join(';')); + var expires = new Date(new Date().getTime() + 31536e6); // expires in a year + $.setCookie('vz_uuids', this.join(';'), {expires: expires}); }; /** From c3903262dc12ff08f696030e5eb44f585e589f8d Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 23:07:15 +0100 Subject: [PATCH 10/15] added uuids to permalink --- htdocs/frontend/javascripts/frontend.js | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/htdocs/frontend/javascripts/frontend.js b/htdocs/frontend/javascripts/frontend.js index e6ef001..75a4d8c 100644 --- a/htdocs/frontend/javascripts/frontend.js +++ b/htdocs/frontend/javascripts/frontend.js @@ -37,14 +37,20 @@ vz.wui.init = function() { // buttons $('button, input[type=button],[type=image]').button(); $('button[name=options-save]').click(function() { vz.options.save(); }); - $('#permalink').click(function() { // TODO add uuids - var u = window.location.protocol + '//' + + $('#permalink').click(function() { + var url = window.location.protocol + '//' + window.location.host + window.location.pathname + '?from=' + vz.options.plot.xaxis.min + '&to=' + vz.options.plot.xaxis.max; + + vz.entities.each(function(entity, parent) { + if (entity.active) { + url += '&uuid=' + entity.uuid; + } + }); - window.location = u; + window.location = url; }); $('button[name=entity-add]').click(function() { $('#entity-add').dialog('open'); }); $('#entity-subscribe input[type=button]').click(function() { From a43f9a6744363c1b90e69fbd049d937097192555 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 23:21:46 +0100 Subject: [PATCH 11/15] closes #38 (toggling group visibility) --- htdocs/frontend/javascripts/frontend.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/htdocs/frontend/javascripts/frontend.js b/htdocs/frontend/javascripts/frontend.js index 75a4d8c..e1e672c 100644 --- a/htdocs/frontend/javascripts/frontend.js +++ b/htdocs/frontend/javascripts/frontend.js @@ -279,9 +279,9 @@ vz.entities.show = function() { event.data.active = state; if (entity.type == 'group') { - entity.children.each(function(entity) { - $('#entity-' + entity.uuid + ' input[type=checkbox]').attr('checked', state); - entity.active = state; + entity.children.each(function(child) { + $('#entity-' + child.uuid + '.child-of-entity-' + entity.uuid + ' input[type=checkbox]').attr('checked', state); + child.active = state; }); } From 1549eb00c9f373a032394d2366d0af48febe5f98 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sat, 15 Jan 2011 23:51:38 +0100 Subject: [PATCH 12/15] add unique uuids to permalink introduced unique() to Array.prototype --- htdocs/frontend/javascripts/frontend.js | 9 +++++++-- htdocs/frontend/javascripts/helper.js | 18 ++++++++++++++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/htdocs/frontend/javascripts/frontend.js b/htdocs/frontend/javascripts/frontend.js index e1e672c..6d0dcf6 100644 --- a/htdocs/frontend/javascripts/frontend.js +++ b/htdocs/frontend/javascripts/frontend.js @@ -38,17 +38,22 @@ vz.wui.init = function() { $('button, input[type=button],[type=image]').button(); $('button[name=options-save]').click(function() { vz.options.save(); }); $('#permalink').click(function() { + var uuids = []; var url = window.location.protocol + '//' + window.location.host + window.location.pathname + '?from=' + vz.options.plot.xaxis.min + '&to=' + vz.options.plot.xaxis.max; - + vz.entities.each(function(entity, parent) { if (entity.active) { - url += '&uuid=' + entity.uuid; + uuids.push(entity.uuid); } }); + + uuids.unique().each(function(key, value) { + url += '&uuid=' + value; + }); window.location = url; }); diff --git a/htdocs/frontend/javascripts/helper.js b/htdocs/frontend/javascripts/helper.js index b4c40a0..a5f2da1 100644 --- a/htdocs/frontend/javascripts/helper.js +++ b/htdocs/frontend/javascripts/helper.js @@ -55,8 +55,9 @@ var Exception = function(type, message, code) { * according to js language specification ECMA 1.6 */ Array.prototype.indexOf = function(n) { - for (var i = 0, l = this.length; i < l; i++) + for (var i = 0, l = this.length; i < l; i++) { if (n == this[i]) return i; + } }; Array.prototype.remove = function(n) { @@ -64,8 +65,9 @@ Array.prototype.remove = function(n) { }; Array.prototype.each = function(cb) { - for (var i = 0, l = this.length; i < l; i++) + for (var i = 0, l = this.length; i < l; i++) { cb(i, this[i]); + } }; Array.prototype.contains = function(n) { @@ -75,3 +77,15 @@ Array.prototype.contains = function(n) { Array.prototype.clear = function() { this.length = 0; } + +Array.prototype.unique = function () { + var r = new Array(); + + this.each(function(key, value) { + if (!r.contains(value)) { + r.push(value); + } + }); + + return r; +} From 4a7323998bfdd4b3f0f84970b931542912b9e727 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sun, 16 Jan 2011 00:12:22 +0100 Subject: [PATCH 13/15] added dynamic refresh interval depending on zoom --- htdocs/frontend/javascripts/frontend.js | 11 +++++++---- htdocs/frontend/javascripts/helper.js | 2 -- htdocs/frontend/javascripts/options.js | 3 +-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/htdocs/frontend/javascripts/frontend.js b/htdocs/frontend/javascripts/frontend.js index 6d0dcf6..b03d3f5 100644 --- a/htdocs/frontend/javascripts/frontend.js +++ b/htdocs/frontend/javascripts/frontend.js @@ -92,16 +92,16 @@ vz.wui.init = function() { // auto refresh if (vz.options.refresh) { $('#refresh').attr('checked', true); - vz.wui.interval = window.setInterval(vz.wui.refresh, vz.options.refreshInterval); + vz.wui.timeout = window.setTimeout(vz.wui.refresh, 3000); } $('#refresh').change(function() { if ($(this).attr('checked')) { vz.options.refresh = true; - vz.wui.interval = window.setInterval(vz.wui.refresh, vz.options.refreshInterval); + vz.wui.timeout = window.setTimeout(vz.wui.refresh, 3000); } else { vz.options.refresh = false; - window.clearInterval(vz.wui.interval); + window.clearTimeout(vz.wui.timeout); } }); @@ -167,9 +167,12 @@ vz.wui.initEvents = function() { */ vz.wui.refresh = function() { var delta = vz.options.plot.xaxis.max - vz.options.plot.xaxis.min; + vz.options.plot.xaxis.max = new Date().getTime(); // move plot vz.options.plot.xaxis.min = vz.options.plot.xaxis.max - delta; // move plot vz.entities.loadData(); + + vz.wui.timeout = window.setTimeout(vz.wui.refresh, (delta / 100 < 3000) ? 3000 : delta / 100); // TODO update timeout after zooming }; /** @@ -527,7 +530,7 @@ vz.wui.dialogs.error = function(error, description, code) { modal: true, buttons: { Ok: function() { - $( this ).dialog( "close" ); + $(this).dialog('close'); } } }); diff --git a/htdocs/frontend/javascripts/helper.js b/htdocs/frontend/javascripts/helper.js index a5f2da1..20ff51a 100644 --- a/htdocs/frontend/javascripts/helper.js +++ b/htdocs/frontend/javascripts/helper.js @@ -80,12 +80,10 @@ Array.prototype.clear = function() { Array.prototype.unique = function () { var r = new Array(); - this.each(function(key, value) { if (!r.contains(value)) { r.push(value); } }); - return r; } diff --git a/htdocs/frontend/javascripts/options.js b/htdocs/frontend/javascripts/options.js index b3d5a42..f61cf10 100644 --- a/htdocs/frontend/javascripts/options.js +++ b/htdocs/frontend/javascripts/options.js @@ -32,9 +32,8 @@ vz.options = { rounding: 1, render: 'lines', refresh: false, - refreshInterval: 5*1000, // 5 secs defaultInterval: 24*60*60*1000, // 1 day - timezoneOffset: -(new Date().getTimezoneOffset() * 60*1000) // TODO add option with timezone dropdown + timezoneOffset: -(new Date().getTimezoneOffset() * 60000) // TODO add option with timezone dropdown }; vz.options.plot = { From 0ad0046d40caac1522e09fe4151d18e2433d0cfd Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sun, 16 Jan 2011 00:33:52 +0100 Subject: [PATCH 14/15] fixed highly critical bug in DataController --- lib/Controller/DataController.php | 2 +- lib/Interpreter/Interpreter.php | 2 +- lib/Util/Debug.php | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/Controller/DataController.php b/lib/Controller/DataController.php index 0dbd434..e786680 100644 --- a/lib/Controller/DataController.php +++ b/lib/Controller/DataController.php @@ -72,7 +72,7 @@ class DataController extends Controller { $ec = new EntityController($this->view, $this->em); $entity = $ec->get($identifiers[0]); - $this->{$operation}($entity); + return $this->{$operation}($entity); } } diff --git a/lib/Interpreter/Interpreter.php b/lib/Interpreter/Interpreter.php index 092b001..55088f4 100644 --- a/lib/Interpreter/Interpreter.php +++ b/lib/Interpreter/Interpreter.php @@ -56,7 +56,7 @@ abstract class Interpreter implements InterpreterInterface { */ public function __construct(Model\Channel $channel, ORM\EntityManager $em, $from, $to) { $this->channel = $channel; - + // get dbal connection from EntityManager $this->conn = $em->getConnection(); diff --git a/lib/Util/Debug.php b/lib/Util/Debug.php index 9a898b5..9503c99 100644 --- a/lib/Util/Debug.php +++ b/lib/Util/Debug.php @@ -88,7 +88,7 @@ class Debug { 'file' => $info['file'], 'line' => $info['line'], //'time' => date('r'), - 'args' => array_slice($info['args'], 1), + 'args' => array_slice($info['args'], 1) //'trace' => array_slice($trace, 1) ); } From 9986e7b222492436ff9d11cd83907934dd7a2658 Mon Sep 17 00:00:00 2001 From: Steffen Vogel Date: Sun, 16 Jan 2011 09:44:58 +0100 Subject: [PATCH 15/15] added favicon and apple touch icon --- htdocs/favicon.ico | Bin 0 -> 15086 bytes htdocs/frontend/index.html | 8 +++- misc/graphics/backend.dia | Bin 0 -> 6199 bytes misc/graphics/backend.png | Bin 0 -> 79893 bytes misc/graphics/favicon.ico | Bin 0 -> 15086 bytes misc/graphics/favicon.png | Bin 0 -> 7418 bytes misc/graphics/favicon.svg | 89 +++++++++++++++++++++++++++++++++++++ 7 files changed, 96 insertions(+), 1 deletion(-) create mode 100644 htdocs/favicon.ico create mode 100644 misc/graphics/backend.dia create mode 100644 misc/graphics/backend.png create mode 100644 misc/graphics/favicon.ico create mode 100644 misc/graphics/favicon.png create mode 100644 misc/graphics/favicon.svg diff --git a/htdocs/favicon.ico b/htdocs/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..402bd961b29a35b0bc4b141fc21b1bd397e1c82b GIT binary patch literal 15086 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 literal 0 HcmV?d00001 diff --git a/htdocs/frontend/index.html b/htdocs/frontend/index.html index 48b1b2e..84d76e2 100644 --- a/htdocs/frontend/index.html +++ b/htdocs/frontend/index.html @@ -3,6 +3,9 @@ volkszaehler.org - web frontend + + + @@ -130,7 +133,10 @@

Hier können Sie einen existierenden Kanal über seine UUID hinzufügen

-

+ + + +
diff --git a/misc/graphics/backend.dia b/misc/graphics/backend.dia new file mode 100644 index 0000000000000000000000000000000000000000..092df8628c69cd3bcf04f457208a328aad749ce8 GIT binary patch literal 6199 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

;x^Z?v(It{p@kh{gb;rv8WYQ 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 literal 0 HcmV?d00001 diff --git a/misc/graphics/favicon.png b/misc/graphics/favicon.png new file mode 100644 index 0000000000000000000000000000000000000000..5a8c62e96a2910946571e577c343bba0d06090c1 GIT binary patch literal 7418 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 + + + + + + + + + + + + image/svg+xml + + + + + + + + + +