DataBox Plugin

Практические советы по работе с FileMaker, типичные задачи и их решения. У вас вопрос? Пишите сюда.
Ответить
Alexei Sytch
Сообщения: 101
Зарегистрирован: 21 сен 2017, 18:48
Откуда: Минск

DataBox Plugin

Сообщение Alexei Sytch » 02 апр 2021, 06:41

Добрый день, по сабжу -- исторический момент, на моей памяти первый плагин из русскоязычного сообщества. Поздравляю с почином разработчиков. Может ребята из ТриА и демку планируют по основным user case?
Последний раз редактировалось Alexei Sytch 02 апр 2021, 14:21, всего редактировалось 1 раз.

andrey volkov
Сообщения: 290
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: DataBox Plugin

Сообщение andrey volkov » 02 апр 2021, 11:09

Я присоединяюсь к поздравлениям

Это очень круто, это невероятной высоты полет уже.
И что самое важное - это реально полезные и актуальные вещи.
Например, от плагина BE я уже отказался, поскольку в нем нет практически ничего полезного уже, такого, что нельзя сделать силами файлмейкера.

Я присоединяюсь также к просьбе: если не демку, то хотя бы текстовое описание на русском, с примерами, без кода и подробностей, но развернуто. Прямо в этом форуме в топике с готовым решением. Там же и вопросы зададим если что.

Мой первый вопрос таков. Если я сделал выборку через ExecuteSQL к таблице ФМ и сохранил эту выборку посредством плагина в переменную, то могу ли я потом средствами плагина делать SQL запросы уже к этой самой выборке? Хотя файлмейкер автоматически кеширует запросы, но плагин еще больше повысил бы производительность при построении отчетов.
В общем, молодцы ребята. Жизнь и так была интересная, а сейчас станет еще интереснее. Ура!

andrey volkov
Сообщения: 290
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: DataBox Plugin

Сообщение andrey volkov » 02 апр 2021, 11:25

читаю описание.
такое ощущение, что ребята впрягли в файлмейкер функционал языка R :)

Alexei Sytch
Сообщения: 101
Зарегистрирован: 21 сен 2017, 18:48
Откуда: Минск

Re: DataBox Plugin

Сообщение Alexei Sytch » 02 апр 2021, 14:20

Аналогичные впечатления :) скоро и до графиков дойдет. Таблицы html вообще круто

andrey volkov
Сообщения: 290
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: DataBox Plugin

Сообщение andrey volkov » 02 апр 2021, 15:01

да и конвертация произвольной выборки в JSON - это тоже приятная вещь.

я полюбил графики на JS, библиотеки D3 и C3. Вот если бы реализовать выгрузку датасета в Excel, как это делает R, вот это было бы круто
В принципе, круто и сейчас, необходимый минимум имеет место быть.

язык R удивительно живо работает с огромными массивами данных, просто моментально обрабатывает. Интересно, что внутри плагина.
В общем, я бы порадовался паре-тройке примеров из реальной жизни: получение датасета из sql выборки, добавление новых колонок с вычислением, добавление другого датасета, сортировка по конкретному столбцу, фильтр в созданном датасете (если это возможно).
> The DataBox store data in the memory of the computer.
Здесь напрашивается 3 лицо ед. число. Или не напрашивается?
> DB_sApply
в описании в качестве примера приведено только умножение. Хотелось бы видеть максимальный набор применяемых функций и операторов
> DB_Agregate
Returns aggregated value like minimum, maximum, sum or average for dataset or for given range of dataset.
все-таки напрашивается полный правильный список функций. Потому что в описании - "minimum", а в примере - "min"

Аватара пользователя
Arcady
Администратор
Сообщения: 166
Зарегистрирован: 10 сен 2017, 20:45
Контактная информация:

Re: DataBox Plugin

Сообщение Arcady » 03 апр 2021, 19:22

Во-первых спасибо, за теплые отзывы, такое вдохновляет продолжать.

Сайт делать с документаций - это тоже работа, поэтому пока есть то что есть. Но да планируем выложить примеры, и файл с демонстрацией - работаем над этим. Однако все описания и комментарии к примерам планируется делать только на английском - мы хотим "засветить" плагин везде, а поддерживать двуязычную документацию и прочее, у нас столько ресурсов нет. Но вот тут мы пишем русском - задавайте вопросы.

