Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #41 (permalink)  
Старый 27.08.2013, 23:09
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Shitbox2, спасибо, за упоминание

Сообщение от Shitbox2
Может и правда, потом вынесу общие функции в отдельный сервис...
)))

Сообщение от Shitbox2
А с новой версией Ангуляра, вообще, не запускается
у меня вроде работает

Сообщение от Shitbox2
У тебя нельзя менять на лету настройки плагина
поясни

Сообщение от Shitbox2
было бы можно, создание клона поля в изолированной области видимости принесло бы проблем)
могу предположить только проблемы с "ловлей" файлов. Хотя они решаются, но лениво

Цитата:
Планы на будущее (с вашей помощью ;-)

Общий прогресс для одновременно загружаемых файлов.
Ограничение количества одновременно загружаемых фалов
Уменьшение картинки на клиенте
Отмена загрузки (xhr.abort() и т.п.).
Допиливание загрузчиков для старых браузеров.
- общий прогресс у меня реализован, можешь посмотреть (на локальном сервере, removeAfterUpload = false)
- про ограничение кол-ва загружаемых файлов - теоретически, можно (а можно и в модуль валидаторов добавить)
- уменьшение изображений и валидация - я бы вынес в отдельные сервисы, т.к. работа с изображениями более узкая задача, чем загрузка файлов
- аборты было бы неплохо добавить ...
- не вижу смысла заострять внимание на старых браузерах. Пусть умиратют
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 27.08.2013 в 23:12.
Ответить с цитированием
  #42 (permalink)  
Старый 28.08.2013, 13:55
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Цитата:
поясни
Т.е. поменять настройку в любой момент в приложении. Если использовать изолированную область видимости, то после первой же загрузки через iframe клон инпута будет ссылаться на пустой объект с настройками (т.к. новая область видимости ничего о нем не знает). В моем способе модуль постоянно вотчит изменение настройки и конечно же запишет вместо них undefined.
Цитата:
уменьшение изображений и валидация - я бы вынес в отдельные сервисы
Это да. С уменьшением тоже не просто. Пытался сделать через канвас, но мало чего толкового нашел... Плагин бы достать, одна часть которого уменьшает изображение, а другая (опционально) предоставляет интерфейс для обрезки.

Цитата:
не вижу смысла заострять внимание на старых браузерах. Пусть умиратют
Ну, с 8 ИЕ хотя бы с урезанным функционалом :-)
Ответить с цитированием
  #43 (permalink)  
Старый 28.08.2013, 15:59
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Shitbox2
Т.е. поменять настройку в любой момент в приложении. Если использовать изолированную область видимости, то после первой же загрузки через iframe клон инпута будет ссылаться на пустой объект с настройками (т.к. новая область видимости ничего о нем не знает). В моем способе модуль постоянно вотчит изменение настройки и конечно же запишет вместо них undefined.
понял. Как вариант обходить массив и менять "руками". Для себя я пока не вижу особой необходимости, поэтому делать пока не буду )
Актуально только если элементы очереди не удаляются после загрузки и не загружаются автоматически

Сообщение от Shitbox2
С уменьшением тоже не просто
я писал умешение и обрезку в виде лайт плагина для жуквери. Если нужна последняя версия, стучи в личку (лучше его переписать в виде
$( 'img' ).toCanvas( '[crop|resize]', { width: 300, height: 68 }) ) ...;

т.е. сделать работу с ним более прозрачной)

Сообщение от Shitbox2
Ну, с 8 ИЕ хотя бы с урезанным функционалом
ie must die
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук

Последний раз редактировалось nerv_, 28.08.2013 в 16:03.
Ответить с цитированием
  #44 (permalink)  
Старый 29.08.2013, 11:14
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Цитата:
я писал умешение и обрезку в виде лайт плагина для жуквери. Если нужна последняя версия, стучи в личку (лучше его переписать в виде
Ну тут можно и без Джиквери) А поменять формат на jpg/png можно будет?

Надергал так же ссылок по кропу и ресайзу. Что-то близко, но нужно ковырять. Записал для памяти, надеюсь, потом займусь)
http://deepliquid.com/content/Jcrop_Manual.html
http://evrone.github.io/evroneCrop/
https://github.com/evrone/evroneCrop
http://odyniec.net/projects/imgareaselect/
http://vredniy.ru/2010/08/uploadify-jcrop-php/
http://habrahabr.ru/post/133351/
https://github.com/odyniec/imgareaselect
http://habrahabr.ru/post/133362/
http://w3pro.ru/article/html-5-canva...chinayushchikh
http://remysharp.com/2007/03/19/a-fe...nd-pluck/#crop
https://developer.mozilla.org/ru/doc...BD%D0%BE%D0%BA

