| |||||||
Du magst keine Werbung? Wir auch nicht!
Einfach registrieren und die Werbung ist weg. Diese Nachricht sehen nur nicht registrierte Nutzer.
![]() |
| | LinkBack | Themen-Optionen | Ansicht |
| | #1 (permalink) |
| Neuer User Registriert seit: Dec 2001
Beiträge: 112
|
hallo experten, ich habe eine ArrayCollection in der viele Einträge der Klasse Zeitstempel gespeichert sind. So ein Zeitstempel besteht aus einer Mitarbeiter_id, einer aufgaben_id, einer Startzeit und einer Endzeit. Jeder Mitarbeiter erstellt also jedesmal wenn er an einer bestimmten Aufgabe gearbeitet hat einen neuen Zeitstempel der festhält von wann bis wann er daran gearbeitet hat. Diese ArrayCollection möchte ich nun auf verschiedene Arten auswerten und mit Charting-Komponenten darstellen. Ein Beispiel: Ein Kuchen-Chart soll darstellen wie lange insgesamt an dem gesamten Projekt gearbeitet wurde (also die Summe der Dauer aller Zeitstempel) und gleichzeitig welcher Mitarbeiter welchen Gesamtanteil daran hat (also die Summe der Dauer aller Zeitstempel die von den jeweiligen Mitarbeiter erstellt wurden) Ich könnte derartige Abfragen natürlcih direkt auf meiner MySql Datenbank (von der die Daten stammen) machen und dann in Flex darstellen, allerdings würde ich mir diesen Traffic gerne sparen denn eigentlich sind ja alle Daten die ich benötige schon in der ZeitstempelArrayCollection beim Client vorhanden. Leider kriege ich es nicht hin die filterFunction der ArrayCollection so dynamisch zum Einsatz zu bringen. Problem verstanden?Kann und möchte mir jemand helfen? Danke |
| | |
| | #3 (permalink) |
| Neuer User Registriert seit: Dec 2001
Beiträge: 112
|
Also nach meinem letzten Eintrag haben ich mir noch folgendes "zusammengewurschtelt": Code: private function prepareDataForDisplayAllMitarbeiterCompleteWork(ac_data:ArrayCollection):ArrayCollection
{
var ac_tempAlleZeitstempel:ArrayCollection=new ArrayCollection();
ac_tempAlleZeitstempel.addAll(ac_data);
var ac_zeitstempelGeteiltNachMitarbeitern:ArrayCollection= new ArrayCollection();
for each (var tempMitarbeiter:Mitarbeiter in ac_allMitarbeiter)
{
var filtered_array:Array = FilterByProperty(ac_tempAlleZeitstempel.source, tempMitarbeiter.idmitarbeiter);
var ac_alleZeitstempelEinesMitarbeiters:ArrayCollection=new ArrayCollection(filtered_array);
ac_zeitstempelGeteiltNachMitarbeitern.addItem(ac_alleZeitstempelEinesMitarbeiters);
}
return ac_zeitstempelGeteiltNachMitarbeitern;
}
protected function FilterByProperty(input_array:Array, extra_testing:Object):Array
{
function FilterFunction(element:Object, index:int, array:Array):Boolean
{
return element.mitarbeiter_idmitarbeiter == extra_testing;
}
return input_array.filter(FilterFunction);
} Aber alles sehr umständlich und unschön finde ich. Vielleicht geht es ja doch viel einfacher!? |
| | |
| | #4 (permalink) |
| Perverted Hermit Registriert seit: Mar 2004 Ort: Delmenhorst
Beiträge: 12.898
|
Ja, ich verstehe deinen Code nicht so ganz ... die Idee hinter meinem Code:
Code: package org.icodeapps.filters
{
import mx.collections.ICollectionView;
public class FilterStrategy
{
//-------------------------------------------------------------------------
//
// Properties
//
//-------------------------------------------------------------------------
//---------------------------------
// collection
//---------------------------------
private var _collection:ICollectionView;
function set collection(value:ICollectionView):void
{
if (_collection)
{
_collection.filterFunction = null;
}
_collection = value;
if (_collection)
{
updateFilterFunction();
refreshCollection();
}
}
//---------------------------------
// enableFiltering
//---------------------------------
private var _enableFiltering:Boolean;
public function set enableFiltering(value:Boolean):void
{
_enableFiltering = value;
if (_collection)
{
updateFilterFunction();
refreshCollection();
}
}
//---------------------------------
// filterForName
//---------------------------------
private var _filterForName:Boolean;
public function set filterForName(value:Boolean):void
{
_filterForName = value;
refreshCollection();
}
//---------------------------------
// name
//---------------------------------
private var _name:String;
public function set name(value:String):void
{
_name = value;
refreshCollection();
}
private function refreshCollection():void
{
if (!_collection) return;
_collection.refresh();
}
//-------------------------------------------------------------------------
//
// Methods
//
//-------------------------------------------------------------------------
private function filter(item:Object):Boolean
{
if (!_enableFiltering) return true;
if (!item) return false;
if (_filterForName && item.property('name') && item['name'] != _name) return false;
return true;
}
private function updateFilterFunction():void
{
_collection.filterFunction = _enableFiltering ? filter : null;
}
}
}
|
| | |
| | #5 (permalink) |
| Neuer User Registriert seit: Dec 2001
Beiträge: 112
|
das gefällt mir sehr gut. Damit werde ich es mal versuchen udn mich dann zurück melden. Tausend Dank und ich bin mal wieder beeindruckt mit welcher Einsatzfreude du dich an die Probleme anderer machst und da du wirklich "Clean Code" hast, dient dein Code auch schon gut als Tutorial. schönen abend noch |
| | |
| | #6 (permalink) |
| Neuer User Registriert seit: Nov 2007 Ort: Göttingen
Beiträge: 93
|
Moin moin, die Variante ist auch nicht schlecht. Ich hab mich allerdings für eine andere entschieden. Hierzu hab ich mir eine BasicVO-Klasse geschrieben, die von den anderen ValueObject-Klassen geerbt wird. So sieht die Basic-Klasse aus: PHP-Code: PHP-Code: PHP-Code: LordCorax Geändert von LordCorax (23-11-2011 um 10:46 Uhr) |
| | |
![]() |
| Lesezeichen |
| Stichworte |
| arraycollection, dynamisch, filterfunction |
| Themen-Optionen | |
| Ansicht | |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| ArrayCollection <-> Array | Henning06 | Flash CS4 Professional | 1 | 15-08-2009 13:27 |
| dynamische ArrayCollection | verflext | Flex programmieren | 7 | 11-06-2009 21:24 |
| arraycollection | n82 | Flex programmieren | 8 | 04-03-2009 16:30 |
| XML zu ArrayCollection | zidaninho | Flex programmieren | 1 | 01-03-2009 17:13 |
| hilfe!!komplexe dynamische webcam. hilfe!! | ich_checks_net | Flash 8 | 3 | 11-08-2008 10:39 |