Giter VIP home page Giter VIP logo

magnit's People

Contributors

dependabot[bot] avatar fenyagg avatar maria-kanyushkova avatar pechischev avatar sg-omega-r avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

magnit's Issues

Сквозной index для questions

Для всех questions общий index


Имеется ввиду то, что если создать вопрос в секции, а потом в группе, будет два вопроса с индексом 1

У всех вопросов должен быть общий index

Это можно сделать путём создания общего состояния в TemplateEditor и передачи этого состояние в QuestionItemPuzzle, который будет на mount (useEffect без dependencies) инкрементировать счётчик, а на unmount (возвращаемая функция в useEffect) декрементировать

Удаление вопроса/группы/секции

Краткий алгоритм действий:

  • Добавить в компонент PuzzleToolbar обработчик onDeletePuzzle

  • В обработчике вызвать traverse (обходчик дерева), и проверить что текущий объект содержит в свойстве puzzles (если свойство puzzle есть) пазл с id равный focusedPuzzleId, где focusedPuzzleId это head(focusedPuzzleChain)

  • Если объект найден, удалить из массива (puzzles.splice(foundPuzzleIndex, 1))


P.S.
Нужно не допускать удаление корня дерева!

P.P.S
Пример дерева можно посмотреть в консоли через window.template

Неправильное форматирование

packages/template-editor/src/items/question-puzzle/QuestionFactory.tsx

image

Рекомендации к исправлению:

Ctrl+Alt+Shift+P

либо

Ctrl+Shift+A -> Prettier -> выбрать Reformat with Prettier

Копипаст обработчиков onFocus/onBlur

Реализовать conditions

image

TODO:

  • Conditions для вопросов

  • Добавление conditions

  • Выбор condition type

  • Сохранение в template

После этой #20

Обновления в работе редактора

  • В раздел можно добавить вопрос

  • Группа может указывать только на один вопрос

  • У группы нет title

  • Группа всегда содержит conditions

  • Scope видимости conditions

  • если в group - текущий group

  • если в section - текущий section

ClickableBlock не соответствует своей семантике

Рекомендации:

Либо получать нужные для выделение обработчики через контекст (можно исползовать хук useContext, это удобнее чем Consumer/Provider), либо забить и переименовать на <ЕщёОдинКакойТо>Wrapper

P.S.

ИМХО лучше сохранить семантику clickable и взять по контексту

Как отчищать focusedPuzzleChain если не на blur?

В #10 убирается прежнее поведение blur

Было:

if (isOverToolbar) {
    event.preventDefault();
    event.stopPropagation();
} else {
    setFocusedPuzzleChain([]);
}

Стало:

event.preventDefault();
event.stopPropagation();

Где теперь вызывать setFocusedPuzzleChain([]);? 🤔

Рефакторинг CustomButton

  • Использует цвета из темы, но не используют саму тему

  • scheme не типизирован

  • Должен называться просто Button

Разные типы вопросов

  • RADIO_ANSWER

  • CHECKBOX_ANSWER

  • DROPDOWN_ANSWER

  • REFERENCE_ANSWER ❓ (пока решили не делать, сложно)

  • UPLOAD_FILES ❓ (пока решили не делать, сложно)

  • DATE_ANSWER

  • TEXT_ANSWER

  • NUMERIC_ANSWER

image

Рефакторинг Button

  • Не должен принимать title (контент в children)

  • Не должен принимать icon (контент в children)

  • Дублирующийся css в variants

Сборщик мусора для пазлов

После обновления шаблона может оказаться так, что с некоторыми пазлами связь потеряна. Их нужно определять, помечать и удалять.

P.S.

То же самое нужно проделать для ассетов

Баг с группой и вопросом 🐛

Шаги:

  1. Создать вопрос с типом Несколько из списка
  2. Создать группу, ссылающуюся на этот вопрос
  3. Изменить название вопроса
  4. Перевести фокус на группу

Ожидание:
В группе изменится название вопроса

Реальность:
Название вопроса остаётся предыдущим

Не хватает jsx pragma

  • packages/template-editor/src/items/text-answer-puzzle/TextAnswerFactory.tsx

  • packages/template-editor/src/items/radio-answer-puzzle/RadioAnswerFactory.tsx

  • packages/template-editor/src/items/numeric-answer-puzzle/NumericAnswerFactory.tsx

  • packages/template-editor/src/items/date-answer-puzzle/DateAnswerFactory.tsx

  • packages/template-editor/src/items/checkbox-answer-puzzle/CheckboxAnswerFactory.tsx

  • packages/template-editor/src/components/fields/InputField.tsx

  • packages/template-editor/src/components/content/ContentSection.tsx

  • packages/template-editor/src/components/content/ContentGroup.tsx

В самое начало нужно добавить /** @jsx jsx */
Либо для копмонентов не использующих css можно не импортить jsx вовсе и просто как обычно

import * as React from "react";

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.