Рубрики
Без рубрики

Правление в реальном времени Канбан с Vue.js и Hamoni Sync

Узнайте, как построить доску в реальном времени в Vue.js.

Автор оригинала: Peter Mbanugo.

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

Следовать вдоль того, что вам нужно иметь знания о Vue и его Один файловый компонент Отказ Вам также понадобится следующие инструменты:

  1. Node.js & npm (следуйте этим ссылка для загрузки установщика для вашей ОС)
  2. Vue Cli. Если у вас нет этого, запустите NPM Установить -G Vue-CLI В командной строке, чтобы установить ее.

Если у вас нет знаний о VUE, вы можете прочитать мой Предыдущий пост прежде чем продолжить с этим.

Мы настроим проект, используя Vue CLI, который представляет собой простой интерфейс командной строки (CLI) для проектов Scaffolting Vue.js. Откройте терминал и запустите Vue init Webpack-Simple Realte-Kanban-Board Отказ Вы получите некоторые подсказки, примите значения по умолчанию, нажав Enter и выберите y Когда спросили, хотите ли вы использовать Саас Отказ Перед запуском команды вы можете изменить Realtime-Kanban-Board к вашему предпочтительному названию проекта. Как только это установлено, запустите следующую команду, чтобы установить зависимости от шаблона лесов:

cd realtime-kanban-board
npm install

Мы будем использовать Vue-kanban В качестве компонента платы Канбана с функциями перетаскивания. Мы также будем использовать Hamoni Sync хранить и синхронизировать состояние приложения в режиме реального времени. Они оба на NPM, и мы устанавливаем их, запустив следующую команду:

npm install vue-kanban hamoni-sync

Нам нужны дополнительные пакеты для Babel. Установите их, запустив следующую команду:

npm install --save-dev babel-plugin-transform-runtime babel-preset-stage-2

Мы подкрепили приложение, которое теперь содержит необходимые файлы для запуска приложения. Откройте файл src/app.vue с вашим текстовым редактором (или IDE) и замените его содержимое следующим образом:






Код выше использует Канбан-доска Компонент с 2 реквизитами, Этапы и Блоки Отказ Этапы Опреры определяют колонны для доски, а Блоки Содержит данные, представляющие элемент задач, размещенного на столбце. @ Обновление-блок Мероприятие срабатывает, когда блок перемещается с одного этапа в другую. Мы будем использовать это событие для обновления доски в режиме реального времени.

Мы добавили необходимый код для оказания доски Kanban на страницу. В этом разделе мы настроим Hamoni Sync Хранить и синхронизировать данные для Блоки Отказ Hamoni Sync – это услуга, которая позволяет синхронизировать состояние вашего приложения в режиме реального времени.

Чтобы использовать Hamoni Sync, нам нужно инициатировать его и подключиться к серверу Hamoni. Для этого нам нужна учетная запись и идентификатор приложения. Выполните следующие шаги, чтобы создать приложение в Hamoni.

  1. Зарегистрируйтесь и войдите в Hamoni приборная панель
  2. Введите предпочтительное имя приложения в поле Text и нажмите кнопку Создать. Это должно создать приложение и отображать его в разделе списка приложений.
  3. Развернуть Идентификатор аккаунта карта, чтобы получить свой аккаунт
Hamoni Dashboard

Добавьте следующий код в App.vue на линии 35.

mounted: function() {
  const accountId = "YOUR_ACCOUNT_ID";
  const appId = "YOUR_APP_ID";
  let hamoni;

  fetch("https://api.sync.hamoni.tech/v1/token", {
    method: "POST",
    headers: {
      "Content-Type": "application/json; charset=utf-8"
    },
    body: JSON.stringify({ accountId, appId })
  }).then(token => {
    hamoni = new Hamoni(token);

    hamoni
      .connect()
      .then(() => {
      hamoni
        .get("board")
        .then(listPrimitive => {
          this.listPrimitive = listPrimitive;
          this.blocks = listPrimitive.getAll();
          listPrimitive.onItemUpdated(item => {
          this.blocks.splice(item.index, 1, item.value);
          });
        })
        .catch(error => {
          if (error == "Error getting state from server") {
          hamoni
            .createList("board", blocks)
            .then(listPrimitive => {
              this.listPrimitive = listPrimitive;
              this.blocks = listPrimitive.getAll();
              listPrimitive.onItemUpdated(item => {
              this.blocks.splice(item.index, 1, item.value);
              });
            })
            .catch(console.log);
          }
        });
      })
      .catch(console.log);
  });
  }

Добавьте следующее до закрытия тег:

const blocks = [
  {
    id: 0,
    status: "approved",
    title: "Buy coffee machine"
  },
  {
    id: 1,
    status: "in-progress",
    title: "Find better AirBnB options"
  },
  {
    id: 2,
    status: "on-hold",
    title: "Approve Q3 budget"
  },
  {
    id: 3,
    status: "approved",
    title: "Travel to Colombia"
  },
  {
    id: 4,
    status: "needs-review",
    title: "Add Redux to the app"
  },
  {
    id: 5,
    status: "approved",
    title: "Well, Sleep all day 👩‍🎤"
  },
  {
    id: 6,
    status: "in-progress",
    title: "Find language exchange partner"
  }
];

Мы инициализировали его, позвонив Новый Hamoni (токен); с токеном, полученным из токена синхронизации. Рекомендуется вызывать Sync Token Server с вашего бэкэнда и отправка токена ответа на клиентское приложение. Для этого примера я буду держать их всех в одном месте.

Замените строковые заполнители с помощью своей учетной записи и идентификатор приложения, который вы получите от Dashboard Hamoni. Затем мы подключили приложение, используя hamoni.connect () Отказ Мы получили данные, позвонив hamoni.get () С именем состояния приложения, хранящегося на синхронизации Hamoni. Если оно пока не существует, мы создадим его, а затем добавьте функцию, чтобы обновить состояние Vue, когда элемент обновляется. Это достигается, позвонив OniteMupdated () С кодом для обновления Блок на item.index Отказ Hamoni Sync предоставляет тому, что называется Список примитив Что мы использовали здесь, позвонив hamoni.createlist () и проезжая его массив.

Теперь нам нужно обновить состояние на Hamoni, когда блок перемещается с одного этапа в другую. Мы обновим функцию updateblock (идентификатор, статус) который мы добавили ранее

methods: {
    updateBlock(id, status) {
        let block = this.blocks[id];
        this.listPrimitive.update(id, { id, title: block.title, status });
    }
},

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

Это все код, необходимый. Теперь запустите приложение, запустив NPM запустить dev из командной строки, и это запустит веб-приложение в вашем браузере по умолчанию.

Realtime-Kanban-Vue.gif

Там у вас есть в реальном времени в реальном времени в Канбанском доске.

Таким образом, мы построили плату в реальном времени, используя Sync Vue-Kanban и Hamoni. Hamoni Sync позволяет легко интегрировать функции в реальном времени в ваших приложениях. Вы можете получить завершенный код на Github Отказ Счастливое кодирование! 👍.

Благодаря Эндрюдж и Подарок для рассмотрения этого поста.