Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 12.09.2011, 15:38
Dimitry_II вне форума Посмотреть профиль Отправить личное сообщение для Dimitry_II Найти все сообщения от Dimitry_II
  № 11  
Ответить с цитированием
Dimitry_II

Регистрация: Jan 2010
Сообщений: 211
Что-то мне кажется, что все это отдает то ли заумностью, то ли бредом.

Что мешает отдать с сервера коллекции с идентефикаторами? А на клиенте сортировать с помощью Sort и вытаскивать объект по идентефикатору? Если таки это сложно - "множество ArrayCollection соответствующих таблицам серверной БД", то все равно отдавать с сервера коллекцию DTO, в которую уже будут всунуты данные с разных таблиц и назначены идентефикаторы для предоставления уникального доступа. Мудрить с двумя структурами на клиенте - на кой?

Кроме этого - коллекция с сервера отдается в зависимости от построения списка на сервере (допустим, ArrayList и LinkedList дадут/могут дать разный порядок), однако при формировании объекта ArrayCollection в его свойстве source типа Array порядок вложенных объектов будет постоянен вне зависимости от показываемой сортировки. По крайней мере, это может избавить от создания параллельной структуры для коллекции.

Старый 12.09.2011, 15:48
zorexundra вне форума Посмотреть профиль Отправить личное сообщение для zorexundra Найти все сообщения от zorexundra
  № 12  
Ответить с цитированием
zorexundra

Регистрация: Dec 2010
Сообщений: 177
Цитата:
Сообщение от Dimitry_II Посмотреть сообщение
Что мешает отдать с сервера коллекции с идентефикаторами? А на клиенте сортировать с помощью Sort и вытаскивать объект по идентефикатору?
А можно какой-нибудь простенький пример кода?
Среда разработки - Flex-AMFPHP-MySQL.

Добавлено через 23 минуты
Цитата:
Сообщение от saprahan Посмотреть сообщение
Можно, например, экстендить ArrayCollection, добавить параметр itemsMap, и в конструкторе ArrayCollection'a (а также, возможно в оверрайде метода refresh) прописать инициализацию мапы из сорса
Если при разработке конечных приложений используются принципы ООП, то возможно была выбрана не та IDE
Можно, также, пример кода?
Сама по себе идея, на мой взгляд, интересная.


Последний раз редактировалось zorexundra; 12.09.2011 в 16:26.
Старый 12.09.2011, 16:46
saprahan вне форума Посмотреть профиль Отправить личное сообщение для saprahan Найти все сообщения от saprahan
  № 13  
Ответить с цитированием
saprahan

Регистрация: Mar 2011
Сообщений: 48
Цитата:
Сообщение от zorexundra Посмотреть сообщение
А можно какой-нибудь простенький пример кода?
Среда разработки - Flex-AMFPHP-MySQL.

Добавлено через 23 минуты

Если при разработке конечных приложений используются принципы ООП, то возможно была выбрана не та IDE
Можно, также, пример кода?
Сама по себе идея, на мой взгляд, интересная.
Интересно, при чем здесь IDE ?

Добавлено через 3 минуты
Очень здравая идея с построением общей мапы есть в HierarchicalCollectionView.Регулярно проходить про древовидной структуре и вправду дорого - цикл в цикле. Там как раз и строится мапа как хелпер. Правда лишь для открытых нод, что на практике несет в себе мало пользы.

Старый 12.09.2011, 16:59
zorexundra вне форума Посмотреть профиль Отправить личное сообщение для zorexundra Найти все сообщения от zorexundra
  № 14  
Ответить с цитированием
zorexundra

Регистрация: Dec 2010
Сообщений: 177
saprahan, это шутка в ответ на предложение дорабатывать исходные объекты.
Поделитесь мнением.
Предположим есть экземпляр пользовательского класса MappedArrayCollection расширяющий ArrayCollection.
Экземпляр слушает событие "collectionChange". По этому событию MappedArrayCollection циклом for each перебирает все элементы массива source и присваивает им идентификаторы. MappedArrayCollection имеет публичный метод отдающий элемент source по внешнему запросу с параметром идентификатора.
В source 30000 элементов. Для каждого элемента в MappedArrayCollection задаётся 10 переменных со значением ключа-идентификатора. Насколько быстрым будет этот класс? Не повесит-ли он приложение?
Не проще-ли создать отдельную хеш-таблицу со ссылками на элементы ArrayCollection.source?


Последний раз редактировалось zorexundra; 12.09.2011 в 17:01.
Старый 13.09.2011, 14:40
saprahan вне форума Посмотреть профиль Отправить личное сообщение для saprahan Найти все сообщения от saprahan
  № 15  
Ответить с цитированием
saprahan

Регистрация: Mar 2011
Сообщений: 48
Цитата:
Сообщение от zorexundra Посмотреть сообщение
saprahan, это шутка в ответ на предложение дорабатывать исходные объекты.
Поделитесь мнением.
Предположим есть экземпляр пользовательского класса MappedArrayCollection расширяющий ArrayCollection.
Экземпляр слушает событие "collectionChange". По этому событию MappedArrayCollection циклом for each перебирает все элементы массива source и присваивает им идентификаторы. MappedArrayCollection имеет публичный метод отдающий элемент source по внешнему запросу с параметром идентификатора.
В source 30000 элементов. Для каждого элемента в MappedArrayCollection задаётся 10 переменных со значением ключа-идентификатора. Насколько быстрым будет этот класс? Не повесит-ли он приложение?
Не проще-ли создать отдельную хеш-таблицу со ссылками на элементы ArrayCollection.source?
Я вам это и написал, читайте внимательно. Слушать эвент и что то по нему делать - это вы уже придумали сами ))) ROFL

BTW экстендить нативные FLEX компоненты при более-менее сложной разработке приходится регулярно. Не стоит этого пугаться.

Старый 13.09.2011, 17:50
zorexundra вне форума Посмотреть профиль Отправить личное сообщение для zorexundra Найти все сообщения от zorexundra
  № 16  
Ответить с цитированием
zorexundra

Регистрация: Dec 2010
Сообщений: 177
saprahan, представьте, на станции авто-техобслуживания механик говорит Вам:
- Ща доработаем вашу колымагу!
Вот набросал. Что скажите?:
Код AS3:
package
{
	import mx.collections.ArrayCollection;
	import mx.events.CollectionEvent;
	public class MappedArrayCollection extends ArrayCollection
	{
		public var arrayElement:Object = new Object();
		public function MappedArrayCollection(source:Array=null)
		{
			super(source);
			addEventListener(CollectionEvent.COLLECTION_CHANGE, collectionChangeHandler);
		}
		override public function set source(s:Array):void
		{
			super.source = s;
			for each(var el:Object in s){
				arrayElement["e"+el.ID]=el;
			}
		}
		private function collectionChangeHandler(event:CollectionEvent):void
		{
			switch(event.kind){
				case "add":
					arrayElement["e"+event.items[0].ID]=event.items[0];
					break;
				case "remove":
					delete arrayElement["e"+event.items[0].ID];
					break;
			}
		}
	}
}


Последний раз редактировалось zorexundra; 14.09.2011 в 11:26.
Создать новую тему Ответ Часовой пояс GMT +4, время: 16:51.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 16:51.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.