eservices-core 1.0.558 → 1.0.559

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -37,3 +37,7 @@ export interface IHistoryCurrentValues {
37
37
  fieldName: string;
38
38
  value: string;
39
39
  }
40
+ export interface IUser {
41
+ FullName: string;
42
+ UserName: string;
43
+ }
@@ -0,0 +1,39 @@
1
+ import { MetadataResponseInterface, MetadataResponseFieldInterface } from "../types/metadata-types";
2
+ import EventEmitter from "jenesius-event-emitter";
3
+ declare class SingleMetadataStore extends EventEmitter {
4
+ readonly EVENT_NEW = "event:new-metadata";
5
+ store: {
6
+ [name: string]: MetadataResponseInterface;
7
+ };
8
+ constructor();
9
+ /**
10
+ * @description Возвращает объект для работы с метаданными
11
+ * */
12
+ get(entityName: string): MetadataResponseInterface;
13
+ /**
14
+ * @description Метод используется для загрузки метаданных. Если метаданные для сущности уже были полученные, вызываться
15
+ * перечитывание не будет.
16
+ * */
17
+ load(entityName: string): Promise<MetadataResponseInterface>;
18
+ private set;
19
+ private loadEntityInformation;
20
+ }
21
+ export declare const MetadataStore: SingleMetadataStore;
22
+ export declare function ComputedMetadata(entityName: string): Readonly<import("vue").Ref<{
23
+ readonly canCreate: boolean;
24
+ readonly canDelete: boolean;
25
+ readonly canRead: boolean;
26
+ readonly canUpdate: boolean;
27
+ readonly canUse: boolean;
28
+ readonly name: string;
29
+ readonly fields: readonly {
30
+ readonly canGet: boolean;
31
+ readonly canSet: boolean;
32
+ readonly name: string;
33
+ readonly dataType: import("../types/metadata-types").DataType;
34
+ readonly referencedEntity: import("../types/metadata-types").ReferencedEntity;
35
+ readonly presentationType: string;
36
+ }[];
37
+ }>>;
38
+ export declare function prettifyValueByMetadata(value: unknown, metadataField: MetadataResponseFieldInterface): unknown;
39
+ export {};
@@ -4,11 +4,13 @@ import config from "./config";
4
4
  import * as types from "./types";
5
5
  import Table from "./classes/table/Table";
6
6
  import "./../styles/index.css";
7
+ import * as testTypes from "./../../backend/src/types/main";
7
8
  import StylesInterface from "./styles/types";
8
9
  import { Values } from "./types";
9
10
  import historyService, { IParsedHistoryResponse } from "./services/history-service";
10
11
  import * as newImport from "./new/new-import";
11
- export { newImport };
12
+ import { MetadataStore, ComputedMetadata, prettifyValueByMetadata } from "./classes/MetadataStore";
13
+ export { newImport, testTypes, MetadataStore, ComputedMetadata, prettifyValueByMetadata };
12
14
  import { ICustomerContext, ApplicationType } from "./classes/ApplicationManager";
13
15
  import { IActionExecuteResult, IValidationEffect, IActionResponse } from "./services/action-service";
14
16
  import { INotificationCard } from "./classes/NotificationSystem";
@@ -6,6 +6,7 @@ interface MetadataResponseFieldInterface {
6
6
  name: string;
7
7
  dataType: DataType;
8
8
  referencedEntity: ReferencedEntity | null;
9
+ presentationType: string;
9
10
  }