P.S. Часто замечал в твоем коде
this.scope.$$phase || this.scope.$apply();
Каким принципом руководствуешься, когда проверяешь фазу? Просто всегда проверяешь или в случаях, когда появлялись ошибки при тестировании или по другим соображениям?

P.P.S. Не очень понял как твой прогресс устроен. Т.е. просто берешь и делишь прогресс одного файла на количество файлов в очереди. Такая штука работает только если в один момент загружается один файл. На деле же при множественной загрузке загружаются сразу несколько файлов, поэтому прогресс каждого должен добавляться в общий

Последний раз редактировалось Shitbox2, 29.08.2013 в 13:33.
Ответить с цитированием
  #45 (permalink)  
Старый 29.08.2013, 22:23
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Shitbox2
Ну тут можно и без Джиквери)
я просто пример показал

Сообщение от Shitbox2
но нужно ковырять
все просто - завист от кол-ва передаваемых параметров:
- 2 - ресайз
- >2 - кроп (насколько помню)

Сообщение от Shitbox2
Каким принципом руководствуешься, когда проверяешь фазу? Просто всегда проверяешь или в случаях, когда появлялись ошибки при тестировании или по другим соображениям?
если код выполняется вне контекста фрейморка, фазу лучше проверять (по моим личным наблюдениям)

Сообщение от Shitbox2
P.P.S. Не очень понял как твой прогресс устроен. Т.е. просто берешь и делишь прогресс одного файла на количество файлов в очереди. Такая штука работает только если в один момент загружается один файл. На деле же при множественной загрузке загружаются сразу несколько файлов, поэтому прогресс каждого должен добавляться в общий
у меня может загружаться одновременно только один файл. Пока не вижу смысла загружать сразу несколько. Не вижу проблем добавлять прогресс каждого файла в общий. У меня так и есть применительно к одному файлу (при removeAfterUpload = false на локальном сервере).
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #46 (permalink)  
Старый 30.08.2013, 03:13
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Цитата:
если код выполняется вне контекста фрейморка, фазу лучше проверять (по моим личным наблюдениям)
А если в контексте, то apply, вообще, не нужен)). Я вот тоже четко не понимаю в каких ситуациях можно попасть в запущенный цикл. Как показывает практика такие ситуации очень редки... Но от чего они случаются — загадка.

Цитата:
у меня может загружаться одновременно только один файл.
О_о А как же многопоточность и все дела? Кстати, обновил плагин. Сделал общий индикатор. Правда, достаточно дубовым способом. Не будет работать, если задержка между уведомлениями прогресса окажется больше 2 с и браузер не будет слишком лажать. Надеюсь, это редкость.
Ответить с цитированием
  #47 (permalink)  
Старый 31.08.2013, 15:12
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Shitbox2
Кстати, обновил плагин
ты хоть ссылки прикладывай, а то пока найдешь Я тоже свой обновил: добавил поддержку множественных зон сброса и инпутов с различными настройками (демо)

Сообщение от Shitbox2
А как же многопоточность и все дела?
канал то не резиновый ) Впрочем, если создать несколько экземпляров загрузчика, вероятно, будет многопоточность Если ты аргументируешь, зачем в данном случае многопоточность, я тебя выслушаю )
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #48 (permalink)  
Старый 31.08.2013, 17:31
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Цитата:
ты хоть ссылки прикладывай, а то пока найдешь
Исправлюсь (гитхаб, демо, песочница) :-)

Цитата:
канал то не резиновый )
Ничего об этом не знаю. Перетащи в демке десяток файлов, увидишь, что штук 5 будут одновременно загружаться. Браузер по умолчанию параллелит процессы)

Цитата:
добавил поддержку множественных зон сброса и инпутов
Ааааа! Зачем всё это? Разве бывают ситуации, когда нужно несколько инпутов для одной модели?)) Кстати, в моем варианте нет на это ограничений... Там инпут и модель соединяются в контроллере и сколько инпутов со сколькими моделями соединить — выбор пользователя. Хотя зачем нужно несколько инпутов...

P.S. А не планируешь добавить сжатие изображений на клиенте (законченную версию, с формированием blob и сохранением на сервере в формате картинки), а я бы у тебя утащил)))

P.P.S. Из руководства
Цитата:
Trying to reenter a $digest or $apply while one of them is already in progress is typically a sign of programming error that needs to be fixed.
Разработчики считают, что ситуации, когда повторно запускается фаза выполнения говорят об ошибках в коде

Последний раз редактировалось Shitbox2, 01.09.2013 в 11:08.
Ответить с цитированием
  #49 (permalink)  
Старый 01.09.2013, 19:06
Аватар для nerv_
junior
Отправить личное сообщение для nerv_ Посмотреть профиль Найти все сообщения от nerv_
 
Регистрация: 29.11.2011
Сообщений: 3,924

