ub-server #

Added #

5.7.18 2019-03-24 #
  • Audit mixin will fill uba_auditTrail.request_id attribute - a unique request identifier. Can be used eg for revert all changes made by a single ubql call

Changed #

5.7.18 2019-03-24 #
  • minor ORM SQL builder performance optimizations in dynamic arrays initialization/finalization process

Fixed #

5.7.18 2019-03-24 #
  • Linux: reset terminal color after UB stop - this prevent colored output for next terminal command
5.7.17 2019-03-12 #
  • prevent AV in case source file contains invalid byte sequence (not UTF8 compatible)
5.7.16 2019-03-06 #
  • Postgres database driver will execute all commands specified in config inside connection.executeWhenConnected. This allows setting for example search_path in case database connection role do not match schema name.
5.7.15 2019-03-03 #
  • Linux: gracefully shut down server in case of SIGSEGV or Out of Memory by sending SIGTENR to a main process thread. This prevents possible "A thread cannot destroy itself" error during shut down.
  • Windows: gracefully shut down server in case of AV or Out of Memory by sending CTRL_C_EVENT to a main process thread. This prevents possible "There is unreleased engine" error during shut down
  • Windows: gracefully shut down server in case of CTRL_CLOSE_EVENT (user closes a console)

@unitybase/adminui-vue #

Added #

1.4.1 2019-03-30 #
  • Vuex now imported inside @unitybase/adminui-vue. In other models:
    • for dev mode can be required directly Vuex = require('vuex')
    • in case model is boundled by webpack Vuex should be in externals section of webpack config
      externals: {
        lodash: '_',
        '@unitybase/ub-pub': 'UB',
        '@unitybase/adminui-pub': '$App',
        'vuex': {
          commonjs: 'vuex',
          commonjs2: 'vuex',
          amd: 'vuex',
          root: 'Vuex'
        }
      }
    
  • new mountHelpers module - to be used inside form's mount function:
  const AdminUiVue = require('@unitybase/adminui-vue')
  module.exports.mount = function (params) {
    if (AdminUiVue.mountHelpers.activateIfMounted(params)) return
    let mountParams = {
      FormComponent: TstDictionaryFt,
      showFormParams: params
    }
    AdminUiVue.mountHelpers.mount(mountParams)
  }
  • added UForm component. Wrap for UFormRow which can set label width for child UFormRows
  • added modalWidth option to mount formParams
1.4.0 2019-03-21 #
  • throttle-debounce micro package added. Exported by adminui-vue as throttleDebounce
  • added UFormRow component. When you need to add label in right side of form item
  • added UErrorWrap component. Wrap any element and show error from prop under element
1.3.3 2019-03-10 #
  • UInputNumber component - editor for Numeric field (Int, BinInt, Currency, Float, ID); HOC over ElInputNumber
  • Vue.prototype.$dialog, $dialogYesNo, #dialogInfo, $dialogError
  • controls for Vue based navbar component:
    • UNavbarNotificationButton - ubm_messages notifications
    • UNavbarSearchButton - Full Text Search (+ shortcut Ctrl + F)
    • UNavbarUserButton - actions for logged in user
  • "Magic links" (see adminui-vue/utils/magicLinks.js for details)
  <a href="#" data-cmd-type="showForm" data-entity="ubm_navshortcut" data-instance-id=332352169869385>
     Edit existed shortcut with specified ID
 </a>
1.3.2 2019-03-05 #
  • new Vue base sidebar component (left menu). Enabling by setting UB.connection.appConfig.uiSettings.adminUI.customSidebar to true in app config
  • $notify method to Vue.prototype
  • buttons show error on full screen and show info for developer added to Error notification popup

Changed #

1.4.1 2019-03-30 #
  • portal:navbar:appendSlot now append child to navbar
  • portal:navbar:defineSlot define slot with new child (renamed appendSlot -> defineSlot)
  • portal:sidebar:appendSlot now append child to sidebar
  • portal:sidebar:defineSlot define slot with new child (renamed appendSlot -> defineSlot)
  • BREAKING renamed:
    • UbSelectEntity -> USelectEntity
    • UbSelectEnum -> USelectEnum
    • UbSelectMany -> UbSelectMany
    • UbUploadDocument -> UUploadDocument
  • set correct zIndex when open UB dialogs from magicLinks
1.4.0 2019-03-21 #
  • UbContext -> UContextMenu
  • UbCodeMirror -> UCodeMirror
  • UbInput -> UInput
  • All Vue components now will be initialized in packages/adminui-vue/ub-components.js
1.3.3 2019-03-10 #
  • UbEntityEdit value property renamed to instance
  • UbInput now use HOC pattern over ElInput
  • ToolbarComponent property value renamed to instanceId. To be used as <u-form-toolbar :instance-id="formData.ID"...>
  • prevent override Vue.prototype.$notify introduced by El, instead inject UDialog as $dialog
  • Vue forms will use Alt+R for "Remove" instead of Alt+Del because DEl and Backspace because on Mac keyboards the key normally identified as "backspace" on PC keyboards is called "delete"
  • popover button animation removed for vue select (in remote mode)
