Использование Spreadsheetcloudapi Для Написания Приложений И Облегчения Вашей Жизни

Всем привет! У нашей команды есть хобби — мы любим 3D-печать.

И мы не просто любим, а активно печатаем всё и вся — от простых игрушек для стола до деталей, которые даже не продаются в Китае.

Каждый в нашей комнате хоть раз что-то печатал.



Использование SpreadsheetCloudAPI для написания приложений и облегчения вашей жизни

В этой статье я хотел бы поделиться нашим опытом решения проблемы покупки пластика для принтера и тем, как нам в этом помог сервис SpreadsheetCloudAPI. Подробности под катом.

Как обычному принтеру нужны чернила, так и 3D-принтеру нужен пластик.

Изначально мы печатали пластиком, который идет в комплекте с принтером.

Потом скинулись поровну и купили кучу разноцветных катушек.

Однако все печатают в разных объемах, и скидываться в будущем поровну было бы нечестно.

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

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

В результате пользоваться этим файлом Excel стало ужасно неудобно.

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

В процессе обдумывания идеи приложения мы натолкнулись на сервис, который будет написан нашими клиентами с использованием нашего собственного Сервера документов электронных таблиц: Электронная таблицаCloudAPI .

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

Плюс это бесплатно.

Итак, что нам нужно получить от приложения:

  • Ввод и редактирование информации для печати,
  • Возможность добавления новых пользователей,
  • Возможность добавления новых материалов для печати (печатать можно из разных пластиков и все они имеют разную цену),
  • Ну и самое главное, покажите расчет, кто сколько денег должен пожертвовать на следующую покупку.

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

Использование SpreadsheetCloudAPI для написания приложений и облегчения вашей жизни

Да, он не изящный, но продавать его мы тоже не собираемся.

И это вполне соответствует нашим потребностям.



Расчет стоимости

Основная проблема при расчете стоимости заключалась в том, что пластик продается килограммами, а расходуется метрами.

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

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

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

Все! Если знать характеристики пластика, то вес можно легко рассчитать самостоятельно.

И да, все это можно сделать в том же файле Excel, не написав ни единой строчки кода! Данные о имеющихся материалах мы храним на отдельном листе, а формула расчета веса берет их оттуда.



Выполнение



Бэкэнд

По сути, наш бэкенд не будет ничего делать, кроме как общаться с сервисом SpreadsheetcloudAPI: он передает ему введенные данные, а пересчитанные части документа получает обратно.

Для реализации серверной части был выбран PHP. Для связи с сервисом нам нужны всего три параметра:

Для удобства использования мы собрали их все в один класс:
  
  
   

class PrivateConst { const Base_Url = ' http://spreadsheetcloudapi.azurewebsites.net/api/spreadsheet '; const API_KEY = 'API_KEY'; const File_Name = '3D.xlsx'; }

Связь с сервисом будет осуществляться через веб-API. В принципе, API там довольно простое и хорошо документированное.

Например, чтобы добавить ячейки в таблицу (что нам нужно при создании новой записи для печати), нам просто нужно отправить JSON, например:

{ "id": "some_id", "filename": "test", "extension": "xls", "sheetindex": 0, "sheetname": "Sheet1", "startrowindex": 0, "startcolumnindex": 0, "endrowindex": 3, "endcolumnindex": 5, "mode": "ShiftCellsDown", "formatmode": "FormatAsPrevious" }

в /api/spreadsheet/insertcells через запрос PUT. При получении данных нам даже удалось схитрить, так как сервис сам может выдать нам нужные ячейки в формате HTML ( Экспорт в HTML ).

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

Получить этот HTML тоже не сложно:

function getSessionHtml($id, $sheetName, $rowLimit, $columnLimit){ $params = array( 'id' => $id, 'sheetname' => $sheetName, ); if($rowLimit > -1){ $params['endrowindex'] = $rowLimit; } if($columnLimit > -1){ $params['endcolumnindex'] = $columnLimit; } $request = get($params, '/exporttohtml'); return $request; }

где get — наш метод, который отправляет GET-запрос с переданными параметрами на переданный адрес.

Среди параметров этих методов есть $id — идентификатор сеанса загруженного файла.

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



Внешний интерфейс

Как я уже писал, данные мы получаем от сервиса SpreadsheetCloudAPI в виде готового HTML. При экспорте данные представляют собой таблицу, и для редактирования этих данных нам нужно будет лишь обработать клик по ячейке таблицы и прикрепить к ней нужный нам редактор.

Для редактирования значений используем «Ввод», для выбора значений из существующих «Выбрать».

При создании нового сеанса печати нам нужно будет выбрать имя пользователя, название материала и ввести значение длины:

Использование SpreadsheetCloudAPI для написания приложений и облегчения вашей жизни

Конечно, данные можно редактировать:

Использование SpreadsheetCloudAPI для написания приложений и облегчения вашей жизни

Колонка «Стоимость» редактироваться не будет; он будет рассчитан непосредственно на сервисе и заполнен при экспорте.

На вкладке «Материалы» никакие расчеты не производятся, мы лишь задаем значения:

Использование SpreadsheetCloudAPI для написания приложений и облегчения вашей жизни



Использование SpreadsheetCloudAPI для написания приложений и облегчения вашей жизни

На вкладке «Пользователи» единственный параметр, который мы будем создавать и изменять, — это имя пользователя.

Столбец «Полная стоимость» будет расчетным и не предназначен для редактирования.

В качестве вишенки на торте мы решили показать диаграмму, которая четко показывает, кто у нас самый большой машинист. График тоже рисуется в Excel, и мы просто загружаем его с картинкой из сервиса.



Использование SpreadsheetCloudAPI для написания приложений и облегчения вашей жизни

Вот и все.

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

Теги: #веб-разработка #php #таблица #3-D печать #Excel #диаграмма #облако #разработка веб-сайтов

Вместе с данным постом часто просматривают: