Espruino:Примеры/Кастомизация приложений для Bangle.js: различия между версиями

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску
(Новая страница: «{{Espruino/Панель перехода}} {{Перевод от Сubewriter}} {{Myagkij-редактор}} =<ref>[ www.espruino.com - ]</ref>= <syntaxhighligh...»)
 
Нет описания правки
Строка 3: Строка 3:
{{Myagkij-редактор}}
{{Myagkij-редактор}}


=<ref>[ www.espruino.com - ]</ref>=
=Кастомизация приложений для Bangle.js<ref>[https://www.espruino.com/Bangle.js+Custom  www.espruino.com - Bangle.js App Customiser]</ref>=


В загрузчике приложений некоторые приложения можно кастомизировать перед загрузкой. Здесь мы объясним, как это сделать.


<syntaxhighlight lang="javascript" enclose="div">
Это руководство написано с расчётом на то, что вы уже прошли [https://www.espruino.com/Bangle.js+App+Loader вот это руководство], где объясняется, как добавить приложение в загрузчик приложений [[Bangle.js]], и знаете, что нужно делать для того, чтобы предложить своё приложение на рассмотрение, а также уже имеете на руках приложение, которое можно кастомизировать.


Идея кастомизатора крайне проста. Вы создаёте веб-страницу, которая будет помогать пользователю кастомизировать его приложение. Эта страница будет появляться после клика по кнопке в загрузчике приложений, а после завершения кастомизации эта веб-страница предоставит загрузчику приложений список файлов, которые нужно загрузить на [[Bangle.js]].
Давайте создадим простое приложение, которое будет показывать текст, введённый на [[HTML]]-странице.
Поэтому для начала нам нужен [[HTML]]-файл. Он содержит в себе пару базовых вещей – [[CSS]]-файл со стилями, чтобы оформление нашей страницы соответствовало оформлению загрузчика приложений, и библиотека, которая будет помогать в коммуникации с загрузчиком приложений.
Создайте в папке своего приложения файл под названием ''«custom.html»'' и добавьте в него:
<syntaxhighlight lang="html5" enclose="div">
<html>
  <head>
    <link rel="stylesheet" href="../../css/spectre.min.css">
  </head>
  <body>
    <p>Some text: <input type="text" id="mytext" class="form-input" value="http://espruino.com"></p>
    <p>Click <button id="upload" class="btn btn-primary">Upload</button></p>
    <script src="../../core/lib/customize.js"></script>
    <script>
      // После клика на кнопку загрузки...
      document.getElementById("upload").addEventListener("click", function() {
        // берём текст, который надо добавить:
        var text = document.getElementById("mytext").value;
        // создаём текст приложения при помощи шаблонной строки:
        var app = `
var txt = ${JSON.stringify(text)};
g.clear(1);
g.setFontAlign(0,0);
g.setFont("6x8");
g.drawString(txt,120,120);
`;
        // отправляем готовое приложение
        // (вдобавок к содержимому «app.json»):
        sendCustomizedApp({
          storage:[
            {name:"myapp.app.js", url:"app.js", content:app},
          ]
        });
      });
    </script>
  </body>
</html>
</syntaxhighlight>
</syntaxhighlight>
Теперь редактируем [[JSON]]-файл своего приложения и прямо перед ''"storage"'' добавляем строчку '''"custom": "custom.html"'''.
Поскольку теперь мы загружаем [[JS]]-файл своего приложения напрямую, мы также можем заменить '''{"name":"myapp.app.js", "url":"app.js"}''' на '''{"name":"myapp.app.js"}''', удалив исходный файл приложения '''app.js'''.
'''Примечание:''' Мы задаём в sendCustomizedApp() фрагмент '''url:"app.js"''' для [[JS]]-файлов – независимо от того, существует ли файл [[app.js]] и был ли он вообще загружен. С помощью этого фрагмента загрузчик приложений понимает, что это [[JavaScript]]-файл (по его расширению), и соответственно, может уменьшить и токенизировать его.
Что ж, теперь всё готово! Запустите загрузчик приложений и сможете начать кастомизировать своё приложение.
'''Примечание:''' Здесь мы каждый раз создаём полноценный [[JS]]-файл своего приложения, но особой нужды в этом нет. Например, [https://github.com/espruino/BangleApps/tree/master/apps/openstmap приложение OpenStreetMap] загружает из файла текст приложения, а потом просто загружает дополнительные [[JSON]]-файлы и текст.


=См.также=
=См.также=

Версия от 18:33, 3 марта 2021

Перевод: Максим Кузьмин
Проверка/Оформление/Редактирование: Мякишев Е.А.


Кастомизация приложений для Bangle.js[1]

В загрузчике приложений некоторые приложения можно кастомизировать перед загрузкой. Здесь мы объясним, как это сделать.

Это руководство написано с расчётом на то, что вы уже прошли вот это руководство, где объясняется, как добавить приложение в загрузчик приложений Bangle.js, и знаете, что нужно делать для того, чтобы предложить своё приложение на рассмотрение, а также уже имеете на руках приложение, которое можно кастомизировать.

Идея кастомизатора крайне проста. Вы создаёте веб-страницу, которая будет помогать пользователю кастомизировать его приложение. Эта страница будет появляться после клика по кнопке в загрузчике приложений, а после завершения кастомизации эта веб-страница предоставит загрузчику приложений список файлов, которые нужно загрузить на Bangle.js.

Давайте создадим простое приложение, которое будет показывать текст, введённый на HTML-странице.

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

Создайте в папке своего приложения файл под названием «custom.html» и добавьте в него:

<html>
  <head>
    <link rel="stylesheet" href="../../css/spectre.min.css">
  </head>
  <body>

    <p>Some text: <input type="text" id="mytext" class="form-input" value="http://espruino.com"></p>
    <p>Click <button id="upload" class="btn btn-primary">Upload</button></p>

    <script src="../../core/lib/customize.js"></script>

    <script>
      // После клика на кнопку загрузки...
      document.getElementById("upload").addEventListener("click", function() {
        // берём текст, который надо добавить:
        var text = document.getElementById("mytext").value;
        // создаём текст приложения при помощи шаблонной строки:
        var app = `
var txt = ${JSON.stringify(text)};
g.clear(1);
g.setFontAlign(0,0);
g.setFont("6x8");
g.drawString(txt,120,120);
`;
        // отправляем готовое приложение 
        // (вдобавок к содержимому «app.json»):
        sendCustomizedApp({
          storage:[
            {name:"myapp.app.js", url:"app.js", content:app},
          ]
        });
      });

    </script>
  </body>
</html>

Теперь редактируем JSON-файл своего приложения и прямо перед "storage" добавляем строчку "custom": "custom.html".

Поскольку теперь мы загружаем JS-файл своего приложения напрямую, мы также можем заменить {"name":"myapp.app.js", "url":"app.js"} на {"name":"myapp.app.js"}, удалив исходный файл приложения app.js.

Примечание: Мы задаём в sendCustomizedApp() фрагмент url:"app.js" для JS-файлов – независимо от того, существует ли файл app.js и был ли он вообще загружен. С помощью этого фрагмента загрузчик приложений понимает, что это JavaScript-файл (по его расширению), и соответственно, может уменьшить и токенизировать его.

Что ж, теперь всё готово! Запустите загрузчик приложений и сможете начать кастомизировать своё приложение.

Примечание: Здесь мы каждый раз создаём полноценный JS-файл своего приложения, но особой нужды в этом нет. Например, приложение OpenStreetMap загружает из файла текст приложения, а потом просто загружает дополнительные JSON-файлы и текст.

См.также

Внешние ссылки