1.2.1 • Published 1 month ago

grading-widget v1.2.1

Weekly downloads
-
License
-
Repository
-
Last release
1 month ago

grading-widget

Что нужно знать для использования библиотеки в своем проекте 1. Для установки: npm i grading-widget

  1. В файле, где ты хочешь использовать библиотеку грейдирования добавь пустой div с id = widgetTagName и инициализируй билиотеку
<template>
    <div id="grading-widget"></div>
</template>
import { openGrading, removeGrading } from '@/utils/plugins/grading';
export default {
    setup() {
        openGrading(filialId, orderId, amount);
        onBeforeUnmount(() => {
            removeGrading();
        }
    }
}
  1. Создай отдельный файл grading.ts, где опиши нижеследующую логику. Библиотека имеет 3 метода: init() - отправляет запрос hasGradingRequest(filialId) для понимания, нужно ли отображать виджет mount() - если в ответе на запрос hasGradingRequest пришел ответ без ошибки - монтирует компонент грейдирования destroy() - необходимо указывать в хуке onBeforeUnmount
import { AuthService } from '@/services/auth';
import i18n from '@/utils/plugins/i18n';
import 'grading-widget/dist/grading-widget.css';

let onGradingDestroy: (() => void) | null = null;
const appEnv = import.meta.env.VITE_ENV;
const gradingEnv = appEnv === 'production' ? 'production' : 'stage';

async function onForbidden() {
	return Promise.reject(new Error('Нет токена')); // добавить, когда будет готов метод
}

function openGrading(filialId: number, orderId: number, amount: number) {
	let myGradeLibraryInstance: {
		init: () => boolean;
		destroy: () => void;
		mount: () => void;
	};

	const filialIdStr = filialId.toString();
	const orderIdStr = orderId.toString();
	const amountStr = amount.toString();

	import('grading-widget').then(async MyGradeLibrary => {
		myGradeLibraryInstance = MyGradeLibrary.default({
			filialId: filialIdStr,
			orderId: orderIdStr,
			amount: amountStr,
			onForbidden,
			token: AuthService.state.accessToken,
			showCongrats: true,
			environment: gradingEnv,
			lang: i18n.global.locale.value,
			onError: (msg: string) => console.log(msg),
			widgetTagName: '#grading-widget'
		});

		if (await myGradeLibraryInstance.init()) {
			myGradeLibraryInstance.mount();
		}

		onGradingDestroy = myGradeLibraryInstance.destroy;
	});
}

function removeGrading() {
	if (onGradingDestroy) {
		onGradingDestroy();
		onGradingDestroy = null;
	}
}
export { openGrading, removeGrading };
  1. Библиотека отправляет следующие запросы:
// отправляет запрос на получение данных по грейдированию
const grading = (
  filialId: string,
  orderId: string,
  amount: number | string,
): Promise<IPayedRestaurant> => {
  return gradingApiClient().get(
    `/member-ladder/grading/thank-you-page/${filialId}?order_id=${orderId}&amount=${amount}`,
  ).then((response) =>  {
      return response.data.data;
  })
};
// проверяет есть ли грейдирование по указанному filialId
const hasGrading = ( 
    filialId: string,
): Promise<IHasGrading> => {
    return gradingApiClient().get(
        `/member-ladder/grading/terminal/${filialId}`,
    ).then((response) =>  {
        return response.data.data;
    })
};
  1. Библиотека принимает следующие пропс, которые являются обязательными:
interface IMyGradeLibrary {
   filialId: string,
   orderId: string,
   amount: string, // Сумма оплаты
   environment: string, // Принимает process.env.VUE_APP_ENVIRONMENT основного приложения
   lang: string, // Текущий язык основного приложения, который будет отображен
   token: string,
   onForbidden: () => Promise<string>, // необязательный параметр. Функция, срабатывающая, когда токен умирает. Из родительского приложения нужно отправлять новый токен, если этого метода нет, то можно возвращать return Promise.reject();  
   showCongrats: boolean, // Контролирует нужно ли отображать анимации поздравлений и отображения прогресса по уровням
   onError: (message) => void, // Обработка ошибок
   widgetTagName: string, // передает в библиотеку Грейдирования id тега div, который ты используешь в своем проекте как контейнер для отрисовки компонента библиотеки
   logToConsole: (key, message) => void, // необязательный параметр, показывает в родительском приложении консоль библиотеки грейдирования
   animationWasEnded: () => void, // необязательный параметр, который принимает метод, который должен срабатывать, когда закончились все анимации и отображен финальный вид виджета
   logAmplitudeEvent: (event: string, payload: any) => void | Promise<void>, // обязательный параметр, вызывает аналитику
}
  1. Примеры виджета в действии и его подключения ты можешь найти в проектах takeway-web и chocopay-web
1.2.1

1 month ago

1.2.0

1 month ago

1.1.1

1 month ago

1.1.0-7.1

7 months ago

1.1.0-7

7 months ago

1.1.0-6

9 months ago

1.0.2-0

10 months ago

1.1.0-5

9 months ago

1.1.0-4

10 months ago

1.1.0-3

10 months ago

1.1.0-2

10 months ago

1.1.0-1

10 months ago

1.1.0-0

10 months ago

1.1.0

10 months ago

1.0.0-dev-19

11 months ago

1.0.0-dev-14

11 months ago

1.0.0-dev-13

11 months ago

1.0.0-dev-12

11 months ago

1.0.0-dev-11

11 months ago

1.0.0-dev-18

11 months ago

1.0.0-dev-17

11 months ago

1.0.0-dev-16

11 months ago

1.0.0-dev-15

11 months ago

1.0.0-dev-10

11 months ago

1.0.1-0

10 months ago

1.0.1-2

10 months ago

1.0.1-1

10 months ago

1.0.0-dev-6

11 months ago

1.0.0-dev-7

11 months ago

1.0.0-dev-4

11 months ago

1.0.0-dev-5

11 months ago

1.0.0-dev-2

11 months ago

1.0.0-dev-3

11 months ago

1.0.0-dev-1

11 months ago

1.0.0-dev-8

11 months ago

1.0.0-dev-9

11 months ago

1.0.2

10 months ago

1.0.1

10 months ago

1.0.0

11 months ago

1.0.0-dev-36

11 months ago

1.0.0-dev-35

11 months ago

1.0.0-dev-34

11 months ago

1.0.0-dev-33

11 months ago

1.0.0-dev-39

11 months ago

1.0.0-dev-38

11 months ago

1.0.0-dev-37

11 months ago

1.0.1-dev-0

10 months ago

1.0.1-dev-1

10 months ago

1.0.1-dev-2

10 months ago

1.0.1-dev-3

10 months ago

1.0.0-dev-32

11 months ago

1.0.0-dev-31

11 months ago

1.0.0-dev-30

11 months ago

1.0.0-dev-25

11 months ago

1.0.0-dev-24

11 months ago

1.0.0-dev-23

11 months ago

1.0.0-dev-22

11 months ago

1.0.0-dev-29

11 months ago

1.0.0-dev-28

11 months ago

1.0.0-dev-27

11 months ago

1.0.0-dev-26

11 months ago

1.0.0-dev-21

11 months ago

1.0.0-dev-20

11 months ago

1.0.0-dev-47

11 months ago

1.0.0-dev-46

11 months ago

1.0.0-dev-45

11 months ago

1.0.0-dev-44

11 months ago

1.0.0-dev

11 months ago

1.0.0-dev-43

11 months ago

1.0.0-dev-42

11 months ago

1.0.0-dev-41

11 months ago

1.0.0-dev-40

11 months ago

0.1.53

1 year ago

0.1.54

1 year ago

0.1.55

1 year ago

0.1.56

1 year ago

0.1.57

1 year ago

0.1.58

1 year ago

0.1.59

1 year ago

0.1.68-10-dev

1 year ago

0.1.68-9

1 year ago

0.1.68-8

1 year ago

0.1.68-1

1 year ago

0.1.66-3

1 year ago

0.1.66-2

1 year ago

0.1.68-3

1 year ago

0.1.66-5

1 year ago

0.1.68-2

1 year ago

0.1.66-4

1 year ago

0.1.68-5

1 year ago

0.1.68-4

1 year ago

0.1.66-6

1 year ago

0.1.68-7

1 year ago

0.1.68-6

1 year ago

0.1.68-12

1 year ago

0.1.68-11

1 year ago

0.1.55-dev

1 year ago

0.1.66-1

1 year ago

0.1.68-10

1 year ago

0.1.63

1 year ago

0.1.64

1 year ago

0.1.68-11-dev

1 year ago

0.1.65

1 year ago

0.1.66

1 year ago

0.1.67

1 year ago

0.1.68

1 year ago

0.1.69

1 year ago

0.1.67-1

1 year ago

0.1.60

1 year ago

0.1.61

1 year ago

0.1.62

1 year ago

0.1.68-12-dev

1 year ago

0.1.52

1 year ago

0.1.51

1 year ago

0.1.50

1 year ago

0.1.49

1 year ago

0.1.48

1 year ago

0.1.47

1 year ago

0.1.46

1 year ago

0.1.45

1 year ago

0.1.44

1 year ago

0.1.43

1 year ago

0.1.42

1 year ago

0.1.41

1 year ago

0.1.40

1 year ago

0.1.39

1 year ago

0.1.38

1 year ago

0.1.37

1 year ago

0.1.36

1 year ago

0.1.35

1 year ago

0.1.34

1 year ago

0.1.33

1 year ago

0.1.32

1 year ago

0.1.31

1 year ago

0.1.30

1 year ago

0.1.29

1 year ago

0.1.28

1 year ago

0.1.27

1 year ago

0.1.26

1 year ago

0.1.25

1 year ago

0.1.24

1 year ago

0.1.23

1 year ago

0.1.22

1 year ago

0.1.21

1 year ago

0.1.20

1 year ago

0.1.19

1 year ago

0.1.18

1 year ago

0.1.17

1 year ago

0.1.16

1 year ago

0.1.14

1 year ago

0.1.13

1 year ago

0.1.12

1 year ago

0.1.11

1 year ago

0.1.10

1 year ago

0.1.9

1 year ago

0.1.8

1 year ago

0.1.7

1 year ago

0.1.6

1 year ago

0.1.5

1 year ago

0.1.4

1 year ago

0.1.3

1 year ago

0.1.2

1 year ago

0.1.1

1 year ago

0.1.0

1 year ago