GSoC 2022 CircuitVerse | Отчет за 5 и 6 неделю


В течение этих двух недель я работал над:

  • Назначение Ограничение PR.
  • POC для еженедельного конкурса.
  • Некоторые мелкие ошибки и документирование.
  • Улучшение страницы уведомлений (интеграция Noticed gem).

Ограничение заданий.

У нас уже есть ограничение элементов для задания, т.е. ограничение членов группы в использовании элементов для проекта. 
Но мы получили довольно много жалоб от преподавателей, что CircuitVerse позволяет легко жульничать. Например, пользователи могут легко скопировать/вставить любую общедоступную схему. Они могут предоставить соавторам доступ к своей собственной схеме и копировать/вставлять и т.д. Поэтому профессора попросили отключить эту функцию.

Реализация

Аналогично реализации ограничения элементов, я сделал колонку типа jsonb с именем feature_restrictions, которая будет хранить все выбранные ограничения функций.
В форме задания я сделал выпадающую секцию select-options, аналогичную ограничениям элемента.

Таким образом, на странице проекта есть 2 ограничения характеристик, а в симуляторе — 2. Итак, на странице проекта сначала я присваиваю идентификаторы соответствующим кнопкам функций, чтобы получить к ним доступ в JS с помощью манипуляций DOM, и я просто сделал это:

<% if @project&.assignment_id.present? && @project.assignment.feature_restrictions %> {
      let restricted_feature = '<%= @project.assignment.feature_restrictions %>';
      if(restricted_feature.includes('Allow Collaborators')) 
    {
        $('#collaboration_button').attr("style", "display:none")
      }
      if(restricted_feature.includes('Copy / Paste')) {
        $('#copy_paste').attr("style", "display:none")
      }
    }
<% end %>
Войти в полноэкранный режим Выйти из полноэкранного режима

и для симулятора, я аналогично сделал следующее:

<% if @project&.assignment_id.present? && 
   @project.assignment.feature_restrictions %>
   let restricted_feature = '<%= @project.assignment.feature_restrictions %>'
   if(restricted_feature.includes('Combinational Analysis Tool')) {
     $('#createCombinationalAnalysisPrompt').attr("style", "display:none")
     }
   if(restricted_feature.includes('Verilog tools')) {
     $('#generateVerilog').attr("style", "display:none")
     }
<% end %>
Войти в полноэкранный режим Выйти из полноэкранного режима

Вот и весь краткий обзор реализации.

И как я могу забыть о самом интересном:


POC для еженедельного конкурса

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

Некоторые мелкие ошибки и документирование.

Вот некоторые работы, которые я проделал:

  • feat(api): добавление наставников в группу
  • исправления : сломана функция встраивания
  • документация : Улучшение функции Embed
  • [документирование] : Поддержка нескольких наставников

Улучшение страницы уведомлений (интеграция уведомлений)

В настоящее время CircuitVerse использует гем activity_notification для уведомлений, но этот гем больше не поддерживается, и страница уведомлений сильно отстает. Поэтому мы решили заменить этот гем и нашли гем noticed, созданный Крисом Оливером из Gorails.

PR

UI

  • Уведомления на панели навигации

  • Страница уведомлений

Прогресс

  • Завершена начальная интеграция и настройка.
  • События уведомлений рассмотрены:
    • Звезда
    • Вилка
  • UI
  • Функциональность вкладок
  • Быстрый доступ к уведомлениям на панели навигации.

В ожидании

  • Миграция данных.
  • Очистка
  • дизайн пользовательского интерфейса figma все еще находится в процессе разработки.

План на следующую неделю

  • Завершение отложенной задачи «Уведомления».

Заключение

Эти две недели были потрясающими, я узнал много нового о rails и получил знания об интеграции новых gem noticed. Узнал об использовании Rails Console. Получил знания об API Rails.

Оцените статью
devanswers.ru
Добавить комментарий