R мы конечно не впрягли, но мы им вдохновлялись, поэтому синтаксис и названий некоторых функций схожи.

Про выборку.
Обратится к данным в датасет используя SQL нельзя. И такое и не планируется - реализовывать обработку SQL в плагине, не подъёмная задача, и главное не нужная. Обращаю внимание, что датасет в Databox в общем виде не таблица, а иерархическая структура - вектор векторов с неограниченной вложенностью (таблица - это частный случай), поэтому SQL тут и не подойдет;
Но выборка по условию планируется, это будет что-то типа subset в R. Ждите в следующих версиях - это первый приоритет в следующих версиях в разработке. А пока для поиска в векторе можно использовать DB_GetIndexByValue. И еще есть sApply - универсальный механизм на все случаи

Про графики
Скорее нет. Можно конечно подумать о том чтобы встроить какую-то из js библиотек и выдавить подготовленный html, но большого смысла пока не вижу. Разных js библиотек туча, у каждой свои фишки но и свои ограничения, что не встрой кому-то обязательно будет чего-то не хватать.
Зато у нас есть функция DB_GetDataSetAsJSON как раз чтобы забрать данные и вставить html страницу с js и с любимой js-библиотекой на борту.

Про таблицы  html
Это наша гордость и килллер-фича ;) Но описание, пока не очень подробное, планируем сделать несколько примеров, показывающих как это работает. Так что, не уверен, что "всю мощь" этого иструмента можно оценить без примеров. Заинтрегую тех, кто глубоко не вникал:
- Можно настраивать оформление, и для строк и для колонок.
- Можно настроить hover (подсветка строки при движении мышью).
- Можно настроить клик и вызов скрипта FileMaker как на строку, так и на ячейку.
- Можно встроить свою js-функцию вызываемую при отрисовке ячейки. Это позволяет менять оформления ячейки по условию (то есть аналог condtinional в FileMaker) и вообще заменить содержимое ячейки на что угодно (аккуратней с этим ;) )
- Можно делать вложенные таблицы. Датасет - это еще раз иерархия, так что вложенный вектор, рассматривается как при формировании html как таблица в ячейке. При этом вложенная таблица имеет собственные настройки оформления
- А значит можно ( грамотно используя DB_Group и возможно DB_sApply (подсчет подитогов, например) формировать сгруппированные таблицы, аналогично list-view c  subsummary в FileMaker. Вложенность опять же не ограниченная.
- Можно включить/отключить хедер - отдельно как для основной так и дочерних таблицах
- Можно задавать пользовательские заголовки колонок, а можно не задавать и это будут имена датасетов
- Можно задать формат отображения числовых полей и дат/времени/таймштампов
Короче если не полный то почти полный контроль за отображениям данных

Про другое
Выгружать в Excel не планируем, есть решения. Опять же в R все отработано давно. Сохранять в csv наверное добавим, чтобы гонять данные туда сюда и не дергать ФМ-функции

Сортировка сейчас только одномерных векторов, но сортировку всей таблицы по столбцу добавим в следующих версиях

Новые колонки добавляйте в любой момент. Обычно для этого используется DB_MoveDataSet

В выражение DB_sApply вы можете использовать любое выражение валидное для FileMaker. По сути это FileMaker калькуляция результат который DB_sApply добавляет результирующий вектор. Это FileMaker Evaluate() выражения для каждого элемента вектора. Так что с помощью Let напихать туда можно все что угодно.

Замечания к самому тексту документации приветствуются, все-таки английский не родной :D . Но следует помнить что в описании может быть использован термин/слово объясняющий что делается, который отличается от названия параметра функции. Поэтому параметр min вычисляет minimum из значений вектора.


А вообще, в этой теме (или может отдельную создать? ) пишите свои пожелания какие функции хотелось бы видеть, а мы будем информировать о наших планах.
Аркадий Перла.
ТриА. Разработка решений для FileMaker
http://tria.pw

andrey volkov
Сообщения: 290
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: DataBox Plugin

Сообщение andrey volkov » 04 апр 2021, 05:36

Спасибо за разъяснения

Документация в целом понятна и вопросов не возникает. Дублировать нет необходимости. Необходимость я вижу в том, чтобы показать максимальное количество кейсов, которые этот плагин умеет решать. А он, навскидку, может помочь в решении широкого круга задач. В этом отношении плагин получился удачным, я думаю, он найдет признание у пользователей по всему миру. И вангую: через пару лет все эти фичи Кларис экспроприирует и встроит в очередную мажорную версию файлмейкера. Так всегда бывает, когда что-то стоящее в плагинах реализуется.
А вообще, в этой теме (или может отдельную создать? ) пишите свои пожелания какие функции хотелось бы видеть, а мы будем информировать о наших планах.
1) сохранение субсета как датасета, а не текстовой таблицы. То есть аналог MiddleValues в файлмейкере и DB_GetDataSetAsTextTable в плагине то есть с параметрами start и end. Но только результатом должен быть не текст, а датасет-таблица.

2) если не сложно, то модифицировать функцию
DB_Seq ( "date" ; "date" ; Date ( 12 ; 25 ; 2021 ) ; Date ( 01 ; 10 ; 2022 ) ; 1 )

в последнем параметре чтобы была возможность указывать 1d, 1w, 1m
Смысл, наверное, понятен, Но если это сложно, то и хрен с ним.

3) хотелось бы иметь возможность удалять отдельные строки (кортежи) целиком из датасета. Или такая возможность уже сейчас есть? Мне кажется, удаление строк противоречит самой идеологии, на которой все построено. Или я ошибаюсь.

4) сортировка строк в таблице желательна, но не в приоритете по сравнению с предыдущими.

5) сохранение в виде csv было бы полезной фичей, хотя и не приоритет.

6) графики лично мне не интересны.

7) в первой версии плагин уже содержит достаточно полезных функций и я готов применять, не дожидаясь дополнений.

- Можно делать вложенные таблицы. Датасет - это еще раз иерархия, так что вложенный вектор, рассматривается как при формировании html как таблица в ячейке. При этом вложенная таблица имеет собственные настройки оформления
- А значит можно ( грамотно используя DB_Group и возможно DB_sApply (подсчет подитогов, например) формировать сгруппированные таблицы, аналогично list-view c subsummary в FileMaker. Вложенность опять же не ограниченная.
если вы не выложите пример создания такой иерархической хтмл таблицы (без оформления демки) в ближайшие дни, ваша карма начнет портиться. Я первым делом присмотрел плагин для решения именно таких задач: создания сгруппированных разворачивающихся хтмл-таблиц.
Но я это видел как: находим количество уникальных групп в датасете. Создаем заголовок группы, добавляем к нему субсет, создаем следующую строку - заголовок следующей группы, добавляем ниже субсет с данными по этой группе. И так далее
У вас какое-то более хитрое решение?

Аватара пользователя
mihalych_2017
Сообщения: 38
Зарегистрирован: 11 сен 2017, 15:36
Откуда: Подольск
Контактная информация:

Re: DataBox Plugin

Сообщение mihalych_2017 » 05 апр 2021, 07:28

Супер! Присоединяюсь к поздравлениям!
Потестить еще пока не успел, но крайне заинтересовался.
Шичко Игорь
FileMaker Developer & Programmer Delphi
https://igorshichko.wordpress.com/

andrey volkov
Сообщения: 290
Зарегистрирован: 11 сен 2017, 13:42
Откуда: Санкт-Петербург

Re: DataBox Plugin

Сообщение andrey volkov » 05 апр 2021, 16:22

Потестить еще пока не успел,
а я успел :)

за полтора часа неспешно собрал функционал логирования PSOS - скриптов, исполняемых на сервере.
название БД, аккаунт, название скрипта, начало выполнения, время завершения. (сейчас хочу еще добавить время выполнения в секундах)
все, что в течение дня запускалось, все видно в отчете в виде html

PS/ Запускается много всего. В том числе "тяжеловесные" скрипты. Плюс на сервере крутится FileMaker Pro, который ловит задачи, добавленные в таблицу и выполняет эти задачи последовательно. Периодически у пользователей начинает все медленно работать. Теперь сможем разобраться, что у нас с загрузкой сервера.
Удобство в том, что у нас нет необходимости связывать все базы данных, чтобы писать лог в какую-то общую таблицу. Что же касается записи лога в текстовый файл, то это провальная затея вообще.
я в восторге.

на очереди - отслеживание progress исполняемых на сервере скриптов с длительным циклом. Чтобы пользователь не просто ждал завершения, а видел прогресс чтобы.

Ответить