Быстрое создание спецификаций Crestron

... или как я объединил в один проект JavaScript-фреймворк qooxdoo, JSON, MySQL и библиотеку PHPExcel.

Прогрессом как известно движет лень и я на 100% согласен с этим утверждением! У меня всегда возникает желание максимально автоматизировать любую рутинную, механическую работу и оставить в ней только творческую составляющую. Именно поэтому я всегда хотел иметь простой инструмент, с помощью которого можно было бы легко составлять спецификации, в моем случае спецификации Crestron.

Как это часто бывает, я несколько раз брался за программирование и начинал писать код, даже толком не представляя, как его можно реализовать и как в результате все должно работать. Первый раз брался году этак в 2006. Я хотел использовать базовые знания JavaScript, PHP и возможно MySQL. Все в чистом виде, целиком и полностью используя только свой код. Код начал получаться каким-то громоздким, энтузиазм поубавился и идея отошла на будущее.

И снова же, как это часто бывает, все встало на свои места с появлением в пределах досягаемости новых правильных инструментов. Для меня таким новым инструментом стал JavaScript-фреймворк qooxdoo. Это свободный проект с открытым исходным кодом, целиком написанный на JavaScript, который позволяет начать творить интерактивное веб-приложение уже буквально через несколько часов знакомства. Примеры возможностей фреймворка можно найти на том же сайте, ну или просто по ссылке.

Как выглядит мой результат, можно увидеть на скриншоте:

В левой части веб-приложения описаны категории оборудования Crestron. Внутри выбранной категории можно добавлять оборудование в список справа. В случае небходимости добавить несколько позиций, можно нажать на кнопку несколько раз или дважды щелкнуть в поле "колич." и ввести новое значение. Удалить позицию можно щелкнув на крестик в поле "удалить". Позиции в списке можно перемещать методом drag and drop. Далее нужно ввести ожидаемую скидку и наценку и нажать на клавишу "Получить спецификацию". Спецификация из нескольких позиций будет доступна для скачивания через 5-10 секунд.

Технически, формирование списка оборудования целиком и полностью происходит внутри qooxdoo. После нажатия на клавишу "Получить спецификацию" все поизиции из списка упаковываются в строку в формате JSON, которая и передается в асинхронном POST-запросе PHP-скрипту generate.php. Скрипт проходит по списку оборудования и с помощью библиотеки PHPExcel создает стандартный файл Excel. Дополнительные данные (описание и цена) скрип берет из БД MySQL. После завершения работы скрипт сохраняет файл Excel на сервере и возвращает в qooxdoo имя файла. Теперь в qooxdoo создается фрейм за пределами видимого экрана, в который подгружается PHP-скрипт show.php, который генерирует нужные HTTP- заголовки и выдает файл Excel в браузер, в результате чего и появляется заветное меню "Открыть, сохранить...".

Вне описания остался PHP-скрипт, который позволяет автоматизировать обновление цен в БД. Здесь используется библиотека PHPExcelParser.

Веб-приложение доступно по ссылке "Быстрое создание спецификаций Crestron". Тестируйте с помощью Opera или Chrome (мой корпоративный IE почему-то глючит).

P.S. Пишите в комментариях мысли о том, как по вашему мнению его можно улучшить.

  1. Артем RedChief

    Понравилось! Может добавить возможность загружать в базу оборудование, которого там еще нет? С предмодерацией, скажем, или только доверенным пользователям.

    • Эльдар Аблаев

      Артем! Технически я импортировал в базу данных все доступные партномера из прайса и загрузил все доступные фотографии с сайта Crestron. Сейчас это 2375 партномеров и 771 фотография. Добавить любую позицию достаточно легко и просто. Прадлагай нужные закладки и позиции прямо здесь.

  2. Артем RedChief

    А еще было бы приятно, если при добавлении к AV2 карточки C2COM-3, в спеку автоматически попадал бы CAGE2. Ну или у пользователя спрашивали, может ему добавить эту штуку, потому как на борту ее нет. Ну, короче говоря, зависимости какие-нить чтобы указвались. Например заказываешь TPMC-V15, а он тебе говорит "Без контроллера AV2 эта панель не будет нормально работать. Добавим контроллер? (да/нет)" 🙂

    Хотя объективно... Специалисты знают, что надо добавить в спеку, чтобы работало. А неспециалисты вряд-ли поймут, что это за приложение.

    • Эльдар Аблаев

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

      С другой стороны ты прав, что специалисты конечно же знают, что добавлять в спеку.

      В качестве компромиссного решения уже сейчас можешь зайти, например, на закладу "контроллеры" и увидеть, что в секции AV2 есть совет добавить CAGE2, напротив CP2E есть совет добавить PW-2420RU, а QMI-RMC KIT предлагается дополнить ST-RMK.

  3. Черников Андрей

    Эх, такой бы скриптик в начале моей карьеры 🙂 я бы приплачивал! Можно коллегам из параллельных отделов советовать, чтобы не приставали.

    • Эльдар Аблаев

      Можно! Главное объясни, что за цены и результат ответственность несут сами 🙂

  4. Андрей Байков

    Удобно! Можно добавить 3ю серию уже. mc3 и cp3 в прайсе есть

Написать ответ


[ Ctrl + Enter ]