1.3.2 2019-03-05 #
  • vue forms definition extension changed from js to vue. Existed vue forms should be renamed manually git mv my_entity-fm.js my_entity-fm.vue
  • due to modifications in vue runtime parser all imports of vue files must be done as const cmpName = require('cmpName.vue').default
  • renamed CSS variables according twitter-bootstrap
1.3.1 2019-03-03 #
  • update vue@2.6.7 -> 2.6.8
  • set fixed version of element-ui@2.5.4 because of theme bug in 2.6.x
1.3.0 2019-03-01 #
  • BREAKING dialogs functions now return native Promise - without a legacy .done method. All occurrence of .done should be replaced to .then()[.catch()]
  • webpack4 is used for compile production mode
  • updated vue@2.6.6 -> vue@2.6.7
  • upgraded vue-loader@14.2.4 -> vue-loader@15.6.4

Fixed #

1.4.1 2019-03-30 #
  • fixed ubs_message_edit form layout on small screens
  • added storeInstanceModule. Vuex store which track all form changes
  • added storeValidationPlugin. Vuex store plugin which validate instance module changes
  • UFormRow now can be used without UForm wrapper
  • fixed autofocus to accept button in UDialog
1.3.3 2019-03-10 #
  • Vue control UbSelectEntity now use ElSelect remote-method for fetching data
  • behavior of UbSelectEntity changed to be as close to desktop select as possible
  • links for set focus on attribute with invalid value and for execution of command now work in production mode (inline JS is removed in flavor of magic link)
1.3.2 2019-03-05 #
  • ub-auth page will handle pressing of Enter key in UB authorization scheme user name field
  • UbSelectEntity vue component:
    • added shortcuts for popup actions
    • "blink" area around popup actions button is removed
  • UBToolbarComponent.vue - "Save" and "Save and close" color changed to btn-primary (green)
1.3.1 2019-03-03 #
  • move normalize.css to dependencies from devDependencies to allow use a -dev mode even if modules are installed with NODE_ENV=production
  • dialogInfo return false in case user close dialog without pressing "ok" button (regression)
1.3.0 2019-03-01 #
  • relogon form should not close on Esc

@unitybase/adminui-pub #

Added #

5.8.4 2019-03-22 #
  • isModal parameter for vue forms
5.8.3 2019-03-10 #
  • new alias instanceId for $App.showForm command can be used instead of instanceID. Useful inside data attributes (see "magic links" in adminui-vue)
5.8.2 2019-03-04 #
  • Font color selection button added to UB.ux.form.HtmlEditor
  • Preview in PDF button now enabled in UB.ux.form.HtmlEditor (package @unitybase/pdf should be in package.json for this feature)
5.8.0 2019-03-01 #
  • element-ui library registered is SystemJS.map (used in DEV mode of adminui-vue)

Changed #

5.8.4 2019-03-22 #
  • upgrade mustache 2.3.0 -> 3.0.1
5.8.3 2019-03-10 #
  • i18 key oshibkaVvoda renamed to fieldValidationError and moved to up-pub
  • changed 'notValidForColumns' message template for all locales
5.8.2 2019-03-04 #
  • tabId parameter of $App.doCommand should be of type string. Explicit typecast of tabId to string added to prevent "unclosable" tab error
  • BREAKING vue forms definition extension changed from js to vue. Existed vue forms should be renamed manually git mv my_entity-fm.js my_entity-fm.vue
5.8.1 2019-03-02 #
  • remove preset-es215-without-strict from webpack config - webpack4 do all well w/o this preset
5.8.0 2019-03-01 #
  • BREAKING window.JSZip is removed
  • UBTheme.css removed (deprecated)
  • css for Right-To-Left locales are removed (nobody uses it)
  • packages updated bluebird 3.4.6 -> 3.5.3, codemirror 5.20.2 -> 5.44.0, es6-promise 4.1.1 -> 4.2.6
  • webpack@4 is used for production build
  • all production css are optimized using -O2 optimization level
  • CodeMirror & mxGraph now not included in boundle and loaded on demand from their own packages
  • removed most of IE11- hacks from Ext-all (-4Kb)
  • Ext.data.proxy.Rest, Ext.data.reader.Xml, Ext.data.writer.Xml, and Ext.data.XmlStore are removed
  • support for IE < 11 is removed from Ext.Array

Fixed #

5.8.4 2019-03-22 #
  • removed stacked width in customSidebar option
5.8.3 2019-03-10 #
  • $App.doCommand instantiate form with type module by calling mount function (as for vue form)

@unitybase/adminui-reg #

Added #

5.1.12 2019-03-11 #
  • protection against Clickjacking/sniffing/XSS attack is added for main HTML page. In case custom login page is used it's strongly recommended to use nginx config generated by npx ubcli generateNginxCfg command

Changed #

5.1.13 2019-03-22 #
  • upgrade mustache 2.3.0 -> 3.0.1