10
11
  interface MetadataResponseInterface {
11
12
  canCreate: boolean;
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /*!
2
- * eservices-core v1.0.558
2
+ * eservices-core v1.0.559
3
3
  * (c) 2023 ESERVICES
4
4
  */
5
5
  'use strict';
@@ -2995,6 +2995,10 @@ function useTableRequest(table, options) {
2995
2995
  var css_248z$h = "*{\r\n --extra-fast :0.1s;\r\n --fast :0.2s;\r\n --medium :0.3s;\r\n\r\n box-sizing: border-box;\r\n --primary: #3949ab\r\n}\r\nhtml, body, #app{\r\n height: 100%;\r\n}\r\nbody{\r\n margin: 0;\r\n}\r\nul{\r\n text-align: left;\r\n}\r\n.flex{\r\n display: flex;\r\n}\r\n.flex_column{\r\n display: flex;\r\n flex-direction: column;\r\n}\r\n.flex_center{\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n}\r\n.flex_full, .flex_grow{\r\n flex-grow: 1;\r\n}\r\n.grid{\r\n display: grid;\r\n}\r\n.link{\r\n text-decoration: var(--link-decoration);\r\n color: var(--link-color);\r\n}\r\n.link_hover-underline:hover,\r\n.link_hover_underline:hover{\r\n text-decoration: underline;\r\n}\r\n.link_full{\r\n position: absolute;\r\n height: 100%;\r\n width: 100%;\r\n left: 0;\r\n top:0;\r\n}\r\n.text_sm{\r\n font-weight: 400;\r\n font-size: 12px;\r\n line-height: 16px;\r\n}\r\n.text_md{\r\n font-size: 14px;\r\n line-height: 20px;\r\n}\r\n.text_lg{\r\n font-size: 16px;\r\n line-height: 24px;\r\n}\r\n.text_size_xxl{\r\n font-size: 18px;\r\n line-height: 25px;\r\n}\r\n.text_center{\r\n text-align: center;\r\n}\r\n.text_bold{\r\n font-weight: 600;\r\n}\r\n.text_nowrap{\r\n white-space: nowrap;\r\n}\r\n.text_right{\r\n text-align: right;\r\n}\r\n.text_center{\r\n text-align: center;\r\n}\r\n.text_size_sm{\r\n font-size: 12px;\r\n line-height: 130%;\r\n}\r\n.text_size_md{\r\n font-size: 14px;\r\n line-height: 140%;\r\n}\r\n.text_error{\r\n color: red;\r\n}\r\n.title_sm{\r\n font-weight: 600;\r\n font-size: 16px;\r\n line-height: 24px;\r\n}\r\n.title_md{\r\n font-weight: 600;\r\n font-size: 24px;\r\n line-height: 32px;\r\n}\r\n.title_lg{\r\n font-weight: bold;\r\n font-size: 32px;\r\n line-height: 48px;\r\n}\r\n.title_xxl, .title_xl{\r\n font-weight: bold;\r\n font-size: 48px;\r\n line-height: 64px;\r\n}\r\n.cursor_pointer{\r\n cursor: pointer;\r\n}\r\n.cursor_default{\r\n cursor: default;\r\n}\r\nbutton{\r\n outline: none;\r\n user-select: none;\r\n\r\n transition: background-color 0.2s;\r\n}\r\n.button{\r\n display: flex;\r\n align-items: center;\r\n justify-content: center;\r\n\r\n outline: none;\r\n}\r\n.button_main{\r\n background-color: var(--button-background);\r\n color: var(--button-color);\r\n}\r\n.button_main:focus{\r\n background-color: var(--button-background-active);\r\n}\r\n.button_main:active{\r\n background-color: var(--button-background-active);\r\n}\r\n.button_white{\r\n background-color: var(--white);\r\n color: var(--main);\r\n}\r\n.button_sm{\r\n height: 30px;\r\n width: 130px;\r\n}\r\n.button_shadow{\r\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);\r\n}\r\n.button_lg{\r\n font-weight: 600;\r\n font-size: 16px;\r\n line-height: 24px;\r\n\r\n padding: 12px 0;\r\n height: 50px;\r\n width: 200px;\r\n}\r\n.button_disabled{\r\n background-color: var(--gray-1);\r\n}\r\n.button_resolve{\r\n background-color: var(--main);\r\n color: var(--white);\r\n border-radius: 2px;\r\n}\r\n.button_reject{\r\n border: 1px solid var(--color-dark);\r\n border-radius: 2px;\r\n}\r\n.button_md{\r\n height: 30px;\r\n padding: 0 10px;\r\n\r\n min-width: 80px;\r\n}\r\n.button_disabled{\r\n background-color: var(--button-disabled-background-color);\r\n cursor: pointer !important;\r\n}\r\n*{\r\n\r\n\r\n\r\n}\r\n.color_main,\r\n.color__text_main{\r\n color: var(--main);\r\n}\r\n.color__text_black{\r\n color: var(--black-1);\r\n}\r\n.color__text_gray{\r\n color: var(--text-gray);\r\n}\r\n.color__text_red,\r\n.color_red{\r\n color: var(--red);\r\n}\r\n.color__text_white{\r\n color: var(--white);\r\n}\r\n.background_orange{\r\n background-color: var(--orange)\r\n}\r\n.background_red{\r\n background-color: var(--red)\r\n}\r\n.color_dark{\r\n color: var(--dark);\r\n}\r\n.color_light{\r\n color: var(--light);\r\n}\r\n.move-vertical-enter-active,\r\n.move-vertical-leave-active {\r\n transition: transform 0.5s ease;\r\n}\r\n.move-vertical-enter-from,\r\n.move-vertical-leave-to {\r\n transform: translateY(-10px);\r\n}\r\n.move-horizontal-enter-active,\r\n.move-horizontal-leave-active {\r\n transition: transform 0.5s;\r\n}\r\n.move-horizontal-enter-from,\r\n.move-horizontal-leave-to {\r\n transform: translateX(-40px);\r\n}\r\n.modal-vertical-enter-active , .modal-vertical-leave-active, .modal-default {\r\n transition: transform var(--medium);\r\n}\r\n.modal-vertical-enter-active .modal-default, .modal-vertical-leave-active .modal-default{\r\n transform: translateY(-100px);\r\n}\r\n.move-vertical-fast-enter-active,\r\n.move-vertical-fast-leave-active {\r\n transition: transform var(--fast) ease;\r\n}\r\n.move-vertical-fast-enter-from,\r\n.move-vertical-fast-leave-to {\r\n transform: translateY(-20px);\r\n}\r\n.slide-up-enter-active,\r\n.slide-up-leave-active {\r\n transition: transform var(--fast) ease, opacity var(--fast);\r\n\r\n}\r\n.slide-up-enter-from,\r\n.slide-up-leave-to {\r\n transform: translateY(20px);\r\n opacity: 0;\r\n}\r\n.opacity-enter-active,\r\n.opacity-leave-active {\r\n transition: opacity var(--fast) ease;\r\n}\r\n.opacity-enter-from,\r\n.opacity-leave-to {\r\n opacity: 0;\r\n}\r\n.list-move, /* apply transition to moving elements */\r\n.list-enter-active,\r\n.list-leave-active {\r\n transition: all 0.5s ease;\r\n}\r\n.list-enter-from,\r\n.list-leave-to {\r\n opacity: 0;\r\n transform: translateX(30px);\r\n}\r\n/* ensure leaving items are taken out of layout flow so that moving\r\n animations can be calculated correctly. */\r\n.list-leave-active {\r\n position: absolute;\r\n}\r\n.modal-default{\r\n background-color: var(--white);\r\n position: relative;\r\n z-index: 1;\r\n\r\n width: auto;\r\n\r\n background: var(--white);\r\n border-radius: var(--border-radius);\r\n\r\n\r\n}\r\n.modal-default__head{\r\n background-color: var(--black-1);\r\n text-align: center;\r\n padding: 5px 0;\r\n border-radius: 6px 6px 0 0;\r\n}\r\n.modal-default__body{\r\n gap: 20px;\r\n padding: 0 15px;\r\n}\r\n.modal-default__foot{\r\n padding: 30px 0;\r\n display: flex;\r\n justify-content: center;\r\n}\r\n.tooltip-help-elem{}\r\n.hint-tooltip{\r\n display: block;\r\n\r\n z-index: 222;\r\n margin: auto;\r\n pointer-events: none;\r\n\r\n box-shadow: 0 0 0 9999px rgba(0,0,0,0.5);\r\n}\r\n.tooltip-help-circle-in,\r\n.tooltip-help-circle-out{\r\n border-radius: 50%;\r\n}\r\n.tooltip-help-undefined{\r\n border-radius: 50px;\r\n}\r\n.tooltip-card{\r\n position: fixed;\r\n z-index: 315;\r\n\r\n display: flex;\r\n flex-direction: column;\r\n\r\n width: 480px;\r\n height: fit-content;\r\n\r\n margin: auto;\r\n\r\n border-radius: 10px;\r\n background-color: var(--hint-background);\r\n\r\n cursor: default;\r\n}\r\n.tooltip-card__foot{\r\n display: flex;\r\n justify-content: space-between;\r\n align-items: center;\r\n\r\n background-color: var(--hint-background-navigation);\r\n border-radius: 10px;\r\n\r\n padding: 20px ;\r\n}\r\n.tooltip-card__foot-current{\r\n font-weight: 600;\r\n font-size: 20px;\r\n line-height: 24px;\r\n\r\n color: var(--white);\r\n}\r\n.tooltip-card__body{\r\n position: relative;\r\n display: flex;\r\n flex-direction: column;\r\n\r\n gap: 8px;\r\n\r\n padding: 20px 20px 10px 20px;\r\n}\r\n.tooltip-card__body-title{\r\n font-weight: bold;\r\n font-size: 20px;\r\n line-height: 24px;\r\n\r\n color: var(--white);\r\n}\r\n.tooltip-card__body-text{\r\n font-size: 16px;\r\n line-height: 24px;\r\n\r\n color: var(--white);\r\n}\r\n.tooltip-card__foot-button_back{\r\n background-color: var(--main-1);\r\n}\r\n.tooltip-card__foot-button_next{\r\n background-color: var(--hint);\r\n}\r\n.tooltip-card__body-close{\r\n position: absolute;\r\n right: 22px;\r\n top: 12px;\r\n width: 20px;\r\n height: 16px;\r\n opacity: 0.3;\r\n\r\n cursor: pointer;\r\n}\r\n.tooltip-card__body-close:hover {\r\n opacity: 1;\r\n}\r\n.tooltip-card__body-close:before,\r\n.tooltip-card__body-close:after {\r\n position: absolute;\r\n left: 15px;\r\n content: ' ';\r\n height: 21px;\r\n width: 2px;\r\n background-color: white;\r\n}\r\n.tooltip-card__body-close:before {\r\n transform: rotate(45deg);\r\n}\r\n.tooltip-card__body-close:after {\r\n transform: rotate(-45deg);\r\n}\r\n.tooltip-card-container-wrap{\r\n pointer-events: none;\r\n position: absolute;\r\n left: 0;\r\n top:0;\r\n\r\n z-index: 123132;\r\n\r\n height: 100%;\r\n width: 100%;\r\n}\r\n.tooltip-card-container-wrap>div{\r\n\r\n height: 100%;\r\n width: 100%;\r\n\r\n display: flex;\r\n justify-content: center;\r\n align-items: center;\r\n}\r\n.tester-box-tooltip{\r\n pointer-events: all;\r\n}\r\n.position_relative{\r\n position: relative;\r\n}\r\n.position_absolute{\r\n position: absolute;\r\n}\r\n.gap_5{\r\n gap: 5px;\r\n}\r\n.gap_10{\r\n gap: 10px;\r\n}\r\n.gap_20{\r\n gap: 20px;\r\n}\r\n.margin-0{\r\n margin: 0;\r\n}\r\n.widget-input{\r\n\tbackground-color: var(--input-background);\r\n\tborder: var(--input-border);\r\n\tborder-radius: var(--input-border-radius);\r\n\tcolor: var(--input-color);\r\n}\r\n.widget-input:disabled{\r\n\tbackground-color: var(--input-background-disabled);\r\n\tborder: var(--input-border-disabled);\r\n}\r\n.widget-input[error=\"true\"] {\r\n\tborder: var(--input-border-error);\r\n}\r\n.widget-input::placeholder{\r\n\tcolor: var(--input-placeholder-color);\r\n}\r\n.widget-input:disabled::placeholder{\r\n\tcolor: var(--input-placeholder-color-disabled);\r\n}\r\n.input_error{\r\n\tborder: 1px solid red !important;\r\n}\r\n.input_size_md{\r\n\theight: var(--input-height);\r\n}\r\n.input-title{\r\n\tfont-size: 12px;\r\n\tline-height: 16px;\r\n\tcolor: #667085;\r\n\r\n\tmargin: 4px 0;\r\n}\r\n.widget-table{\r\n border-collapse: collapse;\r\n}\r\n.widget-table_mini{\r\n\r\n}\r\n.widget-table_mini p{\r\n margin: 0;\r\n}\r\n.widget-table_mini{\r\n\r\n}\r\n.list-cell-link>a{\r\n position: absolute;\r\n left: 0;\r\n top:0;\r\n z-index: 1;\r\n height: 100%;\r\n width: 100%;\r\n\r\n cursor: pointer;\r\n}\r\n.list-cell-link>p{\r\n font-weight: 500;\r\n}\r\n.widget-table__cell{\r\n padding: 0 20px;\r\n font-weight: 400;\r\n font-size: 14px;\r\n line-height: 19px;\r\n\r\n color: #4F4F4F;\r\n}\r\n.widget-table-cell_use{\r\n cursor: pointer;\r\n}\r\n.widget-table-cell_select{\r\n width: min-content ;\r\n}\r\n.table-cell-toggle{\r\n --border-color: black;\r\n position: relative;\r\n display: grid;\r\n place-content: center;\r\n border: 1px solid var(--border-color);\r\n height: 15px;\r\n aspect-ratio: 1 / 1;\r\n border-radius: 50%;\r\n}\r\n.table-cell-toggle_active:after {\r\n content: \"\";\r\n border-radius: 50%;\r\n background-color: var(--border-color);\r\n height: 9px;\r\n aspect-ratio: 1/1;\r\n}\r\n.widget-list-cell-text {\r\n\r\n}\r\n.widget-table-cell_number {\r\n text-align: right;\r\n}\r\n.overflow_auto {\r\n overflow: auto;\r\n}\r\n.padding_5{\r\n padding: 5px;\r\n}\r\n.padding_10 {\r\n padding: 10px;\r\n}\r\n.padding_0{\r\n padding: 0;\r\n}\r\n.padding_15 {\r\n padding: 15px;\r\n}\r\n.padding_20 {\r\n padding: 15px;\r\n}\r\n";
2996
2996
  styleInject(css_248z$h);
2997
2997
 
2998
+ var main = /*#__PURE__*/Object.freeze({
2999
+ __proto__: null
3000
+ });
3001
+
2998
3002
  class historyService {
2999
3003
  static readHistoryById(entity, id) {
3000
3004
  return Request(`/close-api/audits/history/${entity}/${id}`, {
@@ -3826,6 +3830,58 @@ var newImport = /*#__PURE__*/Object.freeze({
3826
3830
  useListProvide: useListProvide
3827
3831
  });
3828
3832
 
3833
+ class SingleMetadataStore extends EventEmitter {
3834
+ constructor() {
3835
+ super();
3836
+ // Вызывается всякий раз, когда были добавлены новые метаданные
3837
+ this.EVENT_NEW = 'event:new-metadata';
3838
+ this.store = {};
3839
+ }
3840
+ /**
3841
+ * @description Возвращает объект для работы с метаданными
3842
+ * */
3843
+ get(entityName) {
3844
+ return this.store[entityName];
3845
+ }
3846
+ /**
3847
+ * @description Метод используется для загрузки метаданных. Если метаданные для сущности уже были полученные, вызываться
3848
+ * перечитывание не будет.
3849
+ * */
3850
+ load(entityName) {
3851
+ return __awaiter(this, void 0, void 0, function* () {
3852
+ if (!this.store[entityName])
3853
+ this.set(entityName, yield this.loadEntityInformation(entityName));
3854
+ return this.store[entityName];
3855
+ });
3856
+ }
3857
+ set(entityName, metadata) {
3858
+ this.store[entityName] = metadata;
3859
+ this.emit(this.EVENT_NEW, {
3860
+ entityName,
3861
+ });
3862
+ }
3863
+ loadEntityInformation(entityName) {
3864
+ return __awaiter(this, void 0, void 0, function* () {
3865
+ const data = yield metadataService.get(entityName);
3866
+ return data;
3867
+ });
3868
+ }
3869
+ }
3870
+ const MetadataStore = new SingleMetadataStore();
3871
+ function ComputedMetadata(entityName) {
3872
+ const m = vue.ref(MetadataStore.get(entityName));
3873
+ MetadataStore.on(MetadataStore.EVENT_NEW, (data) => {
3874
+ if (entityName === data.entityName)
3875
+ m.value = MetadataStore.get(entityName);
3876
+ });
3877
+ return vue.readonly(m);
3878
+ }
3879
+ function prettifyValueByMetadata(value, metadataField) {
3880
+ if (metadataField.dataType === 'DateTime' && typeof value === 'string')
3881
+ return new Date(value).toLocaleString();
3882
+ return value;
3883
+ }
3884
+
3829
3885
  function useSocket(namespace = 'default') {
3830
3886
  if (!SocketStore.manager)
3831
3887
  return;
@@ -5887,11 +5943,13 @@ var index = {
5887
5943
 
5888
5944
  exports.ApplicationManager = ApplicationManager;
5889
5945
  exports.Communication = Communication;
5946
+ exports.ComputedMetadata = ComputedMetadata;
5890
5947
  exports.CoreError = CoreError;
5891
5948
  exports.Filter = Filter;
5892
5949
  exports.List = List;
5893
5950
  exports.ListConfig = ListConfig;
5894
5951
  exports.Manager = Manager;
5952
+ exports.MetadataStore = MetadataStore;
5895
5953
  exports.ModalValidation = script$3;
5896
5954
  exports.NotificationSystem = NotificationSystem;
5897
5955
  exports.ProcessWrap = ProcessWrap;
@@ -5928,10 +5986,12 @@ exports.metadataService = metadataService;
5928
5986
  exports.newImport = newImport;
5929
5987
  exports.openService = openService;
5930
5988
  exports.parseError = parseError;
5989
+ exports.prettifyValueByMetadata = prettifyValueByMetadata;
5931
5990
  exports.processWizardService = processWizardService;
5932
5991
  exports.requestHandler = requestHandler;
5933
5992
  exports.ruleValidationService = ruleValidationService;
5934
5993
  exports.setupSocket = setupSocket;
5994
+ exports.testTypes = main;
5935
5995
  exports.useCommunication = useCommunication;
5936
5996
  exports.useCustomerState = useCustomerState;
5937
5997
  exports.useFormAction = useFormAction;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "eservices-core",
3
- "version": "1.0.558",
3
+ "version": "1.0.559",
4
4
  "description": "Core library",
5
5
  "author": "",
6
6
  "scripts": {