ub-server #

Added #

5.18.2 2020-05-12 #
  • for SQL Server before 2016 custom JSON function defined in SQL_SERVER_NATIVE_JSON_POLYFILL environment variable can be used instead of build-in JSON_VALUE. % in variable expression will be replaced by expresion & path. Examples:
    • use build-in function: SQL_SERVER_NATIVE_JSON_POLYFILL="JSON_VALUE(%,'$%')" ub
    • use custom function: SQL_SERVER_NATIVE_JSON_POLYFILL="dbo.F_GetJsonValue(%,'%')" ub This is a work around for old SQL Server, we we do not recommend using it in production
  • req_getReqId() function added to http_server binding - used inside @unitybase/uba HTTPRequest.requestId getter to get a unique HTTP request ID (the same as used to fill a uba_auditTrail.request_id)
5.18.1 2020-05-06 #
  • entity attribute access restriction: "restrictions" section for entity attribute allow limit attributes values selection, insertion or updating either for all users or only for specified role in case UBQL comes from outside the server. Usage examples (see uba_user for real life usage):
    • deny access to uba_user.uPasswordHashHexa attribute value for all users;
    • limit access to uba_user.trustedIP only to Supervisor role members. For other roles show '*****' instead of actual value;
    • limit updating / insertion of document state attribute for all - such attributes should be modified only from inside server;
  • DB connections now available in UB shell scripts (see ubjs/apps/autotest/testCmdLineDbConnection.js for sample)
  • extended logging of authentication and authorization process in case server in dev mode; Can be used for debug purpose.
  • LDAP authentication under Linux now use libldap instead of libcurl what has a known bug
  • in case UBQL what comes from client side contains an unsafe field or where item such errors will be handled as ESecurityException and logged into uba_audit. Before this patch such exceptions are handel as EMetadatabaseException and can be visible only in text logs.
  • BREAKING for security reason in case client UBQL contains orderBy by attribute what not in fieldList server will throw ESecurityException. To help migrate to UB5.18.1 new option security.unsafeOrderBy is added to config and cet be set to true to prevent such exception. unsafeOrderBy will be removed in 5.18.2
  • SQLite3 connection can return number of rows affected by last insert/update/delete operation (used in new loging)

Changed #

5.18.3 2020-05-21 #
  • SQL logging: in case of error inside SQL statement parsed statement will be logged instead of original statement
5.18.1 2020-05-06 #
  • default value for security.forceNTLM ubConfig setting changed from true to false. NTLM deprecated even by Microsoft - please, setup Kerberos for SSO.
  • optimization of fs.readdirSync on Linux platform
  • socket based (Linux) HTTP server optimizations - removed unneeded massive setsockopt syscalls + use vDSO under Linux to get a system time;
  • MySQL support is temporary removed. Notify me in case someone need it.
  • Postgres SQL access class rewritten from scratch. Now libpq is used directly without Zeos. This speed up Postgres query execution and fetch for 10-100% and decrease memory usage.
  • Postgres connection config: databaseName can be a Postgres URL In this case serverName can be an empty string; User name and password can also be empty and defined either in environment variable or in libpg config
  • log format for SQL statement execution is changed:
    • all supported DBMS now produce the same logging results
    • DBMS level exception now without connection details (only exception message); invalid statement is logged into next line with ERROR log level n form q=statement what cause an exception
    • sql statements are logged in the same form they passed to DBMS driver:
      • Oracle: parameters are in :AA, :BB format
      • Postgres: parameters are in $1, $2 format
      • SQLite2 & SQl Server: parameters are in ?, ? format
    • App.prepareAndRun enter/leave is removed - time to first row now logged directly into SQL log statement (reduce log size)
    • select statement log format: r=1 t=255 fr=254 c=81 q=SELECT column1, .....
    • update/insert/delete statement log format: r=1 t=1332 c=78 q=update tableName...
    • SQL log format explanation:
      • r: affected row(s) count (count of updated rows for update, deleted for delete, selected for select etc)
      • t: time to execute (include fetch time for select statements)
      • fr: time to execute WITHOUT fetching rows (time to first row)
      • c: in case > 0 - prepared statement cache index (Oracle, Postgres)

Removed #

5.18.2 2020-05-12 #
  • because of big regression client UBQL allows attributes what not in fieldList to be used in orderBy clause (disallowed in 5.18.1), but server will throw ESecurityException in case expression passed to orderBy is "unsafe". Option security.unsafeOrderBy is removed from a config.