@unitybase/base #

Fixed #

5.1.5 2019-03-06 #
  • @unitybase/base.options will accept --help for show help (also -help and -? is supported)
  • better formatting for ubcli command --help

@unitybase/blob-stores #

Fixed #

5.0.39 2019-03-19 #
  • on nix replace possible Windows separator inside blob store info relPath during calculation of Permanent File Name

@unitybase/cdn #

Changed #

5.1.5 2019-03-11 #
  • File cnd_person.meta.ka fixed

@unitybase/cs-shared #

Added #

5.0.19 2019-03-11 #
  • CustomRepository.clone() method
 let repo1 = UB.Repository('uba_user').attrs('ID', 'code').where('ID', '>', 15, 'byID')
 let repo2 = repo1.clone()
 repo1.orderBy('code')
 repo1.selectAsObject() // return ordered users with ID > 15
 repo2.attrs('name').where('ID', '>', 100, 'byID')
 repo2.selectAsObject() // return unordered users with their names and ID > 100
5.0.18 2019-03-04 #
  • new method asPlainJSON() for UBEntity & UBEntityAttribute - return a JSON representation WITHOUT properties which have default values. Very close to data stored in meta file
  • helper Repository.attrsIf()
    let isPessimisticLock = !!UB.connection.domain.get('uba_user').attributes.mi_modifyDate
    // with whereIf
    let repo = UB.Repository('uba_user').attrs('ID').attrsIf(isPessimisticLock, 'mi_modifyDate')
    //without whereIf
    let repo = UB.Repository('uba_user').attrs('ID')
    if (isPessimisticLock) repo = repo.attrs('mi_modifyDate')  
    
  • helper Repository.whereIf()
    let filterString = 'foundAllLikeThis' // or may be empty string
    // with whereIf
    let repo = UB.Repository('my_entity').attrs('ID')
      .whereIf(filterString, 'myAttr', 'like', filterString)
    
    //without whereIf
    let repo = UB.Repository('my_entity').attrs('ID')
    if (filterString) repo = repo.where('myAttr', 'like', filterString)
    
  • helper Repository.miscIf()

Changed #

5.0.19 2019-03-11 #
  • CustomRepository.misc will remove option in case it value is falseinstead of setting it tofalse` This reduce resulting UBQL size
  • CustomRepository.orderBy(attrd, direction) accept null as direction. In this case ordering by attr will be removed
 let repo = UB.Repository('my_entity').attrs('ID').orderBy('code')
 let orderedData = await repo.selectAsObject() // ordered. await is for client-side only
 repo.orderBy('code', null) // remove order by code
 let unorderedData = await repo.selectAsObject() // NOT ordered
5.0.18 2019-03-04 #
  • remove obsolete UBEntity & UBEntityAttribute asJSON method

Fixed #

5.0.19 2019-03-11 #
  • addingCondition now checked in CustomRepository.miscIf

@unitybase/pdf #

Changed #

5.0.18 2019-03-01 #
  • use webpack4 for production build

[@unitybase/systemjs-plugin-vue-ub]([object Object]) #

Added #

1.3.0 2019-03-06 #
  • ES6 export default support for Vue SFC - parser will replace it to module.exports.default = in dev mode
  • vue component definition is exported as default so should be imported as const MyComponent = require('./MyComponent.vue').default. BOUNDLED_BY_WEBPACK hack should be removed

Changed #

1.3.1 2019-03-10 #
  • code simplified - all unsupported and unused features are removed from code
  • vue compiler padding changed from line to space
1.2.5 2019-03-01 #
  • use webpack4 for production build

@unitybase/ub-pub #

Added #

5.2.33 2019-03-10 #
  • optional parameter fieldAliases for ClientRepository.selectById method

Changed #

5.2.33 2019-03-10 #
  • separate stack trace in developer error reporter onto lines for better readability

@unitybase/uba #

Added #

5.1.20 2019-03-24 #
  • uba_auditTrail.request_id attribute - a unique request identifier. Can be used eg for revert all changes made by a single ubql call. Require ub sevrer@5.7.18.

@unitybase/ubcli #

Added #

5.3.11 2019-03-11 #
  • npx ubcli generateNginxCfg will add a Clickjacking/sniffing/XSS protections for /app internal URL. This protect both login page (custom and build-in) form such kinds of attacks.
  • new option -t or tests for npx ubcli autotest allows to specify a comma separated tests files to execute

Fixed #

5.3.11 2019-03-11 #
  • npx ubcli meta-tr command now work correctly. Meta content encoding before using JSON.parse() was fixed

@unitybase/ubm #

Changed #

5.1.10 2019-03-06 #
  • BREAKING vue forms definition extension changed from js to vue. Existed vue forms should be renamed manually git mv my_entity-fm.js my_entity-fm.vue

Fixed #

5.1.11 2019-03-11 #
  • insertion of form with type module do not throw error

@unitybase/xlsx #

Changed #

5.0.45 2019-03-01 #
  • use webpack4 for production build