Сообщение от Shitbox2
Ничего об этом не знаю. Перетащи в демке десяток файлов, увидишь, что штук 5 будут одновременно загружаться. Браузер по умолчанию параллелит процессы)
не до конца уверен на этот счет. Допустим, ты перетащил 10 файлов и для каждого из них отправил post запрос. Итого 10 постов у тебя. Все равно быстрее от этого они заливаться не будут (пропускная способность канала), в связи с чем, на мой взгляд, загружать их по одному более естественно. К тому же в подобной реализации возможно прервать загрузки последующих файлов, после того как ряд уже был загружен.

Сообщение от Shitbox2
Ааааа! Зачем всё это? Разве бывают ситуации, когда нужно несколько инпутов для одной модели?
Ну а как ты еще представляешь себе загрузку файлов по разным урлам в рамках одной очереди? https://github.com/nervgh/angular-file-upload/issues/1

Сообщение от Shitbox2
Кстати, в моем варианте нет на это ограничений... Там инпут и модель соединяются в контроллере и сколько инпутов со сколькими моделями соединить — выбор пользователя. Хотя зачем нужно несколько инпутов...
в моей теперь тоже нет ограничений (писал выше). Можешь привести пример кода?

Сообщение от Shitbox2
P.S. А не планируешь добавить сжатие изображений на клиенте (законченную версию, с формированием blob и сохранением на сервере в формате картинки), а я бы у тебя утащил)))
планирую, но немного позднее Насчет абортов ничего не выяснить не удалось?

Сообщение от Shitbox2
Разработчики считают, что ситуации, когда повторно запускается фаза выполнения говорят об ошибках в коде
интересная точка зрения. Случайно не видел, используется ли где-нибудь в angular.ui проверка фазы?
__________________
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук
Ответить с цитированием
  #50 (permalink)  
Старый 02.09.2013, 17:18
Профессор
Отправить личное сообщение для Shitbox2 Посмотреть профиль Найти все сообщения от Shitbox2
 
Регистрация: 04.10.2010
Сообщений: 571

Цитата:
не до конца уверен на этот счет. Допустим, ты перетащил 10 файлов...
А может быть и быстрее, нужно исследовать. Впрочем, тут с тобой больше согласен. Так лучше, да и разница в скорости по-любому не будет существенной.

Цитата:
Ну а как ты еще представляешь себе загрузку файлов по разным урлам в рамках одной очереди?
О_о Никогда бы не подумал что кому-нибудь будет нужно. Во-первых загрузка одного и того же файла по разным URL в пределах одного сервера — плохое решение. Нельзя такие поощрять. Тут нужно загрузить файл один раз и уже на сервере скопировать куда нужно.

Загрузка одного файла на разные сервера... ИМХО, очень специфичная задача. Может быть какая-то распространенная хитрая оптимизация?

Загрузка очереди по разным URL. Типа кидаешь 5 файлов в таблицу, и они записываются в каждую ячейку. Возможно, но мало кому надо.

Цитата:
Можешь привести пример кода?
Тут лучше смотреть песочницу. У меня каждой директиве
oi-file="options"
можно задать свой объект с настройками. В каждом таком объекте мы задаем колбек
change: function (file) {
  file.$upload(url + data.id, $scope.items[i], data.settings);
}

Из него мы получаем массив файлов и функцию загрузки. Можем теперь хоть каждый файл по отдельном URL загрузить

Цитата:
Насчет абортов ничего не выяснить не удалось?
Пока только отрицательный опыт. Убить загрузку можно, вызвав xhr.abort(). xhr-объект можно записать в объект файла (в твоем случае в item). Поскольку этот объект можно загрузить в область видимости, то можно и аборт оттуда сделать и всё хорошо обрывается. Проблема в том, что при манипуляциях с моделью лезут ошибки именно из-за того, что в модели оказывается ссылка на xhr, а в xhr записана ссылка на модель (циклическая ссылка).

Вот тут как раз думаю сделать как у тебя (в одно время загружается один файл), тогда в xhr можно будет не загружать модель, т.к. и так будет ясно для какой модели загрузился файл.

Цитата:
Случайно не видел, используется ли где-нибудь в angular.ui проверка фазы?
Случайно нигде не видел, чтобы она использовалась))) Более того, в версии 1.2 и из своего кода смог эти проверки выкинуть. Стало и без них работать. (был баг, когда http-запросы копились и уходили не сразу, если цикл не запустить)
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
drag & drop, mouseup cyber Events/DOM/Window 108 02.07.2012 00:31
drag & drop , html 5 cyber Events/DOM/Window 1 30.06.2012 15:16
Дебаг js, или как найти обработчик события для тега jimm88 Events/DOM/Window 1 18.04.2012 15:11
Отмена drag and drop браузера l-liava-l Элементы интерфейса 0 02.04.2012 13:53
Как отлаживать события? Или как сделать трассировку вызовов функций? gennad Events/DOM/Window 1 18.08.2010 13:21