5.18.1 2020-05-06 #
  • ubConfig sections httpServer.headersPostprocessors and httpServer.watchFileChanges are removed. Production server should use reverse proxy for caching / compressing of static content.
  • BREAKING UBQL with options.totalRequired = true no longer create a separate DataStore namespace __totalRecCount. To get a total record count property DataStore.totalRowCount should be used instead. This only affect a UB 1.12 legacy code like this:
 if(mParams.options.totalRequired) {
   ctx.dataStore.currentDataName = "__totalRecCount";
   mParams.__totalRecCount = (ctx.dataStore.rowCount) ? ctx.dataStore.get(0) : ctx.dataStore.rowCount;
   ctx.dataStore.currentDataName = "";
 }

Code above should be replaced by

  if(mParams.options.totalRequired) {
    mParams.__totalRecCount = ctx.dataStore.totalRowCount
  }

or simply removed - UB5.18.1 will add a mParams.__totalRecCount output parameter automatically

Fixed #

5.18.3 2020-05-21 #
  • SQL Server ODBC connection (Linux): fix "Error converting data type varchar to numeric" for small numbers like 0.01
  • SQL server/Oracle: fix JSON serialization for small numbers (DB: -.01 -> JSON -0.01; DB: .002 -> JSON: 0.002)
  • prevent accumulation of execution time (t=XXX in SQL log) for cached statement (Postgres and Oracle)
  • allow asterisk queries like UB.Repository('ubm_enum').attrs('*').select() for cacheable entities. Before this fix <<<Access deny>>> occurs because server deny a '*' in fieldList while calc entity version.
5.18.2 2020-05-12 #
  • in case serverName in Postgres DB config contains trailing / ("serverName": "postgresql://host:port/") UB will ignore it while constructs a Postgres URL. Preferred way to specify a Postgres connection in UB>=5.18.1 is to set a "serverName": "" and specify a Postgres URL in "databaseName".
