Talk:JavaScript API ru

From ElphelWiki
Revision as of 13:24, 26 October 2005 by Khlut (talk | contribs)
Jump to: navigation, search

in English | autotranslate | по-русски | [[{{{cn}}}|中文版]]

В общих словах

Библиотека будет представлять из себя файл .js который подключается через <script src=...> там набор функций для управления камерой. Адрес камеры должен быть одним из аргументов функции.

Скрипт-библиотеку можно будет подписать электронной подписью (на сайте Мозиллы есть про это), тогда он получит права на обращение к любым сайтам и открытым окнам браузера, что требуется для реализации многокамерного видеонаблюдения. Для управления одной камерой можно обойтись без подписывания, если скрипт загружен с той же камеры.

Так же надо включить набор функций для реализации управляющих элементов - слайдеров и других. Среди них должны быть функции которые будут возвращать строки, содержащие фрагменты html страницы. Строки можно будет использовать как аргумент document.write или для присваивания InnerHTML какого-нибудь элемента.

--Sergey Khlutchin 13:27, 22 October 2005 (CDT)

IMHO, использование InnerHTML - не всегда удобно и оправдано, но подобный "результат" функций предусмотреть надо. Хотя я больше за передачу объекта страницы, как аргумента, и изменения свойств объекта внутри функции, возвращаемый результат либо void, либо boolean (успех/неуспех).

Однако не стоит рассматривать библиотеку просто как набор скриптов JS - думаю придется делать и CGI-шк(у/и), позволяющие реализовать часть функций......

--Victor V. Vyasovtsev 22:05, 23 October 2005 (CDT)

Итак, есть элементы пользовательского интерфейса (UI) и функции для получения информации от камеры и управления камерой.

Функции наверно лучше разбивать по изменяемым/опрашиваемым параметрам камеры.

Элементы UI наверно удобнее рассматривать как объекты, к которым как-то пристыковываются нужные функции в зависимости от управляемого параметра. Элементы UI классифицируем по внешнему виду.

--Sergey Khlutchin 02:57, 24 October 2005 (CDT)

Каждая операция разбивается на два этапа - запрос и подтверждение. При запросе передаётся callback-функция которая вызывается по приходу информации от камеры.

Можно сделать сразу несколько функций: нормальный ответ, ошибка, таймаут, промежуточный вызов во время ожидания или одну с ветвлением внутри. Наверно удобнее первый вариант.

Таймаут нужно иметь возможность менять.

Набор функций задаётся либо аргументами при вызове либо через объект. Рассмотрим оба варианта, потом решим как будет удобнее.

Таким образом у каждой функции первые аргументы фиксированы, это (Адрес камеры, cb_OK, cb_Err, cb_TimeOut, cb_Tick, таймаут, ... )

можно всё засунуть в один объект и вызывать функцию через "."

При объектном подходе, если определять функции перед использованием, код будет выглядеть несколько наизнанку:

c1=new camera();
c1.cb_OK= function(...) { //2.инфа пришла - делаем дальше
  .... анализ, можно ли делать операцию ....
  cb_OK= function(...) { //4. операция выполнена - делаем ещё что-то
      ....
  }
  get_op(...) //3. запрашиваем операцию
}
...
c1.get_info(); //1.запрос инфы

Функциональный подход

get_info( ... //1.запрос инфы
  function(...) { //2.инфа пришла
    ... анализ ...
    get_op( ... //3.запрос операции
      function(...) {//4.операция выполнена - делаем ещё что-то
        ....
      }, ....
    )
  }, ...
)

По-моему лучше, а?

--Sergey Khlutchin 15:24, 26 October 2005 (CDT)