@trudb/tru-common-lib 0.1.310 → 0.1.313
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.
- package/esm2022/lib/base-views/detail/tru-detail-view-base.mjs +43 -4
- package/esm2022/public-api.mjs +2 -1
- package/fesm2022/trudb-tru-common-lib.mjs +198 -162
- package/fesm2022/trudb-tru-common-lib.mjs.map +1 -1
- package/lib/base-views/detail/tru-detail-view-base.d.ts +5 -1
- package/package.json +1 -1
- package/public-api.d.ts +1 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Directive, Input, Injectable, Component, Inject, HostListener, InjectionToken, NgModule, ViewEncapsulation, ViewChild, EventEmitter, Output, createComponent, Optional, APP_INITIALIZER, ViewChildren, QueryList, ContentChildren } from '@angular/core';
|
|
3
3
|
import { EntityAspect, MetadataStore, DataService, EntityManager, EntityQuery, Predicate, FetchStrategy, breeze, EntityState, BinaryPredicate, AndOrPredicate } from 'breeze-client';
|
|
4
|
-
import { BehaviorSubject, defer, from, of, Subject, Observable, skip, forkJoin,
|
|
4
|
+
import { BehaviorSubject, defer, from, of, Subject, Observable, fromEvent, skip, forkJoin, finalize, throwError } from 'rxjs';
|
|
5
5
|
import * as _ from 'underscore';
|
|
6
6
|
import ___default from 'underscore';
|
|
7
7
|
import * as i2 from '@angular/common/http';
|
|
@@ -1730,11 +1730,170 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
1730
1730
|
}]
|
|
1731
1731
|
}] });
|
|
1732
1732
|
|
|
1733
|
+
class TruDesktopViewEventNotifier {
|
|
1734
|
+
active$ = new BehaviorSubject(false);
|
|
1735
|
+
onActiveStateChanged = () => {
|
|
1736
|
+
return this.active$;
|
|
1737
|
+
};
|
|
1738
|
+
get isActive() {
|
|
1739
|
+
return this.active$.getValue();
|
|
1740
|
+
}
|
|
1741
|
+
set isActive(value) {
|
|
1742
|
+
this.active$.next(value);
|
|
1743
|
+
}
|
|
1744
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1745
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier });
|
|
1746
|
+
}
|
|
1747
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier, decorators: [{
|
|
1748
|
+
type: Injectable
|
|
1749
|
+
}] });
|
|
1750
|
+
|
|
1751
|
+
class TruUtil {
|
|
1752
|
+
keyboardMap = ["", "", "", "CANCEL", "", "", "HELP", "", "BACK_SPACE", "TAB", "", "", "CLEAR", "ENTER", "RETURN", "", "SHIFT", "CONTROL", "ALT", "PAUSE", "CAPS_LOCK", "KANA", "EISU", "JUNJA", "FINAL", "HANJA", "", "ESCAPE", "CONVERT", "NONCONVERT", "ACCEPT", "MODECHANGE", "SPACE", "PAGE_UP", "PAGE_DOWN", "END", "HOME", "LEFT", "UP", "RIGHT", "DOWN", "SELECT", "PRINT", "EXECUTE", "PRINTSCREEN", "INSERT", "DELETE", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "COLON", "SEMICOLON", "LESS_THAN", "EQUALS", "GREATER_THAN", "QUESTION_MARK", "AT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "WIN", "", "CONTEXT_MENU", "", "SLEEP", "NUMPAD0", "NUMPAD1", "NUMPAD2", "NUMPAD3", "NUMPAD4", "NUMPAD5", "NUMPAD6", "NUMPAD7", "NUMPAD8", "NUMPAD9", "MULTIPLY", "ADD", "SEPARATOR", "SUBTRACT", "DECIMAL", "DIVIDE", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21", "F22", "F23", "F24", "", "", "", "", "", "", "", "", "NUM_LOCK", "SCROLL_LOCK", "WIN_OEM_FJ_JISHO", "WIN_OEM_FJ_MASSHOU", "WIN_OEM_FJ_TOUROKU", "WIN_OEM_FJ_LOYA", "WIN_OEM_FJ_ROYA", "", "", "", "", "", "", "", "", "", "CIRCUMFLEX", "EXCLAMATION", "DOUBLE_QUOTE", "HASH", "DOLLAR", "PERCENT", "AMPERSAND", "UNDERSCORE", "OPEN_PAREN", "CLOSE_PAREN", "ASTERISK", "PLUS", "PIPE", "HYPHEN_MINUS", "OPEN_CURLY_BRACKET", "CLOSE_CURLY_BRACKET", "TILDE", "", "", "", "", "VOLUME_MUTE", "VOLUME_DOWN", "VOLUME_UP", "", "", "", "", "COMMA", "", "PERIOD", "SLASH", "BACK_QUOTE", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "OPEN_BRACKET", "BACK_SLASH", "CLOSE_BRACKET", "QUOTE", "", "META", "ALTGR", "", "WIN_ICO_HELP", "WIN_ICO_00", "", "WIN_ICO_CLEAR", "", "", "WIN_OEM_RESET", "WIN_OEM_JUMP", "WIN_OEM_PA1", "WIN_OEM_PA2", "WIN_OEM_PA3", "WIN_OEM_WSCTRL", "WIN_OEM_CUSEL", "WIN_OEM_ATTN", "WIN_OEM_FINISH", "WIN_OEM_COPY", "WIN_OEM_AUTO", "WIN_OEM_ENLW", "WIN_OEM_BACKTAB", "ATTN", "CRSEL", "EXSEL", "EREOF", "PLAY", "ZOOM", "", "PA1", "WIN_OEM_CLEAR", ""];
|
|
1753
|
+
constructor() { }
|
|
1754
|
+
numberToString = (value) => {
|
|
1755
|
+
return value === undefined ? '' : (value).toString();
|
|
1756
|
+
};
|
|
1757
|
+
nullableNumberToString = (value) => {
|
|
1758
|
+
return value === null || value === undefined ? '' : (value).toString();
|
|
1759
|
+
};
|
|
1760
|
+
tryParseInt = (str, defaultValue) => {
|
|
1761
|
+
var retValue = defaultValue;
|
|
1762
|
+
if (str !== null) {
|
|
1763
|
+
if (str.length > 0) {
|
|
1764
|
+
if (!isNaN(str)) {
|
|
1765
|
+
retValue = parseInt(str);
|
|
1766
|
+
}
|
|
1767
|
+
}
|
|
1768
|
+
}
|
|
1769
|
+
return retValue;
|
|
1770
|
+
};
|
|
1771
|
+
tryParseBool(value, defaultValue) {
|
|
1772
|
+
return (value == 'true' || value == 'false' || value === true || value === false) && JSON.parse(value) || defaultValue;
|
|
1773
|
+
}
|
|
1774
|
+
findClosestAncestorByClass = (element, cssSelector) => {
|
|
1775
|
+
let firstChar = cssSelector.charAt(0);
|
|
1776
|
+
for (; element; element = element.parentNode) {
|
|
1777
|
+
if (firstChar === '.') {
|
|
1778
|
+
if (element.classList && element.classList.contains(cssSelector.substr(1))) {
|
|
1779
|
+
return element;
|
|
1780
|
+
}
|
|
1781
|
+
}
|
|
1782
|
+
}
|
|
1783
|
+
return null;
|
|
1784
|
+
};
|
|
1785
|
+
isNumeric = (n) => {
|
|
1786
|
+
return !isNaN(parseFloat(n)) && isFinite(n);
|
|
1787
|
+
};
|
|
1788
|
+
removeNonNumericCharactersFromStr = (value) => {
|
|
1789
|
+
return value.replace(/[^0-9]/g, '');
|
|
1790
|
+
};
|
|
1791
|
+
isDate = (date) => {
|
|
1792
|
+
if (Object.prototype.toString.call(date) === '[object Date]') {
|
|
1793
|
+
if (isNaN(date.getTime())) {
|
|
1794
|
+
return false;
|
|
1795
|
+
}
|
|
1796
|
+
else {
|
|
1797
|
+
return true;
|
|
1798
|
+
}
|
|
1799
|
+
}
|
|
1800
|
+
else {
|
|
1801
|
+
return false;
|
|
1802
|
+
}
|
|
1803
|
+
};
|
|
1804
|
+
isValidDate = (value) => {
|
|
1805
|
+
return !isNaN(Date.parse(value));
|
|
1806
|
+
};
|
|
1807
|
+
rulesEval = (styles) => {
|
|
1808
|
+
let defaultStyles = {
|
|
1809
|
+
'backgroundColor': '#ffffff',
|
|
1810
|
+
'color': '#000000',
|
|
1811
|
+
'font-style': 'normal',
|
|
1812
|
+
'text-decoration': 'unset'
|
|
1813
|
+
};
|
|
1814
|
+
if (styles === null)
|
|
1815
|
+
return defaultStyles;
|
|
1816
|
+
if (Object.entries(styles).length !== 0) {
|
|
1817
|
+
Object.assign(defaultStyles, styles);
|
|
1818
|
+
return defaultStyles;
|
|
1819
|
+
}
|
|
1820
|
+
return defaultStyles;
|
|
1821
|
+
};
|
|
1822
|
+
/**
|
|
1823
|
+
* Serializes an object as URL parameters. The object should be a base type or have
|
|
1824
|
+
* properties that are each base types. Does not support a property with structure.
|
|
1825
|
+
* @param {Object} data
|
|
1826
|
+
* @returns {String}
|
|
1827
|
+
*/
|
|
1828
|
+
formatAsUrlParameters = (data) => {
|
|
1829
|
+
if (typeof data !== 'object' || data === null)
|
|
1830
|
+
return (data == null ? '' : data.toString());
|
|
1831
|
+
let buffer = [];
|
|
1832
|
+
for (let name in data) {
|
|
1833
|
+
if (!data.hasOwnProperty(name)) {
|
|
1834
|
+
continue;
|
|
1835
|
+
}
|
|
1836
|
+
let value = data[name];
|
|
1837
|
+
buffer.push(encodeURIComponent(name) +
|
|
1838
|
+
'=' + encodeURIComponent(value == null ? '' : value));
|
|
1839
|
+
}
|
|
1840
|
+
let source = buffer.join('&')
|
|
1841
|
+
.replace(/%20/g, '+');
|
|
1842
|
+
return (source);
|
|
1843
|
+
};
|
|
1844
|
+
showEntityStatus = (entity, entityType, formatedRecordId) => {
|
|
1845
|
+
let title = '';
|
|
1846
|
+
if (entity) {
|
|
1847
|
+
if (entityType)
|
|
1848
|
+
title = entityType + ' - ';
|
|
1849
|
+
if (entity.entityAspect.entityState.isAdded()) {
|
|
1850
|
+
title += 'New Record';
|
|
1851
|
+
}
|
|
1852
|
+
else {
|
|
1853
|
+
title += formatedRecordId;
|
|
1854
|
+
}
|
|
1855
|
+
}
|
|
1856
|
+
return title;
|
|
1857
|
+
};
|
|
1858
|
+
getKeySequence = (event) => {
|
|
1859
|
+
var keys = [];
|
|
1860
|
+
if (event.ctrlKey)
|
|
1861
|
+
keys.push('ctrl');
|
|
1862
|
+
if (event.metaKey)
|
|
1863
|
+
keys.push('meta');
|
|
1864
|
+
if (event.shiftKey)
|
|
1865
|
+
keys.push('shift');
|
|
1866
|
+
if (event.altKey)
|
|
1867
|
+
keys.push('alt');
|
|
1868
|
+
var keyCode = (event.keyCode !== 'control' && event.which !== 'control') ? event.keyCode || event.which : null;
|
|
1869
|
+
if (keyCode)
|
|
1870
|
+
keys.push(this.keyboardMap[keyCode].toLowerCase());
|
|
1871
|
+
keys = [...new Set(keys)];
|
|
1872
|
+
return keys.join('+');
|
|
1873
|
+
};
|
|
1874
|
+
targetIsControl = (target) => {
|
|
1875
|
+
if (target === null)
|
|
1876
|
+
return false;
|
|
1877
|
+
var nodeName = target.nodeName.toLowerCase();
|
|
1878
|
+
return nodeName === 'input' || nodeName === 'textarea' || nodeName === 'select' || nodeName === '#text';
|
|
1879
|
+
};
|
|
1880
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
1881
|
+
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, providedIn: 'root' });
|
|
1882
|
+
}
|
|
1883
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, decorators: [{
|
|
1884
|
+
type: Injectable,
|
|
1885
|
+
args: [{
|
|
1886
|
+
providedIn: 'root',
|
|
1887
|
+
}]
|
|
1888
|
+
}], ctorParameters: () => [] });
|
|
1889
|
+
|
|
1733
1890
|
class TruDetailViewBase {
|
|
1734
1891
|
dataContext;
|
|
1735
1892
|
appEnvironment;
|
|
1736
1893
|
textManager;
|
|
1737
1894
|
windowEventHandler;
|
|
1895
|
+
desktopViewEventNotifier;
|
|
1896
|
+
util;
|
|
1738
1897
|
view;
|
|
1739
1898
|
tableName;
|
|
1740
1899
|
entities = [];
|
|
@@ -1746,11 +1905,13 @@ class TruDetailViewBase {
|
|
|
1746
1905
|
navigationIndex = 0;
|
|
1747
1906
|
recordsBeforeRevert = 0;
|
|
1748
1907
|
subs = [];
|
|
1749
|
-
constructor(dataContext, appEnvironment, textManager, windowEventHandler) {
|
|
1908
|
+
constructor(dataContext, appEnvironment, textManager, windowEventHandler, desktopViewEventNotifier, util) {
|
|
1750
1909
|
this.dataContext = dataContext;
|
|
1751
1910
|
this.appEnvironment = appEnvironment;
|
|
1752
1911
|
this.textManager = textManager;
|
|
1753
1912
|
this.windowEventHandler = windowEventHandler;
|
|
1913
|
+
this.desktopViewEventNotifier = desktopViewEventNotifier;
|
|
1914
|
+
this.util = util;
|
|
1754
1915
|
}
|
|
1755
1916
|
calculateNextIndex = () => {
|
|
1756
1917
|
let nextIndex = 0;
|
|
@@ -1805,6 +1966,38 @@ class TruDetailViewBase {
|
|
|
1805
1966
|
if (active)
|
|
1806
1967
|
this.setEntityDisplayValues(this.tableName);
|
|
1807
1968
|
}));
|
|
1969
|
+
this.subs.push(fromEvent(document, 'keydown').subscribe((event) => {
|
|
1970
|
+
if (this.desktopViewEventNotifier.isActive) {
|
|
1971
|
+
let keySequence = this.util.getKeySequence(event);
|
|
1972
|
+
if (keySequence === 'ctrl+i' || keySequence === 'meta+i') {
|
|
1973
|
+
//this.onAddEntity();
|
|
1974
|
+
event.preventDefault();
|
|
1975
|
+
}
|
|
1976
|
+
if (keySequence === 'ctrl+d' || keySequence === 'meta+d') {
|
|
1977
|
+
this.onDeleteEntity();
|
|
1978
|
+
event.preventDefault();
|
|
1979
|
+
}
|
|
1980
|
+
if (keySequence === 'ctrl+up' || keySequence === 'meta+up') {
|
|
1981
|
+
this.onFirstEntity();
|
|
1982
|
+
event.preventDefault();
|
|
1983
|
+
}
|
|
1984
|
+
if (keySequence === 'ctrl+left' || keySequence === 'meta+left') {
|
|
1985
|
+
this.onPreviousEntity();
|
|
1986
|
+
event.preventDefault();
|
|
1987
|
+
}
|
|
1988
|
+
if (keySequence === 'ctrl+right' || keySequence === 'meta+right') {
|
|
1989
|
+
this.onNextEntity();
|
|
1990
|
+
event.preventDefault();
|
|
1991
|
+
}
|
|
1992
|
+
if (keySequence === 'ctrl+down' || keySequence === 'meta+down') {
|
|
1993
|
+
this.onLastEntity();
|
|
1994
|
+
event.preventDefault();
|
|
1995
|
+
}
|
|
1996
|
+
var targetIsControl = this.util.targetIsControl(event.target);
|
|
1997
|
+
if (!targetIsControl && event.ctrlKey || event.altKey)
|
|
1998
|
+
event.preventDefault();
|
|
1999
|
+
}
|
|
2000
|
+
}));
|
|
1808
2001
|
}
|
|
1809
2002
|
setNavigationIndex(index) {
|
|
1810
2003
|
this.navigationIndex = index;
|
|
@@ -1829,13 +2022,13 @@ class TruDetailViewBase {
|
|
|
1829
2022
|
this.windowEventHandler.setWindowTitle(this.textManager.formatWindowTitle(title));
|
|
1830
2023
|
this.recordLocation = recordIndex + ' of ' + this.entities.length;
|
|
1831
2024
|
}
|
|
1832
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDetailViewBase, deps: [{ token: TruDataContext }, { token: TruAppEnvironment }, { token: TruTextManager }, { token: TruWindowEventHandler }], target: i0.ɵɵFactoryTarget.Component });
|
|
2025
|
+
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDetailViewBase, deps: [{ token: TruDataContext }, { token: TruAppEnvironment }, { token: TruTextManager }, { token: TruWindowEventHandler }, { token: TruDesktopViewEventNotifier }, { token: TruUtil }], target: i0.ɵɵFactoryTarget.Component });
|
|
1833
2026
|
static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "17.3.5", type: TruDetailViewBase, selector: "tru-detail-view-base", inputs: { view: "view" }, ngImport: i0, template: "", styles: [""] });
|
|
1834
2027
|
}
|
|
1835
2028
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDetailViewBase, decorators: [{
|
|
1836
2029
|
type: Component,
|
|
1837
2030
|
args: [{ selector: 'tru-detail-view-base', template: "" }]
|
|
1838
|
-
}], ctorParameters: () => [{ type: TruDataContext }, { type: TruAppEnvironment }, { type: TruTextManager }, { type: TruWindowEventHandler }], propDecorators: { view: [{
|
|
2031
|
+
}], ctorParameters: () => [{ type: TruDataContext }, { type: TruAppEnvironment }, { type: TruTextManager }, { type: TruWindowEventHandler }, { type: TruDesktopViewEventNotifier }, { type: TruUtil }], propDecorators: { view: [{
|
|
1839
2032
|
type: Input
|
|
1840
2033
|
}] } });
|
|
1841
2034
|
|
|
@@ -3741,145 +3934,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
3741
3934
|
}]
|
|
3742
3935
|
}] });
|
|
3743
3936
|
|
|
3744
|
-
class TruUtil {
|
|
3745
|
-
keyboardMap = ["", "", "", "CANCEL", "", "", "HELP", "", "BACK_SPACE", "TAB", "", "", "CLEAR", "ENTER", "RETURN", "", "SHIFT", "CONTROL", "ALT", "PAUSE", "CAPS_LOCK", "KANA", "EISU", "JUNJA", "FINAL", "HANJA", "", "ESCAPE", "CONVERT", "NONCONVERT", "ACCEPT", "MODECHANGE", "SPACE", "PAGE_UP", "PAGE_DOWN", "END", "HOME", "LEFT", "UP", "RIGHT", "DOWN", "SELECT", "PRINT", "EXECUTE", "PRINTSCREEN", "INSERT", "DELETE", "", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "COLON", "SEMICOLON", "LESS_THAN", "EQUALS", "GREATER_THAN", "QUESTION_MARK", "AT", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "WIN", "", "CONTEXT_MENU", "", "SLEEP", "NUMPAD0", "NUMPAD1", "NUMPAD2", "NUMPAD3", "NUMPAD4", "NUMPAD5", "NUMPAD6", "NUMPAD7", "NUMPAD8", "NUMPAD9", "MULTIPLY", "ADD", "SEPARATOR", "SUBTRACT", "DECIMAL", "DIVIDE", "F1", "F2", "F3", "F4", "F5", "F6", "F7", "F8", "F9", "F10", "F11", "F12", "F13", "F14", "F15", "F16", "F17", "F18", "F19", "F20", "F21", "F22", "F23", "F24", "", "", "", "", "", "", "", "", "NUM_LOCK", "SCROLL_LOCK", "WIN_OEM_FJ_JISHO", "WIN_OEM_FJ_MASSHOU", "WIN_OEM_FJ_TOUROKU", "WIN_OEM_FJ_LOYA", "WIN_OEM_FJ_ROYA", "", "", "", "", "", "", "", "", "", "CIRCUMFLEX", "EXCLAMATION", "DOUBLE_QUOTE", "HASH", "DOLLAR", "PERCENT", "AMPERSAND", "UNDERSCORE", "OPEN_PAREN", "CLOSE_PAREN", "ASTERISK", "PLUS", "PIPE", "HYPHEN_MINUS", "OPEN_CURLY_BRACKET", "CLOSE_CURLY_BRACKET", "TILDE", "", "", "", "", "VOLUME_MUTE", "VOLUME_DOWN", "VOLUME_UP", "", "", "", "", "COMMA", "", "PERIOD", "SLASH", "BACK_QUOTE", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "OPEN_BRACKET", "BACK_SLASH", "CLOSE_BRACKET", "QUOTE", "", "META", "ALTGR", "", "WIN_ICO_HELP", "WIN_ICO_00", "", "WIN_ICO_CLEAR", "", "", "WIN_OEM_RESET", "WIN_OEM_JUMP", "WIN_OEM_PA1", "WIN_OEM_PA2", "WIN_OEM_PA3", "WIN_OEM_WSCTRL", "WIN_OEM_CUSEL", "WIN_OEM_ATTN", "WIN_OEM_FINISH", "WIN_OEM_COPY", "WIN_OEM_AUTO", "WIN_OEM_ENLW", "WIN_OEM_BACKTAB", "ATTN", "CRSEL", "EXSEL", "EREOF", "PLAY", "ZOOM", "", "PA1", "WIN_OEM_CLEAR", ""];
|
|
3746
|
-
constructor() { }
|
|
3747
|
-
numberToString = (value) => {
|
|
3748
|
-
return value === undefined ? '' : (value).toString();
|
|
3749
|
-
};
|
|
3750
|
-
nullableNumberToString = (value) => {
|
|
3751
|
-
return value === null || value === undefined ? '' : (value).toString();
|
|
3752
|
-
};
|
|
3753
|
-
tryParseInt = (str, defaultValue) => {
|
|
3754
|
-
var retValue = defaultValue;
|
|
3755
|
-
if (str !== null) {
|
|
3756
|
-
if (str.length > 0) {
|
|
3757
|
-
if (!isNaN(str)) {
|
|
3758
|
-
retValue = parseInt(str);
|
|
3759
|
-
}
|
|
3760
|
-
}
|
|
3761
|
-
}
|
|
3762
|
-
return retValue;
|
|
3763
|
-
};
|
|
3764
|
-
tryParseBool(value, defaultValue) {
|
|
3765
|
-
return (value == 'true' || value == 'false' || value === true || value === false) && JSON.parse(value) || defaultValue;
|
|
3766
|
-
}
|
|
3767
|
-
findClosestAncestorByClass = (element, cssSelector) => {
|
|
3768
|
-
let firstChar = cssSelector.charAt(0);
|
|
3769
|
-
for (; element; element = element.parentNode) {
|
|
3770
|
-
if (firstChar === '.') {
|
|
3771
|
-
if (element.classList && element.classList.contains(cssSelector.substr(1))) {
|
|
3772
|
-
return element;
|
|
3773
|
-
}
|
|
3774
|
-
}
|
|
3775
|
-
}
|
|
3776
|
-
return null;
|
|
3777
|
-
};
|
|
3778
|
-
isNumeric = (n) => {
|
|
3779
|
-
return !isNaN(parseFloat(n)) && isFinite(n);
|
|
3780
|
-
};
|
|
3781
|
-
removeNonNumericCharactersFromStr = (value) => {
|
|
3782
|
-
return value.replace(/[^0-9]/g, '');
|
|
3783
|
-
};
|
|
3784
|
-
isDate = (date) => {
|
|
3785
|
-
if (Object.prototype.toString.call(date) === '[object Date]') {
|
|
3786
|
-
if (isNaN(date.getTime())) {
|
|
3787
|
-
return false;
|
|
3788
|
-
}
|
|
3789
|
-
else {
|
|
3790
|
-
return true;
|
|
3791
|
-
}
|
|
3792
|
-
}
|
|
3793
|
-
else {
|
|
3794
|
-
return false;
|
|
3795
|
-
}
|
|
3796
|
-
};
|
|
3797
|
-
isValidDate = (value) => {
|
|
3798
|
-
return !isNaN(Date.parse(value));
|
|
3799
|
-
};
|
|
3800
|
-
rulesEval = (styles) => {
|
|
3801
|
-
let defaultStyles = {
|
|
3802
|
-
'backgroundColor': '#ffffff',
|
|
3803
|
-
'color': '#000000',
|
|
3804
|
-
'font-style': 'normal',
|
|
3805
|
-
'text-decoration': 'unset'
|
|
3806
|
-
};
|
|
3807
|
-
if (styles === null)
|
|
3808
|
-
return defaultStyles;
|
|
3809
|
-
if (Object.entries(styles).length !== 0) {
|
|
3810
|
-
Object.assign(defaultStyles, styles);
|
|
3811
|
-
return defaultStyles;
|
|
3812
|
-
}
|
|
3813
|
-
return defaultStyles;
|
|
3814
|
-
};
|
|
3815
|
-
/**
|
|
3816
|
-
* Serializes an object as URL parameters. The object should be a base type or have
|
|
3817
|
-
* properties that are each base types. Does not support a property with structure.
|
|
3818
|
-
* @param {Object} data
|
|
3819
|
-
* @returns {String}
|
|
3820
|
-
*/
|
|
3821
|
-
formatAsUrlParameters = (data) => {
|
|
3822
|
-
if (typeof data !== 'object' || data === null)
|
|
3823
|
-
return (data == null ? '' : data.toString());
|
|
3824
|
-
let buffer = [];
|
|
3825
|
-
for (let name in data) {
|
|
3826
|
-
if (!data.hasOwnProperty(name)) {
|
|
3827
|
-
continue;
|
|
3828
|
-
}
|
|
3829
|
-
let value = data[name];
|
|
3830
|
-
buffer.push(encodeURIComponent(name) +
|
|
3831
|
-
'=' + encodeURIComponent(value == null ? '' : value));
|
|
3832
|
-
}
|
|
3833
|
-
let source = buffer.join('&')
|
|
3834
|
-
.replace(/%20/g, '+');
|
|
3835
|
-
return (source);
|
|
3836
|
-
};
|
|
3837
|
-
showEntityStatus = (entity, entityType, formatedRecordId) => {
|
|
3838
|
-
let title = '';
|
|
3839
|
-
if (entity) {
|
|
3840
|
-
if (entityType)
|
|
3841
|
-
title = entityType + ' - ';
|
|
3842
|
-
if (entity.entityAspect.entityState.isAdded()) {
|
|
3843
|
-
title += 'New Record';
|
|
3844
|
-
}
|
|
3845
|
-
else {
|
|
3846
|
-
title += formatedRecordId;
|
|
3847
|
-
}
|
|
3848
|
-
}
|
|
3849
|
-
return title;
|
|
3850
|
-
};
|
|
3851
|
-
getKeySequence = (event) => {
|
|
3852
|
-
var keys = [];
|
|
3853
|
-
if (event.ctrlKey)
|
|
3854
|
-
keys.push('ctrl');
|
|
3855
|
-
if (event.metaKey)
|
|
3856
|
-
keys.push('meta');
|
|
3857
|
-
if (event.shiftKey)
|
|
3858
|
-
keys.push('shift');
|
|
3859
|
-
if (event.altKey)
|
|
3860
|
-
keys.push('alt');
|
|
3861
|
-
var keyCode = (event.keyCode !== 'control' && event.which !== 'control') ? event.keyCode || event.which : null;
|
|
3862
|
-
if (keyCode)
|
|
3863
|
-
keys.push(this.keyboardMap[keyCode].toLowerCase());
|
|
3864
|
-
keys = [...new Set(keys)];
|
|
3865
|
-
return keys.join('+');
|
|
3866
|
-
};
|
|
3867
|
-
targetIsControl = (target) => {
|
|
3868
|
-
if (target === null)
|
|
3869
|
-
return false;
|
|
3870
|
-
var nodeName = target.nodeName.toLowerCase();
|
|
3871
|
-
return nodeName === 'input' || nodeName === 'textarea' || nodeName === 'select' || nodeName === '#text';
|
|
3872
|
-
};
|
|
3873
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
3874
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, providedIn: 'root' });
|
|
3875
|
-
}
|
|
3876
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruUtil, decorators: [{
|
|
3877
|
-
type: Injectable,
|
|
3878
|
-
args: [{
|
|
3879
|
-
providedIn: 'root',
|
|
3880
|
-
}]
|
|
3881
|
-
}], ctorParameters: () => [] });
|
|
3882
|
-
|
|
3883
3937
|
class TruMatSelectPanel {
|
|
3884
3938
|
renderer;
|
|
3885
3939
|
select;
|
|
@@ -5057,24 +5111,6 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
5057
5111
|
type: Output
|
|
5058
5112
|
}] } });
|
|
5059
5113
|
|
|
5060
|
-
class TruDesktopViewEventNotifier {
|
|
5061
|
-
active$ = new BehaviorSubject(false);
|
|
5062
|
-
onActiveStateChanged = () => {
|
|
5063
|
-
return this.active$;
|
|
5064
|
-
};
|
|
5065
|
-
get isActive() {
|
|
5066
|
-
return this.active$.getValue();
|
|
5067
|
-
}
|
|
5068
|
-
set isActive(value) {
|
|
5069
|
-
this.active$.next(value);
|
|
5070
|
-
}
|
|
5071
|
-
static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
|
|
5072
|
-
static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier });
|
|
5073
|
-
}
|
|
5074
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImport: i0, type: TruDesktopViewEventNotifier, decorators: [{
|
|
5075
|
-
type: Injectable
|
|
5076
|
-
}] });
|
|
5077
|
-
|
|
5078
5114
|
class TruMergeData {
|
|
5079
5115
|
_value;
|
|
5080
5116
|
_modifiedBy;
|
|
@@ -9462,5 +9498,5 @@ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.5", ngImpor
|
|
|
9462
9498
|
* Generated bundle index. Do not edit.
|
|
9463
9499
|
*/
|
|
9464
9500
|
|
|
9465
|
-
export { DetailViewModule, TruActionInvoke, TruAppEnvironment, TruAuth, TruAuthInterceptor, TruBreezeContext, TruBreezeContextFactory, TruBreezeMetadataProvider, TruBreezeValidator, TruBreezeValidatorModule, TruCard, TruCardColumn, TruCardColumnData, TruCardColumnModule, TruCardColumnSearchResultsConfigBase, TruChoice, TruCloudFileManager, TruColumn, TruColumnModule, TruCommonModule, TruComponentConfigBase, TruComponentLookup, TruConfirmDialog, TruConfirmDialogConfig, TruConfirmDialogModule, TruConnectionHub, TruContextFilter, TruContextFilterChoice, TruContextFilters, TruControlComponentConfigBase, TruDataChange, TruDataContext, TruDataGrid, TruDataGridCellRenderer, TruDataGridHeader, TruDataGridModule, TruDataGridPkeyCellRenderer, TruDataGridRefHeader, TruDataGridTypes, TruDataGridUtil, TruDesktop, TruDesktopManager, TruDesktopModule, TruDesktopViewConfig, TruDetailViewBase, TruEditControlBase, TruEditControlConfigBase, TruEditParentControlConfigBase, TruEditPkeyControlConfigBase, TruEntityAccessor, TruEntityBase, TruExportDialog, TruExportDialogConfig, TruExportDialogModule, TruForm, TruFormModule, TruFormulaEval, TruGroupBox, TruGroupBoxModule, TruIconModule, TruListControlConfigBase, TruLogin, TruLoginModule, TruMatSelectPanel, TruMatSelectPanelModule, TruModelPropertyLookup, TruModelTypeLookup, TruNameValue, TruPasswordDialog, TruPasswordDialogModule, TruPredicate, TruPredicateMap, TruPropertyConfigBase, TruPropertyConfigCloudFile, TruPropertyConfigDate, TruPropertyConfigDecimal, TruPropertyConfigFile, TruPropertyConfigForeignKey, TruPropertyConfigInteger, TruPropertyConfigPassword, TruPropertyConfigPercentage, TruPropertyConfigScientific, TruPropertyConfigText, TruPropertyConfigTextChoices, TruPropertyConfigUsaAddress, TruPropertyConfigZipCode, TruQueryPredicateManager, TruReportConfig, TruReportManager, TruReportView, TruReportViewModule, TruRow, TruRowModule, TruSearchConfigBase, TruSearchControlBase, TruSearchControlConfigBase, TruSearchControlRangeBase, TruSearchIconModule, TruSearchPanelPositionManager, TruSearchPanelPositionManagerModule, TruSearchResultViewBase, TruSearchResultViewBaseModule, TruSearchResultViewManager, TruSearchViewBase, TruSearchViewBaseModule, TruSearchViewControlEventHandler, TruSearchViewEventHandler, TruSort, TruTab, TruTabGroup, TruTabGroupModule, TruTabModule, TruTableConfigBase, TruTableRegistry, TruTextManager, TruToolbar, TruToolbarButton, TruToolbarButtonModule, TruToolbarContextFilter, TruToolbarContextFilterModule, TruToolbarDropdown, TruToolbarDropdownModule, TruToolbarMenu, TruToolbarMenuModule, TruToolbarModule, TruToolbarSeparator, TruToolbarSeparatorModule, TruToolbarText, TruToolbarTextModule, TruToolbarUserProfile, TruToolbarUserProfileModule, TruUiNotification, TruUser, TruUtil, TruValidationDialog, TruValidationDialogConfig, TruValidationDialogContext, TruValidationDialogModule, TruValidatorFactory, TruWindowActionEventHandler, TruWindowEventArgs, TruWindowEventHandler };
|
|
9501
|
+
export { DetailViewModule, TruActionInvoke, TruAppEnvironment, TruAuth, TruAuthInterceptor, TruBreezeContext, TruBreezeContextFactory, TruBreezeMetadataProvider, TruBreezeValidator, TruBreezeValidatorModule, TruCard, TruCardColumn, TruCardColumnData, TruCardColumnModule, TruCardColumnSearchResultsConfigBase, TruChoice, TruCloudFileManager, TruColumn, TruColumnModule, TruCommonModule, TruComponentConfigBase, TruComponentLookup, TruConfirmDialog, TruConfirmDialogConfig, TruConfirmDialogModule, TruConnectionHub, TruContextFilter, TruContextFilterChoice, TruContextFilters, TruControlComponentConfigBase, TruDataChange, TruDataContext, TruDataGrid, TruDataGridCellRenderer, TruDataGridHeader, TruDataGridModule, TruDataGridPkeyCellRenderer, TruDataGridRefHeader, TruDataGridTypes, TruDataGridUtil, TruDesktop, TruDesktopManager, TruDesktopModule, TruDesktopViewConfig, TruDesktopViewEventNotifier, TruDetailViewBase, TruEditControlBase, TruEditControlConfigBase, TruEditParentControlConfigBase, TruEditPkeyControlConfigBase, TruEntityAccessor, TruEntityBase, TruExportDialog, TruExportDialogConfig, TruExportDialogModule, TruForm, TruFormModule, TruFormulaEval, TruGroupBox, TruGroupBoxModule, TruIconModule, TruListControlConfigBase, TruLogin, TruLoginModule, TruMatSelectPanel, TruMatSelectPanelModule, TruModelPropertyLookup, TruModelTypeLookup, TruNameValue, TruPasswordDialog, TruPasswordDialogModule, TruPredicate, TruPredicateMap, TruPropertyConfigBase, TruPropertyConfigCloudFile, TruPropertyConfigDate, TruPropertyConfigDecimal, TruPropertyConfigFile, TruPropertyConfigForeignKey, TruPropertyConfigInteger, TruPropertyConfigPassword, TruPropertyConfigPercentage, TruPropertyConfigScientific, TruPropertyConfigText, TruPropertyConfigTextChoices, TruPropertyConfigUsaAddress, TruPropertyConfigZipCode, TruQueryPredicateManager, TruReportConfig, TruReportManager, TruReportView, TruReportViewModule, TruRow, TruRowModule, TruSearchConfigBase, TruSearchControlBase, TruSearchControlConfigBase, TruSearchControlRangeBase, TruSearchIconModule, TruSearchPanelPositionManager, TruSearchPanelPositionManagerModule, TruSearchResultViewBase, TruSearchResultViewBaseModule, TruSearchResultViewManager, TruSearchViewBase, TruSearchViewBaseModule, TruSearchViewControlEventHandler, TruSearchViewEventHandler, TruSort, TruTab, TruTabGroup, TruTabGroupModule, TruTabModule, TruTableConfigBase, TruTableRegistry, TruTextManager, TruToolbar, TruToolbarButton, TruToolbarButtonModule, TruToolbarContextFilter, TruToolbarContextFilterModule, TruToolbarDropdown, TruToolbarDropdownModule, TruToolbarMenu, TruToolbarMenuModule, TruToolbarModule, TruToolbarSeparator, TruToolbarSeparatorModule, TruToolbarText, TruToolbarTextModule, TruToolbarUserProfile, TruToolbarUserProfileModule, TruUiNotification, TruUser, TruUtil, TruValidationDialog, TruValidationDialogConfig, TruValidationDialogContext, TruValidationDialogModule, TruValidatorFactory, TruWindowActionEventHandler, TruWindowEventArgs, TruWindowEventHandler };
|
|
9466
9502
|
//# sourceMappingURL=trudb-tru-common-lib.mjs.map
|