1.6.1 • Published 3 months ago

grading-widget v1.6.1

Weekly downloads
-
License
-
Repository
-
Last release
3 months 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.6.1

3 months ago

1.6.0

4 months ago

1.5.1

4 months ago

1.5.0

9 months ago

1.4.3

9 months ago

1.4.2

9 months ago

1.4.1

9 months ago

1.4.0

9 months ago

1.3.1

11 months ago

1.3.0

12 months ago

1.2.1

1 year ago

1.2.0

1 year ago

1.1.1

1 year ago

1.1.0-7.1

2 years ago

1.1.0-7

2 years ago

1.1.0-6

2 years ago

1.0.2-0

2 years ago

1.1.0-5

2 years ago

1.1.0-4

2 years ago

1.1.0-3

2 years ago

1.1.0-2

2 years ago

1.1.0-1

2 years ago

1.1.0-0

2 years ago

1.1.0

2 years ago

1.0.0-dev-19

2 years ago

1.0.0-dev-14

2 years ago

1.0.0-dev-13

2 years ago

1.0.0-dev-12

2 years ago

1.0.0-dev-11

2 years ago

1.0.0-dev-18

2 years ago

1.0.0-dev-17

2 years ago

1.0.0-dev-16

2 years ago

1.0.0-dev-15

2 years ago

1.0.0-dev-10

2 years ago

1.0.1-0

2 years ago

1.0.1-2

2 years ago

1.0.1-1

2 years ago

1.0.0-dev-6

2 years ago

1.0.0-dev-7

2 years ago

1.0.0-dev-4

2 years ago

1.0.0-dev-5

2 years ago

1.0.0-dev-2

2 years ago

1.0.0-dev-3

2 years ago

1.0.0-dev-1

2 years ago

1.0.0-dev-8

2 years ago

1.0.0-dev-9

2 years ago

1.0.2

2 years ago

1.0.1

2 years ago

1.0.0

2 years ago

1.0.0-dev-36

2 years ago

1.0.0-dev-35

2 years ago

1.0.0-dev-34

2 years ago

1.0.0-dev-33

2 years ago

1.0.0-dev-39

2 years ago

1.0.0-dev-38

2 years ago

1.0.0-dev-37

2 years ago

1.0.1-dev-0

2 years ago

1.0.1-dev-1

2 years ago

1.0.1-dev-2

2 years ago

1.0.1-dev-3

2 years ago

1.0.0-dev-32

2 years ago

1.0.0-dev-31

2 years ago

1.0.0-dev-30

2 years ago

1.0.0-dev-25

2 years ago

1.0.0-dev-24

2 years ago

1.0.0-dev-23

2 years ago

1.0.0-dev-22

2 years ago

1.0.0-dev-29

2 years ago

1.0.0-dev-28

2 years ago

1.0.0-dev-27

2 years ago

1.0.0-dev-26

2 years ago

1.0.0-dev-21

2 years ago

1.0.0-dev-20

2 years ago

1.0.0-dev-47

2 years ago

1.0.0-dev-46

2 years ago

1.0.0-dev-45

2 years ago

1.0.0-dev-44

2 years ago

1.0.0-dev

2 years ago

1.0.0-dev-43

2 years ago

1.0.0-dev-42

2 years ago

1.0.0-dev-41

2 years ago

1.0.0-dev-40

2 years ago

0.1.53

2 years ago

0.1.54

2 years ago

0.1.55

2 years ago

0.1.56

2 years ago

0.1.57

2 years ago

0.1.58

2 years ago

0.1.59

2 years ago

0.1.68-10-dev

2 years ago

0.1.68-9

2 years ago

0.1.68-8

2 years ago

0.1.68-1

2 years ago

0.1.66-3

2 years ago

0.1.66-2

2 years ago

0.1.68-3

2 years ago

0.1.66-5

2 years ago

0.1.68-2

2 years ago

0.1.66-4

2 years ago

0.1.68-5

2 years ago

0.1.68-4

2 years ago

0.1.66-6

2 years ago

0.1.68-7

2 years ago

0.1.68-6

2 years ago

0.1.68-12

2 years ago

0.1.68-11

2 years ago

0.1.55-dev

2 years ago

0.1.66-1

2 years ago

0.1.68-10

2 years ago

0.1.63

2 years ago

0.1.64

2 years ago

0.1.68-11-dev

2 years ago

0.1.65

2 years ago

0.1.66

2 years ago

0.1.67

2 years ago

0.1.68

2 years ago

0.1.69

2 years ago

0.1.67-1

2 years ago

0.1.60

2 years ago

0.1.61

2 years ago

0.1.62

2 years ago

0.1.68-12-dev

2 years ago

0.1.52

2 years ago

0.1.51

2 years ago

0.1.50

2 years ago

0.1.49

2 years ago

0.1.48

2 years ago

0.1.47

2 years ago

0.1.46

2 years ago

0.1.45

2 years ago

0.1.44

2 years ago

0.1.43

2 years ago

0.1.42

2 years ago

0.1.41

2 years ago

0.1.40

2 years ago

0.1.39

2 years ago

0.1.38

2 years ago

0.1.37

2 years ago

0.1.36

2 years ago

0.1.35

2 years ago

0.1.34

2 years ago

0.1.33

2 years ago

0.1.32

2 years ago

0.1.31

2 years ago

0.1.30

2 years ago

0.1.29

2 years ago

0.1.28

2 years ago

0.1.27

2 years ago

0.1.26

2 years ago

0.1.25

2 years ago

0.1.24

2 years ago

0.1.23

2 years ago

0.1.22

2 years ago

0.1.21

2 years ago

0.1.20

2 years ago

0.1.19

2 years ago

0.1.18

2 years ago

0.1.17

2 years ago

0.1.16

2 years ago

0.1.14

2 years ago

0.1.13

2 years ago

0.1.12

2 years ago

0.1.11

2 years ago

0.1.10

2 years ago

0.1.9

2 years ago

0.1.8

2 years ago

0.1.7

2 years ago

0.1.6

2 years ago

0.1.5

2 years ago

0.1.4

2 years ago

0.1.3

2 years ago

0.1.2

2 years ago

0.1.1

2 years ago

0.1.0

2 years ago