5.18.1 2020-05-06 #
  • correct ubConfig ENV variable parse - in case % is found on different lines ("single line string" mode for regexp parser should be turned off)
  • fix process.env in case env variable value contains = inside
  • under Unix ubConfig parser allows setting an empty environment variable value in %VARIABLE% macros (variable should exist in form VARIABLE=). Under Windows such empty variables will be also replaced by empty strings BUT error will be written to console.
  • correct SoftLock mixin exception propagation in case update is raised from inside server-side JS method using store.run('update', ...). In this case caller should get the same errors as when update executed directly from ubql:
    • <<<Record modified by another user>>>
    • <<<Cannot lock multiple records>>>
    • <<<Record locked by another user>>>
  • Negotiate authorization will use UB schema (authentication - Negotiate as before). This speed up authorization checking
  • http client: {useCompression: false} option will disable compression as expected (before this patch to disable compression {useCompression: -1} should be used
  • PostgresSQL deep JSON query: in case of path jsonAttr.val.subval query to JSON attribute path #>> operator is used to get a value. Before this patch ->> is used, and the result was null.
  • SQL Server 2008 ID generation fixed (2008 do not support sequences)
  • fixed rare case when UB in -cd mode skip wroting of exception into console

@unitybase/adminui-vue #

Added #

1.11.2 2020-05-27 #
  • UTable: lastTableRow slot added - used, for example, by UTableEntity to add a pagination in the end of the table
  • UTableEntity: pagination buttons tooltips added (next page, prev page)
  • UTableEntity: next page pagination link added to the end of table scrollable area
  • UMasterDetailView: in case called from shortcut will store table filters in localStorage and apply it on open
1.11.0 2020-05-22 #
  • utils/lookups method subscribe - subscribes to a local entity changes. Lookup attrs already includes ID and description attribute for current entity can be extend by attrs param.
await lookups.subscribe('tst_dictionary', ['code', 'userID'])
  • utils/lookups method unsubscribe Unsubscribe from entity changes. Listener is removed only if current subscription is last.
await lookups.subscribe('tst_dictionary')
  • utils/lookups method get Getter for lookups
/** Returns description attribute value by ID */
lookups.get('tst_dictionary', 245671369782)
/** Returns description attribute value by ID */
lookups.get('tst_dictionary', {code: 'code10'})
/** Can search on several attributes */
lookups.get('ubm_enum', {eGroup: 'AUDIT_ACTION', code: 'INSERT'})
/** In case third param as string - returns displayValue as userID.fullName */
lookups.get('tst_dictionary', 245671369782, 'userID.fullName')
/** 
 * In case third param is true (boolean) - returns entire record
 * as object with all attributes what passed to subscribe
 */
lookups.get('tst_dictionary', 245671369782, true)
  • utils/lookups added to Vue prototype. Example: this.$lookups.get('tst_dictionary', 245671369782)
1.10.11 2020-05-17 #
  • new icons u-icon-circle, u-icon-circle-bold, u-icon-circle-close, u-icon-circle-dollar, u-icon-circle-double, u-icon-circle-info, u-icon-circle-minus, u-icon-circle-plus, u-icon-circle-question, u-icon-circle-trademark, u-icon-clock, u-icon-data, u-icon-eraser, u-icon-exit, u-icon-expand, u-icon-eye-slash, u-icon-folder-add, u-icon-globe, u-icon-grid, u-icon-hand, u-icon-image, u-icon-key, u-icon-layers, u-icon-line-chart, u-icon-message-alt, u-icon-message-text, u-icon-more-vertical, u-icon-object-group, u-icon-rectangle, u-icon-rectangle-dotted, u-icon-resize, u-icon-rhombus, u-icon-sort-asc-alt, u-icon-sort-desc-alt, u-icon-unlock, u-icon-window-left, u-icon-window-top
  • replace most font-awesome and element-ui to UB icons analog
1.10.10 2020-05-13 #
  • styles for scrollbar in firefox
1.10.9 2020-05-06 #
  • icons set. See documentation here
  • UForm/mount/mountModal: added merge form component props with dialog props before render, in case you need to use standard el-dialog props. For example: close-on-press-escape: false, show-close: false.

Changed #

1.11.3 2020-05-27 #
  • UFormRow: in case label is empty string - do not render a trailing :
1.11.2 2020-05-27 #
  • UTableEntity, UTable allow text selection in a table using mouse
  • UTableEntity allow scrolls table using PgUp/PgDown/CtrlPgUp/Ctrl+PgDown
  • UTableEntity filter: top/bottom margins decreased to 4px from 12px - this decrease total toolbar height by 16px
1.11.0 2020-05-22 #
  • utils/lookups fully refactored and maked reactive
  • Form/processing connection listener *:changed now provides changed data. So no more need to do select for fresh data in the neighboring tabs.
[{
  entity: 'tst_dictionary',
  method: 'insert',
  resultData: { ID: 123312132313, name: 'name 1', caption: 'caption 1' }
}]
  • UTableEntity: use store getters (canAddNew, canEdit, canDelete) to control keyboard events.
  • UTableEntity table header cell attribute divider changed from '->' to /
  • UTableEntity column divider of fixed column no more hiding
  • UTableEntity: column of type Currency is rendered using formatByPattern from @unitybase/cs-shared with a thousand separator and 2 fractions digits 2 203,00 3.10 (before this changes 2203, 3.1)
  • UTableEntity: column of type Date and DateTime are rendered using formatByPattern from @unitybase/cs-shared in short format (month as number). UK: 23.05.2020, 23.05.2020 13:14, en: 05/23/2020 05/23/2020, 1:14 PM
  • UToolbar: creation and modification dates are rendered using Intl dateTime format with seconds
1.10.12 2020-05-21 #
  • showList command: in case config contains fieldList: ["*"] actual fieldList is constructed by UTableEntity. This guaranty the same behavior of a command as with <u-table-entity :entity-name="nameOfEntity">.
  • UTableEntity: column label for complex attribute like currencyID.code created as concatenation of a parent attributes captions up to 3 level depth: currency->code (the same as for Ext based table); To override this behavior column label can be specified in columns (for vue renderer format) or fieldList for Ext format config.
1.10.11 2020-05-17 #
  • UMasterDetailView in detail grid hides column which relatives detail grid with master grid
  • UMasterDetailView adding of a record sets a master attribute value as a detail default using parentContext param
1.10.10 2020-05-13 #
  • UTableEntity/excel export uses a client-side export and format excel data accoding to current TableEntity configuration; Limitation: custom slots not exported yet; rows count limited to 50000.

Removed #

1.11.0 2020-05-22 #
  • BREAKING methods load, getEnumValue, getValueById
1.10.11 2020-05-17 #
  • UTableEntity property useRequestFieldList is removed. From now grid uses fieldList from request.
  • UChat component moved into @unitybase/messaging package and renamed to UmChat

Fixed #

1.11.3 2020-05-27 #
  • JSDoc for UFormRow
1.11.2 2020-05-27 #
  • UMasterDetailView incorrect display of total count. Resets total on any changes in filters
  • UTableEntity css fixes:
    • filters will try to expand to full width
    • will wrap on overflow
    • pagination white-space sets to no-wrap
  • DatePicker: localize date/dateTime/firstDayOfWeek format for form auto field, full text search and table filters controls
1.11.1 2020-05-25 #
  • UAutoFiled for String attributes will set a maxLength input property to attribute.size, so user can't enter string longer when accepted by DB. This prevents a server-side errors like "attribute value will be truncated".
  • prevent o.core.UBApp is undefined error on login page (lookups initialized only in case UB.core.UBApp is defined)
  • production build of @unitybase/adminui-vue will exports lookups as expected
  • UTableEntity table header cell attribute divider changed from '->' to / for 3d level depth
  • UMasterDetailView detail header translated using i18n
  • date filter caption i18n fixed for ru (от..до.. -> с..по..) uk (вiд..до.. -> з..до..)
1.10.13 2020-05-21 #
  • UTableEntity prevent error parentAttribute of undefined in case attribute param is passed in column config.
1.10.12 2020-05-21 #
  • UTableEntity: if columns prop is not binds, then fieldList will contain attributes with defaultView: true only. This prevents to fetch from DB attributes what not visible in the current view.
  • UTableEntity: prevent error dataType of undefined on export table with custom column
1.10.11 2020-05-17 #
  • UTableEntity prevent error "get dataType of undefined" for a table with custom columns
  • ElSelect(multiple) removed fixed height to allow display several rows
  • UTableEntity/filters/entity/equal prevent error "get descriptionAttribute of undefined" for custom attributes in column definition
  • UTableEntity excel export: fixed export of eav attributes by using a fieldList from request instead of broken one from server
1.10.10 2020-05-13 #
  • u-icon* centered inside container properly (before this change they could move slightly upwards). Fixed by sets font descent to 100
1.10.9 2020-05-06 #
  • UMasterDetailView: prevent crops of the scrollbar's due to wrong navbar height (min navbar heingth set to 54px.
  • UDialog/dialogDeleteRecord: prevent error in case description attribute for entity is not defined
  • UButton: allow to bind any native events to inner <button> component. Example: <u-button @onmouseover="action">click me</u-button>
  • UCodeMirror: error on ctrl+B (beautify)
  • UTableEntity: visibility of filters in case passed attribute param in column definition
  • UTableEntity, UMasterDetailView: slot toolbarDropdownAddNew. Previously this slot did not replace the button

@unitybase/adminui-pub #

Added #

5.13.15 2020-05-27 #
  • UBCommand/getNavshortcutCommandText param shortcutCode in returned commandConfig

Changed #

5.13.12 2020-05-21 #
  • UBCommand/showForm provide shortcut caption to cmdCode. Now tab title will be equal to the caption of the shortcut
5.13.11 2020-05-17 #
  • replace most font-awesome and element-ui to UB icons analog

Fixed #

5.13.12 2020-05-21 #
  • UB.ux.UBImg: image content is scaled to maintain its aspect ratio while fitting within the element's content box
  • UBCommand.showList: detailAttribute should be added to fieldList as object with visibility:false, to prevent lookup queries for this field
  • icon class for MenuItem.Details. Changed from u-icon-arrow-down to u-icon-arrow-right
  • ubfieldset: use icon class fa-angle-down|right for expand a button - u-icon-dows too large there
5.13.11 2020-05-17 #
  • UBMultiSelectBox: changed orderList structure from Array<Object> to Object for compatibility wit UB@5.18+

@unitybase/cdn #

Changed #

5.4.10 2020-05-17 #
  • replace most font-awesome and element-ui to UB icons analog

@unitybase/cs-shared #

Added #

5.3.1 2020-05-25 #
  • formatByPattern.setLang2LocaleHook function added - allows override default UB language to ICU locale transformation rules
5.3.0 2020-05-22 #
  • formatByPattern module with formatNumber and formatDate functions using cached Intl instances. This module is moved from @unitybase/ubs to be used in apps what not require a UBS model.
5.2.7 2020-05-13 #
  • link to tutorial for an array bindings from CustomRepository.where()

Changed #

5.3.1 2020-05-25 #
  • formatByPattern.formatDate now accept any type as a value. For !value returns '', for non-date value creates a Date using new Date(value)
  • formatByPattern.formatNumber now accept any type as a value. For !value(except 0) and NaN returns '', for non-number value uses parseFloat()

@unitybase/org #

Changed #

5.3.10 2020-05-17 #
  • replace most font-awesome and element-ui to UB icons analog

@unitybase/ub-pub #

Fixed #

5.5.8 2020-05-06 #
  • NativeMessages extension setup (@ub-e/nm-scanned, @ub-e/nm-pdfsign etc.) for FireFox >= 75 will show setup link for user as expected instead of silently ignore fact what extension not installed (work-around for bug in FF75+)

@unitybase/ub #

Added #

5.4.10 2020-05-17 #
  • put a model version (version from package.json) into log while loading domain models on server startup. New log example:
20200514 09285007  " info  		Loading domain models... 
20200514 09285007  " info  		"UB"(5.4.9) from "./node_modules/@unitybase/ub" 
20200514 09285007  " info  		"UBA"(5.4.9) from "./node_modules/@unitybase/uba" 
5.4.9 2020-05-13 #
  • HTTPRequest.requestId property added: returns unique HTTP request ID - the same value as used to fill a uba_auditTrail.request_id; In case audit trail is disabled in domain (uba_auditTrail entity not available) or Ub server version < 5.18.2 returns 0.
5.4.8 2020-05-06 #
  • support for "attribute restriction" feature added in UB server 5.18.1 (u)

@unitybase/uba #

Added #

5.4.8 2020-05-06 #
  • BREAKING this version of @unitybase/uba require UB server to be at last 5.18.1 ("attribute restriction" feature used)
  • SECURITY access to uba_user.uPasswordHashHexa is disallowed from client (restricted for all)
  • SECURITY access to uba_user disabled, isPending and trustedIP attributes are allowed only for members of Supervisor role; For other roles actual values is replaced by ***** for trustedIP and null for disabled, isPending
  • SMS registration handler added to uba_user.publicRegistration rest method. Registration kind can be defined in serverConfig.application.customSettings.publicRegistration.kind application config key. See uba_user.publicRegistration documentation for details.

Changed #

5.4.10 2020-05-17 #
  • replace most font-awesome and element-ui to UB icons analog
5.4.8 2020-05-06 #
  • BREAKING uba_otp.generateOtp will generate a 6 digits random string instead of GUID

Fixed #

5.4.8 2020-05-06 #
  • characters ,.[]{}? added to password policy complexity check. Checking is carried out in case ubs_settings UBA.passwordPolicy.checkCmplexity value is set to true.
  • i18n added for uba_auditTrail.actionUserName attribute

@unitybase/ubcli #

Added #

5.5.9 2020-05-13 #
  • detailed explanation of database creation in initDB - see https://unitybase.info/api/server-v5/module-initDB.html for tips how to create a database manually

@unitybase/ubm #

Changed #

5.3.10 2020-05-17 #
  • replace most font-awesome and element-ui to UB icons analog

@unitybase/ubq #

Added #

5.3.10 2020-05-17 #
  • @unitybase/ubq/modules/mail-queue exports a property mailerEnabled.
    • Indicate mailer is configured in serverConfig.application.customSettings.mailerConfig.
    • in case this property is false calls to queueMail do nothing, so better to verify it before mail creation to save a server resources

Changed #

5.3.10 2020-05-17 #
  • queueMail do not put a mail sending job into queue in case mailer is not configured in serverConfig.application.customSettings.mailerConfig
  • replace most font-awesome and element-ui to UB icons analog

@unitybase/ubs #

Changed #

5.3.10 2020-05-17 #
  • replace most font-awesome and element-ui to UB icons analog

Deprecated #

5.4.0 2020-05-22 #
  • usage of @unitybase/ubs/public/formatByPattern.js is deprecated. require('@unitybase/cs-shared').formatByPattern should be used instead.

Fixed #

5.3.8 2020-05-06 #
  • fix ESLint warnings in initial JS template for ubs_report (no functional changes)

@unitybase/xlsx #

Changed #

5.1.26 2020-05-13 #
  • reformat code according to ESLint rules (no functional changes)