скрипт
This commit is contained in:
@@ -0,0 +1,60 @@
|
||||
import { RequestTypeId } from '../models/types';
|
||||
|
||||
/**
|
||||
* ЕДИНЫЙ источник имён списков SharePoint.
|
||||
*
|
||||
* Раньше каждая форма объявляла свои DATA_LIST_TITLE/APPROVAL_LIST_TITLE строковыми
|
||||
* литералами — 20 копий имён по 7 формам. Имена стали нумерованными (под архивацию:
|
||||
* когда список данных упирается в порог элементов, рядом появляется пара с номером
|
||||
* N+1), и с литералами каждый номер пришлось бы править по всем формам руками.
|
||||
*
|
||||
* Конвенция — ровно та же, что у провижинера (provisioning/Provision-Lists.ps1,
|
||||
* функция Get-NumberedListTitle):
|
||||
* «<База> <N> — данные» / «<База> <N> — согласование»
|
||||
*
|
||||
* Номер СТРОГО перед суффиксом: имя списка согласования выводится из имени списка
|
||||
* данных регексом /\s*—\s*данные\s*$/, привязанным к КОНЦУ строки (см.
|
||||
* features/myRequests/myRequests.service.ts и approval-route
|
||||
* frontend/.../approvalAdmin/services/requestManageService.ts). Имя вида
|
||||
* «… — данные 1» этот регекс не матчит, и список согласования перестаёт находиться.
|
||||
*/
|
||||
|
||||
/** База имени по типу заявки. Ключи — те же, что в реестре форм (forms/registry.ts). */
|
||||
const LIST_TITLE_BASE: Record<RequestTypeId, string> = {
|
||||
'clearance-form': 'Обходной лист',
|
||||
'hr-vacation': 'Заявка на отпуск',
|
||||
'it-1c-ticket': 'Заявка в отдел 1С',
|
||||
'it-workplace-setup': 'Организация рабочего места',
|
||||
'recruiting-hire': 'Прием на работу',
|
||||
'recruiting-selection': 'Заявка на подбор',
|
||||
'wh-tmc-transfer': 'СЗ на перемещение ТМЦ'
|
||||
};
|
||||
|
||||
/**
|
||||
* Номер текущей пары списков. Пока единый для всех типов заявок — архивных пар ещё
|
||||
* нет, все формы работают с парой №1.
|
||||
*
|
||||
* Когда архивация заработает, номер будет приходить из approval-route (эндпоинт
|
||||
* «текущий список по типу заявки») и заполняться один раз при старте web part, до
|
||||
* загрузки чанка любой формы. Сигнатуры функций ниже при этом не меняются — поэтому
|
||||
* вызовы по формам править второй раз не придётся.
|
||||
*/
|
||||
const CURRENT_LIST_NUMBER = 1;
|
||||
|
||||
function listTitleBase(id: RequestTypeId): string {
|
||||
const base = LIST_TITLE_BASE[id];
|
||||
if (!base) {
|
||||
throw new Error(`Неизвестный тип заявки «${id}»: нет базы имени списка в LIST_TITLE_BASE`);
|
||||
}
|
||||
return base;
|
||||
}
|
||||
|
||||
/** Имя списка данных заявок этого типа. */
|
||||
export function dataListTitle(id: RequestTypeId): string {
|
||||
return `${listTitleBase(id)} ${CURRENT_LIST_NUMBER} — данные`;
|
||||
}
|
||||
|
||||
/** Имя списка согласования заявок этого типа. */
|
||||
export function approvalListTitle(id: RequestTypeId): string {
|
||||
return `${listTitleBase(id)} ${CURRENT_LIST_NUMBER} — согласование`;
|
||||
}
|
||||
Reference in New Issue
Block a user